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

上传人:汽*** 文档编号:587811878 上传时间:2024-09-06 格式:PPT 页数:102 大小:3.14MB
返回 下载 相关 举报
计算机网络自顶向下方法第三章讲义PPT课件_第1页
第1页 / 共102页
计算机网络自顶向下方法第三章讲义PPT课件_第2页
第2页 / 共102页
计算机网络自顶向下方法第三章讲义PPT课件_第3页
第3页 / 共102页
计算机网络自顶向下方法第三章讲义PPT课件_第4页
第4页 / 共102页
计算机网络自顶向下方法第三章讲义PPT课件_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《计算机网络自顶向下方法第三章讲义PPT课件》由会员分享,可在线阅读,更多相关《计算机网络自顶向下方法第三章讲义PPT课件(102页珍藏版)》请在金锄头文库上搜索。

1、计 算 机 网 络20142014年年9 9月月国防科技学院国防科技学院第第3 3章章 运输层运输层第第3 3章章 运输层运输层计算机网络2第第3 3章章 运输层运输层应用层:包含大量应用普遍需要的协议,支持网络应用uFTP, SMTP, HTTP运输层: 主机到主机数据传输,负责从应用层接收消息,并传输应用层的message,到达目的后将消息上交应用。uTCP, UDP网络层: 从源到目的地数据报的选路uIP, 选路协议链路层: 在邻近网元之间传输数据uPPP, 以太网物理层: 物理层负责将链路层帧中每一位(bit)从链路的一端传输到另一端。应用层运输层运输层网络层链路层物理层 TCP/IP

2、五层模型3第第3 3章章 运输层运输层我们的目的: 理解运输层服务依据的原理:uMultiplexing(多路复用)/demultiplexing(多路分解)u可靠数据传输uflow control(流量控制)ucongestion control(拥塞控制)学习因特网中的运输层协议:uUDP: 无连接传输uTCP: 面向连接传输uTCP 拥塞控制 第3章:运输层4第第3 3章章 运输层运输层3.1 运输层服务运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原理3.5 面向连接的传输: TCP3.6 拥塞控制的原则3.7 TCP拥塞控制5第第3 3章章 运输层运输

3、层在运行不同主机上应用进程之间提供逻辑通信运输协议运行在端系统中u发送方:将应用报文( messages )划分为报文段(segments),传向网络层u接收方:将段重新装配为报文,传向应用层应用程序可供使用的运输协议不止一个u因特网:TCP和UDP应用层运输层网络层数据链路层物理层网络层数据链路层物理层应用层运输层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层逻辑端到端传输 运输服务和协议动画:多层通信实质6第第3 3章章 运输层运输层网络层: 主机间的逻辑通信运输层: 进程间的逻辑通信u依赖、强化网络层服务家庭类比:12个孩子

4、向12个孩子发信进程 = 孩子应用报文= 信封中的信主机 = 家庭运输协议 = Ann和Bill网络层协议= 邮政服务 运输层 vs. 网络层7第第3 3章章 运输层运输层可靠的、按序的交付 (TCP)u拥塞控制u流量控制u连接建立不可靠、无序的交付: UDPu差错检测不可用的服务: u时延保证u带宽保证应用层运输层网络层数据链路层物理层网络层数据链路层物理层应用层运输层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层网络层数据链路层物理层逻辑端到端传输 因特网运输层协议8第第3 3章章 运输层运输层3.1 运输层服务3.2 复用与分解复用与分解3.3

5、无连接传输: UDP3.4 可靠数据传输的原理3.5 面向连接的传输: TCP3.6 拥塞控制的原则3.7 TCP拥塞控制9第第3 3章章 运输层运输层应用层运输层网络层链路层物理层P1应用层运输层网络层链路层物理层应用层运输层网络层链路层物理层P2P3P4P1主机1主机2主机3= 进程= 套接字将接收到的段交付给相应的套接字(一路到多路,向上)在接收主机分解:从多个套接字收集数据,用首部封装数据(多路到一路,向下)在发送主机复用: 多路复用/多路分解10第第3 3章章 运输层运输层主机接收IP数据报u每个数据报有源IP地址, 目的IP地址u每个数据报承载1个运输层报文段u每个段具有源、目的端

6、口号 (回想: 对特定应用程序的周知端口号)源端口 #目的端口 #32 bits应用数据(报文)其他首部字段TCP/UDP 报文段格式 分解工作过程主机使用IP地址 &端口号将报文段导向到相应的套接字11第第3 3章章 运输层运输层UDP套接字由二元组全面标识 : ( (目的地目的地IPIP地址地址, , 目的地端口号目的地端口号) )当主机接收UDP段时:u在段中检查目的地端口号u将UDP段定向到具有该端口号的套接字具有不同源IP地址和/或源端口号的IP数据报(目的IP地址和端口号相同)定向到相同的套接字 无连接多路复用与分解12第第3 3章章 运输层运输层客户机IP:BP2客户机 IP:

7、AP1P1P3服务器IP: CSP: 6428DP: 9157SP: 9157DP: 6428SP: 6428DP: 5775SP: 5775DP: 6428SP提供了“返回地址” 无连接多路复用与分解(续)= 进程= 套接字13第第3 3章章 运输层运输层TCP套接字由四元组(4-tuple)标识: u源IP地址u源端口号u目的IP地址u目的端口号接收主机使用这四个值来将段定向到适当的套接字服务器主机可能支持许多并行的TCP套接字:u每个套接字由其自己的四元组标识Web服务器对每个连接的客户机具有不同的套接字u非持久HTTP将为每个请求具有不同的套接字 面向连接多路复用与分解14第第3 3章

8、章 运输层运输层客户机IP:BP1客户机 IP: AP1P2P4服务器IP: CSP: 9157DP: 80SP: 9157DP: 80P5P6P3D-IP:CS-IP: AD-IP:CS-IP: BSP: 5775DP: 80D-IP:CS-IP: B 面向连接多路复用与分解(续)= 进程= 套接字15第第3 3章章 运输层运输层客户机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服务器

9、= 进程= 套接字16第第3 3章章 运输层运输层3.1 运输层服务3.2 复用与分解3.3 无连接传输无连接传输: UDP3.4 可靠数据传输的原理3.5 面向连接的传输:TCP3.6 拥塞控制的原则3.7 TCP拥塞控制17第第3 3章章 运输层运输层“尽力而为”服务,UDP段可能:u丢包u对应用程序交付失序无连接u在UDP发送方和接收方之间无握手u每个UDP段的处理独立于其他段为何要有 UDP协议?无连接创建(它将增加时延)简单:在发送方、接收方无连接状态段首部小无拥塞控制: UDP能够尽可能快地传输 UDP: 用户数据报协议 18第第3 3章章 运输层运输层常用于流媒体应用程序u丢包容

10、忍u速率敏感其他UDP应用uDNSuSNMP经UDP的可靠传输 : 在应用层增加可靠性u应用程序特定的差错恢复!源端口#目的端口#32 bits应用数据(报文)UDP 段格式长度检查和UDP段的长度,包括首部,以字节计checksum :校验和 ,检查和 UDP报文段结构19第第3 3章章 运输层运输层发送方:将段内容处理为16比特整数序列检查和: 段内容的加法(反码和)发送方将检查和放入UDP检查和字段接收方:计算接收的段的检查和核对计算的检查和是否等于检查和字段的值:uNO 检测到差错uYES 无差错检测到。虽然如此,还可能有差错吗?目的: 在传输的段中检测“差错” (如比特翻转) UDP

11、检查和20第第3 3章章 运输层运输层注意u当数字作加法时,最高位进比特位的进位需要加到结果中例子: 两个16-bit整数相加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 1 0 0 0 0 1 1回卷 和检查和 检查和例子计算步骤: 求和,回卷,求反21第第3 3章章 运输层运输层3.1 运输层服务3.2 复用与分解3.3 无连接传输:

12、UDP3.4 可靠数据传输的原理可靠数据传输的原理3.5 面向连接的传输3.6 拥塞控制的原则3.7 TCP拥塞控制22第第3 3章章 运输层运输层在应用层、运输层、数据链路层的重要性u网络中需解决的最重要的10个问题之一!不可靠信道的特点决定了可靠数据传输协议的复杂性 可靠数据传输的原理23第第3 3章章 运输层运输层发送侧接收侧rdt_send(): called from above, (e.g., by app.). Passed data to deliver to receiver upper layerudt_send(): called by rdt,to transfer p

13、acket over unreliable channel to receiverrdt_rcv(): called when packet arrives on rcv-side of channeldeliver_data(): called by rdt to deliver data to upper 可靠数据传输:描述函数熟悉24第第3 3章章 运输层运输层我们将:逐渐递增地研究可靠数据传输协议 (rdt) 的发送方和接收方u仅考虑单向数据传输u但控制信息将在两个方向流动!使用有限状态机 (FSM)来定义发送方和接收方状态1状态2引起状态变迁的事件状态变迁所采取的行动状态: 当位于这

14、个“状态时”,下个状态惟一地由下个事件决定事件动作事件 有限状态机描述方法25第第3 3章章 运输层运输层3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原理可靠数据传输的原理urdt1.0,rdt2.0,rdt3.0协议协议3.5 面向连接的传输3.6 拥塞控制的原则3.7 TCP拥塞控制26第第3 3章章 运输层运输层底层信道完全可靠u无比特差错u无分组丢失发送方、接收方具有各自的FSM:u发送方将数据发向底层信道u接收方从底层信道读取数据Wait for call from abovepacket = make_pkt(data)udt_send(p

15、acket)rdt_send(data)extract (packet,data)deliver_data(data)Wait for call from belowrdt_rcv(packet)发送方接收方 rdt1.0:完全可靠信道上的可靠数据传输27第第3 3章章 运输层运输层 Rdt2.0: 具有比特差错的信道具有比特差错的底层信道u有比特差错u无分组丢失数据出错后处理方式u检错重传rdt2.0新增加机制(与rdt1.0比较)u检错u反馈:ACK, NAKu重传28第第3 3章章 运输层运输层 等待来自上面的调用snkpkt = make_pkt(data, checksum)udt_

