计算机网络自顶向下方法第三章讲义_第1页
计算机网络自顶向下方法第三章讲义_第2页
计算机网络自顶向下方法第三章讲义_第3页
计算机网络自顶向下方法第三章讲义_第4页
计算机网络自顶向下方法第三章讲义_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

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

文档简介

计算机网络2014年9月国防科技学院第3章运输层计算机网络2应用层:包含大量应用普遍需要的协议,支持网络应用FTP,SMTP,HTTP运输层:

主机到主机数据传输,负责从应用层接收消息,并传输应用层的message,到达目的后将消息上交应用。TCP,UDP网络层:从源到目的地数据报的选路IP,选路协议链路层:在邻近网元之间传输数据PPP,以太网物理层:物理层负责将链路层帧中每一位(bit)从链路的一端传输到另一端。应用层运输层网络层链路层物理层TCP/IP五层模型3我们的目的:

理解运输层服务依据的原理:Multiplexing(多路复用)/demultiplexing(多路分解)可靠数据传输flowcontrol(流量控制)congestioncontrol(拥塞控制)学习因特网中的运输层协议:UDP:无连接传输TCP:面向连接传输TCP拥塞控制第3章:运输层43.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制5在运行不同主机上应用进程之间提供逻辑通信运输协议运行在端系统中发送方:将应用报文(messages)划分为报文段(segments),传向网络层接收方:将段重新装配为报文,传向应用层应用程序可供使用的运输协议不止一个因特网:TCP和UDP应用层运输层网络层数据链路层物理层网络层数据链路层物理层应用层运输层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层逻辑端到端传输运输服务和协议动画:多层通信实质6网络层:

主机间的逻辑通信运输层:

进程间的逻辑通信依赖、强化网络层服务家庭类比:12个孩子向12个孩子发信进程=孩子应用报文=信封中的信主机=家庭运输协议=Ann和Bill网络层协议=邮政服务运输层vs.网络层7可靠的、按序的交付(TCP)拥塞控制流量控制连接建立不可靠、无序的交付:UDP差错检测不可用的服务:时延保证带宽保证应用层运输层网络层数据链路层物理层网络层数据链路层物理层应用层运输层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层逻辑端到端传输因特网运输层协议83.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制9应用层运输层网络层链路层物理层P1应用层运输层网络层链路层物理层应用层运输层网络层链路层物理层P2P3P4P1主机1主机2主机3=进程=套接字将接收到的段交付给相应的套接字(一路到多路,向上)在接收主机分解:从多个套接字收集数据,用首部封装数据(多路到一路,向下)在发送主机复用:多路复用/多路分解10主机接收IP数据报每个数据报有源IP地址,目的IP地址每个数据报承载1个运输层报文段每个段具有源、目的端口号

(回想:对特定应用程序的周知端口号)源端口#目的端口#32bits应用数据(报文)其他首部字段TCP/UDP报文段格式分解工作过程主机使用IP地址&端口号将报文段导向到相应的套接字11UDP套接字由二元组全面标识:(目的地IP地址,目的地端口号)当主机接收UDP段时:在段中检查目的地端口号将UDP段定向到具有该端口号的套接字具有不同源IP地址和/或源端口号的IP数据报(目的IP地址和端口号相同)定向到相同的套接字无连接多路复用与分解12客户机IP:BP2客户机IP:AP1P1P3服务器IP:CSP:6428DP:9157SP:9157DP:6428SP:6428DP:5775SP:5775DP:6428SP提供了“返回地址”无连接多路复用与分解(续)=进程=套接字13TCP套接字由四元组(4-tuple)标识:源IP地址源端口号目的IP地址目的端口号接收主机使用这四个值来将段定向到适当的套接字服务器主机可能支持许多并行的TCP套接字:每个套接字由其自己的四元组标识Web服务器对每个连接的客户机具有不同的套接字非持久HTTP将为每个请求具有不同的套接字面向连接多路复用与分解14客户机IP:BP1客户机IP:AP1P2P4服务器IP:CSP:9157DP:80SP:9157DP:80P5P6P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B面向连接多路复用与分解(续)=进程=套接字15客户机IP:BP1客户机IP:AP1P2服务器IP:CSP:9157DP:80SP:9157DP:80P4P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B面向连接分解:多线程Web服务器=进程=套接字163.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制17“尽力而为”服务,UDP段可能:丢包对应用程序交付失序无连接在UDP发送方和接收方之间无握手每个UDP段的处理独立于其他段为何要有UDP协议?无连接创建(它将增加时延)简单:在发送方、接收方无连接状态段首部小无拥塞控制:UDP能够尽可能快地传输

