华中科技大学计算机网络课件-第3章-运输层

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机网络第3章运输层第三章运输层2020年4月7日2目录概述和运输层服务多路复用与多路分解无连接传输:UDP可靠数据传输的原理面向连接的传输:TCP拥塞控制原理TCP拥塞控制第三章运输层2020年4月7日33.1概述和运输层服务运输层的功能为不同主机上运行的应用进程之间提供逻辑通信(logicalcommunication)运输层协议的工作内容发送方:把应用数据划分成报文段(segments),交给网络层接收方:把报文段重组成应用数据,交付给应用层第三章运输层2020年4月7日43.1概述和运输层服务运输层和网络层的区别网络层:不同主机之间的逻辑通信运输层:应用进程之间的逻辑通信类似于家庭间通信:12个孩子要与另一个家庭的12个孩子相互通信进程=孩子们进程间报文=信封中的信笺主机=家庭的房子运输协议=张三和李四网络层协议=邮局提供的服务第三章运输层2020年4月7日53.1概述和运输层服务上例中的几种特殊场景张三和李四生病了,无法工作,换成张五和李六不同的运输层协议可能提供不一样的服务邮局不承诺信件送抵的最长时间运输层协议能够提供的服务受到底层网络协议的服务模型的限制邮局不承诺平信一定安全可靠的送达,可能在路上丢失,但张三、李四可在较长时间内没有受到对方的回信时,再次誊写信件,寄出在网络层不提供某些服务的情况下,运输层自己提供第三章运输层2020年4月7日63.1概述和运输层服务因特网上的运输层协议用户数据报协议UDP(数据报)传输控制协议TCP(报文段)所提供的服务进程间数据交付差错检测可靠的数据传输拥塞控制第三章运输层2020年4月7日73.2多路复用与多路分解应用层运输层网络层TCP报文段UDP用户数据报应用进程TCP复用IP复用UDP复用TCP报文段UDP用户数据报应用进程端口端口TCP分用UDP分用IP分用IP数据报IP数据报发送方接收方第三章运输层2020年4月7日83.2多路复用与多路分解端口端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程(或者线程)从这个意义上讲,端口是用来标志应用层的进程(或者线程)端口用一个16bit端口号进行标志第三章运输层2020年4月7日93.2多路复用与多路分解套接字TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称为套接字(socket)。套接字和端口、IP地址的关系是:IP地址131.6.23.13端口号1500131.6.23.13,1500套接字(socket)第三章运输层2020年4月7日103.2多路复用与多路分解报文段(数据报)的投送主机收到IP包每个数据包都有源IP地址和目的IP地址每个数据包都携带一个传输层的数据报文段每个数据报文段都有源、目的端口号主机根据“IP地址+端口号”将报文段定向到相应的套接字源端口#目的端口#32位应用数据(报文)其他首部字段TCP/UDP报文段格式第三章运输层2020年4月7日113.2多路复用与多路分解面向连接到复用和分用TCP套接字由一个四元组来标识(源IP地址,源端口号,目的IP地址,目的端口号)接收方主机根据这四个值将报文段定向到相应的套接字服务器主机同时支持多个并发的TCP套接字:每一个套接字都由其四元组来标识Web服务器为每一个客户连接都产生不同的套接字非持久HTTP对每一个请求都建立不同的套接字(会影响性能)第三章运输层2020年4月7日123.2多路复用与多路分解举例:多线程的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第三章运输层2020年4月7日133.3无连接传输:UDP一个最简单的运输层协议必须提供多路复用/多路分解服务差错检查实际上这就是UDP所提供的功能(RFC768)第三章运输层2020年4月7日143.3无连接传输:UDPUDP处理数据的流程发送方从应用进程得到数据附加上为多路复用/多路分解所需的源和目的端口号及差错检测信息,形成报文段(数据报)递交给网络层,尽力而为的交付给接收主机接收方从网络层接收报文段(数据报)根据目的端口号,将数据交付给相应的应用进程UDP通信事先无需握手,是无连接的第三章运输层2020年4月7日153.3无连接传输:UDPUDP的优势无需建立连接——建立连接会增加时延简单——发送方和接收方无需维护连接状态段首部开销小——TCP:20BytevsUDP:8Byte无拥塞控制——UDP可按需要随时发送第三章运输层2020年4月7日163.3无连接传输:UDP部分采用UDP协议的应用远程文件系统(NFS)流式多媒体因特网电话网络管理(SNMP)选路协议(RIP)域名解析(DNS)第三章运输层2020年4月7日173.3无连接传输:UDPUDP大量应用可能导致的严重后果路由器中大量的分组溢出显著减小TCP通信的速率,甚至挤垮TCP会话使用UDP的可靠数据传输在应用层实现数据的可靠传输增加了应用进程的实现难度第三章运输层2020年4月7日183.3无连接传输:UDPUDP报文段(数据报)的结构源端口#目的端口#32位应用数据(报文)长度检查和包括首部在内的UDP报文段长度,(以字节为单位)第三章运输层2020年4月7日193.3无连接传输:UDPUDP的检查和目标检测收到的报文段的“差错”(例如,出现突变的比特)发送方把报文段看作是16比特字的序列检查和:对报文段的所有16比特字的和进行1的补运算发送方将计算校验和的结果写入UDP校验和字段中增加伪首部:(源IP地址(4字节)、目的IP地址(4字节)、0(1字节)、17(UDP协议号,1字节)、UDP长度(2字节))接收方计算接收到的报文段的校验和检查计算结果是否与收到报文段的校验和字段中的值相同不同—检测到错误相同—没有检测到错误(但仍可能存在错误)第三章运输层2020年4月7日203.3无连接传输:UDP例子:将两个16比特字相加1111001100110011011101010101010101110111011101110111101110111011110010100010001000011回卷和检查和注意:最高有效位的进位要回卷加到结果当中第三章运输层2020年4月7日213.4可靠数据传输的原理可靠数据传输在应用层、运输层和链路层都很重要网络中最重要的top-10问题之一!第三章运输层2020年4月7日223.4可靠数据传输的原理发送进程接收进程数据数据可靠信道应用层运输层可靠数据传输协议(发送方)可靠数据传输协议(接收方)数据数据rdt_send()Deliver_data()udt_send()rdt_rcv()分组分组不可靠信道网络层a)提供的服务b)服务实现不可靠信道的特性决定了可靠数据传输协议(rdt)的复杂性。第三章运输层2020年4月7日233.4可靠数据传输的原理发送方接收方rdt_send():由上层(如应用层)调用,将数据发送给接收方的上层udt_send():由rdt调用,将分组通过不可靠信道传给接收方rdt_rcv():当分组到达接收方时调用deliver_data():由rdt调用,将数据交付上层可靠数据传输协议(发送方)可靠数据传输协议(接收方)数据数据rdt_send()Deliver_data()udt_send()rdt_rcv()分组分组不可靠信道第三章运输层2020年4月7日243.4可靠数据传输的原理我们将要:逐步地开发可靠数据传输协议(rdt)的发送方和接收方只考虑单向数据传输(unidirectionaldatatransfer)的情况但控制信息是双向传输的用有限状态机(FSM)来描述发送方和接收方状态1状态2事件引起状态变迁状态转换过程中的动作状态:由事件引起一个状态到另一个状态的变迁。事件动作第三章运输层2020年4月7日253.4可靠数据传输的原理可靠信道上的可靠传输——rdt1.0底层信道完全可靠不会产生比特错误不会丢失分组分别为发送方和接收方建立FSM发送方将数据发送给底层信道接收方从底层信道接收数据packet=make_pkt(data)udt_send(packet)rdt_send(data)extract(packet,data)deliver_data(data)等待来自下层的调用rdt_rcv(packet)发送方接收方等待来自上层的调用第三章运输层2020年4月7日263.4可靠数据传输的原理信道可能导致比特出现差错时——rdt2.x第一个版本——rdt2.0假设分组比特可能受损所有传输的分组都将按序被接收,不会丢失处理机制如何判断分组受损——差错检测如何通知发送方分组是否受损——接收方反馈(ACK和NAK)在得知分组受损后,发送方如何处理——出错重传第三章运输层2020年4月7日273.4可靠数据传输的原理rdt2.0的有限状态机FSM等待来自上层的调用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等待来自下层的调用发送方接收方rdt_send(data)L第三章运输层2020年4月7日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等待来自下层的调用rdt_send(data)L发送方接收方rdt2.0:无差错的情况第三章运输层2020年4月7日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(NAK)rdt_rcv(rcvpkt)&&corrupt(rcvpkt)等待ACK或NAK等待来自下层的调用rdt_send(data)L发送方接收方rdt2.0:有差错的情况第三章运输层2020年4月7日303.4可靠数据传输的原理如何实现重传使用缓冲区缓存已发出但未收到反馈的报文段新的问题需要多大的缓冲区呢?接收方和发送方各一个报文段大小的缓冲区即可第三章运输层2020

1 / 130
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功