16、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)udt_send(NAK)rdt_rcv(rcvpkt) & corrupt(rcvpkt) 等待ACK 或NAK 等待来自下面的调用发送方接收方rdt_send(data)L发送方发出发送方发出1个分组,等待个分组,等待接收方响应后再继续发送。

17、接收方响应后再继续发送。(类似(类似rdt2.0)停等协议停等协议 rdt2.0: FSM描述29第第3 3章章 运输层运输层 等待来自上面的调用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)udt_send(NAK)

18、rdt_rcv(rcvpkt) & corrupt(rcvpkt) 等待 ACK 或NAK 等待来自下面的调用rdt_send(data)L rdt2.0: 无差错时的操作30第第3 3章章 运输层运输层 等待来自上面的调用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_r

19、cv(rcvpkt) & isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt) & corrupt(rcvpkt)等待ACK 或NAK 等待来自下面的调用rdt_send(data)L rdt2.0: 有差错时的情况31第第3 3章章 运输层运输层如果ACK/NAK受损,将会出现何种情况?发送方不知道在接收方会发生什么情况!不能只是重传:可能导致重复( duplicate )处理重复(序号机制): 发送方对每个分组增加序列号如果ACK/NAK受损,发送方重传当前的分组接收方丢弃(不再向上交付)重复的分组 rdt2.0有重大的缺陷!32第第3 3章章 运输层运输层等

20、待来自上面的调用0sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)rdt_send(data)等待 ACK 或 NAK 0udt_send(sndpkt)rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) )sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)rdt_send(data)rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt) udt_send(sndpkt)rdt_rcv(

21、rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) )rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt) 等待来自上面的调用1等待 ACK 或NAK 1LL rdt2.1: 发送方, 处理受损的ACK/NAK33第第3 3章章 运输层运输层等待来自下面的调用0sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) & not corrupt(rcvpkt) & has_seq0(rcvpkt)rdt_rcv(rcvpkt) & notcor

22、rupt(rcvpkt) & has_seq1(rcvpkt) extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)等待来自上面的调用1rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq0(rcvpkt) extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) & (corrupt(rcvpkt)

23、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) rdt2.1: 接收方,处理受损的ACK/NAK34第第3 3章章 运输层运输层发送方:序号seq # 加入分组中两个序号seq. #s (0

24、,1) 将够用. ( 为什么?)必须检查是否收到的ACK/NAK受损 状态增加一倍u状态必须“记住”是否“当前的”分组具有0或1序号接收方:必须检查是否接收到的分组是冗余的u状态指示是否0或1是所期待的分组序号seq #注意: 接收方不能知道是否它的最后的ACK/NAK在发送方已经接收OK rdt2.1: 讨论35第第3 3章章 运输层运输层与rdt2.1一样的功能,仅使用ACK代替NAK,接收方对最后正确接收的分组发送ACKu接收方必须明确地包括被确认分组的序号在发送方重复的ACK导致如同NAK相同的动作:重传当前分组 rdt2.2: 一种无NAK的协议36第第3 3章章 运输层运输层等待来

25、自上面的调用0sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)rdt_send(data)udt_send(sndpkt)rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) | isACK(rcvpkt,1) )rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt,0) 等待ACK0发送方FSM片段等待来自下面的调用0rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq1(rcvpkt) extract(rcvpkt,data)d

26、eliver_data(data)sndpkt = make_pkt(ACK1, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) & (corrupt(rcvpkt) | has_seq1(rcvpkt)udt_send(sndpkt)接收方FSM片段L rdt2.2: 发送方, 接收方片段37第第3 3章章 运输层运输层 rdt3.0: 具有差错和丢包的信道具有差错和丢包的底层信道u有比特差错u有分组丢失现有机制(检错、反馈、重传、序号)还不够增加定时机制:发送方等待ACK一段“合理的”时间u如在这段时间没有收到ACK则重传u如果分组(或ACK)只是延迟(没有丢

27、失),重传将是冗余的,但序号的使用已经处理了该情况38第第3 3章章 运输层运输层sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)等待 ACK0rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isACK(rcvpkt,1) )等待来自上面的调用1sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt) & notcorrupt(rcvpk

28、t) & isACK(rcvpkt,0) rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isACK(rcvpkt,0) )rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt,1) stop_timerstop_timerudt_send(sndpkt)start_timertimeoutudt_send(sndpkt)start_timertimeoutrdt_rcv(rcvpkt) 等待来自上面的调用0等待 ACK1Lrdt_rcv(rcvpkt)LLL rdt3.0发送方39第第3 3章章 运输层运输层无丢包时