UDP:用户数据报协议18常用于流媒体应用程序丢包容忍速率敏感其他UDP应用DNSSNMP经UDP的可靠传输:在应用层增加可靠性应用程序特定的差错恢复!源端口#目的端口#32bits应用数据(报文)UDP段格式长度检查和UDP段的长度,包括首部,以字节计checksum:校验和,检查和

UDP报文段结构19发送方:将段内容处理为16比特整数序列检查和:段内容的加法(反码和)发送方将检查和放入UDP检查和字段接收方:计算接收的段的检查和核对计算的检查和是否等于检查和字段的值:NO–

检测到差错YES–

无差错检测到。虽然如此,还可能有差错吗?目的:

在传输的段中检测“差错”(如比特翻转)

UDP检查和20注意当数字作加法时,最高位进比特位的进位需要加到结果中例子:两个16-bit整数相加1111001100110011011101010101010101110111011101110111101110111011110010100010001000011回卷和检查和检查和例子计算步骤:

求和,回卷,求反213.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输3.6拥塞控制的原则3.7TCP拥塞控制22在应用层、运输层、数据链路层的重要性网络中需解决的最重要的10个问题之一!不可靠信道的特点决定了可靠数据传输协议的复杂性可靠数据传输的原理23发送侧接收侧rdt_send():

calledfromabove,(e.g.,byapp.).Passeddatatodelivertoreceiverupperlayerudt_send():

calledbyrdt,totransferpacketoverunreliablechanneltoreceiverrdt_rcv():

calledwhenpacketarrivesonrcv-sideofchanneldeliver_data():

calledbyrdttodeliverdatatoupper可靠数据传输:描述函数熟悉24我们将:逐渐递增地研究可靠数据传输协议(rdt)的发送方和接收方仅考虑单向数据传输但控制信息将在两个方向流动!使用有限状态机(FSM)来定义发送方和接收方状态1状态2引起状态变迁的事件状态变迁所采取的行动状态:

当位于这个“状态时”,下个状态惟一地由下个事件决定事件动作事件^有限状态机描述方法253.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理rdt1.0,rdt2.0,rdt3.0协议3.5面向连接的传输3.6拥塞控制的原则3.7TCP拥塞控制26底层信道完全可靠无比特差错无分组丢失发送方、接收方具有各自的FSM:发送方将数据发向底层信道接收方从底层信道读取数据Waitforcallfromabovepacket=make_pkt(data)udt_send(packet)rdt_send(data)extract(packet,data)deliver_data(data)Waitforcallfrombelowrdt_rcv(packet)发送方接收方

rdt1.0:完全可靠信道上的可靠数据传输27

Rdt2.0:具有比特差错的信道具有比特差错的底层信道有比特差错无分组丢失数据出错后处理方式检错重传rdt2.0新增加机制(与rdt1.0比较)检错反馈:ACK,NAK重传28等待来自上面的调用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&&

notcorrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&

isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&

corrupt(rcvpkt)等待ACK或NAK等待来自下面的调用发送方接收方rdt_send(data)L发送方发出1个分组,等待接收方响应后再继续发送。(类似rdt2.0)停等协议

rdt2.0:FSM描述29等待来自上面的调用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&&

notcorrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&

isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&

corrupt(rcvpkt)等待ACK或NAK等待来自下面的调用rdt_send(data)L

rdt2.0:无差错时的操作30等待来自上面的调用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&&

notcorrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&

isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&

corrupt(rcvpkt)等待ACK或NAK等待来自下面的调用rdt_send(data)L

rdt2.0:有差错时的情况31如果ACK/NAK受损,将会出现何种情况?发送方不知道在接收方会发生什么情况!不能只是重传:可能导致重复(duplicate)处理重复(序号机制):发送方对每个分组增加序列号如果ACK/NAK受损,发送方重传当前的分组接收方丢弃(不再向上交付)重复的分组

rdt2.0有重大的缺陷!32等待来自上面的调用0sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)等待ACK或NAK0udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isNAK(rcvpkt))sndpkt=make_pkt(1,data,checksum)udt_send(sndpkt)rdt_send(data)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isNAK(rcvpkt))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt)

等待来自上面的调用1等待ACK或NAK1LL

