TCP如何实现可靠传输

TCP确保可靠传输的方式:校验和、序列号和确认应答、超时重传、连接管理、流量控制、拥塞控制

(1)校验和
数据收发方在进行数据传输时,会先计算校验和,如果不一致,则说明传输有误

TCP在计算校验和时,会在TCP首部添加上一个12字节的伪首部,校验和分为三部分:TCP伪首部、TCP首部、TCP数据

TCP校验和是必须的,而UDP校验和是可选的

(2)序列号和确认应答
TCP在进行数据传输时将每个字节数据都进行编号,每次接收方收到数据都会对传输方进行确认应答

(3)超时重传
发送方在发送完数据一段时间内没有收到确认应答报文,会重传刚才发送的数据

(4)流量控制
TCP协议中有一个16位字段的窗口大小,窗口字段是用来实现滑动窗口的。窗口大小的实际内容就是接收端接受数据缓冲区的剩余大小。接收端在发送确认应答报文ACK时,会将自己的即时窗口大小填入一起返回给发送方,发送方根据窗口大小值的改变而改变自己的发送速度

(5)拥塞控制
TCP在传输过程中可能会发生丢包,如果继续发送数据,可能会产生丢包现象和引发大量超时重传,严重影响传输

拥塞控制分为:慢启动、拥塞避免、快重传、快恢复

  • 慢启动:先将拥塞窗口大小设置为1,然后每收到一个应答报文,就将拥塞窗口值调整为原来的2倍,这样逐步增大拥塞窗口大小,随着拥塞窗口大小变大,网络逐渐拥堵,为防止这种情况,引入慢启动阈值来解决,当拥塞窗口大小大于阈值时,启用拥塞避免算法
  • 拥塞避免:每经过一个往返时间RTT就把发送方拥塞窗口值加1

无论在慢启动阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞,就把慢启动阈值设置为出现拥塞时窗口大小的一半,然后把拥塞窗口大小票重新设置为1,执行慢启动算法

  • 快重传:接收方每收到一个失序的报文段后立即发出重复确认,发送方一连发送三个重复确认,就立即重传对方尚未收到的报文段,而不必继续等待为其设置的重传计时器到期
  • 快恢复:当发送方一连收到三个重复确认,就会执行“乘法减小”算法,把慢启动阈值减半,预防网络发生拥堵,但不执行慢启动算法
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值