欢迎来到天天文库
浏览记录
ID:65429243
大小:451.00 KB
页数:62页
时间:2022-01-08
《传输层之一传输服务与传输连接 - CNDS》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十九讲可靠数据传输与TCP协议1可靠数据传输与TCP协议本讲内容可靠数据传输连接管理传输控制协议TCP报文格式TCP传输特性TCP流量控制TCP定时器设定基本要求熟练掌握连接管理掌握可靠数据传输熟练掌握TCP协议阅读[1]6.1、6.2[3]3.4.1、3.4.22可靠数据传输的服务模式与实现AB发送进程接收进程可靠通道接收进程AB发送进程packet不可靠通道可靠数据传输协议(发送)可靠数据传输协议(接收)packet应用层传输层网络层rdt_send()deliver_data()udt_send()rdt_rcv()rdt:reliabledatatransferudt:unre
2、liabledatatransfer3基于可靠通道的可靠数据传输rdt1.0假设底层网络提供可靠数据传输服务接收端有能力及时接收数据特性Data与packet相同无需反馈机制packet=make_pkt(data)udt_send(packet)rdt_send(data)Waitforcallfromabove发送端initialWaitforcallfrombelowextract(packet,data)deliver_data(data)rdt_rcv(packet)接收端initialEventactions4基于不可靠通道的可靠数据传输(1)rdt2.0假设报文在传输过程中可能
3、出错报文在传输过程中不会丢失ACK和NAK在传输过程中不会出错新增三种功能差错检测(软件校验和、硬件循环码……)接收端反馈(ACK、NAK)重发机制isACK(rcvpkt):收到的报文是肯定确认ACKisNAK(rcvpkt):收到的报文是否定确认NAKcorrupt(rcvpkt):收到的报文在传输过程中出错5基于不可靠通道的可靠数据传输(1)Waitforcallfromabove发送端WaitforACKorNAKudt_send(sndpkt)rdt_rcv(rcvpkt)&&isNAK(rcvpkt)sndpkt=make_pkt(data,checksum)udt_send(s
4、ndpkt)rdt_send(data)rdt_rcv(rcvpkt)&&isACK(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)接收端Waitforcallfrombelowrdt_rcv(rcvpkt)&&currupt(rcvpkt)sndpkt=make_pkt(NAK)udt_send(sndpkt)6基于不可靠通道的可靠数据传输(2)rdt2.1假设报文在传输过程中可能出错ACK和NAK也有可
5、能出错ACK和NAK不会丢失isACK(rcvpkt):收到的报文是肯定确认ACKisNAK(rcvpkt):收到的报文是否定确认NAKcorrupt(rcvpkt):收到的报文在传输过程中出错notcorrupt(rcvpkt):收到的报文无措7基于不可靠通道的可靠数据传输(2)rdt2.1发送端sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)WaitforACKorNAK0WaitforACKorNAK1udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)
6、
7、isNA
8、K(rcvpkt))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt&&isACK(rcvpkt))sndpkt=make_pkt(1,data,checksum)udt_send(sndpkt)rdt_send(data)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)
9、
10、isNAK(rcvpkt))WaitforCall1fromaboverdt_rcv(rcvpkt)&¬corrupt(rcvpkt&&isACK(rcvpkt))Waitforcallfromabove8基于不可靠通道的可靠数据传输(2)r
11、td2.1接收端sndpkt=make_pkt(ACK,checksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq0(rcvpkt))Waitfor1frombelowrdt_rcv(rcvpkt)&&corrupt(rcvpkt)extract(rcvpkt,data)deliver_data(data)Sndpkt=make_
此文档下载收益归作者所有