rdt2.1:发送方,处理受损的ACK/NAK33等待来自下面的调用0sndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq0(rcvpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)

extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)等待来自上面的调用1rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq0(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)sndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)

rdt2.1:接收方,处理受损的ACK/NAK34发送方:序号seq#加入分组中两个序号seq.#’s(0,1)将够用.(为什么?)必须检查是否收到的ACK/NAK受损状态增加一倍状态必须“记住”是否“当前的”分组具有0或1序号接收方:必须检查是否接收到的分组是冗余的状态指示是否0或1是所期待的分组序号seq#注意:接收方不能知道是否它的最后的ACK/NAK在发送方已经接收OK

rdt2.1:讨论35与rdt2.1一样的功能,仅使用ACK代替NAK,接收方对最后正确接收的分组发送ACK接收方必须明确地包括被确认分组的序号在发送方重复的ACK导致如同NAK相同的动作:重传当前分组

rdt2.2:一种无NAK的协议36等待来自上面的调用0sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||

isACK(rcvpkt,1))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,0)

等待ACK0发送方FSM片段等待来自下面的调用0rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK1,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||

has_seq1(rcvpkt))udt_send(sndpkt)接收方FSM片段L

rdt2.2:发送方,接收方片段37

rdt3.0:具有差错和丢包的信道具有差错和丢包的底层信道有比特差错有分组丢失现有机制(检错、反馈、重传、序号)还不够增加定时机制:发送方等待ACK一段“合理的”时间如在这段时间没有收到ACK则重传如果分组(或ACK)只是延迟(没有丢失),重传将是冗余的,但序号的使用已经处理了该情况38sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)start_timerrdt_send(data)等待ACK0rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isACK(rcvpkt,1))等待来自上面的调用1sndpkt=make_pkt(1,data,checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,0)

rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isACK(rcvpkt,0))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,1)

stop_timerstop_timerudt_send(sndpkt)start_timertimeoutudt_send(sndpkt)start_timertimeoutrdt_rcv(rcvpkt)等待来自上面的调用0等待ACK1Lrdt_rcv(rcvpkt)LLL

rdt3.0发送方39无丢包时的运行分组丢失发送方发送方接收方接收方

rdt3.0运行情况40ACK丢失过早超时发送方发送方接收方接收方

rdt3.0运行情况41rdt3.0能够工作,但性能不太好例子:1Gbps链路,15ms端到端传播时延,1KB分组:Ttransmit=8kb/pkt10**9b/sec=8microsecUsender:利用率

发送方用于发送时间的比率每30msec1KB分组->经1Gbps

链路有33kB/sec吞吐量网络协议限制了物理资源的使用!L(packetlengthinbits)R(transmissionrate,bps)=

rdt3.0的性能42传输分组的第一个比特,t=0发送方接收方RTT

传输分组的最后一个比特,t=L/R分组第一个比特到达传输最后一个比特到达,发送ACKACK到达,发送下一个分组,t=RTT+L/R

rdt3.0:停等协议的运行43流水线:发送方允许发送多个、“传输中的”,还没有应答的报文段序号的范围必须增加发送方和/或接收方设有缓冲流水线协议的两种形式:

回退N帧法(Go-Back-N),选择性重传(SR),流水线协议44传输第一个分组比特,t=0发送者接收者RTT传输最后一个比特,t=L/R第一个分组比特到达分组最后一个比特到达,发送ACKACK到达,发送下一个分组,t=RTT+L/R第二个分组最后比特到达,发送ACK第三个分组最后比特到达,发送ACK利用率增加3倍!流水线协议:增加利用率45滑动窗口协议Go-Back-N和选择重传都是滑动窗口协议发送方和接收方都具有一定容量的缓冲区(即窗口),允许发送站连续发送多个幀而不需要等待应答发送窗口就是发送端允许连续发送的帧的序号表,发送端可以不等待应答而连续发送的最大帧数称为发送窗口的尺寸接收窗口是接收方允许接收的帧的序号表,凡落在接收窗口内的帧,接收方都必须处理,落在接收窗口外的帧被丢弃。接收方每次允许接收的帧数称为接收窗口的尺寸46特征:累计ACK,全部重传ACK(n):确认所有的(包括序号n)的分组-“累计ACK”若超时,重传窗口中的未被确认的第一个分组n及所有更高序号的分组

