第七讲传输层_第1页
第七讲传输层_第2页
第七讲传输层_第3页
第七讲传输层_第4页
第七讲传输层_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第七讲传输层传输输层协议概述传输层中的两个协议(TCP与UDP)TCP的传输连接管理TCP的流量控制TCP的拥塞控制7.1传输层协议概述传输层位于通信子网与资源子网之间,传输层向它上面的应用层提供通信服务。

物理层网络层传输层应用层数据链路层传输的使用者传输的提供者资源子网通信子网传输层为相互通信的应用进程提供了

逻辑通信54321传输层提供应用进程间的逻辑通信主机A主机B应用进程应用进程路由器1路由器2AP1LAN2WANAP2AP3AP4IP层LAN1AP1AP2AP4端口端口54321IP协议的作用范围传输层协议TCP和UDP的作用范围AP342024/5/10介于通讯子网和资源子网之间,对高层用户屏蔽了通信的细节。弥补了通信子网提供服务的差异和不足,提供端到端之间的无差错保证。传输层工作的繁简取决于通信子网提供的服务的类型。运输层需要有两种不同的传输协议:TCPUDP

传输层的主要功能传输层的端口端口用一个16位端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。熟知端口,数值一般为0~1023。登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用7.2传输层中的两个协议TCPUDPIP应用层与各种网络接口传输层UDP的首部格式

伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报计算UDP检验和的例子

1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据0100100101001110→数据0100011100000000→数据和0(填充)1001011011101101→求和得出的结果0110100100010010→检验和153.19.8.104171.3.14.1112字节伪首部8字节UDP首部7字节数据填充按二进制反码运算求和将得出的结果求反码全0171510871315全0数据数据数据数据数据数据数据全0UDP的主要特点

UDP是无连接的,即发送数据之前不需要建立连接。UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求。UDP支持一对一、一对多、多对一和多对多的交互通信。UDP的首部开销小,只有8个字节。TCP首部20字节的固定首部目的端口段头长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前TCP的首部格式

TCP最主要的特点TCP是面向连接的传输层协议。每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。TCP提供可靠交付的服务。

TCP提供全双工通信。面向字节流。TCP的连接TCP把连接作为最基本的抽象。每一条TCP连接有两个端点。TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。端口号拼接到(contatenatedwith)IP地址即构成了套接字。套接字(socket)

套接字socket=(IP地址:端口号)(5-1)每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:

TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}(5-2)传输连接就有三个阶段:

连接建立数据传送连接释放152024/5/107.3TCP的传输连接管理162024/5/10SYN,SEQ=x主机BSYN,ACK,SEQ=y,ACK=x

1ACK,SEQ=x+1,ACK=y

1被动打开主动打开确认确认主机A连接请求用三次握手建立TCP连接17TCP连接释放的过程

FIN,SEQ=xACK,SEQ=y,ACK=x

1ACK,SEQ=x+1,ACK=y

1应用进程释放连接A不再发送报文FIN,ACK,SEQ=y,ACK=x+1主机B主机A通知主机应用进程①应用进程释放连接B不再发送报文②确认确认从A到B的连接就释放了,连接处于半关闭状态。相当于A向B说:“我已经没有数据要发送了。但你如果还发送数据,我仍接收。”至此,整个连接已经全部释放。182024/5/10流量控制与拥塞控制拥塞控制:防止一些发送者把太多的数据发送到网络中,因为在某些点上存在资源贫乏。流量控制:防止发送方的发送速度比接收方的接收速度快拥塞控制与流量控制的差别拥塞控制(congestioncontrol)与全网有关,涉及多个端到端、主机、路由器等很多网元;目的是确保通信子网能够承载用户提交的通信量,是一个全局性问题。流量控制(flowcontrol)只与一对端到端的通信量有关,只涉及快速发送方与慢速接收方的问题,是局部问题,一般都是基于反馈进行控制的。要防止这两者的混淆,但它们有些机制是相同的滑动窗口的概念TCP采用大小可变的滑动窗口进行流量控制。窗口的大小就是给对方设置的发送数据量的上限。发送窗口在连接建立时由双方商定。202024/5/107.4TCP的流量控制收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送900字节长的数据,划分为9个100字节长的报文段,而发送窗口确定为500字节。发送端只要收到了对方的确认,发送窗口就可前移。发送TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。2024/5/1021收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移发送端已发送了400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。现在发送端还可发送300字节。已发送并被确认已发送但未被确认2024/5/10221002003004005006007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小发送端收到了对方对前400字节数据的确认,但对方通知发送端必须把窗口减小到400字节。现在发送端最多还可发送400字节的数据。2024/5/1023发送缓存最后被确认的字节发送应用程序发送缓存最后发送的字节发送窗口已发送TCP序号增大接收缓存接收应用程序已收到接收窗口TCP接收缓存下一个读取的字节序号增大下一个期望收到的字节(确认号)发送缓存与接收缓存的作用发送缓存用来暂时存放:

发送应用程序传送给发送方TCP准备发送的数据;

TCP已发送出但尚未收到确认的数据。接收缓存用来暂时存放:

按序到达的、但尚未被接收应用程序读取的数据;不按序到达的数据。

注意A的发送窗口并不总是和B的接收窗口一样大(因为有一定的时间滞后)。TCP标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。7.5TCP的拥塞控制

超时重传时间的TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。加权平均往返时间

TCP保留了RTT的一个加权平均往返时间RTTS(这又称为平滑的往返时间)。第一次测量到RTT样本时,RTTS值就取为所测量到的RTT样本值。以后每测量到一个新的RTT样本,就按下式重新计算一次RTTS:

新的RTTS

(1

)

(旧的RTTS)

(新的RTT样本)(5-4)式中,0

1。若

