TCP协议各项机制详细介绍

TCP协议通过确认应答、超时重传、连接管理、滑动窗口、延迟应答、捎带应答、流量控制和拥塞控制等机制确保数据传输的安全性和性能。这些机制包括对数据的确认、重传、连接建立、窗口调整、应答策略和网络状况的动态适应,以达到高效、可靠的数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. 确认应答机制(ACK机制)

2. 超时重传机制

3. 连接管理机制

4. 滑动窗口

5. 延迟应答机制

6. 捎带应答机制

7. 流量控制机制

8. 拥塞控制机制

9. TCP面向字节流

10. 粘包问题

11. TCP异常情况

12. 基于TCP应用层协议


TCP协议全称"传输控制协议(Transmission Control Protocol)", 人如其名, 要对数据的传输进行一个详细的控制.

下来按照"安全"和"性能"两方面介绍TCP的机制. 安全和性能, 追求一个服务端和客户端双方都能接受的一个平衡点(一味的追求性能, 则不够安全;一味的追求安全则性能不够好)

保证"安全"的机制:
      1. 确认应答机制
      2. 超时重传机制
      3. 流量控制机制(针对的是"接收端缓冲区"的安全)
      4. 拥塞控制机制(针对的是"发送端"的安全)

保证"性能"的机制:
      1. 滑动窗口(针对的是"发送端"的性能)
      2. 捎带应答机制
      3. 延迟应答机制

1. 确认应答机制(ACK机制)

如上图, 主机A每传输一个数据, 主机B收到了都会进行回复, 主机B确认了这个消息, 才能往下发下一条消息. 这是一个串型的过程, 是一个确认应答的机制.

TCP将每个字节的数据都进行了编号, 即为序列号

每个序列号对应每个确认序列号

每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据, 下一次你从哪里开始发

2. 超时重传机制

如上图, 主机A发送数据给主机B之后, 可能因为网络拥堵等原因, 数据无法到达主机B;
如果主机A在一个特定时间间隔内没有收到B发来的确认应答, 就会进行重新发送.

但是, 主机A未收到主机B发来的确认应答, 也可能是因为ACK丢失了

因此主机B会收到很多重复数据, 那么TCP协议需要能够识别出哪些包是重复的包, 并且把重复的包丢弃掉.

这时候我们可以利用在确认应答机制提到的序列号, 因为每个数据都有自己的编号, 就可以很容易做到去重的效果.

那么, 如果超时的时间如何确定呢?
      最理想的情况下, 找到一个最小的时间, 保证 "确认应答一定能在这个时间内返回". 但是这个时间的长短, 随着网络环境的不同, 是有差异的.
      如果超时时间设的太长, 会影响整体的重传效率; 如果超时时间设的太短, 有可能会频繁发送重复的包.
      TCP为了保证无论在任何环境下都能比较高性能的通信, 因此会动态计算这个最大超时时间.
      Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时时间都是500ms的整数倍.
      如果重发一次后, 仍然得不到应答, 等待2*500ms后再进行重传; 如果仍然得不到应答, 等待4*500ms进行重传, 依次类推, 以指数形式递增.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值