计算机网络第七老师讲的也不细这个不看了章市公开课金奖市赛课一等奖课件_第1页
计算机网络第七老师讲的也不细这个不看了章市公开课金奖市赛课一等奖课件_第2页
计算机网络第七老师讲的也不细这个不看了章市公开课金奖市赛课一等奖课件_第3页
计算机网络第七老师讲的也不细这个不看了章市公开课金奖市赛课一等奖课件_第4页
计算机网络第七老师讲的也不细这个不看了章市公开课金奖市赛课一等奖课件_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

计算机网络第7章传输层第1页第7章传输层

*7.1传输层协议概述*7.2TCP/IP体系中传输层 7.2.1传输层中两个协议 7.2.2端口概念*7.3用户数据报协议UDP 7.3.1UDP概述 7.3.2UDP用户数据报首部格式NEU-SWC:XXGAO第2页第7章传输层(续)7.4传输控制协议TCP *7.4.1TCP概述 *7.4.2TCP报文段首部 *7.4.3TCP数据编号与确认 *7.4.4TCP流量控制与拥塞控制 *7.4.5TCP重传机制 7.4.6采取随机早期丢弃RED进行拥塞控制 *7.4.7TCP运输连接管理 7.4.8TCP有限状态机NEU-SWC:XXGAO第3页7.1传输层协议概述从通信和信息处理角度看,传输层向它上面应用层提供通信服务,它属于面向通信部分最高层,同时也是用户功效中最低层。物理层网络层传输层应用层数据链路层面向信息处理面向通信用户功效网络功效NEU-SWC:XXGAO第4页传输层为相互通信应用进程提供了逻辑通信54321传输层提供给用进程间逻辑通信主机A主机B应用进程应用进程路由器1路由器2AP1LAN2WANAP2AP3AP4IP层LAN1AP1AP2AP4端口端口54321IP协议作用范围传输层协议TCP和UDP作用范围AP3NEU-SWC:XXGAO第5页应用进程之间通信两个主机进行通信实际上就是两个主机中应用进程相互通信。应用进程之间通信又称为端到端通信。传输层一个很主要功效就是复用和分用。应用层不一样进程报文经过不一样端口向下交到传输层,再往下就共用网络层提供服务。“传输层提供给用进程间逻辑通信”。“逻辑通信”意思是:传输层之间通信好像是沿水平方向传送数据。但实际上这两个传输层之间并没有一条水平方向物理连接。NEU-SWC:XXGAO第6页传输层协议和网络层协议主要区分应用进程…应用进程…IP协议作用范围(提供主机之间逻辑通信)TCP和UDP协议作用范围(提供进程之间逻辑通信)因特网NEU-SWC:XXGAO第7页传输层主要功效传输层为应用进程之间提供端到端逻辑通信(但网络层是为主机之间提供逻辑通信)。传输层还要对收到报文进行差错检测。传输层需要有两种不一样运输协议,即面向连接TCP和无连接UDP。

NEU-SWC:XXGAO第8页传输层与其上下层之间关系OSI表示法运输实体运输实体运输协议传输层层接口运输服务用户(应用层实体)运输服务用户(应用层实体)层接口网络层(或网际层)应用层主机A主机B传输层服务访问点TSAP网络层服务访问点NSAPNEU-SWC:XXGAO第9页传输层向上提供可靠和不可靠逻辑通信信道?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程NEU-SWC:XXGAO第10页TCP/IP传输层有两个不一样协议:(1)用户数据报协议UDP (UserDatagramProtocol)(2)传输控制协议TCP (TransmissionControlProtocol)7.2TCP/IP体系中传输层

7.2.1传输层中两个协议NEU-SWC:XXGAO第11页两个对等运输实体在通信时传送数据单位叫作运输协议数据单元TPDU(TransportProtocolDataUnit)。TCP传送数据单位协议是TCP报文段(segment)UDP传送数据单位协议是UDP报文或用户数据报。TCP与UDPNEU-SWC:XXGAO第12页TCP/IP体系中传输层协议TCPUDPIP应用层与各种网络接口传输层NEU-SWC:XXGAO第13页TCP与UDPUDP在传送数据之前不需要先建立连接。对方传输层在收到UDP报文后,不需要给出任何确认。即使UDP不提供可靠交付,但在一些情况下UDP是一个最有效工作方式。TCP则提供面向连接服务。TCP不提供广播或多播服务。因为TCP要提供可靠、面向连接运输服务,所以不可防止地增加了许多开销。这不但使协议数据单元首部增大很多,还要占用许多处理机资源。NEU-SWC:XXGAO第14页还要强调两点传输层UDP用户数据报与网际层IP数据报有很大区分。IP

