计算机自顶向下方法第三章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《计算机自顶向下方法第三章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 向下 方法 第三 课件
- 资源描述:
-
1、第3讲 传输层之一1传输服务和协议传输服务和协议r提供运行在不同主机中提供运行在不同主机中进进程间程间的的逻辑通信逻辑通信 r传输协议仅运行在端系统传输协议仅运行在端系统中中 r传输传输 vs. 网络层服务网络层服务 :r网络层网络层: 在端系统间进行在端系统间进行通信通信r传输层传输层: 在进程间进行通在进程间进行通信信 m依赖于依赖于, 加强了加强了, 网络层的网络层的服务服务 applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkdata linkphy
2、sicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicallogical end-end transport第3讲 传输层之一2rThe blacks The Whites mike maryBill Ann第3讲 传输层之一3传输层协议传输层协议Internet 传输服务传输服务:r可靠可靠, 按序点对点递交按序点对点递交 (TCP)m拥塞控制拥塞控制m流量控制流量控制m连接建立连接建立r不可靠的不可靠的 (“尽力而为尽力而为”), 无序的点对点或广
3、播递交无序的点对点或广播递交: UDPr不能提供的服务不能提供的服务: m实时性实时性m带宽承诺带宽承诺m可靠的广播通信可靠的广播通信 applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicallogical end-end transpor
4、t第3讲 传输层之一4applicationtransportnetworkMP2applicationtransportnetwork复用复用/分用分用(multiplexing/Demultiplexing)回顾回顾: segment (段)(段)- 传输层实体间交换数据传输层实体间交换数据的单位的单位 mTPDU: 传输层数据传输层数据单元单元receiverHtHn分用分用: 将接收到的段传将接收到的段传递给正确的应用层进程递给正确的应用层进程 segmentsegmentMapplicationtransportnetworkP1MMMP3P4segmentheaderapplica
5、tion-layerdata第3讲 传输层之一5复用复用/分用分用复用复用/分用分用:r基于发送方基于发送方, 接收方的端口号接收方的端口号, IP 地址地址m源源, 目的端口目的端口 #s 存在于存在于每个段中每个段中m回顾回顾: 用于特定应用的常用于特定应用的常用端口号(用端口号(well-known port number)从多个应用进程获取从多个应用进程获取数据数据, 用首部用首部(便于随便于随后的分用后的分用)封装数据封装数据源端口 #宿端口宿端口 #32 bits应用层数据 (报文)其他首部字段其他首部字段TCP/UDP 段格式复用:第3讲 传输层之一6复用复用/分用分用: 举例举
6、例主机 A服务器 Bsource port: xdest. port: 23source port:23dest. port: x端口的使用: 简单的 telnet 应用Web客户端主机 AWeb服务器 BWeb客户端主机 CSource IP: CDest IP: Bsource port: xdest. port: 80Source IP: CDest IP: Bsource port: ydest. port: 80端口的使用: Web 服务器Source IP: ADest IP: Bsource port: xdest. port: 80第3讲 传输层之一7UDP: 用户数据报协议用
7、户数据报协议 RFC 768r“最简约的最简约的” Internet 传传输协议输协议r“尽力而为的尽力而为的” 服务服务, UDP 数据段可以数据段可以:m丢失丢失m应用数据不按序到达应用数据不按序到达r无连接无连接:m在在UDP收发双方之间收发双方之间, 无无需握手信号需握手信号m每个每个 UDP 数据段的操作数据段的操作都互相独立都互相独立为什么需要为什么需要 UDP?r无需建立连接无需建立连接 (会增加会增加延迟延迟)r简单简单: 在收发双方之间在收发双方之间没有连接状态没有连接状态r段首较短段首较短r无拥塞控制无拥塞控制: UDP 可按可按需要随时发送需要随时发送第3讲 传输层之一8
8、UDP: (续续) r经常为流媒体应用使用经常为流媒体应用使用m允许数据丢失允许数据丢失m对传输速率敏感对传输速率敏感r其他其他 UDP用途用途 (why?):mDNSmSNMPr若需要通过若需要通过 UDP进行可靠进行可靠传输传输:在应用层增加可靠性在应用层增加可靠性措施措施m在应用程序中在应用程序中-专门的专门的出错恢复机制出错恢复机制!源端口 #宿端口 #32 bits应用层数据 (报文)UDP 数据报格式lengthchecksum长度长度, UDP段的字节数段的字节数,包括首部包括首部第3讲 传输层之一9UDP 校验和(校验和(checksum)发送方发送方:r将段的内容看作一串将段
9、的内容看作一串16位整数位整数rchecksum: 作段内容作段内容的加法的加法(补码和补码和)r发送方将补码和放入发送方将补码和放入 UDP checksum 字段字段接收方接收方:r对接收到的段内容进行补码和对接收到的段内容进行补码和计算计算r检查计算结果是否与收到的校检查计算结果是否与收到的校验和相等验和相等:mNO 查出错误查出错误mYES 没查出错误没查出错误. 但是仍但是仍有可能存在错误有可能存在错误? 目标目标: 检测传输段中的检测传输段中的“错误错误” (e.g., 位错位错)第3讲 传输层之一10可靠数据传输原理可靠数据传输原理r在应用、传输、链路层都十分重要在应用、传输、链
10、路层都十分重要r属于网络工程的属于网络工程的top-10 课题之一课题之一!r不可靠传输通道的特性将决定可靠传输协议不可靠传输通道的特性将决定可靠传输协议(rdt)的复杂性的复杂性第3讲 传输层之一11可靠数据传输可靠数据传输: 开始起步开始起步发送方发送方接收方接收方rdt_send(): 由上层进行调用由上层进行调用, (e.g., 应用进程应用进程.). 将数据传入发送将数据传入发送方并由其传给接收方的上层方并由其传给接收方的上层udt_send(): 由由rdt调用调用,将分组通过不可靠的信道传到接将分组通过不可靠的信道传到接收方收方rdt_rcv(): 当数据到达接受方时调当数据到达
11、接受方时调用用deliver_data(): 由由 rdt调调用用 将数据递交给上层将数据递交给上层第3讲 传输层之一12可靠数据传输可靠数据传输: 开始起步开始起步我们将要我们将要:r逐步发展收发双方的可靠数据传输协议逐步发展收发双方的可靠数据传输协议 (rdt)r仅考虑单向的数据传输仅考虑单向的数据传输m但控制信息将双向流动但控制信息将双向流动!r使用有限状态机使用有限状态机 (FSM) 来定义发送方来定义发送方, 接收方接收方state1state2事件导致状态的转换在状态转换过程中的动作状态状态: 当实体处于某个当实体处于某个“状态状态”时,时, 下个状态下个状态只能由下个事件来转只能
12、由下个事件来转变变事件动作第3讲 传输层之一13Rdt1.0: 在可靠信道上进行可靠的数据传输在可靠信道上进行可靠的数据传输r所依赖的信道非常可靠所依赖的信道非常可靠m不可能有位错不可能有位错m不会丢失数据不会丢失数据r分别为发送方和接收方建立分别为发送方和接收方建立 FSMs :m发送方将数据送入所依赖的信道发送方将数据送入所依赖的信道m接收方从所依赖的信道读出数据接收方从所依赖的信道读出数据第3讲 传输层之一14Rdt2.0: 在可能发送位错的信道上传输在可能发送位错的信道上传输r所依赖的信道有可能在分组数据中出现位错所依赖的信道有可能在分组数据中出现位错m回顾回顾: UDP checks
13、um 可发现位错可发现位错r问题问题: 如何从错误中恢复如何从错误中恢复 :m进行确认进行确认 (ACKs): 由接收方法送报文向发送方进行确认由接收方法送报文向发送方进行确认m发送否认发送否认 (NAKs):由接收方法送报文向发送方进行否认,说明由接收方法送报文向发送方进行否认,说明分组有错分组有错m发送方在收到发送方在收到NAK后进行分组重传后进行分组重传m在人类交往中是不是也有在人类交往中是不是也有 ACKs, NAKs?rrdt2.0的新机制 (在在 rdt1.0基础之上):m错误检测错误检测m接收方的反馈接收方的反馈: 控制信息控制信息 (ACK,NAK) rcvr-sender第3
14、讲 传输层之一15rdt2.0: 有限状态机定义有限状态机定义发送方的发送方的FSM接收方接收方FSM第3讲 传输层之一16rdt2.0: 运行过程运行过程 (未发现错误未发现错误)发送方发送方 FSM接收方接收方 FSM第3讲 传输层之一17rdt2.0:运行过程运行过程 (出错情况出错情况)发送方 FSM接收方FSM第3讲 传输层之一18rdt2.0 有一个致命的缺点有一个致命的缺点!若若ACK/NAK 报文丢失报文丢失?r发送方将不会知道接收端发发送方将不会知道接收端发生了什么生了什么!r假如进行重传假如进行重传 : 可能发生数可能发生数据重复据重复怎么办怎么办?r发送发送 ACK/NA
15、K 来回应接收来回应接收方的方的 ACK/NAK? 那么如果那么如果发送方的发送方的 ACK/NAK 丢失丢失?r重传重传, 但可能可能导致重传了但可能可能导致重传了正确的分组正确的分组!管理重复的问题管理重复的问题: r发送方给每个分组加上发送方给每个分组加上sequence number (序号)(序号)r如果如果ACK/NAK丢失,发送方丢失,发送方则重传正确的分组则重传正确的分组r接收方丢弃重复的分组接收方丢弃重复的分组 (不向不向上递交上递交)发送方法送一个分组,然发送方法送一个分组,然后等待接收方的响应后等待接收方的响应停等策略停等策略第3讲 传输层之一19rdt2.1: 发送方发
16、送方, 管理丢失的管理丢失的 ACK/NAK第3讲 传输层之一20rdt2.1: 接收方接收方, 管理丢失的管理丢失的 ACK/NAK第3讲 传输层之一21rdt2.1: 讨论讨论发送方发送方:r给分组加给分组加seq #r两个两个 #s (0,1) 够否,够否,为什么为什么?r必须查收必须查收ACK/NAK r两倍的状态两倍的状态m必须必须“ 记忆记忆” 状态,是状态,是否否 “正确的正确的”分组具有分组具有 0 或或 1 seq. #接收方接收方:r必须查验接收到的分组必须查验接收到的分组 是否重复是否重复m状态可以指出状态可以指出0 或或 1 是是期望中的期望中的 seq #r注意注意:
17、 接收方不会知道接收方不会知道最后的最后的ACK/NAK 是否是否为发送方正确接收为发送方正确接收第3讲 传输层之一22rdt2.2: 无无 NAK的协议的协议r 其功能等同其功能等同 rdt2.1, 但但仅使用仅使用 ACKr不使用不使用 NAK, 接受方只接受方只为最后正确接受的报文为最后正确接受的报文发送发送 ACKm接收方必须显式表明接收方必须显式表明ACK 的的分组分组 seq #r发送方得到双重发送方得到双重ACK导导致致 NAK的相同结果的相同结果: 重重传正确的分组传正确的分组发送方FSM!第3讲 传输层之一23rdt3.0: 通道上可能出错和丢失数据通道上可能出错和丢失数据新
18、的假设新的假设: 所依赖的信道所依赖的信道会丢失数据会丢失数据 (数据或数据或 ACK)mchecksum, seq. #, ACK, 重发机制会有帮助重发机制会有帮助,但还远远不够,但还远远不够Q: 如何处理数据丢失如何处理数据丢失?m发送方可以等待,当某些发送方可以等待,当某些数据或数据或ACK 丢失时丢失时, 进行进行重传重传m想一想想一想: 缺点缺点?方法方法: 发送方等待发送方等待ACK一段一段 “适当的适当的” 时间时间r如果在这段时间里没有收到则如果在这段时间里没有收到则进行重传进行重传r如果分组如果分组(或或 ACK)仅仅被延迟仅仅被延迟了了 (没有丢失没有丢失):m重传将导致
19、重复重传将导致重复, 但使用但使用seq. #s 可以控制可以控制m接收方必须定义被接收方必须定义被 ACK分组分组的的 seq #r需要进行倒计时需要进行倒计时第3讲 传输层之一24rdt3.0 发送方发送方第3讲 传输层之一25rdt3.0 接收方接收方第3讲 传输层之一26rdt3.0 的运行的运行第3讲 传输层之一27rdt3.0 的运行的运行第3讲 传输层之一28rdt3.0的性能的性能rrdt3.0 可用可用, 不过性能很糟不过性能很糟r例如例如: 1 Gb/s 链路链路, 15 ms 端对端的延迟端对端的延迟, 1KB 分组分组:Ttransmit=8kb/pkt10*9 b/s
20、ec= 8 ms利用率 = U = =8 microsec30.016 msecfraction of timesender busy sending= 0.00015m1KB 分组每分组每 30 ms - 33kB/sec 在在 1 Gb/s 链路上的吞吐量链路上的吞吐量m网络协议限制了物理资源的利用网络协议限制了物理资源的利用!第3讲 传输层之一29流水线协议(参见流水线协议(参见p79-84)流水作业流水作业: 发送端允许发送多个发送端允许发送多个, “悬在空中悬在空中”, 等待应等待应答的分组答的分组m必须增加顺序号的位数必须增加顺序号的位数m在发送和接收端增加缓存在发送和接收端增加缓
21、存r两种常用的流水线协议两种常用的流水线协议: 第第N个分组重发个分组重发(go-Back-N), 选择应答选择应答第3讲 传输层之一30从第从第N个分组重发个分组重发(Go-Back-N)发送方发送方:r在分组首部设置在分组首部设置k位位 seq #r使用尺寸为使用尺寸为N的的“滑动窗口滑动窗口(p80)”, 允许连续的多个分组不被应答允许连续的多个分组不被应答rACK(n): ACK所有所有n号之前,包括号之前,包括n号在内的分组号在内的分组- “积累式积累式ACK”m可能产生重复的可能产生重复的ACK (见接收方见接收方)r为每个未应答(为每个未应答(in-flight)的分组设置计时器
22、的分组设置计时器(timer)r当当发生超时:发生超时:timeout(n): 重传重传n号和号和n号以后的号以后的所有所有分组分组第3讲 传输层之一31GBN: 发送方扩展的发送方扩展的 FSM上层调用:ACK的接收超时事件第3讲 传输层之一32GBN: 接收方扩展的接收方扩展的 FSM接收方举例接收方举例:rACK-only: 总是对正确接收到的分组中按序(总是对正确接收到的分组中按序( in-order )对最高)对最高 seq # 进行进行ACKm可以产生重复的可以产生重复的ACKsm仅仅需要记住仅仅需要记住 expectedseqnum(预期的序号)r失序分组失序分组: m丢弃丢弃
23、(不缓存不缓存) - 不进行接收缓存不进行接收缓存!m接收到的分组中按序对最高接收到的分组中按序对最高 seq # 进行进行ACK第3讲 传输层之一33GBN 的运行的运行第3讲 传输层之一34选择应答选择应答(SR)-p84r接收方逐个对所有正确收到的分组进行应答接收方逐个对所有正确收到的分组进行应答m如有必要,对接收到的(失序)分组进行缓存如有必要,对接收到的(失序)分组进行缓存, 以便最后对以便最后对上层进行有序递交上层进行有序递交r发送方仅对未收到应答的分组进行重发发送方仅对未收到应答的分组进行重发m发送方未每个发送方未每个unACKed 分组设置计时器分组设置计时器 r发送方的窗口发
24、送方的窗口mN 个连续的个连续的 seq #sm同样对已发送的同样对已发送的seq #s, unACKed分组进行限制分组进行限制第3讲 传输层之一35选择应答选择应答: 发送方发送方, 接收方的窗口接收方的窗口第3讲 传输层之一36选择应答选择应答上层数据到达上层数据到达 :r如果窗口中的下一个序号可如果窗口中的下一个序号可用,发送分组用,发送分组timeout(n):第第n个计时器跳个计时器跳r重发分组重发分组n, 计时器复位计时器复位 ACK(n) 到达到达sendbase,sendbase+N:r标记分组标记分组 n 已经收到已经收到r如如n为为unACKed分组中的最小分组中的最小值
展开阅读全文