Go-Back-N发送窗口尺寸为N;接收窗口尺寸为1。1234567891011……发送窗口接收窗口1234567891011……简单来说:位于发送窗口内的分组才允许被发送,位于接收窗口内的分组才能被接收,关键是窗口如何滑动。47

Go-Back-N正常传输时(示意)动画48

Go-Back-N丢失帧时(示意)49

Go-Back-N理解累计ACK和回退N个重传发送方发送窗口滑动的条件:收到1个确认分组超时重传时,回退N个重传,通常重传多个分组接收方接收窗口滑动的条件:收到期望序号的分组累计ACKs:s为期望收到的下一分组序号对失序分组的处理:丢弃,重发(已按序接收分组的)ACKGo-Back-N不足:(效率明显高于停等协议)但仍有不必要重传的问题50发送方接收方

GBN例子(书)51特征:独立ACK,重传单个分组独立ACK:对每个分组使用单独的确认需N个定时器,若某个分组超时,则重传该分组接收窗口为N,对非按序到达的分组进行缓存选择重传SR发送窗口尺寸为N;接收窗口尺寸为N。1234567891011……发送窗口接收窗口1234567891011……52选择重传的操作53选择重传的理解理解单独ACK和单个分组重传发送方发送窗口滑动的条件:收到最低位置分组的确认超时重传时,仅重传超时的单个分组接收方接收窗口滑动的条件:收到最低位置的分组单独ACK对失序分组的处理:接收窗口内缓存,发对应ACK;接收窗口外丢弃54例子:序号:0,1,2,3窗口长度=3接收方:在(a)和(b)两种情况下接收方没有发现差别!在(a)中不正确地将新的冗余的当为新的,而在(b)中不正确地将新的当作冗余的问题:

序号长度与窗口长度有什么关系?回答:窗口长度小于等于序号空间的一半选择重传:困难的问题55机制用途和说明检验和用于检测在一个传输分组中的比特错误。定时器用于检测超时/重传一个分组,可能因为该分组(或其ACK)在信道中丢失了。由于当一个分组被时延但未丢失(过早超时),或当一个分组已被接收方收到但从接收方到发送方的ACK丢失时,可能产生超时事件,所以接收方可能会收到一个分组的多个冗余拷贝。序号用于为从发送方流向接收方的数据分组按顺序编号。所接收分组的序号间的空隙可使该接收方检测出丢失的分组。具有相同序号的分组可使接收方检测出一个分组的冗余拷贝。确认接收方用于告诉发送方一个分组或一组分组已被正确地接收到了。确认报文通常携带着被确认的分组或多个分组的序号。确认可以是逐个的或累积的,这取决于协议。否定确认接收方用于告诉发送方某个分组未被正确地接收。否定确认报文通常携带着未被正确接收的分组的序号。窗口、流水线发送方也许被限制仅发送那些序号落在一个指定范围内的分组。通过允许一次发送多个分组但未被确认,发送方的利用率可在停等操作模式的基础上得到增加。我们很快将会看到,窗口长度可根据接收方接收和缓存报文的能力或网络中的拥塞程度,或两者情况来进行设置。可靠数据传输机制及用途总结563.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制57RobertE.KahnVintonG.Cerf罗伯特·卡恩温顿·瑟夫

2004年图灵奖TCP/IP协议发明者58全双工数据:同一连接上的双向数据流MSS:最大报文段长度MTU:最大传输单元面向连接:

在进行数据交换前,初始化发送方与接收方状态,进行握手(交换控制信息),流量控制:发送方不能淹没接收方拥塞控制:抑止发送方速率来防止过分占用网络资源点到点:一个发送方,一个接收方连接状态与端系统有关,不为路由器所知

可靠、有序的字节流流水线:TCP拥塞和流量控制设置滑动窗口协议发送和接收缓冲区

TCP概述59源端口#目的端口#32bits应用层数据(变长)序号确认号接收窗口紧急数据指针检查和FSRPAU首部长度未用选项(变长)URG:紧急数据(一般不用)ACK:ACK序号有效PSH:立即提交数据(一般不用)RST,SYN,FIN:连接建立(建立和拆连)接收方允许的字节数对数据字节计数(并非对报文段计数!)因特网检查和(同UDP一样)

TCP报文段结构60序号:报文段中第1个数据字节在字节流中的位置编号确认号:期望从对方收到下一个字节的序号累计应答主机A主机BSeq=42,ACK=79,data=‘C’Seq=79,ACK=43,data=‘C’Seq=43,ACK=80用户键入‘C’主机对接收到的‘C’回显给出确认主机对收到的‘C’给出确认,

