文档详情

CH5-2 运输层课件.ppt

发布:2018-06-13约1.32万字共68页下载文档
文本预览下载声明
5.6 TCP 可靠传输的实现 5.6.1 以字节为单位的滑动窗口 发送缓存 接收缓存 发送缓存与接收缓存的作用 发送缓存用来暂时存放: 发送应用程序传送给发送方 TCP 准备发送的数据; TCP 已发送出但尚未收到确认的数据。 接收缓存用来暂时存放: 按序到达的、但尚未被接收应用程序读取的数据; 不按序到达的数据。 需要强调三点 A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。 TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。 TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。 5.6.2 超时重传时间的选择 重传机制是 TCP 中最重要和最复杂的问题之一。 TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。 往返时延的方差很大 由于 TCP 的下层是一个互联网环境,IP 数据报所选择的路由变化很大。因而运输层的往返时间的方差也很大。 延时分布比较说明 对于点对点的数据链路层,延时由数据传输延时和信号传播延时两部分组成,对这两部分延时的估计基本上是准确的(即误差很小),所以定时器初始值设定为大于估计的确认返回时间即可,如图蓝色所示 TCP所面临的是完全不同的情况,端到端的连接可能远隔重洋,需经过很多路由器的存储转发,途经路由器的实际情况又是动态变化的,所以TCP确认返回所需时间的概率密度函数更接近于图红色所示 加权平均往返时间 TCP 保留了 RTT 的一个加权平均往返时间 RTTS(这又称为平滑的往返时间)。 第一次测量到 RTT 样本时,RTTS 值就取为所测量到的 RTT 样本值。以后每测量到一个新的 RTT 样本,就按下式重新计算一次 RTTS: 新的 RTTS ? (1 ? ?) ? (旧的 RTTS) ? ? ? (新的 RTT 样本) (5-4) 式中,0 ? ? ? 1。若 ? 很接近于零,表示 RTT 值更新较慢。若选择 ? 接近于 1,则表示 RTT 值更新较快。 RFC 2988 推荐的 ? 值为 1/8,即 0.125。 超时重传时间 RTO (RetransmissionTime-Out) RTO 应略大于上面得出的加权平均往返时间 RTTS。 RFC 2988 建议使用下式计算 RTO: RTO ? RTTS + 4 ? RTTD (5-5) RTTD 是 RTT 的偏差的加权平均值。 RFC 2988 建议这样计算 RTTD。第一次测量时,RTTD 值取为测量到的 RTT 样本值的一半。在以后的测量中,则使用下式计算加权平均的 RTTD: 新的 RTTD = (1 ? ?) ? (旧的RTTD) + ? ? ?RTTS ? 新的 RTT 样本? (5-6) ? 是个小于 1 的系数,其推荐值是 1/4,即 0.25。 往返时间的测量相当复杂 TCP 报文段 1 没有收到确认。重传(即报文段 2)后,收到了确认报文段 ACK。 如何判定此确认报文段是对原来的报文段 1 的确认,还是对重传的报文段 2 的确认? Karn 算法 在计算平均往返时间 RTT 时,只要报文段重传了,就不采用其往返时间样本。 这样得出的加权平均平均往返时间 RTTS 和超时重传时间 RTO 就较准确。 修正的 Karn 算法 报文段每重传一次,就把 RTO 增大一些: 新的 RTO ? ? ? (旧的 RTO) 系数 ? 的典型值是 2 。 当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延 RTT 和超时重传时间 RTO 的数值。 实践证明,这种策略较为合理。 5.7 TCP 的流量控制 5.7.1 利用滑动窗口实现流量控制 一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。 流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。 利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。 流量控制举例 持续计时器 (persistence timer)。 TCP 为每一个连接设有一个持续计时器。 只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。 若持续计时器设置的时间到期,就发送一个零窗口探测报文段
显示全部
相似文档