很接近于零,表示RTT值更新较慢。若选择

接近于1,则表示RTT值更新较快。RFC2988推荐的

值为1/8,即0.125。超时重传时间RTO(RetransmissionTime-Out)RTO应略大于上面得出的加权平均往返时间RTTS。RFC2988建议使用下式计算RTO:

RTO

RTTS+4

RTTD(5-5)RTTD是RTT的偏差的加权平均值。RFC2988建议这样计算RTTD。第一次测量时,RTTD值取为测量到的RTT样本值的一半。在以后的测量中,则使用下式计算加权平均的RTTD:新的RTTD=(1

)

(旧的RTTD)+

RTTS

新的RTT样本

(5-6)

是个小于1的系数,其推荐值是1/4,即0.25。Karn

算法在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本。这样得出的加权平均平均往返时间RTTS

和超时重传时间RTO就较准确。修正的Karn

算法报文段每重传一次,就把RTO增大一些:新的RTO

(旧的RTO)系数

的典型值是2。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值。实践证明,这种策略较为合理。拥塞控制的一般原理在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。出现资源拥塞的条件:对资源需求的总和>可用资源(5-7)若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。拥塞控制所起的作用提供的负载吞吐量理想的拥塞控制实际的拥塞控制0死锁(吞吐量=0)无拥塞控制拥塞轻度拥塞开环控制和闭环控制开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施:监测网络系统以便检测到拥塞在何时、何处发生。将拥塞发生的信息传送到可采取行动的地方。调整网络系统的运行以解决出现的问题。1.慢开始和拥塞避免发送方维持一个叫做拥塞窗口cwnd

(congestionwindow)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。慢开始算法的原理在主机刚刚开始发送报文段时可先设置拥塞窗口cwnd=1,即设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口加1,即增加一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。发送方接收方发送M1确认M1发送M2~M3确认M2~M3发送M4~M7确认M4~M7cwnd=1cwnd=2cwnd=4发送M8~M15cwnd=8…tt发送方每收到一个对新报文段的确认(重传的不算在内)就使cwnd

加1。轮次1轮次2轮次3传输轮次

(transmissionround)使用慢开始算法后,每经过一个传输轮次,拥塞窗口cwnd

就加倍。一个传输轮次所经历的时间其实就是往返时间RTT。“传输轮次”更加强调:把拥塞窗口cwnd

所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。例如,拥塞窗口cwnd=4,这时的往返时间RTT就是发送方连续发送4个报文段,并收到这4个报文段的确认,总共经历的时间。设置慢开始门限状态变量ssthresh慢开始门限ssthresh

的用法如下:当cwnd<ssthresh

时,使用慢开始算法。当cwnd>ssthresh

时,停止使用慢开始算法而改用拥塞避免算法。当cwnd=ssthresh

时,既可使用慢开始算法,也可使用拥塞避免算法。拥塞避免算法的思路是让拥塞窗口cwnd

缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd

加1,而不是加倍,使拥塞窗口cwnd

按线性规律缓慢增长。当网络出现拥塞时无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢开始门限ssthresh

设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd

重新设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。2216慢开始和拥塞避免算法的实现举例当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为16个报文段,即ssthresh=16。“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例发送端的发送窗口不能超过拥塞窗口cwnd

和接收端窗口rwnd

中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例在执行慢开始算法时,拥塞窗口cwnd

的初始值为1,发送第一个报文段M0。

2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例发送端每收到一个确认,就把cwnd

加1。于是发送端可以接着发送M1和M2两个报文段。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例接收端共发回两个确认。发送端每收到一个对新报文段的确认,就把发送端的cwnd

加1。现在cwnd

从2增大到4,并可接着发送后面的4个报文段。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例发送端每收到一个对新报文段的确认,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd

随着传输轮次按指数规律增长。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例当拥塞窗口cwnd

增长到慢开始门限值ssthresh

时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例假定拥塞窗口的数值增长到24时,网络出现超时,表明网络拥塞了。传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例更新后的ssthresh

值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法。传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例当cwnd=12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。传输轮次乘法减小

(multiplicativedecrease)“乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh

设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh

值就下降得很快,以大大减少注入到网络中的分组数。加法增大

(additiveincrease)“加法增大”是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。注意“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。2.快重传和快恢复快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。快重传举例发送方接收方发送M1

确认M1t

确认M2发送M2发送M3发送M4

?发送M5发送M6

重复确认M2立即重传M3

重复确认M2

重复确认M2t发送M7收到三个连续的对M2

的重复确认立即重传M3丢失快恢复算法(1)当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限ssthresh

减半。但接下去不执行慢开始算法。(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口cwnd

现在不设置为1,而是设置为慢开始门限ssthresh

减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。从连续收到三个重复的确认

转入拥塞避免242468101214161820220048121620传输轮次拥塞窗口cwnd收到3个重复的确认执行快重传算法慢开始“乘法减小”拥塞避免“加法增大”TCPReno版本TCPTahoe版本(已废弃不用)ssthresh

的初始值拥塞避免“加法增大”新的ssthresh

值慢开始快恢复发送窗口的上限值发送方的发送窗口的上限值应当取为接收方窗口rwnd

和拥塞窗口cwnd

这两个变量中较小的一个,即应按以下公式确定:发送窗口的上限值

Min[rwnd,cwnd](5-8)当rwnd<cwnd

时,是接收方的接收能力限制发送窗口的最大值。当cwnd<rwnd

时,则是网络的拥塞限制发送窗口的最大值。

随机早期检测RED(RandomEarlyDetection)使路由器的队列维持两个参数,即队列长度最小门限THmin

和最大门限THmax。RED对每一个到达的数据报都先计算平均队列长度LAV。若平均队列长度小

温馨提示

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

评论

0/150

提交评论