数据报要经过互连网中许多路由器存放转发,但

UDP

用户数据报是在传输层端到端抽象逻辑信道中传送。TCP

报文段是在传输层抽象端到端逻辑信道中传送,这种信道是可靠全双工信道。但这么信道却不知道终究经过了哪些路由器,而这些路由器也根本不知道上面传输层是否建立了TCP连接。NEU-SWC:XXGAO第15页7.2.2端口概念端口就是传输层服务访问点TSAP。端口作用就是让应用层各种应用进程都能将其数据经过端口向下交付给传输层,以及让传输层知道应该将其报文段中数据向上经过端口交付给应用层对应进程。从这个意义上讲,端口是用来标志应用层进程。NEU-SWC:XXGAO第16页端口在进程之间通信中所起作用应用层运输层网络层TCP报文段UDP用户数据报应用进程TCP复用IP复用UDP复用TCP报文段UDP用户数据报应用进程端口端口TCP分用UDP分用IP分用IP数据报IP数据报发送方接收方NEU-SWC:XXGAO第17页端口端口用一个16bit端口号进行标志。端口号只含有当地意义,即端口号只是为了标志本计算机应用层中各进程。在因特网中不一样计算机相同端口号是没有联络。一类是熟知端口,其数值普通为0--1023。当一个新应用程序出现时,必须为它指派一个熟知端口。另一类则是普通端口,用来随时分配给请求通信客户进程。NEU-SWC:XXGAO第18页插口(socket)TCP使用“连接”(而不但仅是“端口”)作为最基本抽象,同时将TCP连接端点称为插口(socket),或套接字、套接口。插口和端口、IP地址关系是:IP地址3端口号15003,1500插口(socket)NEU-SWC:XXGAO第19页同一个名词socket有各种不一样意思应用编程接口API称为socketAPI,简称为socket。socketAPI中使用一个函数名也叫作socket。调用socket函数端点称为socket。调用socket函数时其返回值称为socket描述符,可简称为socket。在操作系统内核中连网协议Berkeley实现,称为socket实现。NEU-SWC:XXGAO第20页7.3用户数据报协议UDP

7.3.1UDP概述

UDP只在IP数据报服务之上增加了极少一点功效,即端口功效和差错检测功效。即使UDP用户数据报只能提供不可靠交付,但UDP在一些方面有其特殊优点。发送数据之前不需要建立连接UDP主机不需要维持复杂连接状态表。UDP用户数据报只有8个字节首部开销。网络出现拥塞不会使源主机发送速率降低。这对一些实时应用是很主要。NEU-SWC:XXGAO第21页端口是用报文队列来实现UDP端口51000UDP端口69出队列入队列出队列入队列TFTP服务器TFTP客户UDP用户数据报应用层运输层NEU-SWC:XXGAO第22页7.3.2UDP用户数据报首部格式伪首部源端口目端口长度检验和数据首部UDP长度源IP地址目IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报NEU-SWC:XXGAO第23页伪首部源端口目端口长度检验和数据首部UDP长度源IP地址目IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。NEU-SWC:XXGAO第24页伪首部源端口目端口长度检验和数据首部UDP长度源IP地址目IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报在计算检验和时,暂时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。NEU-SWC:XXGAO第25页计算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数据数据数据数据数据数据数据全0NEU-SWC:XXGAO第26页7.4传输控制协议TCP

7.4.1TCP概述

端口…发送

TCP