29、的运行 分组丢失发送方发送方接收方接收方 rdt3.0 运行情况40第第3 3章章 运输层运输层ACK丢失 过早超时 发送方发送方接收方接收方 rdt3.0运行情况41第第3 3章章 运输层运输层rdt3.0能够工作,但性能不太好例子: 1 Gbps链路, 15 ms端到端传播时延, 1KB分组:Ttransmit=8kb/pkt10*9 b/sec= 8 microsecmU sender: 利用率 发送方用于发送时间的比率m每30 msec 1KB 分组 - 经1 Gbps 链路有33kB/sec 吞吐量m网络协议限制了物理资源的使用!L (packet length in bits)R

30、(transmission rate, bps)= rdt3.0的性能42第第3 3章章 运输层运输层传输分组的第一个比特, t = 0发送方接收方RTT 传输分组的最后一个比特, t = L / R分组第一个比特到达传输最后一个比特到达,发送ACKACK 到达,发送下一个分组, t = RTT + L / R rdt3.0: 停等协议的运行43第第3 3章章 运输层运输层流水线: 发送方允许发送多个、“传输中的”,还没有应答的报文段u序号的范围必须增加u发送方和/或接收方设有缓冲流水线协议的两种形式: 回退回退N帧法(帧法(Go-Back-N), 选择性重传(选择性重传(SR), 流水线协议

31、44第第3 3章章 运输层运输层传输第一个分组比特传输第一个分组比特, t = 0发送者接收者RTT 传输最后一个比特传输最后一个比特, t = L / R第一个分组比特到达第一个分组比特到达分组最后一个比特到达分组最后一个比特到达,发送发送 ACKACK 到达到达, 发送下一个分发送下一个分组组, t = RTT + L / R第二个分组最后比特到达第二个分组最后比特到达,发送发送ACK第三个分组最后比特到达第三个分组最后比特到达,发送发送ACK利用率增加利用率增加3倍倍! 流水线协议: 增加利用率45第第3 3章章 运输层运输层 滑动窗口协议 Go-Back-N和选择重传都是滑动窗口协议发

32、送方和接收方都具有一定容量的缓冲区(即窗口),允许发送站连续发送多个幀而不需要等待应答 发送窗口就是发送端允许连续发送的帧的序号表,发送端可以不等待应答而连续发送的最大帧数称为发送窗口的尺寸接收窗口是接收方允许接收的帧的序号表,凡落在接收窗口内的帧,接收方都必须处理,落在接收窗口外的帧被丢弃。接收方每次允许接收的帧数称为接收窗口的尺寸46第第3 3章章 运输层运输层 特征:累计ACK,全部重传ACK(n): 确认所有的(包括序号n)的分组 - “累计ACK”若超时,重传窗口中的未被确认的第一个分组n及所有更高序号的分组 Go-Back-N发送窗口尺寸为N;接收窗口尺寸为1。1234567891

33、011发送窗口接收窗口1234567891011简单来说:位于发送窗口内的分组才允许被发送,位于接收窗口内的分组才能被接收,关键是窗口如何滑动。47第第3 3章章 运输层运输层 Go-Back-N正常传输时(示意)动画48第第3 3章章 运输层运输层 Go-Back-N丢失帧时(示意)49第第3 3章章 运输层运输层 Go-Back-N 理解累计ACK和回退N个重传发送方u发送窗口滑动的条件:收到1个确认分组u超时重传时,回退N个重传,通常重传多个分组接收方u接收窗口滑动的条件:收到期望序号的分组u累计ACKs:s为期望收到的下一分组序号u对失序分组的处理:丢弃,重发(已按序接收分组的)ACK

34、Go-Back-N不足:(效率明显高于停等协议)但仍有不必要重传的问题50第第3 3章章 运输层运输层发送方接收方 GBN例子(书)51第第3 3章章 运输层运输层 特征:独立ACK,重传单个分组独立ACK: 对每个分组使用单独的确认需N个定时器,若某个分组超时,则重传该分组接收窗口为N,对非按序到达的分组进行缓存 选择重传SR发送窗口尺寸为N;接收窗口尺寸为N。1234567891011发送窗口接收窗口123456789101152第第3 3章章 运输层运输层 选择重传的操作53第第3 3章章 运输层运输层 选择重传的理解 理解单独ACK和单个分组重传发送方u发送窗口滑动的条件:收到最低位置

35、分组的确认u超时重传时,仅重传超时的单个分组接收方u接收窗口滑动的条件:收到最低位置的分组u单独ACKu对失序分组的处理:接收窗口内缓存,发对应ACK;接收窗口外丢弃54第第3 3章章 运输层运输层例子:序号: 0, 1, 2, 3窗口长度 = 3接收方:在(a)和(b)两种情况下接收方没有发现差别!在 (a)中不正确地将新的冗余的当为新的,而在(b)中不正确地将新的当作冗余的问题: 序号长度与窗口长度有什么关系?回答:窗口长度小于等于序号空间的一半 选择重传: 困难的问题55第第3 3章章 运输层运输层机制用途和说明检验和用于检测在一个传输分组中的比特错误。定时器用于检测超时/重传一个分组,

36、可能因为该分组(或其ACK)在信道中丢失了。由于当一个分组被时延但未丢失(过早超时),或当一个分组已被接收方收到但从接收方到发送方的ACK丢失时,可能产生超时事件,所以接收方可能会收到一个分组的多个冗余拷贝。序号用于为从发送方流向接收方的数据分组按顺序编号。所接收分组的序号间的空隙可使该接收方检测出丢失的分组。具有相同序号的分组可使接收方检测出一个分组的冗余拷贝。确认接收方用于告诉发送方一个分组或一组分组已被正确地接收到了。确认报文通常携带着被确认的分组或多个分组的序号。确认可以是逐个的或累积的,这取决于协议。否定确认接收方用于告诉发送方某个分组未被正确地接收。否定确认报文通常携带着未被正确接

37、收的分组的序号。窗口、流水线发送方也许被限制仅发送那些序号落在一个指定范围内的分组。通过允许一次发送多个分组但未被确认,发送方的利用率可在停等操作模式的基础上得到增加。我们很快将会看到,窗口长度可根据接收方接收和缓存报文的能力或网络中的拥塞程度,或两者情况来进行设置。 可靠数据传输机制及用途总结56第第3 3章章 运输层运输层3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原理3.5 面向连接的传输:TCP3.6 拥塞控制的原则3.7 TCP拥塞控制57第第3 3章章 运输层运输层Robert E. KahnVinton G. Cerf罗伯特卡恩 温顿瑟夫

38、 2004年图灵奖 TCP/IP协议发明者58第第3 3章章 运输层运输层全双工数据全双工数据:u同一连接上的双向数据流uMSS: 最大报文段长度uMTU:最大传输单元面向连接面向连接: u在进行数据交换前,初始化发送方与接收方状态,进行握手(交换控制信息),流量控制流量控制:u发送方不能淹没接收方拥塞控制拥塞控制:u抑止发送方速率来防止过分占用网络资源点到点点到点:u一个发送方, 一个接收方u连接状态与端系统有关,不为路由器所知 可靠、有序的字节流可靠、有序的字节流流水线流水线:uTCP拥塞和流量控制设置滑动窗口协议发送和接收缓冲区发送和接收缓冲区 TCP概述 59第第3 3章章 运输层运输

39、层源端口 #目的端口 #32 bits应用层数据 (变长)序号确认号接收窗口紧急数据指针检查和FSRPAU首部长度未用选项 (变长)URG: 紧急数据 (一般不用)ACK: ACK 序号有效PSH: 立即提交数据(一般不用)RST, SYN, FIN:连接建立(建立和拆连)接收方允许的字节数对数据字节计数(并非对报文段计数!)因特网检查和(同 UDP一样) TCP报文段结构60第第3 3章章 运输层运输层序号序号:u报文段中第1个数据字节在字节流中的位置编号确认号确认号:u期望从对方收到下一个字节的序号u累计应答主机主机 A主机主机 BSeq=42, ACK=79, data = CSeq=7

40、9, ACK=43, data = CSeq=43, ACK=80用户键入C主机对接收到的C回显给出确认主机对收到的C给出确认, 回显 C时间时间简单的telnet情况捎带确认捎带确认 TCP序号和确认号61第第3 3章章 运输层运输层问题: 如何设置TCP 超时值?应大于RTTu但RTT是变化的太短: 过早超时u不必要的重传太长: 对报文段的丢失响应太慢问题: 如何估计RTT?SampleRTT: 从发送报文段到接收到ACK的测量时间u忽略重传SampleRTT会变化,希望估计的RTT“较平滑”u平均最近的测量值,并不仅仅是当前SampleRTT TCP往返时延(RTT)的估计与超时62第第

41、3 3章章 运输层运输层EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT指数加权移动平均(Exponential weighted moving average)过去的样本指数级衰减来产生影响典型值: = 0.125 TCP往返时延估计与超时 (续)63第第3 3章章 运输层运输层 RTT估计的例子64第第3 3章章 运输层运输层设置超时间隔设置超时间隔EstimtedRTT 加 “安全余量”uEstimatedRTT大变化- 更大的安全余量首先估算EstimatedRTT与SampleRTT之间差值有多大 : TimeoutInterval = E

42、stimatedRTT + 4*DevRTTDevRTT = (1- )*DevRTT + *|SampleRTT-EstimatedRTT|(典型地, = 0.25) 然后估算超时值然后估算超时值: TCP往返时延估计与超时 (续)65第第3 3章章 运输层运输层TCP在IP不可靠服务的基础上创建可靠数据传输服务流水线发送报文段累计确认TCP使用单个重传计时器重传被下列事件触发:u超时事件u重复ACK TCP可靠数据传输66第第3 3章章 运输层运输层TCP可靠传输属于滑动窗口方法 发送方收到累计ACK,窗口向又滑动(1个或多个报文段)单个重传计时器,超时仅则重传导致超时的报文段快速重传:冗

43、余ACK 接收方对收到的报文段进行缓存收到任何报文段时,均发出正确的累计确认 TCP可靠数据传输67第第3 3章章 运输层运输层主机 ASeq=100, 20 bytes dataACK=100时间过早超时的情况主机 BSeq=92, 8 bytes dataACK=120Seq=92, 8 bytes dataSeq=92 超时ACK=120主机 ASeq=92, 8 bytes dataACK=100loss超时丢失确认的情况主机 BXSeq=92, 8 bytes dataACK=100时间Seq=92 超时SendBase= 100SendBase= 120SendBase= 120S

44、endbase= 100 TCP: 重传的情况68第第3 3章章 运输层运输层主机 ASeq=92, 8 bytes dataACK=100丢包超时累计确认情况主机 BXSeq=100, 20 bytes dataACK=120时间SendBase= 120 TCP 重传情况(续)69第第3 3章章 运输层运输层超时间隔常常相对较长:u重传丢失报文段以前有长时延通过冗余ACK,检测丢失的报文段u发送方经常一个接一个的发送报文段u如果报文段丢失,将会收到很多重复ACK如果对相同数据,发送方收到3个ACK, 假定被确认的报文段以后的报文段丢失了:u快速重传: 在定时器超时之前重传 快速重传70第第

45、3 3章章 运输层运输层TCP连接的接收方有1个接收缓冲区:匹配速度服务: 发送速率需要匹配接收方应用程序的提取速率应用进程可能从接收缓冲区读数据缓慢发送方发送数据太发送方发送数据太快,导致接收方来快,导致接收方来不及接收时,需进不及接收时,需进行流量控制行流量控制流量控制流量控制 TCP流量控制71第第3 3章章 运输层运输层 TCP流控: 工作原理TCP流控通过接收窗口字段实现u接收方计算缓存区的剩余空间,即接收窗口大小uRcvWindow= RcvBuffer-LastByteRcvd -LastByteReadu接收方通过TCP首部的接收窗口字段反馈给发送方u发送方根据接收窗口字段来限

46、制发送窗口大小,以保证接收方缓存不溢出 72第第3 3章章 运输层运输层 TCP连接管理TCP是面向连接的协议,TCP连接的建立和释放是每次TCP传输中必不可少的过程。TCP的传输连接包括三个状态u连接建立u数据传输u连接释放73第第3 3章章 运输层运输层第一次第一次握手过程:握手过程:注:注:SYN SYN :同步序列编号同步序列编号( (SySynchronize Sequence nchronize Sequence N Number)umber)SEQ : SEQ : 序列号序列号( (SeqSequence Number), uence Number), 表示当前数据传输表示当前数

47、据传输字节字节的的编号编号为为X X。 SYN1 ,SEQX第一次握手:连接请求报文第一次握手:连接请求报文请求建立连接请求建立连接目前字节编号:目前字节编号:X下一次编号:下一次编号:X1SEQX:身份标识身份标识ClientClient客户机(客户机(A A)ServerServer服务器(服务器(B B) 建立连接(三次握手)74第第3 3章章 运输层运输层第二次第二次握手过程:握手过程: SYN1 ,SEQX SYN1 ,SEQY, ACKX+1 注:注:SYN SYN :同步序列编号同步序列编号( (SySynchronize Sequence nchronize Sequence

48、N Numbers) umbers) SEQ : SEQ : 序列号序列号( (SeqSequence Number)uence Number)ACK ACK :确认编号确认编号( (AckAcknowledgement Number)nowledgement Number)第二次握手:确认报文第二次握手:确认报文第一次握手:连接请求报文第一次握手:连接请求报文请请求求建建立立连连接接目前字节编号:目前字节编号:Y下一次编号:下一次编号:Y1SEQY :身份标识身份标识对(对(SYN)同步序号请求同步序号请求的应答的应答ClientClient客户机(客户机(A A)ServerServer服

49、务器(服务器(B B) 建立连接(三次握手)75第第3 3章章 运输层运输层 SYN1 ,SEQX SYN1 ,SEQY, ACKX+1 第三次第三次握手过程握手过程对(对(SYN)同步序号请求同步序号请求的应答的应答第二次握手确认报文第二次握手确认报文客户机客户机A A的身份标识的身份标识第一次握手:连接请求报文第一次握手:连接请求报文 SEQ X+1, ACK Y+1第三次握手:确认报文第三次握手:确认报文ClientClient客户机(客户机(A A)ServerServer服务器(服务器(B B) 建立连接(三次握手)76第第3 3章章 运输层运输层 SYN1 ,SEQX SYN1 ,

50、SEQY, ACKX+1 SEQ X+1, ACK Y+1请求请求确认确认确认确认三次握手过程:三次握手过程:一个请求,两个确认一个请求,两个确认数据数据连接已建立连接已建立ClientClient客户机(客户机(A A)ServerServer服务器(服务器(B B) 建立连接(三次握手)77第第3 3章章 运输层运输层 SYN? ,SEQ1000 SYN? ,SEQ?, ACK? SEQ ?, ACK 2002三次握手过程:三次握手过程:一个请求,两个确认一个请求,两个确认数据数据ClientClient客户机(客户机(A A)ServerServer服务器(服务器(B B) 练习78第第

51、3 3章章 运输层运输层步骤 1: 客户机向服务器发送TCP FIN控制报文段步骤 2: 服务器收到FIN,用ACK回答。关闭连接,发送FIN步骤 3: 客户机收到FIN, 用ACK答 u进入 “超时等待” 将对接收到的FIN进行确认步骤 4: 服务器接收ACK,连接关闭客户FIN服务器ACKACKFIN关闭关闭已关闭超时等待 释放连接79第第3 3章章 运输层运输层3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原理3.5 面向连接的传输: TCP3.6 拥塞控制的原则拥塞控制的原则3.7 TCP拥塞控制80第第3 3章章 运输层运输层拥塞(Conges

52、tion):当大量的分组进入网络,超出了网络的处理能力时,会引起网络局部或整体性能下降,这种现象称为拥塞。不加控制的拥塞甚至导致整个网络瘫痪。不同于流量控制!表现:u丢包 (路由器缓冲区溢出)u长时延 (路由器缓冲区中排队)网络中的前10大问题之一! 拥塞控制原理81第第3 3章章 运输层运输层 拥塞控制起的作用提供的负载吞吐量理想的拥塞控制拥塞死锁(吞吐量 = 0)无拥塞控制实际的拥塞控制轻度拥塞082第第3 3章章 运输层运输层两个发送方, 两个接收方一个路由器, 无限缓冲区 不重传拥塞时时延增大可达到最大吞吐量无限的共享式输出链路缓冲主机Alin : 原始数据主机Blout 拥塞的原因与

53、开销: 情况1 83第第3 3章章 运输层运输层一个路由器,有限缓冲区 发送方重传丢失的数据分组有限的共享式输出链路缓存主机 Alin : 原始数据主机 Bloutlin : 原始数据重传数据 拥塞的原因与开销 : 情况2 84第第3 3章章 运输层运输层通常: (吞吐量)仅当丢失丢包时,需要“完美的” 重传 :迟延的分组(而不是丢失)的重传使得 比(同完美情况相比) 更大linlout=linloutlinlout拥塞的拥塞的“代价代价”: r比额定的“吞吐量”做更多的工作 (重传)r不必要重传: 链路承载分组的多个拷贝 拥塞的原因与开销: 情况2 (续) 85第第3 3章章 运输层运输层四

54、个发送者多跳路径超时/重传lin问题: 随着 和 的增加将发生什么情况 ?lin有限的共享式输出链路缓存 主机 Alin 原始数据主机 Bloutlin : 原始数据, 重传数据 拥塞的原因与开销: 情况3 86第第3 3章章 运输层运输层另一个拥塞的“开销”: r当分组丢失时, 任何用于传输该分组的上游传输能力都被浪费!Host AHost Blout 拥塞的原因与开销: 情况3 (续) 87第第3 3章章 运输层运输层端到端的拥塞控制不能从网络得到明确的反馈从端系统根据观察到的时延和丢失现象推断出拥塞这是TCP所采用的方法网络辅助的拥塞控制路由器为端系统提供反馈u一个bit指示一条链路出现

55、拥塞(SNA,DECnet,TCP/IP ECN, ATM)u指示发送方按照一定速率发送控制拥塞的两类方法(直接的和间接的)控制拥塞的两类方法(直接的和间接的): 拥塞控制方法88第第3 3章章 运输层运输层 案例(网络辅助):ATM ABR拥塞控制ATM(Asynchronous Transfer Mode ) 异步传输模式u一种结合了电路交换与分组交换各自优点的技术u以53字节固定长度的信元为传输单元u业务:CBR固定速率,ABR可用速率等:ABR可用速率业务模式(“弹性服务”)u若发送方的路径 “欠载”: 发送方应该使用可用的带宽u若发送方的路径拥塞: 发送方被抑制到最小保证速率89第第

56、3 3章章 运输层运输层通信过程简要描述u发送方沿(建立好连接的)路径上不断传输数据信元和管理信元,到达接收方u接收方将管理信元(内容修改调整后)研路径返回(反馈)到发送方 案例:ATM ABR拥塞控制90第第3 3章章 运输层运输层采取网络辅助的拥塞控制(包括多种机制)uRM信元中的特定bit:NI bit速率无增长 (轻度拥塞),CI bit拥塞指示uRM信元中的两字节 ER (明确速率)字段:确定路径上所有交换机的最小支持速率u数据信元中的EFCI bit:被拥塞的交换机设置为1 ,接收方将在返回的RM信元的CI位置1 案例:ATM ABR拥塞控制91第第3 3章章 运输层运输层3.1

57、运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原理3.5 面向连接的传输: TCP3.6 拥塞控制的原则3.7 TCP拥塞控制拥塞控制92第第3 3章章 运输层运输层端到端控制 (没有网络辅助)发送方限制传输:滑动窗口法,发送窗口小于CongWin 粗略地,拥塞窗口是动态的, 具有感知到的网络拥塞的函数发送方如何感知网络拥塞?丢失事件 = 超时或者 3个重复ACK发生丢失事件后,TCP发送方降低速率(拥塞窗口)三个机制:AIMDAIMD(加增倍减算法)加增倍减算法)加增倍减算法)加增倍减算法)慢启动慢启动慢启动慢启动超时事件后的保守机制超时事件后的保守机制超时事

58、件后的保守机制超时事件后的保守机制速率 = CongWin RTT Bytes/sec TCP拥塞控制93第第3 3章章 运输层运输层乘性减乘性减: 丢包事件后,拥塞窗口值减半加性增加性增: 如没有检测到丢包事件,每个RTT时间拥塞窗口值增加一个MSS (最大报文段长度)长生命周期TCP连接 TCP加增倍减 AIMD94第第3 3章章 运输层运输层在连接开始时, 拥塞窗口值 = 1 MSSu例如: MSS= 500 bytes & RTT = 200 msecu初始化速率 = 20 kbps可获得带宽可能 MSS/RTTu希望尽快达到期待的速率当连接开始,以指数快地增加速率,直到第一个丢失事件

59、发生 TCP慢启动95第第3 3章章 运输层运输层当连接开始的时候,速率呈指数式上升,直到第1次报文丢失事件发生为止:u每RTT倍增拥塞窗口值u每收到ACK,增加拥塞窗口总结: 初始速率很低,但以指数快地增加主机A一个报文段RTT主机B时间两个报文段四个报文段 TCP慢启动(续)96第第3 3章章 运输层运输层收到3个冗余确认后:uCongWin减半u窗口再线性增加但是超时事件以后:uCongWin值设置为1 MSSu窗口再指数增长u到达一个阈值 (Threshold) 后,再线性增长 超时后的保守机制基本思想u3个冗余ACK指示网络还具有某些传送报文段的能力u直接超时,则更为 “严重”97第

60、第3 3章章 运输层运输层246810121416182022004812162024传输次数拥塞窗口 cwnd进入拥塞避免发生超时指数规律增长线性规律增长threshold = 16慢启动慢启动拥塞避免(加增)拥塞避免(加增)更新后的threshold = 12进入拥塞避免在丢包事件发生时,阈值Threshold设置为发生丢包以前的CongWin的一半 超时后的保守机制(续)98第第3 3章章 运输层运输层当CongWin Threshold时,发送者处于拥塞避免阶段, CongWin线性增长当出现3个冗余确认时, 阈值Threshold设置为CongWin/2,且CongWin设置为Thr

61、eshold当超时发生时,阈值Threshold设置为CongWin/2,并且CongWin设置为1 MSS. TCP 拥塞控制:小结99第第3 3章章 运输层运输层作为窗口长度和RTT的函数,TCP的平均吞吐量是什么?u忽略慢启动设当丢包发生时窗口长度是W如果窗口为 W,吞吐量是 W/RTT当丢包发生后,窗口降为 W/2,吞吐量为 W/2RTT.一个连接的平均吞吐量为0 .75 W/RTT实际网络性能分析中,TCP吞吐量是信噪比,窗口大小,帧长,重传次数,往返时延等参数的复杂函数 TCP 吞吐量100第第3 3章章 运输层运输层TCP协议在无线网络中适用性如何(从拥塞控制角度考虑)? 思考101第第3 3章章 运输层运输层 本章小结与作业 重要内容:多路复用与多路分解。UDP和TCP的比较。可靠的数据传输服务模型rdt1.0,rdt2.0,rdt3.0,底层信道模型,停等协议与流水线协议,Go-Back-N与选择重传。TCP序号、确认、可靠传输机制,TCP连接的建立。TCP拥塞控制作业:对上述5点重要内容进行简答P190:14题,3题;P193,24题102

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号