华中科技大学计算机网络ppt课件 第3章 运输层.ppt
《华中科技大学计算机网络ppt课件 第3章 运输层.ppt》由会员分享,可在线阅读,更多相关《华中科技大学计算机网络ppt课件 第3章 运输层.ppt(130页珍藏版)》请在三一办公上搜索。
1、计算机网络,第3章 运输层,2022年12月26日,2,目 录,概述和运输层服务多路复用与多路分解无连接传输 : UDP可靠数据传输的原理面向连接的传输 : TCP拥塞控制原理TCP拥塞控制,2022年12月26日,3,3.1 概述和运输层服务,运输层的功能为不同主机上运行的应用进程之间提供逻辑通信(logical communication)运输层协议的工作内容发送方:把应用数据划分成 报文段(segments),交给网络层接收方:把报文段重组成应用数据,交付给应用层,2022年12月26日,4,3.1 概述和运输层服务,运输层和网络层的区别网络层: 不同主机之间的逻辑通信运输层: 应用进程
2、之间的逻辑通信,类似于家庭间通信:12个孩子要与另一个家庭的12个孩子相互通信进程 = 孩子们进程间报文 = 信封中的信笺主机 = 家庭的房子运输协议 = 张三 和 李四网络层协议 = 邮局提供的服务,2022年12月26日,5,3.1 概述和运输层服务,上例中的几种特殊场景张三和李四生病了,无法工作,换成张五和李六不同的运输层协议可能提供不一样的服务邮局不承诺信件送抵的最长时间运输层协议能够提供的服务受到底层网络协议的服务模型的限制邮局不承诺平信一定安全可靠的送达,可能在路上丢失,但张三、李四可在较长时间内没有受到对方的回信时,再次誊写信件,寄出在网络层不提供某些服务的情况下,运输层自己提供
3、,2022年12月26日,6,3.1 概述和运输层服务,因特网上的运输层协议用户数据报协议UDP(数据报)传输控制协议TCP(报文段)所提供的服务进程间数据交付差错检测可靠的数据传输拥塞控制,2022年12月26日,7,3.2 多路复用与多路分解,应用层,运输层,网络层,TCP 报文段,UDP用户数据报,应用进程,TCP 复用,IP 复用,UDP 复用,TCP 报文段,UDP用户数据报,应用进程,端口,端口,TCP 分用,UDP 分用,IP 分用,发送方,接收方,2022年12月26日,8,3.2 多路复用与多路分解,端口端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层
4、,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程(或者线程)从这个意义上讲,端口是用来标志应用层的进程(或者线程)端口用一个 16 bit 端口号进行标志,2022年12月26日,9,3.2 多路复用与多路分解,套接字TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为套接字(socket) 。套接字和端口、IP 地址的关系是:,2022年12月26日,10,3.2 多路复用与多路分解,报文段(数据报)的投送主机收到IP包每个数据包都有源IP地址和目的IP地址每个数据包都携带一个传输层的数据报文段每个数据报文段都有源、目的端口号主
5、机根据“IP地址端口号”将报文段定向到相应的套接字,源端口 #,目的端口 #,32 位,应用数据 (报文),其他首部字段,TCP/UDP 报文段格式,2022年12月26日,11,3.2 多路复用与多路分解,面向连接到复用和分用TCP 套接字由一个四元组来标识 (源IP地址,源端口号,目的IP地址,目的端口号)接收方主机根据这四个值将报文段定向到相应的套接字服务器主机同时支持多个并发的TCP套接字:每一个套接字都由其四元组来标识Web服务器为每一个客户连接都产生不同的套接字非持久HTTP对每一个请求都建立不同的套接字(会影响性能),2022年12月26日,12,3.2 多路复用与多路分解,举例
6、:多线程的WEB服务器,客户 IP: A,P2,服务器IP: C,P4,P3,2022年12月26日,13,3.3 无连接传输 : UDP,一个最简单的运输层协议必须提供多路复用/多路分解服务差错检查,实际上这就是UDP所提供的功能(RFC 768),2022年12月26日,14,3.3 无连接传输 : UDP,UDP处理数据的流程发送方从应用进程得到数据附加上为多路复用/多路分解所需的源和目的端口号及差错检测信息,形成报文段(数据报)递交给网络层,尽力而为的交付给接收主机接收方从网络层接收报文段(数据报)根据目的端口号,将数据交付给相应的应用进程,UDP通信事先无需握手,是无连接的,2022
7、年12月26日,15,3.3 无连接传输 : UDP,UDP的优势无需建立连接建立连接会增加时延简单发送方和接收方无需维护连接状态段首部开销小TCP:20Byte vs UDP:8Byte无拥塞控制UDP 可按需要随时发送,2022年12月26日,16,3.3 无连接传输 : UDP,部分采用UDP协议的应用远程文件系统(NFS)流式多媒体因特网电话网络管理(SNMP)选路协议(RIP)域名解析(DNS),2022年12月26日,17,3.3 无连接传输 : UDP,UDP大量应用可能导致的严重后果路由器中大量的分组溢出显著减小TCP通信的速率,甚至挤垮TCP会话使用UDP的可靠数据传输在应用
8、层实现数据的可靠传输增加了应用进程的实现难度,2022年12月26日,18,3.3 无连接传输 : UDP,UDP报文段(数据报)的结构,源端口 #,目的端口 #,32 位,应用数据 (报文),长度,检查和,包括首部在内的UDP报文段长度, (以字节为单位),2022年12月26日,19,3.3 无连接传输 : UDP,UDP的检查和目标检测收到的报文段的“差错” (例如, 出现突变的比特)发送方把报文段看作是16比特字的序列检查和:对报文段的所有16比特字的和进行1的补运算发送方将计算校验和的结果写入UDP校验和字段中增加伪首部: (源IP地址(4字节)、目的IP地址(4字节) 、0 (1字
9、节) 、17 (UDP协议号,1字节) 、UDP长度(2字节))接收方计算接收到的报文段的校验和检查计算结果是否与收到报文段的校验和字段中的值相同不同 检测到错误相同 没有检测到错误(但仍可能存在错误),2022年12月26日,20,3.3 无连接传输 : UDP,例子: 将两个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 1 0 01 0 1 0 0 0 1 0 0 0
10、1 0 0 0 0 1 1,回卷,和,检查和,注意:最高有效位的进位要回卷加到结果当中,2022年12月26日,21,3.4 可靠数据传输的原理,可靠数据传输在应用层、运输层和链路层都很重要网络中最重要的top-10问题之一!,2022年12月26日,22,3.4 可靠数据传输的原理,不可靠信道的特性决定了可靠数据传输协议(rdt)的复杂性。,2022年12月26日,23,3.4 可靠数据传输的原理,发送方,接收方,rdt_send(): 由上层(如应用层)调用,将数据发送给接收方的上层,udt_send(): 由 rdt调用,将分组通过不可靠信道传给接收方,rdt_rcv(): 当分组到达接
11、收方时调用,deliver_data(): 由 rdt 调用,将数据交付上层,2022年12月26日,24,3.4 可靠数据传输的原理,我们将要:逐步地开发可靠数据传输协议(rdt)的发送方和接收方只考虑单向数据传输(unidirectional data transfer)的情况但控制信息是双向传输的用有限状态机 (FSM) 来描述发送方和接收方,事件引起状态变迁,状态转换过程中的动作,状态: 由事件引起一个状态到另一个状态的变迁。,2022年12月26日,25,3.4 可靠数据传输的原理,可靠信道上的可靠传输 rdt 1.0底层信道完全可靠不会产生比特错误不会丢失分组分别为发送方和接收方建
12、立FSM发送方将数据发送给底层信道接收方从底层信道接收数据,packet = make_pkt(data)udt_send(packet),rdt_send(data),extract (packet,data)deliver_data(data),等待来自下层的调用,rdt_rcv(packet),发送方,接收方,等待来自上层的调用,2022年12月26日,26,3.4 可靠数据传输的原理,信道可能导致比特出现差错时rdt 2.x第一个版本rdt 2.0假设分组比特可能受损所有传输的分组都将按序被接收,不会丢失处理机制如何判断分组受损差错检测如何通知发送方分组是否受损接收方反馈(ACK和NA
13、K)在得知分组受损后,发送方如何处理出错重传,2022年12月26日,27,3.4 可靠数据传输的原理,rdt 2.0的有限状态机FSM,等待来自上层的调用,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),发
14、送方,接收方,rdt_send(data),L,2022年12月26日,28,3.4 可靠数据传输的原理,等待来自上层的调用,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),等待来自下层的调用,rdt_sen
15、d(data),L,发送方,接收方,rdt2.0: 无差错的情况,2022年12月26日,29,3.4 可靠数据传输的原理,等待来自上层的调用,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),等待来自下层的调
16、用,rdt_send(data),L,发送方,接收方,rdt2.0: 有差错的情况,2022年12月26日,30,3.4 可靠数据传输的原理,如何实现重传使用缓冲区缓存已发出但未收到反馈的报文段新的问题需要多大的缓冲区呢?接收方和发送方各一个报文段大小的缓冲区即可,2022年12月26日,31,3.4 可靠数据传输的原理,第二个版本rdt 2.1问题的引入ACK和NAK分组可能受损,而rdt 2.0没有考虑该情况解决问题的几种思路在人类的对话中,如果听不清楚对方所述,会回问一句“刚才你说什么来着?”但如果这句话仍然没有听清楚呢?怎么办?双方对着问“刚才你说什么来着?”这就可能进入了一个难以解困
17、的死循环增加足够的检查和比特,使发送方不仅可以检查比特差错,还可以恢复比特差错收到出错的反馈时,不管三七二十一,直接重发当前数据分组,但这就需要对数据分组进行编号,以示识别,2022年12月26日,32,3.4 可靠数据传输的原理,rdt 2.1的发送方,等待来自上层的调用0,sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt),rdt_send(data),udt_send(sndpkt),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) ),sndpkt = make_pkt(1, da
18、ta, checksum)udt_send(sndpkt),rdt_send(data),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) ),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt),L,L,2022年12月26日,33,3.4 可靠数据传输的原理,rdt 2.1的接收方,rdt_rcv(rcvpkt) & not corrupt(rcvp
19、kt) & has_seq0(rcvpkt),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq1(rcvpkt),extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq0(rcvpkt),extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(snd
20、pkt),rdt_rcv(rcvpkt) & (corrupt(rcvpkt),sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt),rdt_rcv(rcvpkt) & not 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),sndpkt = make_pkt(NAK, chks
21、um)udt_send(sndpkt),2022年12月26日,34,3.4 可靠数据传输的原理,第三个版本rdt 2.2针对rdt 2.1的改进只使用ACK取消NAK,接收方对最后一个正确收到的分组发送 ACK接收方必须明确指出被确认的分组的序号发送方收到的重复的ACK将按照NAK来进行处理重传正确的分组,2022年12月26日,35,3.4 可靠数据传输的原理,sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt),rdt_send(data),udt_send(sndpkt),rdt_rcv(rcvpkt) & ( corrupt(rcv
22、pkt) | isACK(rcvpkt,1) ),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt,0),发送方部分FSM,rdt_rcv(rcvpkt) & notcorrupt(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
23、),接收方部分 FSM,L,2022年12月26日,36,3.4 可靠数据传输的原理,针对rdt 2.x的进一步讨论rdt 2.x实际上也解决了流控问题,2022年12月26日,37,3.4 可靠数据传输的原理,信道不但出错,而且丢包时rdt 3.0假设底层信道不但可能出现比特差错,而且可能会丢包需解决的问题怎样检测丢包发生丢包后,如何处理检查和技术、序号、ACK、重传,如何判断数据报丢失了呢?,最简单的方法就是:耐心的等待,2022年12月26日,38,3.4 可靠数据传输的原理,sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)star
24、t_timer,rdt_send(data),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isACK(rcvpkt,1) ),sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)start_timer,rdt_send(data),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt,0),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isACK(rcvpkt,0) ),rdt_rcv(rcvpkt) & notcorrupt(rcvp
25、kt) & isACK(rcvpkt,1),stop_timer,stop_timer,udt_send(sndpkt)start_timer,timeout,udt_send(sndpkt)start_timer,timeout,rdt_rcv(rcvpkt),L,rdt_rcv(rcvpkt),L,L,L,Rdt 3.0的发送方,2022年12月26日,39,3.4 可靠数据传输的原理,rdt 3.0举例,2022年12月26日,40,3.4 可靠数据传输的原理,d,),过早超时,c,),丢失,ACK,2022年12月26日,41,3.4 可靠数据传输的原理,rdt 3.0的性能分析1Gb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学计算机网络ppt课件 第3章 运输层 华中科技大学 计算机网络 ppt 课件 运输

链接地址:https://www.31ppt.com/p-1926301.html