报文段TCP…TCP接收缓存发送缓存报文段…报文段报文段端口发送端接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程NEU-SWC:XXGAO第27页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前NEU-SWC:XXGAO第28页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充源端口和目标端口字段——各占2字节。端口是传输层与应用层服务接口。传输层复用和分用功效都要经过端口才能实现。NEU-SWC:XXGAO第29页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充序号字段——占4字节。TCP连接中传送数据流中每一个字节都编上一个序号。序号字段值则指是本报文段所发送数据第一个字节序号。NEU-SWC:XXGAO第30页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充确认号字段——占4字节,是期望收到对方下一个报文段数据第一个字节序号。NEU-SWC:XXGAO第31页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充数据偏移——占4bit,它指出TCP报文段数据起始处距离TCP报文段起始处有多远。“数据偏移”单位不是字节而是32bit字(4字节为计算单位)。NEU-SWC:XXGAO第32页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留为今后使用,但当前应置为0。NEU-SWC:XXGAO第33页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充紧急比特URG——当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级数据)。NEU-SWC:XXGAO第34页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充确认比特ACK——只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。NEU-SWC:XXGAO第35页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充推送比特PSH(PuSH)——接收TCP收到推送比特置1报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。NEU-SWC:XXGAO第36页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充复位比特RST(ReSeT)——当RST1时,表明TCP连接中出现严重差错(如因为主机瓦解或其它原因),必须释放连接,然后再重新建立运输连接。NEU-SWC:XXGAO第37页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充同时比特SYN——同时比特SYN置为1,就表示这是一个连接请求或连接接收报文。NEU-SWC:XXGAO第38页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充终止比特FIN(FINal)——用来释放一个连接。当FIN1时,表明此报文段发送端数据已发送完成,并要求释放运输连接。NEU-SWC:XXGAO第39页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充窗口字段——占2字节。窗口字段用来控制对方发送数据量,单位为字节。TCP连接一端依据设置缓存空间大小确定自己接收窗口大小,然后通知对方以确定对方发送窗口上限。NEU-SWC:XXGAO第40页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充检验和——占2字节。检验和字段检验范围包含首部和数据这两部分。在计算检验和时,要在TCP报文段前面加上12字节伪首部。NEU-SWC:XXGAO第41页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充紧急指针字段——占16bit。紧急指针指出在本报文段中紧急数据最终一个字节序号。NEU-SWC:XXGAO第42页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充选项字段——长度可变。TCP只要求了一个选项,即最大报文段长度MSS(MaximumSegmentSize)。MSS告诉对方TCP:“我缓存所能接收报文段数据字段最大长度是MSS个字节。”MSS是TCP报文段中数据字段最大长度。数据字段加上TCP首部才等于整个TCP报文段。NEU-SWC:XXGAO第43页TCP首部20字节固定首部目端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充填充字段——这是为了使整个首部长度是4字节整数倍。NEU-SWC:XXGAO第44页7.4.3TCP数据编号与确认TCP协议是面向字节。TCP将所要传送报文看成是字节组成数据流,并使每一个字节对应于一个序号。在连接建立时,双方要约定初始序号。TCP每次发送报文段首部中序号字段数值表示该报文段中数据部分第一个字节序号。TCP确实认是对接收到数据最高序号表示确认。接收端返回确实认号是已收到数据最高序号加1。所以确认号表示接收端期望下次收到数据中第一个数据字节序号。NEU-SWC:XXGAO第45页7.4.4TCP流量控制与拥塞控制

1.滑动窗口概念TCP采取大小可变滑动窗口进行流量控制。窗口大小单位是字节。在TCP报文段首部窗口字段写入数值就是当前给对方设置发送窗口数值上限。发送窗口在连接建立时由双方约定。但在通信过程中,接收端可依据自己资源情况,随时动态地调整对方发送窗口上限值(可增大或减小)。NEU-SWC:XXGAO第46页收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送900字节长数据,划分为9个100字节长报文段,而发送窗口确定为500字节。发送端只要收到了对方确实认,发送窗口就可前移。发送TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段距离。NEU-SWC:XXGAO第47页收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移发送端已发送了400字节数据,但只收到对前200字节数据确实认,同时窗口大小不变。现在发送端还可发送300字节。已发送并被确认已发送但未被确认NEU-SWC:XXGAO第48页1002003004005006007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小发送端收到了对方对前400字节数据确实认,但对方通知发送端必须把窗口减小到400字节。现在发送端最多还可发送400字节数据。NEU-SWC:XXGAO第49页利用可变窗口大小进行流量控制

