李军怀等新编电子工业出版社+计算网络实用课件networkch7-new_第1页
李军怀等新编电子工业出版社+计算网络实用课件networkch7-new_第2页
李军怀等新编电子工业出版社+计算网络实用课件networkch7-new_第3页
李军怀等新编电子工业出版社+计算网络实用课件networkch7-new_第4页
李军怀等新编电子工业出版社+计算网络实用课件networkch7-new_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章运输层本章主要内容运输层是计算机网络分层体系结构中的核心层次。其主要任务是完成从源主机应用进程到目的主机应用进程之间的数据传输。本章将主要介绍运输层的功能以及在TCP/IP协议簇中运输层所采用的协议UDP和TCP。7.1运输层概述从通信和信息处理的角度看,运输层对上层屏蔽了下层的通信细节,为上层应用提供端到端的连接。物理层网络层运输层应用层数据链路层面向信息处理面向通信用户功能网络功能运输层为相互通信的应用进程提供了逻辑通信

54321运输层提供应用进程间的逻辑通信主机A主机B应用进程应用进程路由器1路由器2AP1LAN2WANAP2AP3AP4IP层LAN1AP1AP2AP4端口端口54321IP协议的作用范围运输层协议TCP和UDP的作用范围AP3应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。运输层协议和网络层协议的主要区别

应用进程…应用进程…IP协议的作用范围(提供主机之间的逻辑通信)TCP和UDP协议的作用范围(提供进程之间的逻辑通信)因特网运输层与其上下层之间的关系的OSI表示法

运输实体运输实体运输协议运输层层接口运输服务用户(应用层实体)运输服务用户(应用层实体)层接口网络层(或网际层)应用层主机A主机B运输层服务访问点TSAP网络层服务访问点NSAP术语传输实体通过运输层服务访问点TSAP(TransportServiceAccessPoint)向应用层实体(又称传输服务用户)提供传输服务,这里的传输服务用户包括应用层中的各种应用进程。传输实体(又称网络服务用户)从网络服务访问点NSAP(NetworkServiceAccessPoint)获取网络层(或网际层)提供的服务。运输层对等实体之间的通信遵循传输协议,两个对等传输实体之间通信时传送的数据单位叫做传输协议数据单元TPDU(TransportProtocolDataUnit)。7.2TCP/IP模型中的运输层7.2.1TCP和UDPUDP(UserDatagramProtocol)TCP(TransmissionControlProtocol)。图7-2TCP/IP模型中的运输层协议运输层向上提供可靠的和不可靠的逻辑通信信道

?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程7.2.2运输层端口端口就是运输层服务访问点TSAP。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。

端口在进程之间的通信中所起的作用

应用层运输层网络层TCP报文段UDP用户数据报应用进程TCP复用IP复用UDP复用TCP报文段UDP用户数据报应用进程端口端口TCP分用UDP分用IP分用IP数据报IP数据报发送方接收方端口端口用一个16bit端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。端口号的分配有两种基本方式

在TCP/IP协议的实现中,端口号的分配有两种基本方式:(1)全局分配,这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众。(2)本地分配,又称动态连接,即进程需要访问运输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。

