TCP协议各项机制详细介绍

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

目录

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进行重传, 依次类推, 以指数形式递增.
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值