计算机网络—TCP知识点总结(二)

本文深入探讨TCP连接的可靠性,包括超时重传、快速重传、SACK和D-SACK机制,以及滑动窗口的原理和流量、拥塞控制。详细解释了TCP如何确保数据正确传输,以及如何适应网络状况动态调整数据发送。
摘要由CSDN通过智能技术生成

目录

0 引言

1 TCP连接为什么是可靠的

2 重传机制

2.1 超时重传机制

2.2 快速重传

2.3 SACK机制

2.4 D-SACK

3 滑动窗口

3.1 为什么需要滑动窗口

3.2 滑动窗口大小如何确定

3.3 发送方窗口

3.4 接受方窗口

4 流量控制

5 拥塞控制

0 引言

前面一篇文章对TCP连接建立和关闭的知识进行了归纳,这篇将对TCP连接传输数据过程中的相关知识点进行归纳

1 TCP连接为什么是可靠的

在进入正题前,首先来一个问题:TCP连接为什么是可靠的?对于这个问题,主要由以下几点原因

  • 校验和:TCP首部有一个校验和字段,通过该字段可以对传输的数据进行校验,来判断数据在传输的过程中是否出错
  • 请求应答机制:我们的TCP报文的传输是基于请求应答机制的,也就是一方发送的报文一定会接受对方对于该报文的确认报文
  • 重传机制:当我们的报文在网络中被阻塞或者丢失时会触发发送方的超时重传机制
  • 滑动窗口和流量控制:基于滑动窗口的流量控制保证了接受方一致有足够的空间接受发送方的数据
  • 拥塞控制:拥塞控制算法可以根据网络状况动态控制发送发发送窗口的大小

下面就对以上的部分原因进行详细介绍

2 重传机制

2.1 超时重传机制

当发送方放松一个报文会开启一个定时器,当定时器时间到了还没有受到报文的ACK报文时就会重传该报文,这个重传定时器的时间为RTO,一般略大于一个RTT时延

超时重传一般发生在发送报文或者接受方确认报文丢失的情况下

2.2 快速重传

快速重传是说当我们发送方反复接收到同一个ACK报文达到一定次数后就会重发原报文;过程示例如下:

  • 发送方按序发送了五个序列号的报文seq1~5
  • 其中seq2丢失了
  • 服务端对于seq1报文回复ACK2报文
  • 服务端对于后面的seq3~5报文同样回复ACK2报文
  • 客户端发现接受到了3个重复的ACK报文,就知道seq2报文丢失了,开始重发seq2报文

2.3 SACK机制

超时重传机制和快速重传机制都存在一个问题,就是是重传一个报文还是重传后面所有的报文,引入sack即可帮我们解决这个问题;所谓的sack机制就是接收方在给发送方发送ACK报文时,会带上一个一个叫做sack的东西来告诉发送方自己的缓冲区接受数据的情况。就拿上面快速重传的例子来说,服务端对于seq3~5的ACK报文中会加上一个sack

    <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值