一探究竟!TCP协议如何保证传输可靠性?

菜鸡每日一面系列打卡36

每天一道面试题目

助力小伙伴轻松拿offer

坚持就是胜利,我们一起努力!

 

题目描述

TCP协议如何保证传输可靠性?

 

题目分析

这其实是一道全面考查TCP协议的题目。但以菜鸡做面试官的经验而言,很多人回答得并不好,甚至不少人认为,有了三次握手和四次挥手就能保证传输可靠性。

换句话说,基础不牢的应聘者,对TCP协议的了解还停留在三次握手和四次挥手这一层面。其实,只要再深入一些就会发现,保证传输可靠性远不止这么简单,三次握手和四次挥手仅仅是TCP连接管理的内容。

那么,TCP协议究竟是如何保证传输可靠性的呢?接下来,随菜鸡一起去看看吧!

 

题目解答

TCP协议主要通过以下七点来保证传输可靠性:连接管理校验和序列号确认应答超时重传流量控制拥塞控制

我们逐一来看。

1. 连接管理

连接管理三次握手四次挥手。想了解详细过程的小伙伴请看菜鸡总结的这篇详解TCP的三次握手和四次挥手。连接管理机制能够建立起可靠的连接,这是保证传输可靠性的前提。

2. 校验和

发送方对发送数据的二进制求和取反,然后将值填充到TCP的校验和字段中,接收方收到数据之后,以相同的方式计算校验和并进行对比。如果结果不符合预期,则将数据包丢弃。

注意:即便二者相等,也并不能确保数据包一定是正确无误的,基于某些巧合,会出现数据包错误,但发送端和接收端的校验和相等的场景。

3. 序列号

TCP将每个字节的数据都进行了编号,这就是序列号。序列号的具体作用如下:

  • 能够保证可靠性,既能防止数据丢失,又能避免数据重复

  • 能够保证有序性,按照序列号顺序进行数据包还原。

  • 能够提高效率,基于序列号可实现多次发送一次确认

4. 确认应答

接收方接收数据之后,会回传ACK报文,报文中带有此次确认的序列号,用于告知发送方此次接收数据的情况。在指定时间后,若发送端仍未收到确认应答,就会启动超时重传。

5. 超时重传

具体来说,超时重传主要有两种场景:

  • 数据包丢失:在指定时间后,若发送端仍未收到确认应答,就会启动超时重传,向接收端重新发送数据包。

  • 确认包丢失:当接收端收到重复数据(通过序列号进行识别)时将其丢弃,并重新回传ACK报文。

6. 流量控制

接收端处理数据的速度是有限的,如果发送方发送数据的速度过快,就会导致接收端的缓冲区溢出,进而导致丢包……

为了避免上述情况的发生,TCP支持根据接收端的处理能力,来决定发送端的发送速度。这就是流量控制。流量控制是通过在TCP报文段首部维护一个滑动窗口来实现的。

7. 拥塞控制

拥塞控制就是当网络拥堵严重时,发送端减少数据发送。拥塞控制是通过发送端维护一个拥塞窗口来实现的。可以得出,发送端的发送速度,受限于滑动窗口和拥塞窗口中的最小值

拥塞控制方法分为:慢开始拥塞避免快重传快恢复

以上便是菜鸡对TCP协议保证传输可靠性的一些总结,供大家参考。

学习 | 工作 | 分享

长按关注“有理想的菜鸡

只有你想不到,没有你学不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值