菜鸡每日一面系列打卡36天
每天一道面试题目
助力小伙伴轻松拿offer
坚持就是胜利,我们一起努力!
题目描述
TCP协议如何保证传输可靠性?
题目分析
这其实是一道全面考查TCP协议的题目。但以菜鸡做面试官的经验而言,很多人回答得并不好,甚至不少人认为,有了三次握手和四次挥手就能保证传输可靠性。
换句话说,基础不牢的应聘者,对TCP协议的了解还停留在三次握手和四次挥手这一层面。其实,只要再深入一些就会发现,保证传输可靠性远不止这么简单,三次握手和四次挥手仅仅是TCP连接管理的内容。
那么,TCP协议究竟是如何保证传输可靠性的呢?接下来,随菜鸡一起去看看吧!
题目解答
TCP协议主要通过以下七点来保证传输可靠性:连接管理,校验和,序列号,确认应答,超时重传,流量控制,拥塞控制。
我们逐一来看。
1. 连接管理
连接管理即三次握手和四次挥手。想了解详细过程的小伙伴请看菜鸡总结的这篇详解TCP的三次握手和四次挥手。连接管理机制能够建立起可靠的连接,这是保证传输可靠性的前提。
2. 校验和
发送方对发送数据的二进制求和取反,然后将值填充到TCP的校验和字段中,接收方收到数据之后,以相同的方式计算校验和并进行对比。如果结果不符合预期,则将数据包丢弃。
注意:即便二者相等,也并不能确保数据包一定是正确无误的,基于某些巧合,会出现数据包错误,但发送端和接收端的校验和相等的场景。
3. 序列号
TCP将每个字节的数据都进行了编号,这就是序列号。序列号的具体作用如下:
-
能够保证可靠性,既能防止数据丢失,又能避免数据重复。
-
能够保证有序性,按照序列号顺序进行数据包还原。
-
能够提高效率,基于序列号可实现多次发送,一次确认。
4. 确认应答
接收方接收数据之后,会回传ACK报文,报文中带有此次确认的序列号,用于告知发送方此次接收数据的情况。在指定时间后,若发送端仍未收到确认应答,就会启动超时重传。
5. 超时重传
具体来说,超时重传主要有两种场景:
-
数据包丢失:在指定时间后,若发送端仍未收到确认应答,就会启动超时重传,向接收端重新发送数据包。
-
确认包丢失:当接收端收到重复数据(通过序列号进行识别)时将其丢弃,并重新回传ACK报文。
6. 流量控制
接收端处理数据的速度是有限的,如果发送方发送数据的速度过快,就会导致接收端的缓冲区溢出,进而导致丢包……
为了避免上述情况的发生,TCP支持根据接收端的处理能力,来决定发送端的发送速度。这就是流量控制。流量控制是通过在TCP报文段首部维护一个滑动窗口来实现的。
7. 拥塞控制
拥塞控制就是当网络拥堵严重时,发送端减少数据发送。拥塞控制是通过发送端维护一个拥塞窗口来实现的。可以得出,发送端的发送速度,受限于滑动窗口和拥塞窗口中的最小值。
拥塞控制方法分为:慢开始,拥塞避免快重传和快恢复。
以上便是菜鸡对TCP协议保证传输可靠性的一些总结,供大家参考。
学习 | 工作 | 分享
长按关注“有理想的菜鸡”
只有你想不到,没有你学不到