双方确定窗口值是400SEQ=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丢失!NEU-SWC:XXGAO第50页2.慢开启和拥塞防止发送端主机在确定发送报文段速率时,既要依据接收端接收能力,又要从全局考虑不要使网络发生拥塞。所以,每一个TCP连接需要有以下两个状态变量:接收端窗口rwnd(receiverwindow)又称为通知窗口(advertisedwindow)。拥塞窗口cwnd(congestionwindow)。NEU-SWC:XXGAO第51页接收端窗口rwnd和拥塞窗口cwnd(1)接收端窗口rwnd这是接收端依据其当前接收缓存大小所许诺最新窗口值,是来自接收端流量控制。接收端将此窗口值放在TCP报文首部中窗口字段,传送给发送端。(2)拥塞窗口cwnd(congestionwindow)是发送端依据自己预计网络拥塞程度而设置窗口值,是来自发送端流量控制。NEU-SWC:XXGAO第52页发送窗口上限值发送端发送窗口上限值应该取为接收端窗口rwnd和拥塞窗口cwnd这两个变量中较小一个,即应按以下公式确定:发送窗口上限值Min[rwnd,cwnd](7-1)当rwnd<cwnd时,是接收端接收能力限制发送窗口最大值。当cwnd<rwnd时,则是网络拥塞限制发送窗口最大值。

NEU-SWC:XXGAO第53页慢开启算法原理在主机刚才开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS数值。在每收到一个对新报文段确实认后,将拥塞窗口增加至多一个MSS数值。用这么方法逐步增大发送端拥塞窗口cwnd,能够使分组注入到网络速率愈加合理。NEU-SWC:XXGAO第54页慢开启和拥塞防止算法实现举例当TCP连接进行初始化时,将拥塞窗口置为1。图中窗口单位不使用字节而使用报文段。慢开始门限初始值设置为16个报文段,即ssthresh=16。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开始拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止NEU-SWC:XXGAO第55页慢开启和拥塞防止算法实现举例发送端发送窗口不能超出拥塞窗口cwnd和接收端窗口rwnd中最小值。我们假定接收端窗口足够大,所以现在发送窗口数值等于拥塞窗口数值。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开始慢开始拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止NEU-SWC:XXGAO第56页在执行慢开始算法时,拥塞窗口cwnd初始值为1,发送第一个报文段M0。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开启拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第57页246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开启拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增大到2,于是发送端能够接着发送M1和M2两个报文段。慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第58页接收端发回ACK2和ACK3。发送端每收到一个对新报文段确实认ACK,就把发送端拥塞窗口加1。现在发送端cwnd从2增大到4,并可发送M4~~~M6共4个报文段。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开启拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第59页发送端每收到一个对新报文段确实认ACK,就把发送端拥塞窗口加1,所以拥塞窗口cwnd伴随传输次数按指数规律增加。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开启拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第60页当拥塞窗口cwnd增加到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞防止算法,拥塞窗口按线性规律增加。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加ssthresh=16慢开启慢开启线性规律增加拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第61页假定拥塞窗口数值增加到24时,网络出现超时(表明网络拥塞了)。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开启拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第62页更新后ssthresh值变为12(即发送窗口数值24二分之一),拥塞窗口再重新设置为1,并执行慢开始算法。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开启拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第63页当cwnd=12时改为执行拥塞防止算法,拥塞窗口按按线性规律增加,每经过一个往返时延就增加一个MSS大小。246810121416182022004812162024传输次数拥塞窗口cwnd进入拥塞防止发生超时指数规律增加线性规律增加ssthresh=16慢开启慢开启拥塞防止拥塞防止更新后ssthresh=12进入拥塞防止慢开启和拥塞防止算法实现举例NEU-SWC:XXGAO第64页乘法减小(multiplicativedecrease)“乘法减小“是指不论在慢开始阶段还是拥塞防止阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大降低注入到网络中分组数。NEU-SWC:XXGAO第65页加法增大

(additiveincrease)

