计算机网络自顶向下方法第三章讲义.

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

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

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

资源描述

计算机网络2014年9月国防科技学院第3章运输层2第3章运输层计算机网络第3章运输层3应用层:包含大量应用普遍需要的协议,支持网络应用FTP,SMTP,HTTP运输层:主机到主机数据传输,负责从应用层接收消息,并传输应用层的message,到达目的后将消息上交应用。TCP,UDP网络层:从源到目的地数据报的选路IP,选路协议链路层:在邻近网元之间传输数据PPP,以太网物理层:物理层负责将链路层帧中每一位(bit)从链路的一端传输到另一端。应用层运输层网络层链路层物理层TCP/IP五层模型第3章运输层4我们的目的:理解运输层服务依据的原理:Multiplexing(多路复用)/demultiplexing(多路分解)可靠数据传输flowcontrol(流量控制)congestioncontrol(拥塞控制)学习因特网中的运输层协议:UDP:无连接传输TCP:面向连接传输TCP拥塞控制第3章:运输层第3章运输层53.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制第3章运输层6在运行不同主机上应用进程之间提供逻辑通信运输协议运行在端系统中发送方:将应用报文(messages)划分为报文段(segments),传向网络层接收方:将段重新装配为报文,传向应用层应用程序可供使用的运输协议不止一个因特网:TCP和UDP应用层运输层网络层数据链路层物理层网络层数据链路层物理层应用层运输层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层运输服务和协议动画:多层通信实质第3章运输层7网络层:主机间的逻辑通信运输层:进程间的逻辑通信依赖、强化网络层服务家庭类比:12个孩子向12个孩子发信进程=孩子应用报文=信封中的信主机=家庭运输协议=Ann和Bill网络层协议=邮政服务运输层vs.网络层第3章运输层8可靠的、按序的交付(TCP)拥塞控制流量控制连接建立不可靠、无序的交付:UDP差错检测不可用的服务:时延保证带宽保证应用层运输层网络层数据链路层物理层网络层数据链路层物理层应用层运输层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层因特网运输层协议第3章运输层93.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制第3章运输层10应用层运输层网络层链路层物理层P1应用层运输层网络层链路层物理层应用层运输层网络层链路层物理层P2P3P4P1主机1主机2主机3=进程=套接字将接收到的段交付给相应的套接字(一路到多路,向上)在接收主机分解:从多个套接字收集数据,用首部封装数据(多路到一路,向下)在发送主机复用:多路复用/多路分解第3章运输层11主机接收IP数据报每个数据报有源IP地址,目的IP地址每个数据报承载1个运输层报文段每个段具有源、目的端口号(回想:对特定应用程序的周知端口号)源端口#目的端口#32bits应用数据(报文)其他首部字段TCP/UDP报文段格式分解工作过程主机使用IP地址&端口号将报文段导向到相应的套接字第3章运输层12UDP套接字由二元组全面标识:(目的地IP地址,目的地端口号)当主机接收UDP段时:在段中检查目的地端口号将UDP段定向到具有该端口号的套接字具有不同源IP地址和/或源端口号的IP数据报(目的IP地址和端口号相同)定向到相同的套接字无连接多路复用与分解第3章运输层13客户机IP:BP2客户机IP:AP1P1P3服务器IP:CSP:6428DP:9157SP:9157DP:6428SP:6428DP:5775SP:5775DP:6428SP提供了“返回地址”无连接多路复用与分解(续)=进程=套接字第3章运输层14TCP套接字由四元组(4-tuple)标识:源IP地址源端口号目的IP地址目的端口号接收主机使用这四个值来将段定向到适当的套接字服务器主机可能支持许多并行的TCP套接字:每个套接字由其自己的四元组标识Web服务器对每个连接的客户机具有不同的套接字非持久HTTP将为每个请求具有不同的套接字面向连接多路复用与分解第3章运输层15客户机IP:BP1客户机IP:AP1P2P4服务器IP:CSP:9157DP:80SP:9157DP:80P5P6P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B面向连接多路复用与分解(续)=进程=套接字第3章运输层16客户机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服务器=进程=套接字第3章运输层173.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输:TCP3.6拥塞控制的原则3.7TCP拥塞控制第3章运输层18“尽力而为”服务,UDP段可能:丢包对应用程序交付失序无连接在UDP发送方和接收方之间无握手每个UDP段的处理独立于其他段为何要有UDP协议?无连接创建(它将增加时延)简单:在发送方、接收方无连接状态段首部小无拥塞控制:UDP能够尽可能快地传输UDP:用户数据报协议第3章运输层19常用于流媒体应用程序丢包容忍速率敏感其他UDP应用DNSSNMP经UDP的可靠传输:在应用层增加可靠性应用程序特定的差错恢复!源端口#目的端口#32bits应用数据(报文)UDP段格式长度检查和UDP段的长度,包括首部,以字节计checksum:校验和,检查和UDP报文段结构第3章运输层20发送方:将段内容处理为16比特整数序列检查和:段内容的加法(反码和)发送方将检查和放入UDP检查和字段接收方:计算接收的段的检查和核对计算的检查和是否等于检查和字段的值:NO–检测到差错YES–无差错检测到。虽然如此,还可能有差错吗?目的:在传输的段中检测“差错”(如比特翻转)UDP检查和第3章运输层21注意当数字作加法时,最高位进比特位的进位需要加到结果中例子:两个16-bit整数相加1111001100110011011101010101010101110111011101110111101110111011110010100010001000011回卷和检查和检查和例子计算步骤:求和,回卷,求反第3章运输层223.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理3.5面向连接的传输3.6拥塞控制的原则3.7TCP拥塞控制第3章运输层23在应用层、运输层、数据链路层的重要性网络中需解决的最重要的10个问题之一!不可靠信道的特点决定了可靠数据传输协议的复杂性可靠数据传输的原理第3章运输层24发送侧接收侧rdt_send():calledfromabove,(e.g.,byapp.).Passeddatatodelivertoreceiverupperlayerudt_send():calledbyrdt,totransferpacketoverunreliablechanneltoreceiverrdt_rcv():calledwhenpacketarrivesonrcv-sideofchanneldeliver_data():calledbyrdttodeliverdatatoupper可靠数据传输:描述函数熟悉第3章运输层25我们将:逐渐递增地研究可靠数据传输协议(rdt)的发送方和接收方仅考虑单向数据传输但控制信息将在两个方向流动!使用有限状态机(FSM)来定义发送方和接收方状态1状态2引起状态变迁的事件状态变迁所采取的行动状态:当位于这个“状态时”,下个状态惟一地由下个事件决定事件动作事件^有限状态机描述方法第3章运输层263.1运输层服务3.2复用与分解3.3无连接传输:UDP3.4可靠数据传输的原理rdt1.0,rdt2.0,rdt3.0协议3.5面向连接的传输3.6拥塞控制的原则3.7TCP拥塞控制第3章运输层27底层信道完全可靠无比特差错无分组丢失发送方、接收方具有各自的FSM:发送方将数据发向底层信道接收方从底层信道读取数据Waitforcallfromabovepacket=make_pkt(data)udt_send(packet)rdt_send(data)extract(packet,data)deliver_data(data)Waitforcallfrombelowrdt_rcv(packet)发送方接收方rdt1.0:完全可靠信道上的可靠数据传输第3章运输层28Rdt2.0:具有比特差错的信道具有比特差错的底层信道有比特差错无分组丢失数据出错后处理方式检错重传rdt2.0新增加机制(与rdt1.0比较)检错反馈:ACK,NAK重传第3章运输层29等待来自上面的调用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发送方发出1个分组,等待接收方响应后再继续发送。(类似rdt2.0)停等协议rdt2.0:FSM描述第3章运输层30等待来自上面的调用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)Lrdt2.0:无差错时的操作第3章运输层31等待来自上面的调用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)Lrdt2.0:有差错时的情况第3章运输层32如果ACK/NAK受损,将会出现何种情况?发送方不知道在接收方会发生什么情况!不能只是重传:可能导致重复(duplicate)处理重复(序号机制):发送方对每个分组增加

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

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

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

×
保存成功