- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3讲 传输层之一 本讲目的: 理解传输层服务的原理: 复用/分用 可靠数据传输 流量控制 拥塞控制 本讲概述: 传输层的服务 复用/分用 无连接的传输: UDP 可靠数据传输原理 TCP 拥塞控制原理 TCP的拥塞控制 传输服务和协议 提供运行在不同主机中进程间的逻辑通信 传输协议仅运行在端系统中 传输 vs. 网络层服务 : 网络层: 在端系统间进行通信 传输层: 在进程间进行通信 依赖于, 加强了, 网络层的服务 The black’s The White’s 传输层协议 Internet 传输服务: 可靠, 按序点对点递交 (TCP) 拥塞控制 流量控制 连接建立 不可靠的 (“尽力而为”), 无序的点对点或广播递交: UDP 不能提供的服务: 实时性 带宽承诺 可靠的广播通信 复用/分用(multiplexing/Demultiplexing) 回顾: segment (段)- 传输层实体间交换数据的单位 TPDU: 传输层数据单元 复用/分用 复用/分用: 基于发送方, 接收方的端口号, IP 地址 源, 目的端口 #s 存在于每个段中 回顾: 用于特定应用的常用端口号(well-known port number) 复用/分用: 举例 UDP: 用户数据报协议 [RFC 768] “最简约的” Internet 传输协议 “尽力而为的” 服务, UDP 数据段可以: 丢失 应用数据不按序到达 无连接: 在UDP收发双方之间, 无需握手信号 每个 UDP 数据段的操作都互相独立 为什么需要 UDP? 无需建立连接 (会增加延迟) 简单: 在收发双方之间没有连接状态 段首较短 无拥塞控制: UDP 可按需要随时发送 UDP: (续) 经常为流媒体应用使用 允许数据丢失 对传输速率敏感 其他 UDP用途 (why?): DNS SNMP 若需要通过 UDP进行可靠传输:在应用层增加可靠性措施 在应用程序中-专门的出错恢复机制! UDP 校验和(checksum) 发送方: 将段的内容看作一串16位整数 checksum: 作段内容的加法(补码和) 发送方将补码和放入 UDP checksum 字段 接收方: 对接收到的段内容进行补码和计算 检查计算结果是否与收到的校验和相等: NO – 查出错误 YES – 没查出错误. 但是仍有可能存在错误? 可靠数据传输原理 在应用、传输、链路层都十分重要 属于网络工程的top-10 课题之一! 不可靠传输通道的特性将决定可靠传输协议(rdt)的复杂性 可靠数据传输: 开始起步 可靠数据传输: 开始起步 我们将要: 逐步发展收发双方的可靠数据传输协议 (rdt) 仅考虑单向的数据传输 但控制信息将双向流动! 使用有限状态机 (FSM) 来定义发送方, 接收方 Rdt1.0: 在可靠信道上进行可靠的数据传输 所依赖的信道非常可靠 不可能有位错 不会丢失数据 分别为发送方和接收方建立 FSMs : 发送方将数据送入所依赖的信道 接收方从所依赖的信道读出数据 Rdt2.0: 在可能发送位错的信道上传输 所依赖的信道有可能在分组数据中出现位错 回顾: UDP checksum 可发现位错 问题: 如何从错误中恢复 : 进行确认 (ACKs): 由接收方法送报文向发送方进行确认 发送否认 (NAKs):由接收方法送报文向发送方进行否认,说明分组有错 发送方在收到NAK后进行分组重传 在人类交往中是不是也有 ACKs, NAKs? rdt2.0的新机制 (在 rdt1.0基础之上): 错误检测 接收方的反馈: 控制信息 (ACK,NAK) rcvr-sender rdt2.0: 有限状态机定义 rdt2.0: 运行过程 (未发现错误) rdt2.0:运行过程 (出错情况) rdt2.0 有一个致命的缺点! 若ACK/NAK 报文丢失? 发送方将不会知道接收端发生了什么! 假如进行重传 : 可能发生数据重复 怎么办? 发送 ACK/NAK 来回应接收方的 ACK/NAK? 那么如果发送方的 ACK/NAK 丢失? 重传, 但可能可能导致重传了正确的分组! 管理重复的问题: 发送方给每个分组加上sequence number (序号) 如果ACK/NAK丢失,发送方则重传正确的分组 接收方丢弃重复的分组 (不向上递交) rdt2.1: 发送方, 管理丢失的 ACK/NAK rdt2.1: 接收方, 管理丢失的 ACK/NAK rdt2.1: 讨论 发送方: 给分组加seq # 两个 #’s (0,1) 够否,为什么? 必须查收ACK/NAK 两倍的状态 必须“ 记忆” 状态,是否 “正确
文档评论(0)