“加法增大”是指执行拥塞避免算法后,当收到对所有报文段确认就将拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。NEU-SWC:XXGAO第66页必须强调指出“拥塞防止”并非指完全能够防止了拥塞。利用以上办法要完全防止网络拥塞还是不可能。“拥塞防止”是说在拥塞防止阶段把拥塞窗口控制为按线性规律增加,使网络比较不轻易出现拥塞。NEU-SWC:XXGAO第67页3.快重传和快恢复快重传算法要求,发送端只要一连收到三个重复ACK即可断定有分组丢失了,就应马上重传丢失报文段而无须继续等候为该报文段设置重传计时器超时。不难看出,快重传并非取消重传计时器,而是在一些情况下可更早地重传丢失报文段。NEU-SWC:XXGAO第68页快重传举例M1,M2ACK2,ACK3M4主机A主机BB确认M1和M2A发送M1和M2A收到了三个重复确认ACK3,就立即重传M3,而不必等待超时重传。M3丢失!A发送M3但丢失了A发送M4ACK3M5A发送M5ACK3B发送第二个重复确认ACK3M6A发送M6ACK3M3B发送第三个重复确认ACK3B只能再次确认M2(因为M3没有收到)NEU-SWC:XXGAO第69页快恢复算法(1)当发送端收到连续三个重复ACK时,就重新设置慢开始门限ssthresh。(2)与慢开始不一样之处是拥塞窗口cwnd不是设置为1,而是设置为ssthresh+3MSS。(3)若收到重复ACK为n个(n>3),则将cwnd设置为ssthresh+nMSS。(4)若发送窗口值还允许发送报文段,就按拥塞防止算法继续发送报文段。(5)若收到了确认新报文段ACK,就将cwnd缩小到ssthresh。NEU-SWC:XXGAO第70页7.4.5TCP重传机制重传机制是TCP中最主要和最复杂问题之一。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置重传时间到但还没有收到确认,就要重传这一报文段。NEU-SWC:XXGAO第71页往返时延方差很大因为TCP下层是一个互连网环境,IP数据报所选择路由改变很大。因而传输层往返时延方差也很大。时间数据链路层传输层T1T2T3往返时延概率分布NEU-SWC:XXGAO第72页

往返时延自适应算法统计每一个报文段发出时间,以及收到对应确实认报文段时间。这两个时间之差就是报文段往返时延。将各个报文段往返时延样本加权平均,就得出报文段平均往返时延RTT。每测量到一个新往返时延样本,就按下式重新计算一次平均往返时延RTT:平均往返时延RTT

(旧RTT)(1)(新往返时延样本)(7-2)在上式中,01。NEU-SWC:XXGAO第73页参数选择若很靠近于1,表示新算出平均往返时延RTT和原来值相比改变不大,而新往返时延样本影响不大(RTT值更新较慢)。若选择靠近于零,则表示加权计算平均往返时延RTT受新往返时延样本影响较大(RTT值更新较快)。经典值为7/8。NEU-SWC:XXGAO第74页超时重传时间RTO(RetransmissionTime-Out)计时器RTO应略大于上面得出RTT,即:

RTO

RTT(7-3)这里是个大于1系数。若取很靠近于1,发送端可及时地重传丢失报文段,所以效率得到提升。但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络负担。所以TCP原先标准推荐将值取为2。NEU-SWC:XXGAO第75页往返时延RTT?往返时间测量相当复杂TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段ACK。怎样判定此确认报文段是对原来报文段1确实认,还是对重传报文段2确实认?发送一个TCP报文段超时重传TCP报文段收到ACK时间12往返时延RTT?是对哪一个报文段确认?NEU-SWC:XXGAO第76页Karn算法在计算平均往返时延RTT时,只要报文段重传了,就不采取其往返时延样本。这么得出平均往返时延RTT和重传时间就较准确。NEU-SWC:XXGAO第77页修正Karn算法报文段每重传一次,就将重传时间增大一些:新重传时间(旧重传时间)(7-4)系数经典值是2。当不再发生报文段重传时,才依据报文段往返时延更新平均往返时延RTT和重传时间数值。实践证实,这种策略较为合理。NEU-SWC:XXGAO第78页7.4.6随机早期丢弃RED(RandomEarlyDiscard)使路由器队列维持两个参数,即队列长度最小门限THmin和最大门限THmax。RED对每一个抵达数据报都先计算平均队列长度LAV。若平均队列长度小于最小门限THmin,则将新抵达数据报放入队列进行排队。若平均队列长度超出最大门限THmax,则将新抵达数据报丢弃。若平均队列长度在最小门限THmin和最大门限THmax之间,则按照某一概率p将新抵达数据报丢弃。NEU-SWC:XXGAO第79页RED将路由器抵达队列划分成为三个区域从队首发送最小门限THmin最大门限THmin数据报抵达平均队列长度Lav排队丢弃以概率p丢弃NEU-SWC:XXGAO第80页丢弃概率p与THmin和Thmax关系最小门限THmin最大门限THmax平均队列长度Lav数据报丢弃概率p1.00pmax当LAVThmin时,丢弃概率p=0。当LAVThmax时,丢弃概率p=1。当THminLAVTHmax时,0p1。比如,按线性规律改变,从0变到pmax。NEU-SWC:XXGAO第81页瞬时队列长度和平均队列长度区分队列长度时间瞬时队列长度平均队列长度NEU-SWC:XXGAO第8

温馨提示

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

评论

0/150

提交评论