计算机网络 自定向下方法 第二章 读书笔记(上)
学习因特网技术的一种方法就是先解 释应用层提供的服务,然后再展示其他四层是如何支持这些服务的。
因特网原先是为同一个目的而设计出来的,即为全世界的用户提供服务。
这个模式的问题是通信负荷集中在服务器上,这意味着服务器应该是一台强大的计算机。
很多传统该服务仍然在使用这种模式,包括万维网(World Wide Web,WWW)以及它的传播 媒介:超文本传输协议(HyperText Transfer Protocol,HTTP)、文件传输协议(File Transfer Protocol, FTP)、安全人机界面(Secure Shell,SSH)、电子邮件等等。
一个真正符合这个模式的领域是网络电话。
由于对等模型无需一直运行和维护昂贵的服务器,它是容易扩展且经济划算的。尽管如此,还是 存在一些挑战的。主要挑战就是安全问题,在分布式服务之间创建安全通信比在那些由专用服务器控 制的服务之间建立安全通信要更困难。另一个挑战就是适用性,似乎并不是所有的应用都可以使用这 个新模式。比如倘若某一天网络可以作为对等服务执行,并不会有非常多的因特网用户准备参与进来。
有一些新的应用使用这种模式,诸如 BitTorrent、Skype、IPTV 以及网络电话。
套接字的概念允许我们使用编程 语言中对其他信源和信宿设计的所有 指令的集合。
尽管套接字在行为上应该和一个终端或文件类似,但是它不是物理实体,而是一种抽象。套接 字是供应用程序创建和使用的数据结构。
我们需要一对套接字地址(socket address):一个本地 套接字地址和一个远程套接字地址。
UDP 提供了无连接的、不可靠的数据包服务。无连接服务意味着两个交换报文的终端之间没 有逻辑连接。每个报文都是独立的实体,它被封装在一个称为数据报(datagram)的分组中。UDP 看不到来自同一个源端并去往同一个目的端的数据报之间的关系(连接)。 UDP 是不可靠的协议。尽管它可能在传输中检查数据是否被破坏,但是它并不要求发送端重传 被破坏的或丢失的数据。对于某些应用,UDP 有一个优势,即它是面向报文的。它保留报文边界。
TCP 提供面向连接的可靠的字节流传输。TCP 要求两个终端首先通过交换一些连接建立分组 (connection-establishment packet)来建立一个逻辑连接。这个阶段有时称为握手,它设定了两个终 端间的某些参数。这些参数包括要交换的数据分组大小、用于保存数据直到整个报文全部到达的缓 冲区的大小等等。在握手过程后,两个终端可以向着彼此的方向以报文段形式发送数据块。通过计 算交换的字节数,可以检测字节的连续性。比如,如果某些字节丢失或损坏了,接收端可以请求重 发这些字节,这使得 TCP 成为一个可靠协议。我们将在第 3 章看到 TCP 也可以提供流量控制和拥 塞控制。TCP 协议的一个问题是它不是面向报文的,它不保留报文边界。
SCTP 提供了前面两个协议组合的功能。就像 TCP 一样,SCTP 提供了面向连接的可靠的服务, 但是它不是面向字节流。它是像 UDP 一样面向报文的。除此之外,SCTP 可以通过提供多媒体网 络层连接提供多媒体流服务。 SCTP通常适用于那些不但需要可靠性,而且即使网络层连接发生错误也需保持连接不断开的应用。
超文本传输协议(HyperText Transfer Protocol,HTTP)是一种用来定义客户服务器程序如何编 写和如何从万维网获取网页的协议。一个 HTTP 客户发送一个请求;HTTP 服务器返回响应。服务 器使用 80 端口号;客户使用一个临时端口号。HTTP 使用 TCP 服务,在之前讨论过,TCP 是一种 面向连接的可靠的协议。这意味着,在客户和服务器进行任何事务之前,它们之间必须建立连接。 在事务之后,连接应当终止。然而,客户和服务器不需要担心交换报文中的差错以及报文的丢失, 因为 TCP 是可靠的而且将处理这个问题