网络-----TCP的可靠性保证相关机制

TCP通过确认应答机制、超时重传和滑动窗口来确保可靠传输。确认应答使用序列号进行确认,超时重传在未收到ACK时重新发送数据,滑动窗口则提高了传输效率并处理乱序问题。此外,TCP还具备流量控制以适应接收端处理速度,并通过拥塞控制算法如慢启动、拥塞避免、快重传和快恢复来避免网络拥塞。
摘要由CSDN通过智能技术生成

在之前,我们已经初步接触了TCP协议

TCP是传输层的协议它的主要特点有:

  • TCP是面向连接的(TCP的三次握手和四次挥手)
  • TCP面向字节流
  • TCP带缓冲的(不会立即发送,会等到一个合适的时机再发,因为有可能来不及应答)
  • TCP是全双工的
  • TCP保证了可靠传输
  • TCP具有流量控制

今天我们主要谈一下TCP是如何保证可靠性的


确认应答机制

TCP的确认应答机制就是,发送端给接收端发送的数据,当接收端收到之后会返回一个确认消息,这个确认消息也就是确认应答ACK

TCP的确认应答机制是基于序列号实现的,这个序列号也就是我们TCP报头中的序号和确认序号。TCP的报文到达确认,是对接收到的数据的最高序列号的确认,并向发送端返回一个下次接收时期望的TCP数据包的序列号。例如,主机A发送的当前数据序号是1,数据长度是400,则接收端收到后会返回一个确认号是401的确认号给主机A,表示下次想从401开始接收数据。
上一张图:
这里写图片描述

可以看出来,TCP通过这种确认应答机制来判断接收端是否收到发送端发出的数据。
可是如果发生数据包丢失,或者确认应答丢失的情况怎么办呢?
超时重传机制就可以解决这个问题


超时重传机制

超时重传机制指定是,发送的数据包在没有收到相应的ACK,等待一段时间,超时之后就会认为这个数据包丢失了,就会重新发送。
这里写图片描述

如图所示主机B由于网络或其他原因没有收到主机A发送的数据(也可能是主机B收到数据后检测到该数据包有差错而丢弃),主机A只要超过了一段时间仍然没有收到主机B的确认应答就会认为刚才发送的报文丢失了,因而重传该报文。

再想想,如果是主机B的确认报文丢失了呢?
这里写图片描述
同样的,主机A没有收到主机B的确认就会重发刚刚发送的数据,那么主机B不就会有重复数据了吗?我们利用刚刚谈过确认应答机制中序号就很容易做到去除重复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值