回显‘C’时间简单的telnet情况捎带确认

TCP序号和确认号61问题:如何设置TCP超时值?应大于RTT但RTT是变化的太短:过早超时不必要的重传太长:对报文段的丢失响应太慢问题:如何估计RTT?SampleRTT:

从发送报文段到接收到ACK的测量时间忽略重传SampleRTT会变化,希望估计的RTT“较平滑”平均最近的测量值,并不仅仅是当前SampleRTT

TCP往返时延(RTT)的估计与超时62EstimatedRTT=(1-)*EstimatedRTT+*SampleRTT指数加权移动平均(Exponentialweightedmovingaverage)过去的样本指数级衰减来产生影响典型值:=0.125

TCP往返时延估计与超时(续)63

RTT估计的例子64设置超时间隔EstimtedRTT

加“安全余量”EstimatedRTT大变化->更大的安全余量首先估算EstimatedRTT与SampleRTT之间差值有多大:

TimeoutInterval=EstimatedRTT+4*DevRTTDevRTT=(1-)*DevRTT+

*|SampleRTT-EstimatedRTT|(典型地,=0.25)

然后估算超时值:

TCP往返时延估计与超时(续)65TCP在IP不可靠服务的基础上创建可靠数据传输服务流水线发送报文段累计确认TCP使用单个重传计时器重传被下列事件触发:超时事件重复ACK

TCP可靠数据传输66TCP可靠传输属于滑动窗口方法发送方收到累计ACK,窗口向又滑动(1个或多个报文段)单个重传计时器,超时仅则重传导致超时的报文段快速重传:冗余ACK

接收方对收到的报文段进行缓存收到任何报文段时,均发出正确的累计确认

TCP可靠数据传输67主机ASeq=100,20bytesdataACK=100时间过早超时的情况主机BSeq=92,8bytesdataACK=120Seq=92,8bytesdataSeq=92超时ACK=120主机ASeq=92,8bytesdataACK=100loss超时丢失确认的情况主机BXSeq=92,8bytesdataACK=100时间Seq=92超时SendBase=100SendBase=120SendBase=120Sendbase=100

TCP:重传的情况68主机ASeq=92,8bytesdataACK=100丢包超时累计确认情况主机BXSeq=100,20bytesdataACK=120时间SendBase=120

TCP重传情况(续)69超时间隔常常相对较长:重传丢失报文段以前有长时延通过冗余ACK,检测丢失的报文段发送方经常一个接一个的发送报文段如果报文段丢失,将会收到很多重复ACK如果对相同数据,发送方收到3个ACK,假定被确认的报文段以后的报文段丢失了:快速重传:

在定时器超时之前重传快速重传70TCP连接的接收方有1个接收缓冲区:匹配速度服务:发送速率需要匹配接收方应用程序的提取速率应用进程可能从接收缓冲区读数据缓慢发送方发送数据太快,导致接收方来不及接收时,需进行流量控制流量控制

TCP流量控制71

TCP流控:工作原理TCP流控通过接收窗口字段实现接收方计算缓存区的剩余空间,即接收窗口大小RcvWindow=RcvBuffer-[LastByteRcvd-LastByteRead]接收方通过TCP首部的接收窗口字段反馈给发送方发送方根据接收窗口字段来限制发送窗口大小,以保证接收方缓存不溢出

72

TCP连接管理TCP是面向连接的协议,TCP连接的建立和释放是每次TCP传输中必不可少的过程。TCP的传输连接包括三个状态连接建立数据传输连接释放73第一次握手过程:注:SYN:同步序列编号(SynchronizeSequenceNumber)SEQ:序列号(SequenceNumber),表示当前数据传输字节的编号为X。———————————————————————————————————①

SYN=1

,SEQ=X第一次握手:连接请求报文请求建立连接目前字节编号:X下一次编号:X+1SEQ=X:身份标识Client客户机(A)Server服务器(B)建立连接(三次握手)74第二次握手过程:①SYN=1,SEQ=X②

SYN=1

,SEQ=Y,ACK=X+1

注:SYN:同步序列编号(SynchronizeSequenceNumbers)SEQ:序列号(SequenceNumber)ACK:确认编号(AcknowledgementNumber)第二次握手:确认报文第一次握手:连接请求报文请求建立连接目前字节编号:Y下一次编号:Y+1SEQ=Y:身份标识对(SYN)同步序号请求的应答Client客户机(A)Server服务器(B)建立连接(三次握手)75①SYN=1,SEQ=X②

