计算机网络复习第三章-运输层,计算机网络运输层思维导图
本作品内容为计算机网络复习第三章-运输层,格式为 docx ,大小 1975205 KB ,页数为 20页
('第三章运输层一.概述和运输层服务运输层为应用进程之间提供逻辑通信功能运输层协议在端系统而非路由器实现运输层和网络层的关系:网络层提供的是主机间的逻辑通信,运输层是提供进程间的逻辑通信,即网络层负责将包送到主机,运输层负责将包分配给主机上对应进程提供两种运输层协议UDPTCP二.多路复用与多路分解套接字(socket):用于从网络向进程传递数据和从进程向网络传递数据,一个进程可以有多个套接字,每个套接字都有唯一标识符,运输层实际上将数据交付给了套接字。多路分解(demultiplexing):将运输层报文段中的数据交付到正确的套接字的工作多路复用(multiplexing):在源主机从不同的套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层。报文段格式如下:1.无连接的多路复用与多路分解一个UDP套接字是由一个二元组来全面标识定向分解的,即(目的IP地址,目的端口号)因此,多个具有不同源IP地址和源端口号但是具有相同目的IP地址和目的端口号的会被定向交付到同一目的进程2.面向连接的多路复用与多路分解一个TCP套接字是由一个四元组来全面标识定向分解的(源IP地址,源端口号,目的IP地址,目的端口号)因此,多个具有不同源IP地址和源端口号但是具有相同目的IP地址和目的端口号的会被定向交付到不同的目的进程。3.Web服务器与TCP连接套接字与进程并非总是一一对应,当今高性能Web服务器通常只使用一个进程但是会为每个新的客户连接创建一个新连接套接字的新线程。三.无连接运输:UDP1.UDP概述UDP特点:\uf06c没有对IP增加过多东西,因此用UDP协议的应用程序基本直接与IP打交道\uf06cUDP报文发送方和接收方的运输层实体没有握手,因此为无连接的\uf06c乱序提交数据包\uf06c尽力交付,不可靠,会丢包Tips:TCP/UDP关于数据错误排查使用的是同一算法,因此在确保数据不出错方面同样可靠使用UDP的理由:\uf06c发送快速,消息独立:UDP消息独立封装,只要进程将数据传给UDP,UDP会立刻将数据完整打包立即投入网络层;TCP拥有拥塞控制机制,确保可靠交付但是不确保交付时长多长,且在发送宽裕时会将多条消息封装到一个包,在资源不够时会截取消息的部分发送,导致沾包。要的就是快!\uf06c无需连接建立:UDP无需准备直接传输,TCP需要三次握手,因此UDP不会引入连接时延,还是快!\uf06c无连接状态:TCP需要维护连接状态(接收和发送缓存,拥塞控制参数以及序号与确认号参数),UDP不维护。节省更多资源服务更多用户\uf06c分组首部开销小:TCP20字节首部开销UDP8字节开销。节省更多资源服务更多用户2.UDP报文段结构3.UDP检验和发送方的UDP对报文段所有16比特字的和进行反码运算,求和溢出时进行回卷。求和如下:回卷如下:接收方:将所有16比特字(包括检验和)加在一起,如果该包没错,结果必为1111111111111111如果出现0则有差错四.可靠数据传输原理可靠数据传输协议(rdtreliabledatatransferprotocol):本书用于介绍TCP前自己设计的协议一些函数介绍:仅考虑单向数据传输rdt1.0:假设底层信道完全可靠,无比特错不丢包,数据收发无延迟有限状态机(FSMFinite-StateMachine)如下:rdt2.0:底层信道具有比特差错自动重传请求(ARQAutomaticRepeatrequest):通过发送控制报文肯定确认(ACKpositiveacknowledgement)与否定确认/请重复一遍(NAKnegativeacknowledgment)使得接收方可以让发送方知道哪些内容被正确接收,哪些内容有误需要重传。ARQ另外三种功能:\uf06c差错检测\uf06c接收方反馈\uf06c重传FSM如下:一些漏洞:ACK/NAK分组本身也会出错,如果出错可能会导致误发或者重发三种处理思路:\uf06c发送方发送重发一次的请求包给接收方。但是该包也有出错可能,导致问话模糊不清,从而导致不停重发请求重发包。\uf06c增加足够的检验与比特,令发送方可以检验回复比特差错。足够但太占用资源。\uf06c当发送方收到坏的ACK/NAK分组时,直接重传当前的分组。接收方因此得到了冗余分组(duplicatepacket)。但是接收方并不知道它上次所发的ACK/NAK包是否被正确收到,因此它并不知道分组是新的还是重传,从而导致重复交付相同数据包。rdt2.1:基于2.0的假设与问题,采用思路三进行改进。对发送分组添加新字段进行编号,即将发送数据分组的序号放在该字段,于是接受方只需要检查序号即可确定是否为重发包。对于停等协议只需要1bit即010101交替出现即不重复,否则为重发包。rdt2.2:基于2.1,但是网络信道可能会丢包改进办法:接收方不返回ACK/NAK,而是返回最后一次成功收到的包的ACK+包序号作用:发送方每次检查AKC序号应该不同,这样在丢包时可以及时知道丢掉的包rdt3.0比特交替协议(alternating-bitprotocol):重发时间选择:发送方在经历了至少一个包的往返时延加上接收方处理一个分组所需时间后仍然未收到ACK包则可以认为超时但是该时延往往难以估算,并且好的协议应该在丢包情况下快速回复。因此实际上在发包时人为设置一个倒计数定时器(countdowntimer),超时即认为丢包流水线协议中的差错处理机制:\uf06c增加序号范围\uf06c接收方和发送方有缓存多个分组的缓存区1.回退N步(GBDGo-Back-N)/滑动窗口协议定义:\uf06c窗口大小N即缓存区大小\uf06c基序号(base)最早的未被确认的分组\uf06c下一个序号(nextseqnum)最小的未使用序号则发送方的分组状态如下:因此总是从send_base开始依次发包,且每收到一确认ACK则会调整send_base到对应位置。接收方操作:返回最后一个成功收到的包的ACK序号,拒绝接收乱序包故而具有以下效果:累积效应,即收到了任何序号n(send_base,nextseqnum)∈,则表明(send_base,n)的包均被收到,因此无需依次确认每一个包是否被收到。具体示例:优点:接收缓存简单,无需缓存任何乱序分组缺点:丢弃分组但是后续重传出错导致重传次数增加2.选择重传(SRSelectiveRepeat)每个包均需确认,仅重传那些疑似被丢或者损坏的包(未收到确认ACK的包)具体操作如下:在SR窗口过大或者序号过少的情况下,会分不清对应序号包是新分组还是重传对于GBN和SR如何选择合适的窗口序号,才能使得协议区分新分组或者重传SR序号个数应该为窗口大小N的两倍即2NGBN序号个数应该比窗口大小N大1即N+1五.面向连接的运算:TCP1.TCP连接简介最大报文段长度(MSSMaximumSegmentSize):\uf06cTCP从缓存中取出并且放入报文段的最大数据数量\uf06c即Segement包体部分最大长度\uf06c通常根据MTU来设置最大传输单元(MTUMaximumTransmissionUnit):链路层帧最大长度2.TCP报文段结构TCP提供累积确认接收乱序包处理:\uf06c可能立即丢弃\uf06c可能保留,等待填补TCP连接双方均会随机选择初始序号,避免与已经终止的连接报文段序号重复而导致误认。被捎带(piggybacked):数据接收与ACK封装在一个数据报中实例:3.往返时间估计与超时(1)估计往返时间首次ACK三路握手的超时估计时间EstimatedRTT初始默认设置为6sTCP为成功发送的包进行采样得到SampleRTT(并非每次发包都进行,只在某些时刻进行)TCP不会为重传包进行SampleRTT估计,因为会产生较大误差,如下图:采用指数加权移动平均(EWMAExponentialWeightedMovingAverage)计算估计误差EstimatedRTT=(1−α)∗EstimatedRTT+α∗SampleRTT其中α=0.125(RFC6298)[RFC6298]定义了RTT偏差DevRTT,用于估算SampleRTT偏离EstimatedRTT的程度DevRTT=(1−β)∗DevRTT+β∗∨SampleRTT−EstimatedRTT∨¿其中β=0.25(2)设置和管理重传超时间隔超时间隔应该大于EstimatedRTT,否则会造成不必要重传但是又不能大很多,否则会不能及时重传利用DevRTT控制,当SampleRTT波动大时重传间隔大,否则小TimeoutInterval=EstimatedRTT+4DevRTT4.可靠数据传输(1)即使有多个已发送但未确认的分组,也用单一的重传定时器对最早未被确认的分组计时(2)三种重传情况:情况二中两个包的第一次ACK都超时,但是由于单一计时只会先重传具有最小序号且还未被确认的包,只要重传的ACK120在第二次超时前到达,则不会重传第二个包情况三中由于累积确认的性质,即使第一个包的ACK没有收到,但是收到第二个包的ACK,同样不会重传第一个包。(3)超时间隔加倍TCP每次重传都会将下次超时间隔加倍(4)快速重传冗余ACK(duplicateACK)再次确认某个报文段的ACK即相同序号的ACK一旦收到3个冗余ACK,TCP就执行快速重传(fastretransmit),即在该报文段的定时器过期之前重传该丢失的报文段(5)具体机制累积确认,选择重传(SR和GBN的结合)5.流量控制拥塞控制(congestioncontrol):由于IP网络的拥塞而被遏制流量控制服务(flow-controlservice):发送方维护一个接收窗口(receivewindow)的变量来提供流量控制,接收窗口用于告诉发送方接收方还有多少可用的缓存空间。具体实现:(1)对于接收方:\uf06cRcvBuffer:接收方为发送方分配的可用缓存大小。\uf06cLastByteRead:接收方的应用进程从缓存读出的数据流的最后一个字节的编号,即已经从缓存中被取走的数据\uf06cLastByteRcvd:从网络中到达的并且已经放入接收方缓存中的数据流最后一个字节编号TCP不允许已经分配的缓存溢出:LastByteRcvd−LastByteRead≤RcvBuffer接收窗口用rwnd表示,根据缓存可用空间的数量来设置:rwnd=RcvBuffer−[LastByteRcvd−LastByteRead]接收方讲rwnd封装在ACK包返回给发送方(2)对于发送方:\uf06cLastByteSent:发送方最后一个发送的字节序号\uf06cLastByteAcked:发送方最后一个收到ACK确认的字节序号在连接周期内必须保证:LastByteSent−LastByteAcked≤rwnd(3)一些细节:当接收方的rwnd=0后,发送方会被阻塞但仍有未发完的数据,而如果一段时间后接收方有了足够缓存,但接收方后续不继续发送消息,发送方如何知道接收方可以继续接收数据?在一个时长间隔后,发送方使用一个字节的探测包,若接收到rwnd≠0则发送方继续发送。6.TCP连接管理连接建立细节:\uf06c发送方发送SYN包SYN字段置1,且随机选一个初始序号(client_isn)放入该包seq字段。\uf06cSYN包到达接收方,接收方提取出SYN报文段,为该连接分配缓存和变量。将回复报文SYN字段置1,ACK字段(确认号)为client_isn+1,随机选择自己的初始序号(server_isn)填入seq字段,封装成SYNACK包回复。\uf06c发送方收到SYNACK包,为该连接分配缓存和变量,再发送一个新包,将确认字段填入server_isn+1且SYN字段置0。且此包可以携带客户到服务器的数据。连接断开细节:\uf06c数据先发完的一方率先发送一个FIN包,在FIN字段置1\uf06c接收方将确认号ACK+1返回ACK包\uf06c接收方在自身数据发完之后发送一个FIN包,在FIN字段置1\uf06c数据先发完的一方将确认号ACK+1返回ACK包,且等待一段时间后断开\uf06c接收方收到ACK包都立刻断开六.拥塞控制原理1.拥塞原因与代价原因,代价1:当分组的到达速率接近链路容量时,分组经历巨大的排队时延原因,代价2:发送方必须执行重传以补偿因为缓存溢出而丢弃的分组原因,代价3:发送方遭遇巨大时延所进行的不必要重传会引起路由器利用其链路带宽来转发不必要的分组副本原因,代价4:当由于拥塞而丢弃分组时,每个上游路由器用于转发该分组使用的传输容量被浪费掉了2.拥塞控制方法端到端拥塞控制:通过对网络的观察推断是否拥塞网络辅助的拥塞控制:由网络层构件(路由器)向发送方提供关于网络中拥塞状态的显示反馈信息网络辅助的两种方式:\uf06c采用阻塞分组(chokepacket)直接反馈信息给发送方\uf06c路由器标记或更新从发送方流向接收方的分组,告诉接收方网络拥塞,再由接收方反馈给发送方3.拥塞控制例子ATMABR拥塞控制框架七.TCP拥塞控制1.TCP拥塞控制算法(TCPcongestioncontrolalgorithm):(1)TCP拥有一个额外变量拥塞窗口(cwndcongestionwindow),TCP在发送方中未被确认的数据量满足如下关系:LastByteSent−LastByteAcked≤min{cwnd,rwnd}(2)可以通过控制cwnd的大小对发送速率进行改变:\uf06c如果报文段被确认正确交付,可以逐渐扩大cwnd\uf06ccwnd扩大速度应该与交付速度正相关,即交付越快,扩大越快,否则越慢由于上述机制需要TCP发送方进行确认/计时来触发,因此TCP具有自计时的特性(3)一些发送速率变化的指导性原则:\uf06c一个丢失报文段意味着可能拥塞,因此丢失应该降低发送方的速率\uf06c确认报文段的返回意味着网络通畅,因此应该增加发送方速率\uf06c进行带宽探测,即在出现拥塞的速率上开始减少试探(4)具体策略:\uf06c慢启动(slow-start):cwnd以1个MSS开始传输,每当传输的一个报文段首次被确认,就再增加一个MSS,这样每过一个RTT,发送速率就会翻倍即,故TCP发送速率起始慢,但是慢启动阶段速率以指数形式增长。何时结束慢启动:当出现由超时指示的丢包事件时结束,TCP此时将cwnd置为1,重新开始慢启动,同时设置ssthresh=cwnd/2(慢启动阈值)如果检测到3个冗余ACK,则执行快速重传,并且进入快速回复。\uf06c拥塞避免:当进入MSS个数大于ssthresh时进入拥塞避免状态,此时每个RTT只增加一个MSS何时结束拥塞避免的线性增长:当出现由超时指示的丢包事件时结束,TCP此时将cwnd置为1,重新开始慢启动\uf06c快速恢复:对每个收到的冗余ACK,cwnd的值增加一个MSS,如果该过程中出现超时事件,则会在快速恢复结束后执行慢启动和拥塞避免(并非每个版本的TCP都有该机制)两种版本:\uf06cTCPTahoe无论是丢包还是3个冗余ACK都是直接进入慢启动\uf06cTCPReno综合了快速恢复PS不同协议实现不同,考试快速恢复计算窗口减半,不加三2.总结回顾(1)TCPAIMD(Additive-Increase,MultiplicationDecrease)算法:在经过慢启动阶段后,每过一个RTT则增加一个MSS,遇到冗余ACK事件时,cwnd减半,即加性增,乘性减锯齿状的流量控制(2)一条连接的平均吞吐量,其中W表示窗口长度(3)一条连接的吞吐量,其中L表示丢包率(4)公平性假设如下理想状态,两者需要相同带宽,且RTT相同,则TCP可以保证无论从何处开始都收敛到相同带宽但是现实中往往不能满足两者的一些假设条件,一般来说较小的RTT连接可以获得更多宽度TCP分配宽度原则max(min)原则:如果A要增加带宽,则只能利用空闲宽度或者让高于自己的带宽减速,而不能影响其他带宽Eg:10带宽A6B4则A不能增加10带宽A4B6则A能增加10带宽A5B3则A能增加',)
提供计算机网络复习第三章-运输层,计算机网络运输层思维导图会员下载,编号:1700739891,格式为 docx,文件大小为20页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。