计算机网络第六章传输层主要内容传输层编址建立传输连接释放传输连接流量控制因特网的传输层套接字接口传输层的功能传输层要解决的问题:为运行在不同主机上的应用进程提供逻辑通信功能。设置传输层的两个原因:为端系统上运行的多个进程提供多路复用和解多路复用的功能。为应用进程提供所需的数据传输服务。传输层还必须向应用程序提供一组易于使用的操作(称传输服务接口)。1.传输层编址为指明将数据包交给哪个进程处理,每个进程需要一个标识。在网络环境中标识进程的方法是为每个进程指定一个传输地址,其一般性术语为传输服务访问点TSAP。传输地址是传输层通信的端点:每个TSAP上绑定一个应用进程,应用进程通过各自的TSAP调用传输层服务。传输实体通过本地的NSAP调用网络层服务,与远程的对等传输实体通信。TSAP、NSAP和传输实体的关系应应应/应应应应应TPDU应应应/应应应应应应应应应应应应1应应2应6-1TSAP应NSAP应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应应传输层地址的获取客户进程如何获知服务员进程的TSAP?使用众所周知地址:适用于常用的标准服务。使用进程服务员:适用于不常用的服务。TSAP的实现:TSAP只是一种抽象,具体实现方法取决于不同的系统,通常可由一个消息队列实现。2.建立传输连接在一个不可靠的数据报网络中可靠地建立传输连接的关键,是排除无关的重复包对连接建立过程的干扰。一些措施:给每个连接指定连接标识,每个主机记录已使用过的连接标识;可靠性及扩展性均较差。给每个数据包规定寿命,在寿命减为0时丢弃分组。引入时间T,规定主机在重启后至少等待T时间再建立连接,确保崩溃前发送的分组都已消亡。确保TPDU的序号空间不重叠:采用基于时钟的算法确定起始序号控制ΔT和数据包寿命,确保序号空间不重叠。采用三次握手过程可靠交换各自的起始序号。三次握手建立传输连接ACK(seq=y,ACK=x)CR(seq=x)DATA(seq=x,ACK=y)应应1应应应应2(a)ACK(seq=y,ACK=z)CR(seq=z)REJECT(ACK=y)应应1应应2(b)应应应应应ACK(seq=y,ACK=z)CR(seq=z)REJECT(ACK=y)应应1应应2(c)应应应应DATA(seq=z,ACK=u)应应应6-2(a)应应应应应应(b)应应应应应应应应应应应(c)应应应应应应应应应应应应3.释放传输连接两种释放连接的方法不对称释放:任何一方释放连接,连接即被释放;易造成数据丢失及形成半开的连接。对称释放:一条传输连接被看成是由两个方向上的单工连接组成,一方释放连接只是表示数据发完了,但仍可在另一个方向上接收数据。双方均释放连接,连接才被释放。三次握手释放传输连接正常释放:主动方发出DR,响应方收到一次DR。异常:主动方发出DR,响应方从未收到DR,形成半开的连接。异常处理:引入不活动定时器和哑TPDU。三次握手释放传输连接应应1应应DR应应应应应应应应ACK应应应应应应应2应应DR应应应应应应应应应应DRDRACK(a)应应应应应应1应应DR应应应应应应应应ACK应应应应应应应2应应DR应应应应应应DR¶ªÊ§DRACK(b)ACK应应(应应)应应应应三次握手法释放连接(续)应应1应应DR应应应应应应(应应)应应DR应应应应应应应应ACK应应应应应应应2应应DR应应应应应应应应应应应应DR应应应应应应DRDR¶ªÊ§DRDRACK应应1应应DR应应应应应应(应应)应应DR应应应应应应应应2应应DR应应应应应应(应应)应应应应DRDR¶ªÊ§DR¶ªÊ§(N应应应)应应应应(c)应应2应应应应应(d)应应2应应应应应应应DR应应应应4.流量控制流量控制是一种由接收端控制发送速度的反馈机制,通常采用滑动窗口机制实现。数据链路层和传输层上的滑动窗口机制:数据链路层上的滑动窗口机制采用固定缓冲区分配策略(缓冲区大小及数量都固定),这在传输层上做不到。数据链路层上发送端和接收端都必须缓存,而在传输层上有多种缓存方案可供选择。数据链路层上的发送窗口仅由接收端控制,而传输层上的发送窗口还受网络处理能力的限制。传输层上的缓存策略发送方缓存还是接收方缓存?若通信子网是不可靠的,则发送方一般必须缓存,而接收方可以选择缓存或不缓存。若通信子网是可靠的,则视接收方为其预留的缓冲空间大小,发送方可以选择缓存或不缓存。缓冲区分配方案:以TPDU为单位分配?以连接为单位分配?缓冲区大小固定还是可变?动态缓冲区分配示例动态缓冲区分配的特点是确认与缓存分离。AMessageB12345678910111213request8buffersack=15,buf=4seq=0,data=m0seq=1,data=m1seq=2,data=m2ack=1,buf=3seq=3,data=m3seq=4,data=m4ack=4,buf=0ack=4,buf=1ack=4,buf=2seq=5,data=m5seq=6,data=m6应6-5应应应应应应应应应应应应应应应5.因特网的传输层用户数据报协议(UDP):提供不可靠无连接服务。传输控制协议(TCP):提供可靠的字节流服务。5.1UDP协议UDP报头格式UDP提供的功能:多路复用和解多路复用(利用端口号)(可选的)轻量级差错检查,但不反馈UDP不负责流量控制和出错重传,所有这些都由用户进程完成。UDP的应用:RPC,实时多媒体传输。UDP头及伪头结构sourceportdestinationport32Bits应6-6UDP应应应应UDPlengthUDPchecksumsourceIPaddressdestinationIPaddress32Bits应6-7UDP应应应应00000000protocol(17)UDPlength远程过程调用RPCRPC的基本思想允许调用远程计算机上的过程,并使这种调用看起来象本地调用一样,方便客户-服务器应用软件的编写。RPC的实现客户进程绑定到一个客户桩(clientstub),服务器进程绑定到一个服务器桩(serverstub)。客户进程调用客户桩,参数通过压栈的方式传递。客户桩将参数封装成一个消息,执行一个系统调用发送消息。内核通过调用传输层服务将消息发送到服务器桩。服务器桩用传过来的参数调用服务器例程,将返回的结果封装到一个消息中,执行一个系统调用将消息发送给客户桩。客户桩将结果返回给客户进程。UDP用于多媒体传输多媒体通信的特点:实时传输按顺序交付能容忍少量数据丢失TCP能保证传输顺序,但其差错控制和拥塞控制机制不能保证实时性。UDP的实时性较好,但不能保证交付顺序,且缺乏拥塞控制易导致高丢包率。使用UDP传输多媒体数据的解决方案是在UDP之上设计一个实时传输协议RTP,用来解决包序维持及速率调整等问题。5.2TCP协议TCP使用连接进行通信,连接状态只保留在两个端系统中,因而是一个端到端的协议。TCP连接是一个字节流而不是报文流,它不保留报文的边界。TCP连接是全双工的,在每个方向上支持一个字节流。TCP连接是点到点的,不支持多播或广播。TCP提供的功能:多路复用与解多路复用顺序交付差错控制流量控制拥塞控制TCP报文TCP实体间交换的协议数据单元称为段,每个段由报头和数据(可能没有)组成。最大段长度受IP包数据域长度(最大为65535字节)及链路MTU的限制。TCP报头由20字节的固定头和可变长度的选项头组成。重要的TCP选项包括:最大段长度(maximumsegmentsize,MSS)窗口比例选择重传TCP报头结构sourceportdestinationportOptions(0ormore32-bitwords)32Bits应6-8TCP应应应应应acknowledgementnumberchecksumTCPheaderlengthURGACKPSHRSTSYNFINwindowsizeurgentpointersequencenumberTCP伪头结构建立TCP连接注:前两个TCP段都使用了定时器,并在定时器超时后重发。采用基于时钟的方法选择初始连接序号,Δ取为4微秒。主机崩溃后,至少等待60秒后才启动。若收到SYN报文段的TCP实体发现目的端口上没有进程在监听,则发送一个RST置1的TCP段,拒绝建立连接。Host1Host2SYN,SeqNum=xSYN+ACK,SeqNum=y,AckNum=x+1)ACK,SeqNum=x+1,AckNum=y+1)应应应6-9TCP应应应应应应释放TCP连接Host1Host2FINackofFINackofFIN应应FINTCP流量控制TCP采用可变长度的滑动窗口进行流量控制,接收方在返回给发送方的段中报告接收窗口(windowsize)的大小。当接收窗口为0时一般必须停止发送,但以下两种情况例外:可以发送紧急数据,例如终止在远端计算机上运行的进程。可以发送一个1字节的段,以触发一个包含接收窗口大小的响应。糊涂窗口综合症(sillywindowsyndrome)接收方不断发送具有微小增量窗口的通告,引起发送方不断发送小数据分组,从而导致大量的带宽浪费。现行的TCP标准使用启发式方法来防止糊涂窗口综合症。接收方启发式策略仅当有“非平凡的”可用空间时才发送窗口更新通告。“非平凡的”可用空间:可用空间达到缓冲区空间的一半或者一个MSS(取两者的最小值)。TCP标准推荐采用推迟确认技术提高传输效率,即当没有非平凡的可用空间时,推迟发送确认。推迟确认的优点:降低通信量,提高吞吐率。推迟确认的缺点:确认延迟太大会导致不必要的重传,因而标准规定最多推迟500ms。不利于TCP往返时间的估计,因而标准推荐接收方至少每隔一个报文段使用正常方式对报文段进行确认。发送方启发式策略允许TCP在收到应用数据后不马上发送,等收集到足够多的数据后再发送。问题:发送方TCP应该等待多长时间?Nagle算法:在上一次传输的数据未被确认前,后续到来的数据放到缓冲区中;当数据足以填满一个最大长度的段或前一次传输的确认到来时(取最早的时间),将缓冲区中的数据封装到一个TCP段中发送。Nagle算法可以适应不同的网络延时、不同的最大段长度以及不同应用程序速度的组合情况,而且在常规情况下不会降低网络的吞吐量。TCP拥塞控制TCP拥塞控制采用端到端的机制,方法是让每一个发送方根据自己感知的网络拥塞程度来调整发送速度。问题:发送方如何知道从它到目的节点的路径上发生了拥塞?发送方如何限制发送速率?当发送方检测到拥塞时,采用什么算法来改变发送速率?问题一的解决:TCP用超时来检测拥塞(与TCP配合使用的RED会在网络拥塞时丢弃包)。问题二的解决:TCP使用拥塞窗口和发送窗口一起限制发送速率,其中接收窗口体现接收端的缓冲能力,拥塞窗口体现网络当前的处理能力。TCP拥塞控制算法TCP拥塞控制算法包括三个部分:加性增/乘性减(additiveincrease/multiplicativedecrease,AIMD)原则慢启动算法快速重传和快速恢复机制AIMD原则加性增/乘性减:乘性减:每发生一次超时事件,就将当前的拥塞窗口减半(最小不低于1个MSS),因此拥塞窗口在持续出现超时时按指数规律递减。加性增:当拥塞窗口内的段都在预定的时间内被确认(即没有超时发生)时,拥塞窗口增大一个MSS。在实际操作时,若拥塞窗口用CongWin表示,则每次收到一个确认后,拥塞窗口的增量Δ按如下公式计算:Δ=MSS×(MSS/CongWin)。AIMD原则的要点:发送方减小拥塞窗口的速度比加大这个窗口要快得多。事实证明,这是拥