计算机网络教程第8章运输层第8章运输层运输协议(transportprotocol)是整个网络体系结构中的关键之一。8.1运输协议概述8.2TCP/IP体系中的运输层8.3用户数据报协议UDP8.4传输控制协议TCP退出计算机网络教程第8章运输层8.1运输协议概述从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。运输层只存在于通信子网以外的主机中,在通信子网中没有运输层,如图8-1所示。计算机网络教程第8章运输层计算机网络教程第8章运输层计算机网络教程第8章运输层运输层为应用进程之间提供逻辑通信,但网络层是为主机之间提供逻辑通信,如图8-3所示。计算机网络教程第8章运输层计算机网络教程第8章运输层OSI使用了简洁的抽象方法将运输层与其上下层之间的关系归纳如图8-4所示。计算机网络教程第8章运输层计算机网络教程第8章运输层运输层向高层用户屏蔽了下面通信子网的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(即只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接的UDP协议时,这种逻辑通信信道则是一条不可靠信道。在图8-5中将可靠信道画成一个管道,这意味着报文在这样的“管道”中运输时,可以做到无差错、按序(接收的顺序和发送的顺序一样)、无丢失和无重复。计算机网络教程第8章运输层计算机网络教程第8章运输层8.2TCP/IP体系中的运输层8.2.1运输层中的两个协议TCP/IP的运输层有两个不同的协议,如图8-6所示,它们都是因特网的正式标准,即:(1)用户数据报协议UDP(UserDatagramProtocol)(2)传输控制协议TCP(TransmissionControlProtocol)计算机网络教程第8章运输层计算机网络教程第8章运输层8.2.2端口的概念UDP和TCP都使用了与应用层接口处的端口(port)与上层的应用进程进行通信。图8-7说明了端口在进程之间的通信中所起的作用。计算机网络教程第8章运输层计算机网络教程第8章运输层若没有端口,运输层就无法知道数据应当交付给应用层的哪一个进程。端口是用来标识应用层的进程。端口号分为两类。一类是由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口(well-knownport),其数值一般为0~1023,见[RFC1700]。例如,FTP用21,TELNET用23,SMTP用25,DNS用53,HTTP用80,SNMP用161,等等。当一种新的应用程序出现时,必须为它指派一个熟知端口,否则其他的应用进程就无法和它进行交互。图8-8举例说明了端口的作用。计算机网络教程第8章运输层计算机网络教程第8章运输层插口包括IP地址(32bit)和端口号(16bit),共48bit。插口和端口、IP地址的关系如图8-9所示。计算机网络教程第8章运输层计算机网络教程第8章运输层8.3用户数据报协议UDP8.3.1用户数据报的用途虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点,例如:(1)发送数据之前不需要建立连接(当然发送数据结束时也没有连接需要释放),因而减少了开销和发送数据之前的时延。计算机网络教程第8章运输层(2)UDP没有拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。(3)UDP用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。(4)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。表8-1给出了一些应用和应用层协议主要使用的运输层协议(UDP或TCP)。计算机网络教程第8章运输层表8-1使用UDP和TCP协议的各种应用和应用层协议应用应用层协议运输层协议名字转换DNSUDP路由选择协议RIPUDP网络管理SNMPUDP远程文件服务器NFSUDPIP电话专用协议UDP流式多媒体通信专用协议UDP多播IGMPUDP电子邮件SMTPTCP远程终端接入TELNETTCP万维网HTTPTCP文件传送FTPTCP计算机网络教程第8章运输层通常用UDP的报文队列来具体实现一个UDP端口,如图8-10所示。计算机网络教程第8章运输层计算机网络教程第8章运输层8.3.2用户数据报的格式用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,如图8-11所示,由4个字段组成,每个字段都是两个字节。各字段意义如下所述。(1)源端口字段:源端口号。(2)目的端口字段:目的端口号。(3)长度字段:UDP用户数据报的长度。(4)检验和字段:防止UDP用户数据报在传输中出错。计算机网络教程第8章运输层计算机网络教程第8章运输层图8-12给出了一个计算UDP检验和的例子。计算机网络教程第8章运输层8.4传输控制协议TCPTCP是TCP/IP体系中面向连接的运输层协议,它提供全双工的可靠交付的服务。8.4.1TCP报文段的首部一个TCP报文段分为首部和数据两部分,如图8-13所示。TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N必须是整数)。因此TCP首部的最小长度是20字节。计算机网络教程第8章运输层计算机网络教程第8章运输层首部固定部分各字段的意义如下所述。(1)源端口和目的端口(2)序号(3)确认序号(4)数据偏移(5)保留(6)紧急比特URG(URGent)计算机网络教程第8章运输层(7)确认比特ACK(8)推送比特PSH(PuSH)(9)复位比特RST(ReSeT)(10)同步比特SYN(11)终止比特FIN(FINal)(12)窗口(13)检验和(14)选项计算机网络教程第8章运输层8.4.2TCP的数据编号与确认TCP协议是面向字节的。TCP将所要传送的整个报文(这可能包括许多个报文段)看成是一个个字节组成的数据流,并使每一个字节对应于一个序号。TCP的确认是对接收到的数据的最高序号(即收到的数据流中的最后一个序号)表示确认。但接收端返回的确认序号是已收到的数据的最高序号加1。也就是说,确认序号表示接收端期望下次收到的数据中的第一个数据字节的序号。图8-14是TCP发送报文段的过程的示意图。计算机网络教程第8章运输层计算机网络教程第8章运输层8.4.3TCP的流量控制与拥塞控制为了提高报文段的传输效率,TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的窗口数值。图8-15表示的是在TCP中使用的窗口概念。计算机网络教程第8章运输层计算机网络教程第8章运输层计算机网络教程第8章运输层8.4.4TCP的重传机制重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就设置一次计时器。只要计时器设置的重传时间已经到了但还没有收到确认,就要重传这一报文段。图8-17画出了数据链路层和运输层的往返时延概率分布的对比。对于运输层来说,其往返时延的方差很大。计算机网络教程第8章运输层计算机网络教程第8章运输层计时器设置的重传时间应略大于上面得出的平均往返时延,即:重传时间β(平均往返时延)计算机网络教程第8章运输层计算机网络教程第8章运输层Karn提出了一个算法:在计算平均往返时延时,只要报文段重传了,就不采用其往返时延样本。这样得出的平均往返时延和重传时间当然就较准确。新的重传时间γ(旧的重传时间)(8-4)系数γ的典型值是2。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延和重传时间的数值。实践证明,这种策略较为合理。计算机网络教程第8章运输层8.4.5TCP的运输连接管理TCP是面向连接的协议。运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。在连接建立过程中要解决以下三个问题。(1)要使每一方能够确知对方的存在。(2)要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。(3)能够运输实体资源(如缓存大小,连接表中的项目等)进行分配。TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的进程叫做客户(client),而被动等待连接建立的进程叫做服务器(server)。计算机网络教程第8章运输层计算机网络教程第8章运输层计算机网络教程第8章运输层8.4.6TCP的有限状态机为了管理因特网,在网络管理中心设有管理信息库MIB(ManagementInformationBase)。管理信息库存放着各主机的TCP连接表(ConnectionTable),其格式如表8-2所示。TCP连接表对每个连接都登记了其连接信息。除本地和远地的IP地址和端口号外,还要记录每一个连接所处的状态。计算机网络教程第8章运输层表8-2TCP连接表连接状态本地IP地址本地端口远地IP地址远地端口连接1连接2…连接n计算机网络教程第8章运输层