书签 分享 收藏 举报 版权申诉 / 144
上传文档赚钱

类型第3章-运输层课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3212414
  • 上传时间:2022-08-05
  • 格式:PPT
  • 页数:144
  • 大小:3.40MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第3章-运输层课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    运输 课件
    资源描述:

    1、计算机网络第3章 运输层第三章 运输层2022年8月5日2目 录n概述和运输层服务n多路复用与多路分解n无连接传输:UDPn可靠数据传输的原理n面向连接的传输:TCPn拥塞控制原理nTCP拥塞控制第三章 运输层2022年8月5日33.1 概述和运输层服务n运输层的功能运输层的功能q为不同主机上运行的应用进程之间提供逻辑通信(logical communication)n运输层协议的工作内容运输层协议的工作内容q发送方:把应用数据划分成 报文段(segments),交给网络层q接收方:把报文段重组成应用数据,交付给应用层第三章 运输层2022年8月5日43.1 概述和运输层服务n运输层和网络层的

    2、区别运输层和网络层的区别q网络层:不同主机之间的逻辑通信q运输层:应用进程之间的逻辑通信类似于家庭间通信:12个孩子要与另一个家庭的12个孩子相互通信n进程=孩子们n进程间报文=信封中的信笺n主机=家庭的房子n运输协议=张三 和 李四n网络层协议=邮局提供的服务第三章 运输层2022年8月5日53.1 概述和运输层服务n上例中的几种特殊场景上例中的几种特殊场景q张三和李四生病了,无法工作,换成张五和李六n不同的运输层协议可能提供不一样的服务q邮局不承诺信件送抵的最长时间n运输层协议能够提供的服务受到底层网络协议的服务模型的限制q邮局不承诺平信一定安全可靠的送达,可能在路上丢失,但张三、李四可在

    3、较长时间内没有受到对方的回信时,再次誊写信件,寄出n在网络层不提供某些服务的情况下,运输层自己提供第三章 运输层2022年8月5日63.1 概述和运输层服务n因特网上的运输层协议因特网上的运输层协议q用户数据报协议UDP(数据报)q传输控制协议TCP(报文段)q所提供的服务n进程间数据交付n差错检测n可靠的数据传输n拥塞控制第三章 运输层2022年8月5日73.2 多路复用与多路分解应用层运输层网络层TCP 报文段UDP用户数据报应用进程TCP 复用IP 复用UDP 复用TCP 报文段UDP用户数据报 应用进程端口端口TCP 分用UDP 分用IP 分用IP 数据报IP 数据报发送方接收方第三章

    4、 运输层2022年8月5日83.2 多路复用与多路分解n端口端口q端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程(或者线程)q从这个意义上讲,端口是用来标志应用层的进程(或者线程)q端口用一个 16 bit 端口号进行标志第三章 运输层n 两类端口两类端口p一类是熟知端口,其数值一般为 01023,保留给诸如HTTP(80)、FTP(21)等熟知协议的。当开发一种新的应用程序时,必须为它指派一个端口号。p另一类则是一般端口,用来随时分配给请求通信的客户进程。3.2 多路复用与多路分解第三章 运输

    5、层2022年8月5日103.2 多路复用与多路分解n套接字套接字qTCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为套接字(socket)。q套接字和端口、IP 地址的关系是:IP 地址131.6.23.13 端口号1500 131.6.23.13,1500套接字(socket)第三章 运输层2022年8月5日113.2 多路复用与多路分解n报文段(数据报)的投送报文段(数据报)的投送q主机收到IP包n每个数据包都有源IP地址和目的IP地址n每个数据包都携带一个传输层的数据报文段n每个数据报文段都有源、目的端口号q主机根据“IP地址端口号”将报文段定向到

    6、相应的套接字源端口#目的端口#32 位应用数据(报文)其他首部字段TCP/UDP 报文段格式第三章 运输层n 无连接的复用与分用p根据端口号创建socket:DatagramSocket mySocket1=new DatagramSocket();DatagramSocket mySocket2=new DatagramSocket(19157);pUDP socket 由一个二元组来标识:(目的IP地址,目的端口号)p当主机收到UDP报文段时:q检查报文段中的目的端口号q将UDP报文段定向到相应的套接字p两个具有不同源IP地址和/或源端口,但具有相同目的IP地址和目的端口号的UDP报文段将

    7、定向到相同的套接字3.2 多路复用与多路分解第三章 运输层n无连接的复用与分用(续)DatagramSocket serverSocket=new DatagramSocket(6428);客户IP:BP2客户 IP:AP1P1P3服务器IP:CSP:6428DP:9157SP:9157DP:6428SP:6428DP:5775SP:5775DP:6428SP 提供提供“返回地址返回地址”(完整的返回地址是源(完整的返回地址是源IP地址和源端口号)地址和源端口号)3.2 多路复用与多路分解第三章 运输层2022年8月5日143.2 多路复用与多路分解n面向连接到复用和分用面向连接到复用和分用q

    8、TCP 套接字由一个四元组来标识(源IP地址,源端口号,目的IP地址,目的端口号)q接收方主机根据这四个值将报文段定向到相应的套接字q服务器主机同时支持多个并发的TCP套接字:n每一个套接字都由其四元组来标识第三章 运输层2022年8月5日153.2 多路复用与多路分解n面向连接到复用和分用面向连接到复用和分用qWeb服务器为每一个客户连接都产生不同的套接字n非持久HTTP对每一个请求都建立不同的套接字(会影响性能)n持久HTTP在整个连接期间,客户机和服务器之间通过同一个服务器套接字交换HTTP报文第三章 运输层2022年8月5日163.2 多路复用与多路分解n举例:多线程的举例:多线程的W

    9、EB服务器服务器P1客户 IP:A客户IP:BP2服务器IP:CP4P3SP:9157DP:80S-IP:AD-IP:CSP:9157DP:80D-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B第三章 运输层2022年8月5日173.3 无连接传输:UDPn一个最简单的运输层协议一个最简单的运输层协议q多路复用/多路分解服务q差错检查n适应C/S模式的简单请求/响应通信需要n UDP保留各报文间的边界,不把应用进程多次发送的数据合并成一个包发出去,且发包后不对该包缓存,这对简单请求/响应很方便;n“尽力而为”服务,UDP报文段可能会:q丢失q应用数据不按序到达第三章 运输

    10、层2022年8月5日183.3 无连接传输:UDPnUDP处理数据的流程处理数据的流程q发送方n从应用进程得到数据n附加上为多路复用/多路分解所需的源和目的端口号及差错检测信息,形成报文段(数据报)n递交给网络层,尽力而为的交付给接收主机q接收方n从网络层接收报文段(数据报)n根据目的端口号,将数据交付给相应的应用进程UDP通信事先无需握手,是通信事先无需握手,是无连接的无连接的UDP报文段之间是相互独立的报文段之间是相互独立的第三章 运输层2022年8月5日193.3 无连接传输:UDPnUDP的优势的优势q无需建立连接建立连接会增加时延q简单发送方和接收方无需维护连接状态q段首部开销小TC

    11、P:20Byte vs UDP:8Byteq无拥塞控制UDP 可按需要随时发送第三章 运输层2022年8月5日203.3 无连接传输:UDPn部分采用部分采用UDP协议的应用协议的应用q远程文件系统(NFS)q流式多媒体q因特网电话q网络管理(SNMP)q选路协议(RIP)q域名解析(DNS)第三章 运输层2022年8月5日213.3 无连接传输:UDPnUDP大量应用可能导致的严重后果大量应用可能导致的严重后果q路由器中大量的分组溢出q显著减小TCP通信的速率,甚至挤垮TCP会话n使用使用UDP的可靠数据传输的可靠数据传输q在应用层实现数据的可靠传输q增加了应用进程的实现难度第三章 运输层2

    12、022年8月5日223.3 无连接传输:UDPnUDP报文段(报文段(数据报数据报)的结构)的结构源端口源端口#目的端口目的端口#32 位位应用数据应用数据(报文报文)长度长度检查和检查和包括首部在内的包括首部在内的UDP报文段长度报文段长度,(以字节为单位)(以字节为单位)第三章 运输层2022年8月5日233.3 无连接传输:UDPnUDP的检查和的检查和q目标n检测收到的报文段的“差错”(例如,出现突变的比特)q发送方n把报文段看作是16比特字的序列n检查和:对报文段的所有16比特字的和进行1的补运算n发送方将计算校验和的结果写入UDP校验和字段中n增加伪首部:(源IP地址(4字节)、目

    13、的IP地址(4字节)、0(1字节)、17(UDP协议号,1字节)、UDP长度(2字节))q接收方n计算接收到的报文段的校验和n检查计算结果是否与收到报文段的校验和字段中的值相同q不同 检测到错误q相同 没有检测到错误(但仍可能存在错误)第三章 运输层2022年8月5日243.3 无连接传输:UDPn例子例子:将两个将两个16比特字相加比特字相加1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 11 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 11 1 0 1 1 1 0 1 1 1 0 1 1 1

    14、1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1回卷和检查和注意:注意:最高有效位的进位要回卷加到结果当中第三章 运输层2022年8月5日253.4 可靠数据传输的原理n可靠数据传输可靠数据传输q在应用层、运输层和链路层都很重要q网络中最重要的top-10问题之一!第三章 运输层2022年8月5日263.4 可靠数据传输的原理不可靠信道的特性决定了可靠数据传输协议不可靠信道的特性决定了可靠数据传输协议(rdt)的复杂性。的复杂性。第三章 运输层2022年8月5日273.4 可靠数据传输的原理发送方接收方rdt_send():由上层(如应用层)调用,将数据发送给接收方

    15、的上层udt_send():由 rdt调用,将分组通过不可靠信道传给接收方rdt_rcv():当分组到达接收方时调用deliver_data():由 rdt 调用,将数据交付上层第三章 运输层2022年8月5日283.4 可靠数据传输的原理我们将要:n逐步地开发可靠数据传输协议(rdt)的发送方和接收方n只考虑单向数据传输(unidirectional data transfer)的情况q但控制信息是双向传输的n用有限状态机(FSM)来描述发送方和接收方状态1状态2事件引起状态变迁状态转换过程中的动作状态:由事件引起一个状态到另一个状态的变迁。事件动作第三章 运输层2022年8月5日293.4

    16、 可靠数据传输的原理n可靠信道上的可靠传输可靠信道上的可靠传输 rdt 1.0q底层信道完全可靠n不会产生比特错误n不会丢失分组q分别为发送方和接收方建立FSMn发送方将数据发送给底层信道n接收方从底层信道接收数据packet=make_pkt(data)udt_send(packet)rdt_send(data)extract(packet,data)deliver_data(data)等待来自下层的调用rdt_rcv(packet)发送方发送方接收方接收方等待来自上层的调用第三章 运输层303.4 可靠数据传输的原理n信道可能导致比特出现差错时信道可能导致比特出现差错时rdt 2.xq第一

    17、个版本rdt 2.0n假设q分组比特可能受损q所有传输的分组都将按序被接收,不会丢失n处理机制q如何判断分组受损差错检测q如何通知发送方分组是否受损接收方反馈(ACK和NAK)q在得知分组受损后,发送方如何处理出错重传在计算机网络中,基于这种重传机制的可靠数据传输协议称为自动重传请求协议(ARQ)第三章 运输层2022年8月5日313.4 可靠数据传输的原理nrdt 2.0的有限状态机FSM等待来自上层的调用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(A

    18、CK)rdt_rcv(rcvpkt)¬corrupt(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第三章 运输层2022年8月5日323.4 可靠数据传输的原理等待来自上层的调用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcv

    19、pkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)¬corrupt(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:无差错的情况无差错的情况第三章 运输层2022年8月5日333.4 可靠数据传输的原理等待来自上层的调用s

    20、nkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)¬corrupt(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

    21、.0:有差错的情况有差错的情况第三章 运输层2022年8月5日343.4 可靠数据传输的原理n如何实现重传q使用缓冲区缓存已发出但未收到反馈的报文段n新的问题q需要多大的缓冲区呢?n接收方和发送方各一个报文段大小的缓冲区即可第三章 运输层2022年8月5日353.4 可靠数据传输的原理q第二个版本rdt 2.1n问题的引入qACK和NAK分组可能受损,而rdt 2.0没有考虑该情况n解决问题的几种思路q在人类的对话中,如果听不清楚对方所述,会回问一句“刚才你说什么来着?”但如果这句话仍然没有听清楚呢?怎么办?双方对着问“刚才你说什么来着?”这就可能进入了一个难以解困的死循环q增加足够的检查和比

    22、特,使发送方不仅可以检查比特差错,还可以恢复比特差错q收到出错的反馈时,不管三七二十一,直接重发当前数据分组,但这就需要对数据分组进行编号,以示识别第三章 运输层n 解决ACK/NAK受损问题的一个简单方法p发送方对每一个分组增加序号(sequence number)p发送方只重传没有收到ACK/NAK 的分组p接收方丢弃重复分组(不向上递交)p对于停等协议,1比特序号足够了(序号为0或1)发送方发出一个分组,然后发送方发出一个分组,然后等待接收方的应答等待接收方的应答停止等待停止等待(stop-and-wait)3.4 可靠数据传输的原理第三章 运输层2022年8月5日373.4 可靠数据传

    23、输的原理nrdt 2.1的发送方等待来自上层的调用0sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)等待 ACK 或 NAK 0udt_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(rc

    24、vpkt)&(corrupt(rcvpkt)|isNAK(rcvpkt)rdt_rcv(rcvpkt)¬corrupt(rcvpkt)&isACK(rcvpkt)等待来自上层的调用1等待ACK 或 NAK 1LL第三章 运输层2022年8月5日383.4 可靠数据传输的原理nrdt 2.1的接收方等待来自下层的0rdt_rcv(rcvpkt)¬ corrupt(rcvpkt)&has_seq0(rcvpkt)rdt_rcv(rcvpkt)¬corrupt(rcvpkt)&has_seq1(rcvpkt)extract(rcvpkt,data)deliver_data(data

    25、)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_s

    26、eq1(rcvpkt)rdt_rcv(rcvpkt)&(corrupt(rcvpkt)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)sndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)sndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)第三章 运输层2022年8月5日393.4 可靠数据传输的原理q第三个版本rdt 2.2n针对rdt 2.1的改进q只使用ACKq取消NAK,接收方对最后一个正确收到的分组发送 ACK接收方必须明确指出被确认的分组的序号q发送方收到的重复的ACK将按照NA

    27、K来进行处理重传正确的分组第三章 运输层2022年8月5日403.4 可靠数据传输的原理等待来自上层的调用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

    28、(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)接收方部分接收方部分 FSML第三章 运输层2022年8月5日413.4 可靠数据传输的原理q针对rdt 2.x的进一步讨论nrdt 2.x实际上也解决了流控问题第三章 运输层2022年8月5日423.4 可靠数据传输的原理n信道不但出错,而且丢包时信道不但出错,而且丢包时rdt 3.0q

    29、假设n底层信道不但可能出现比特差错,而且可能会丢包q需解决的问题n怎样检测丢包n发生丢包后,如何处理q检查和技术、序号、ACK、重传如何判断数据报丢失了呢?如何判断数据报丢失了呢?最简单的方法就是:最简单的方法就是:耐心的等待耐心的等待第三章 运输层Q:仅仅耐心等待就够了吗?q想一想:缺点?解决方法:发送方对ACK等待“适当的”时间n如果在这个时间内没有收到ACK则重传n如果分组或ACK仅仅是延迟到达(而非丢失):q重传将造成重复,但序号可以解决这个问题q接收方必须指出确认的分组序号n需要倒计时的计时器3.4 可靠数据传输的原理第三章 运输层2022年8月5日443.4 可靠数据传输的原理sn

    30、dpkt=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(rcv

    31、pkt,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)LLLRdt 3.0的发送方的发送方第三章 运输层2022年8月5日453.4 可靠数据传输的原理qrdt 3.0举例第三章 运输层2022年8月5日463.4 可靠数据传输的原理d)过早超时过早超时c)丢失丢失AC

    32、Kpkt 0ACK 0pkt 1pkt 0ACK 0发送方发送方接收方接收方发送分组发送分组0接收接收ACK0发送分组发送分组1接收接收ACK1发送分组发送分组0接收分组接收分组0发送发送ACK0接收分组接收分组1发送发送ACK1接收分组接收分组0发送发送ACK0pkt 1超时超时重发分组重发分组1pkt 0ACK 0ACK 1pkt 0ACK 0发送方发送方接收方接收方发送分组发送分组0接收接收ACK0发送分组发送分组1接收接收ACK1发送分组发送分组0接收分组接收分组0发送发送ACK0接收分组接收分组1(检测冗余检测冗余发送发送ACK1)发送发送ACK1接收分组接收分组0发送发送ACK0p

    33、kt 1丢失丢失超时超时重发分组重发分组1pkt 1ACK 1接收分组接收分组1发送发送ACK1ACK 1ACK 1接收接收ACK1什么也不做什么也不做接收分组接收分组1(检测冗余发送检测冗余发送ACK1)发送发送ACK1rdt3.0有时也被成为有时也被成为比特交替协议比特交替协议第三章 运输层2022年8月5日473.4 可靠数据传输的原理nrdt 3.0的性能分析的性能分析q1Gbps 的链路,15ms 的端到端延迟,分组大小为1KB U sender=.008 30.008=0.00027 L/R RTT+L/R=Ttransmit=8kb/pkt109 b/sec=8 sL(比特为单位

    34、的分组大小)R(传输速率,bps)=n每30ms内只能发送1KB:1 Gbps 的链路只有33kB/sec 的吞吐量n网络协议限制了物理资源的利用率!第三章 运输层2022年8月5日483.4 可靠数据传输的原理qrdt 3.0性能低下的原因首个分组的第首个分组的第1个比特被传输个比特被传输,t=0发送方发送方接收方接收方RTT 首个分组的最后首个分组的最后1比特被传输比特被传输,t=L/R首个分组的第首个分组的第1个比特到达个比特到达首个分组的最后首个分组的最后1个比特到达个比特到达,发送发送ACKACK 到达到达,发送下一个分组发送下一个分组,t=RTT+L/R U sender=.008

    35、 30.008=0.00027 L/R RTT+L/R=第三章 运输层2022年8月5日493.4 可靠数据传输的原理q提高性能的一种可行方法:流水线技术n允许发送方发送多个分组而无需等待确认q必须增大序号范围q协议的发送方和接收方必须对分组进行缓存第三章 运输层2022年8月5日503.4 可靠数据传输的原理n流水线技术对性能提升的原理图发送方发送方接收方接收方RTT U sender=.024 30.008=0.0008 microseconds 3*L/R RTT+L/R=利用率提高3倍!首个分组的第首个分组的第1个比特被传输个比特被传输,t=0首个分组的最后首个分组的最后1比特被传输比

    36、特被传输,t=L/RACK 到达到达,发送下一个分组发送下一个分组,t=RTT+L/R首个分组的第首个分组的第1个比特到达个比特到达首个分组的最后首个分组的最后1个比特到达个比特到达,发送发送ACK第第2个分组的最后个分组的最后1个比特到达个比特到达,发送发送ACK第第3个分组的最后个分组的最后1个比特到达个比特到达,发送发送ACK第三章 运输层0,base-1base,nextseqnum-1nextseqnum,base+N-1 base+Nn流水线技术工作原理q分组首部用k-比特字段表示序号q已被传输但还未确认的分组的许可序号范围可以看作是一个在序号范围内大小为N的“窗口(window)

    37、”3.4 可靠数据传输的原理第三章 运输层01234567012发送窗口N不允许发送这些帧允许发送 5 个帧(a)01234567012不允许发送这些帧还允许发送 4 个帧N已发送(b)01234567012不允许发送这些帧N已发送(c)01234567012不允许发送这些帧还允许发送 3 个帧N已发送 已发送并已收到确认(d)第三章 运输层2022年8月5日533.4 可靠数据传输的原理q问题:当流水线技术中丢失一个分组后,如何进行重传nGo-Back-N(GBN)协议:其后分组全部重传n选择重传(SR)协议:仅重传该分组第三章 运输层2022年8月5日543.4 可靠数据传输的原理GBN时

    38、序图时序图第三章 运输层2022年8月5日553.4 可靠数据传输的原理nGo-Back-N协议协议q特点nACK(n):接收方对序号n之前包括n在内的所有分组进行确认 -“累积 ACK”n对所有已发送但未确认的分组统一设置一个定时器n超时(n):重传分组n和窗口中所有序号大于n的分组n失序分组:q丢弃(不缓存)-接收方无缓存q重发按序到达的最高序号分组的ACK第三章 运输层2022年8月5日563.4 可靠数据传输的原理nGo-Back-N协议协议等待start_timerudt_send(sndpktbase)udt_send(sndpktbase+1)udt_send(sndpktnex

    39、tseqnum-1)timeoutrdt_send(data)if(nextseqnum SendBase)SendBase=y if(there are currently not-yet-acknowledged segments)start timer /*end of loop forever*/从应用程序接收数据n将数据封装入报文段中,每个报文段都包含一个序号n序号是该报文段第一个数据字节的字节流编号n启动定时器n超时间隔:TimeOutInterval 超时n重传认为超时的报文段n重启定时器收到ACKn如果是对以前的未确认报文段的确认q更新SendBaseq如果当前有未被确认的报文

    40、段,TCP还要重启定时器第三章 运输层2022年8月5日923.5 面向连接的传输:TCPnTCP的几种重传情况的几种重传情况由于由于ACK丢失而重传丢失而重传时间时间由于超时过短而重传,由于超时过短而重传,只重传第一个只重传第一个主机 ASeq=92,8 字节数据ACK=100丢失超时主机 BXSeq=92,8 字节数据ACK=100SendBase=100主机 ASeq=100,20 字节数据ACK=100主机 BSeq=92,8 字节数据ACK=120Seq=92,8 字节数据Seq=92 超时ACK=120Seq=92 超时SendBase=120SendBase=120Sendbas

    41、e=100第三章 运输层2022年8月5日933.5 面向连接的传输:TCP主机 ASeq=92,8 字节数据ACK=100丢失超时累积确认避免了第一个报文的重传累积确认避免了第一个报文的重传主机 BXSeq=100,20 字节数据ACK=120时间第三章 运输层2022年8月5日943.5 面向连接的传输:TCPn超时间隔加倍q每一次TCP重传均将下一次超时间隔设为先前值的两倍q超时间隔由EstimatedRTT和DevRTT决定n收到上层应用的数据n收到对未确认数据的ACK第三章 运输层2022年8月5日953.5 面向连接的传输:TCPn快速重传快速重传q超时周期往往太长n增加重发丢失分

    42、组的延时q通过重复的ACK检测丢失报文段n发送方常要连续发送大量报文段n如果一个报文段丢失,会引起很多连续的重复ACK.q如果发送收到一个数据的3个ACK,它会认为确认数据之后的报文段丢失n快速重传:在超时到来之前重传报文段第三章 运输层2022年8月5日963.5 面向连接的传输:TCPn产生产生TCP ACK的建议(的建议(RFC1122、2581)接收方事件接收方事件所期望序号的报文段按序到达。所所期望序号的报文段按序到达。所有在期望序号及其以前的数据都已有在期望序号及其以前的数据都已经被确认经被确认有期望序号的报文段按序到达。有期望序号的报文段按序到达。另一个按序报文段等待发送另一个按

    43、序报文段等待发送ACK比期望序号大的失序报文段到达,比期望序号大的失序报文段到达,检测出数据流中的间隔检测出数据流中的间隔能部分或完全填充接收能部分或完全填充接收数据间隔的报文段到达数据间隔的报文段到达 TCP接收方接收方 动作动作延迟的延迟的ACK。对另一个按序报文段的到。对另一个按序报文段的到达最多等待达最多等待500ms。如果下一个按序报。如果下一个按序报文段在这个时间间隔内没有到达,则发文段在这个时间间隔内没有到达,则发送一个送一个ACK立即发送单个累积立即发送单个累积ACK,以确认两个按,以确认两个按序报文段序报文段 立即发送冗余立即发送冗余ACK,指明下一个期待字,指明下一个期待字

    44、节的序号节的序号(也就是间隔的低端字节序号也就是间隔的低端字节序号)倘若该报文段起始于间隔的低端,倘若该报文段起始于间隔的低端,则立即发送则立即发送ACK第三章 运输层2022年8月5日973.5 面向连接的传输:TCPn快速重传的算法快速重传的算法 event:ACK received,with ACK field value of y if(y SendBase)SendBase=y if(there are currently not-yet-acknowledged segments)start timer else increment count of dup ACKs receiv

    45、ed for y if(count of dup ACKs received for y=3)resend segment with sequence number y 重复的重复的ACK报文报文快速重传快速重传第三章 运输层2022年8月5日983.5 面向连接的传输:TCPnTCP流量控制流量控制q背景nTCP接收方有一个缓存,所有上交的数据全部缓存在里面n应用进程从缓冲区中读取数据可能很慢q目标n发送方不会由于传得太多太快而使得接收方缓存溢出q手段n接收方在反馈时,将缓冲区剩余空间的大小填充在报文段首部的窗口字段中,通知发送方第三章 运输层2022年8月5日993.5 面向连接的传输:T

    46、CPq窗口值的计算空闲空间空闲空间缓存中的缓存中的TCP数据数据RcvWindow来自来自IP的数据的数据应用进程应用进程RcvBufferLastByteRcvd LastByteRead RcvBuffer接收方:接收方:RcvWindows=RcvBuffer LastByteRcvd-LastByteRead发送方:发送方:LastByteSent LastByteAcked RcvWindow第三章 运输层2022年8月5日1003.5 面向连接的传输:TCPq一种特殊的情况n接收方通知发送方RcvWindow为0,且接收方无任何数据传送给发送方n发送方持续向接受方发送只有一个字节数

    47、据的报文段,目的是试探第三章 运输层收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针n发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500 字节。n发送端只要收到了对方的确认,发送窗口就可前移。n发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。TCP 流量控制举例第三章 运输层收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针100

    48、2003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移n发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。n现在发送端还可发送 300 字节。已发送并被确认已发送但未被确认TCP 流量控制举例第三章 运输层1002003004005006007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认

    49、可发送不可发送指针发送窗口前移发送窗口缩小n发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。n现在发送端最多还可发送 400 字节的数据。第三章 运输层1:客户主机向服务器主机发送 TCP SYN 报文q选择初始序号q无数据 2:服务器主机收到 SYN报文,应答 SYN ACK 报文q服务器分配缓存q选择服务器方的初始序号 3:客户主机收到 SYNACK报文,应答 ACK 报文,该报文可能携带数据nTCP连接的建立三次握手3.5 面向连接的传输:TCP第三章 运输层2022年8月5日1053.5 面向连接的传输:TCPnTCP连接的建立SYN,SE

    50、Q=x主机 BSYN,ACK,SEQ=y,ACK=x 1ACK,SEQ=x+1,ACK=y 1被动打开主动打开确认确认主机 A连接请求第三章 运输层n TCP 连接管理连接管理 关闭连接关闭连接客户端关闭套接字:clientSocket.close();1:客户端 向服务器端发送 TCP FIN 报文 2:服务器端 收到 FIN报文,应答ACK报文.关闭连接时发送 FIN报文.3:客户端 收到 FIN报文,应答 ACK报文.q进入“timed wait”状态-将对收到的FIN报文应答ACK报文 4:服务器端,收到 ACK报文.连接关闭.3.5 面向连接的传输:TCP第三章 运输层2022年8月

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第3章-运输层课件.ppt
    链接地址:https://www.163wenku.com/p-3212414.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库