TCP 滑动窗口 拥塞窗口 RTT与发送报文的个数的关系

dalang · · 104 次点击 · · 开始浏览    
在TCP协议中,**一个RTT(往返时间)确实是一个报文从发送到接收确认的时间**,但通过**滑动窗口机制**,TCP允许在等待确认的过程中**连续发送多个报文**,从而显著提高网络利用率。 --- ### **1. RTT的定义与基本概念** - **RTT(Round-Trip Time)**:指一个数据包从发送方发出到接收方返回确认(ACK)所需的时间。例如,若发送方在时间`t0`发送报文,接收方在`t1`返回ACK,则RTT = `t1 - t0`。 - **传统停止等待协议**:早期的简单协议(如停等协议)要求发送方每发送一个报文后必须等待ACK,才能发送下一个报文。此时,**每个RTT仅能传输一个报文**,效率极低。 --- ### **2. TCP的滑动窗口机制** 为了提升效率,TCP引入了**滑动窗口(Sliding Window)**机制: - **窗口大小(cwnd)**:发送方在未收到ACK前,允许连续发送的报文数量由**拥塞窗口(cwnd)**决定。 - **流水线传输**:发送方无需等待单个ACK,而是可以连续发送`cwnd`个报文,再根据ACK的到达动态调整窗口。 #### **示例:窗口大小=3** 1. 发送方连续发送报文1、2、3(无需等待ACK)。 2. 接收方收到报文1后返回ACK1,发送方收到后滑动窗口,允许发送报文4。 3. 此时,报文2和3可能仍在传输中,或ACK可能在后续RTT内到达。 4. **在一个RTT内,多个报文可被发送和确认**。 --- ### **3. 为什么一个RTT能发送多个报文?** #### **窗口机制与RTT的关系** - **并行传输**:窗口大小决定了发送方可以“在途”的报文数量。例如,若`cwnd=10`,发送方可以连续发送10个报文,而无需等待任何一个ACK。 - **ACK的到达时间**:ACK的返回时间取决于网络延迟(即RTT),但多个报文的ACK可能在同一时间段内返回。 - **示例**:发送报文1~10后,ACK1可能在RTT时间后到达,ACK2可能在稍晚到达(因网络波动),但总体仍在同一RTT窗口内。 #### **数学推导** - 假设链路带宽为`B`,RTT为`T`,则理论最大吞吐量为: \[ \text{Throughput} = \frac{\text{cwnd} \times \text{MSS}}{T} \] - 若`cwnd`足够大,一个RTT内可传输多个MSS的数据量。 --- ### **4. 具体场景示例** #### **场景1:cwnd=4,RTT=100ms** 1. **时间t=0ms**:发送报文1~4。 2. **时间t=50ms**:报文1到达接收方,ACK1返回。 3. **时间t=100ms**:发送方收到ACK1,此时: - 窗口滑动,允许发送报文5。 - 报文2~4的ACK可能在接下来的50ms内陆续到达。 4. **结果**:在100ms的RTT内,成功发送4个报文,并开始发送第5个报文。 #### **场景2:高带宽延迟网络(BDP大)** - 若带宽延迟积(Bandwidth-Delay Product, BDP)为`B × T`,窗口大小需至少达到BDP才能充分利用带宽。 - 例如,带宽1Gbps,RTT=100ms,则BDP≈12.5MB,对应`cwnd≈12.5MB/MSS`(假设MSS=1500B,则cwnd≈8333)。 --- ### **5. 核心优势:提升网络利用率** - **减少空闲等待**:滑动窗口机制避免了发送方因等待ACK而空闲。 - **适应动态网络**:窗口大小(cwnd)通过拥塞控制算法(如慢启动、拥塞避免)动态调整,既避免拥塞,又尽量占满带宽。 --- ### **6. 常见误解澄清** #### **误解1:RTT是单个报文的专属时间** - **正解**:RTT是网络链路的固有属性(由物理延迟和排队延迟决定),与发送的报文数量无关。多个报文共享同一RTT窗口。 #### **误解2:窗口机制会导致ACK混乱** - **实际**:TCP通过序列号(Sequence Number)和累积确认(Cumulative ACK)机制确保可靠性。例如,ACK=N表示所有≤N的报文已接收,发送方只需关注最高ACK号。 --- ### **总结** - **RTT的本质**:是网络链路的往返延迟,与发送的报文数量无关。 - **滑动窗口的作用**:允许在一个RTT内并行发送多个报文,最大化利用带宽。 - **性能关键**:窗口大小(cwnd)需匹配网络的带宽延迟积(BDP),以实现高效传输。 通过这种设计,TCP在保证可靠性的同时,显著提升了传输效率,成为互联网的基石协议。
104 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传