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