SYN=1,SEQ=Y,

ACK=X+1

第三次握手过程对(SYN)同步序号请求的应答第二次握手确认报文客户机A的身份标识第一次握手:连接请求报文③

SEQ=X+1,ACK=Y+1第三次握手:确认报文Client客户机(A)Server服务器(B)建立连接(三次握手)76①SYN=1,SEQ=X②

SYN=1,SEQ=Y,

ACK=X+1

SEQ=X+1,ACK=Y+1请求确认确认三次握手过程:一个请求,两个确认数据连接已建立Client客户机(A)Server服务器(B)建立连接(三次握手)77①SYN=?

,SEQ=1000②

SYN=?

,SEQ=?,

ACK=?

SEQ=?,ACK=2002三次握手过程:一个请求,两个确认数据Client客户机(A)Server服务器(B)练习78步骤1:

客户机向服务器发送TCPFIN控制报文段步骤2:

服务器收到FIN,用ACK回答。关闭连接,发送FIN步骤3:

客户机收到FIN,用ACK答进入“超时等待”

–将对接收到的FIN进行确认步骤4:

服务器接收ACK,连接关闭客户FIN服务器ACKACKFIN关闭关闭已关闭超时等待释放连接793.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制80拥塞(Congestion):当大量的分组进入网络,超出了网络的处理能力时,会引起网络局部或整体性能下降,这种现象称为拥塞。不加控制的拥塞甚至导致整个网络瘫痪。不同于流量控制!表现:丢包(路由器缓冲区溢出)长时延(路由器缓冲区中排队)网络中的前10大问题之一!拥塞控制原理81拥塞控制起的作用提供的负载吞吐量理想的拥塞控制拥塞死锁(吞吐量=0)无拥塞控制实际的拥塞控制轻度拥塞082两个发送方,两个接收方一个路由器,无限缓冲区不重传拥塞时时延增大可达到最大吞吐量无限的共享式输出链路缓冲主机Alin

:原始数据主机Blout拥塞的原因与开销:情况183一个路由器,有限缓冲区发送方重传丢失的数据分组有限的共享式输出链路缓存主机Alin

:原始数据主机Bloutl‘in

:原始数据+重传数据拥塞的原因与开销:情况284通常:(吞吐量)仅当丢失丢包时,需要“完美的”重传:迟延的分组(而不是丢失)的重传使得比(同完美情况相比)更大linlout=linlout>linlout拥塞的“代价”:

比额定的“吞吐量”做更多的工作(重传)不必要重传:链路承载分组的多个拷贝拥塞的原因与开销:情况2(续)85四个发送者多跳路径超时/重传lin问题:

随着和的增加将发生什么情况?lin有限的共享式输出链路缓存主机Alin

原始数据主机Bloutl‘in

:原始数据,+重传数据拥塞的原因与开销:情况386另一个拥塞的“开销”:

当分组丢失时,任何用于传输该分组的上游传输能力都被浪费!HostAHostBlout拥塞的原因与开销:情况3(续)87端到端的拥塞控制不能从网络得到明确的反馈从端系统根据观察到的时延和丢失现象推断出拥塞这是TCP所采用的方法网络辅助的拥塞控制路由器为端系统提供反馈一个bit指示一条链路出现拥塞(SNA,DECnet,TCP/IPECN,ATM)指示发送方按照一定速率发送控制拥塞的两类方法(直接的和间接的):拥塞控制方法88案例(网络辅助):ATMABR拥塞控制ATM(AsynchronousTransferMode)异步传输模式一种结合了电路交换与分组交换各自优点的技术以53字节固定长度的信元为传输单元业务:CBR固定速率,ABR可用速率等:ABR可用速率业务模式(“弹性服务”)若发送方的路径“欠载”:发送方应该使用可用的带宽若发送方的路径拥塞:发送方被抑制到最小保证速率89通信过程简要描述发送方沿(建立好连接的)路径上不断传输数据信元和管理信元,到达接收方接收方将管理信元(内容修改调整后)研路径返回(反馈)到发送方案例:ATMABR拥塞控制90采取网络辅助的拥塞控制(包括多种机制)RM信元中的特定bit:NIbit速率无增长(

温馨提示

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

评论

0/150

提交评论