按端口号可分为3大类(1)熟知端口(Well

Known

Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通信明确表明了某种服务的协议。例如:80端口实际上总是HTTP通信。(2)注册端口(Registered

Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。例如:许多系统处理动态端口从1024左右开始。

(3)动态和/或私有端口(Dynamic

and/or

Private

Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。例如默认的HTTP端口是80,不少人将它重定向到另一个端口,如8080。7.3用户数据报协议UDP7.3.1UDP概述用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,这就是端口的功能(有了端口,运输层就能进行复用和分用)和差错检测的功能。UDP在某些方面有其特殊的优点:

(1)无需建立连接(2)无连接状态管理(3)报文头部开销小(4)应用层能很好的控制要发送的数据和发送时间7.3.2UDP报文格式UDP数据报结构由头部和数据两部分组成,头部包含4个字段,其中每个字段各占用2个字节。各字段的含义(1)源/目的端口号(2)数据报长度:数据报的长度是指包括报头和数据部分在内的总的字节数。(3)校验和:用于检查UDP报文在传输中是否出错。在计算校验和时,要在UDP数据报之前增加12字节的伪头部(并不是UDP的真正头部)。UDP用户数据报的首部格式

伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。

伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。校验和示例例如:1111001100110011011101010101010101110111011101110111101110111011110010100010001000011wraparoundsumchecksum计算UDP检验和的例子

1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据0100100101001110→数据0100011100000000→数据和0(填充)1001011011101011→求和得出的结果0110100100010100→检验和04112字节伪首部8字节UDP首部7字节数据填充按二进制反码运算求和将得出的结果求反码全0171510871315全0数据数据数据数据数据数据数据全07.4传输控制协议TCP传输控制协议TCP(TransmissionControlProtocol)是运输层中使用最广泛的一个协议。TCP提供全双工和可靠的、面向连接的数据传输服务。并通过通信双方三次握手、收方肯定确认、重传(时钟控制),流量控制等机制保证数据在应用进程之间传递的可靠性。端口…发送

TCP

报文段TCP…TCP接收缓存发送缓存报文段…报文段报文段端口发送端接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程7.4.1TCP提供的服务TCP的主要目的是提供可靠的端到端应用进程之间的数据传输,IP层只保证数据在主机之间的传递,而且是不可靠的,因此TCP需要很多自己的服务实现可靠传输的目的。⑴面向连接⑵可靠性⑶数据流传输⑷流量控制⑸全双工7.4.2TCP报文段格式一个TCP报文段分为头部和数据两部分。头部的前20字节是固定的,选项部分最多为40字节。因此TCP报文段头部的最小长度是20字节。图7-7TCP报文段格式7.4.3TCP连接管理TCP是面向连接的协议。TCP传输连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP的传输连接包括三个状态:连接建立数据传送连接释放1.连接的建立第一步,A端的TCP首先向B端的TCP发送一个特殊的TCP报文段SYN,此报文段中的SYN标志被置1,同时初始化一个起始序号;1.连接的建立第二步,当B端收到A端发来的SYN报文段,会为该TCP连接分配TCP缓存和变量,并向A端回复一个允许连接的报文段SYNACK;1.连接的建立第三步,在收到允许连接的报文段后,A端也要给该连接分配缓存和变量。然后向B端发送另一个报文段,用于对B端允许连接的SYNACK报文段进行确认。这种通信双发进行三次报文交换的过程被称为三次握手(three-wayhandshake)。2.数据传输一旦建立起TCP连接,两个应用进程之间就可以相互发送数据了。通信双方主机中的应用进程之间的数据传输是字节流方式的。发送方主机中的TCP将来自进程的数据放到该连接的发送缓存里,然后TCP就会不时从发送缓存里取出一块数据准备发送。图7-9TCP发送报文段的过程3.连接的释放在数据传输结束后,通信双方都可以发出释放连接的请求。基于网络服务的不可靠性,必须考虑到在释放连接时,可能由于数据包的失序而使释放连接请求的数据包会比其他数据包先到达目的端。此时,如果目的端由于收到了释放连接请求的数据包而立即释放该连接,则势必造成那些先发而后至的数据包丢失。为了解决这些问题,可以把TCP连接看成是一对单工来处理连接的释放,每个单工连接独立的释放。图7-10TCP连接释放过程7.5TCP流量控制与拥塞控制7.5.1TCP的流量控制TCP采用大小可变的滑动窗口给应用进程提供流量控制服务,用以消除接收缓存溢出的可能性。TCP通过让发送方保留一个称为接收窗口(receivewindow)的变量来提供流量控制。发送窗口在连接建立时由双方商定。但在通信过程中,接收方根据自己的资源情况,随时动态地调整对方的发送窗口上限值。图7-11TCP利用可变窗口进行流控收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送900字节长的数据,划分为9个100字节长的报文段,而发送窗口确定为500字节。发送端只要收到了对方的确认,发送窗口就可前移。发送TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移发送端已发送了400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。现在发送端还可发送300字节。已发送并被确认已发送但未被确认1002003004005006007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小发送端收到了对方对前400字节数据的确认,但对方通知发送端必须把窗口减小到400字节。现在发送端最多还可发送400字节的数据。利用可变窗口大小进行流量控制

双方确定的窗口值是400

SEQ=1SEQ=201SEQ=401SEQ=301SEQ=101SEQ=501ACK=201,WIN=300ACK=601,WIN=0ACK=501,WIN=200主机A主机B允许A再发送300字节(序号201至500)A还能发送200字节A还能发送200字节(序号301至500)A还能发送300字节A还能发送100字节(序号401至500)A超时重发,但不能发送序号500以后的数据允许A再发送200字节(序号501至700)A还能发送100字节(序号501至700)不允许A再发送(到序号600的数据都已收到)SEQ=201丢失!7.5.2TCP的拥塞控制由于在TCP端到端拥塞控制中,网络层没有为运输层拥塞控制提供显式的支持,即使在网络中存在拥塞,端系统也必须通过端到端的方法处理拥塞控制,因为IP层不会向端系统提供有关网络拥塞的反馈信息。TCP采用的方法是让每一个发送方根据所感知的网络拥塞,来限制其能向连接发送流量的速率。如果一个TCP发送方感知从它到目的地之间的路径上没有拥塞,则该发送方就会增加其发送速率;如果一个TCP发送方感知从它到目的地之间的路径上有拥塞(例如TCP段的丢失等),则该发送方就会降低其发送速率。发送窗口、接收窗口和拥塞窗口发送方的发送窗口Swnd(senderwindow)应按以下方式确定:发送窗口=Min[接收窗口,拥塞窗口]接收窗口Rwnd(receiverwindow)是接收方根据其接收能力确定的窗口值,是来自接收方的流量控制。拥塞窗口Cwnd(congestionwindow)是发送方根据网络拥塞情况确定的窗口值,是由发送方的流量控制算法确定的。在没有拥塞的稳定工作状态下,接收方的通知窗口和拥塞窗口应该是一致的。为了更好的在运输层进行拥塞控制,1999年公布的Internet建议标准RFC2581定义了四种算法,慢启动(slow-start)拥塞避免(congestionavoidance)快重传(fastretransmit)快恢复(fastrecovery)使用这些技术的一个前提就是:由于通信线路带来的误码而使分组丢失的概率很小。因此,当TCP收到路由器发来的ICMP源抑制报文,或者发现连续的报文丢失现象或延迟过长而引起超时重发,就认为发生了网络拥塞。1.慢启动在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。

这个被称为慢启动(slowstart)的初始化阶段期间,TCP发送方以很慢的速率(因此叫“慢启动”)开始发送,但是以指数的速度快速增加其发送速率。2.拥塞避免在慢启动阶段,可以发送的报文数量按指数级增加,为了防止拥塞窗口的增长引起网络拥塞,还需要一个状态变量,即慢启动门限ssthresh(slowstartthreshold)。其用法如下:当Cwnd<ssthresh时,处于慢启动阶段;当Cwnd>ssthresh时,进入拥塞避免阶段(使用拥塞避免算法);当Cwnd=ssthresh时,既可以使用慢启动算法,也可以使用拥塞避免算法。在慢启动阶段,当拥塞窗口大于慢启动门限时,拥塞窗口按照线性增加,即发送方的拥塞窗口Cwnd每经过一个往返时间RTT就增加一个MSS的大小(而不管在时间RTT内收到了几个ACK)。当发送方发现网络出现拥塞,慢启动门限ssthresh设置为发生拥塞时发送窗口Swnd的一半。图7-12拥塞避免过程“加性增,乘性减”(additiveincrease,multiplicativedecrease,也称为AIMD算法)。

3.快速重传和快速恢复由于网络拥塞导致某些报文段丢失,这样在发送方可能会收到针对某一个报文段的重复确认ACK。快速重传算法规定,发送方只要一连收到三个重复的ACK即可判定有分组丢失了,就应立即重传丢失的报文段,而不必继续等待为丢失的那个报文所设置重传计时器的超时。不难看出,快速重传并非取消重传计时器,而是在某些情况下可以更早地重传丢失的报文段,避免TCP连接会因为等待重传计时器的超时而空闲较长的时间。快重传举例M1,M2ACK2,ACK3M4主机A主机BB确认M1

M2A发送M1和M2A收到了三个重复的确认ACK3,就立即重传M3,而不必等待超时重传。M3丢失!A发送M3但丢失了A发送M4ACK3M5A发送M5ACK3B发送第二个重复确认

ACK3M6A发送M6ACK3M3B发送第三个重复确认

ACK3B只能再次确认

M2(因为M3

没有收到)快速恢复算法与快速重传配合使用的还有快速恢复算法。当发送方收到3个连续重复的ACK时,按“乘法减小”重新设置慢启动门限。与慢启动不同的是拥塞窗口Cwnd不是设置为1,而是设置为ssthresh+3×MSS同样道理,假设发送方收到n个(n是大于3的自然数

)重复ACK,则将Cwnd设置为ssthresh+n×MSS若发送窗口还允许发送报文段,就按拥塞避免算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论