天天看点

卧槽了!终于有网络工程师大佬把TCP三次握手解释的明明白白了!

作者:网络工程师阿叮
卧槽了!终于有网络工程师大佬把TCP三次握手解释的明明白白了!

TCP三次握手都不会,回去等通知吧!

“我回来了..”舍友小曼推开门,一脸垂头丧气,让人一眼就看出了不对劲!

“你今天参加面试了,结果如何?”舔狗舍友小妍一向不会察言观色,笑嘻嘻的就凑过去。

“别提了!我看你俩都开始往这个通信行业走,我也去试了试,没想到面试官问我三次握手是什么,我支支吾吾的没答出来,就直接让我回来等通知了!”

“这可是面试经典题目!你没答出来这不就凉凉了!我前几天刚学过,要不我给你补补!”小妍十分热情地跑上去

技术干货!

  1. TCP是什么?

TCP是传输控制协议,是一种面向连接的、可靠的、具有流量控制的运输层通信协议,UDP是同一层内另一个重要的传输协议。

  1. TCP有哪些报文,分别用在什么地方?

1、URG紧急指针

2、ACK确认序号

3、SYN同步序号,用来发起连接

4、RST重建链接

5、FIN结束链接

6、PSH接收方应将这个报文尽快交给应用层

3、TCP三次握手是什么?

三次握手其实是建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常,需要注意的是,传输时指定自己的初始化序列号是为了实现后面的可靠性传输。

卧槽了!终于有网络工程师大佬把TCP三次握手解释的明明白白了!

TCP三次握手详解:

第一次握手:客户端给服务端发一个 SYN(syn=1) (同步序列编号)报文,并指明客户端的初始化序列号seq= x。

第二次握手:服务器收到客户端的 SYN 报文之后,必须确认客户的SYN,此时ACK确认号为1,ACK的值为x+1,并且指定了自家的初始化序号y,发送ACK+SYN包,在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。

第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 y+ 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时随机序列号seq=x+1(初始为seq=x,第二个报文段所以要+1)双方已成功建立起了连接。

卧槽了!终于有网络工程师大佬把TCP三次握手解释的明明白白了!

4、在面试中,我们在问到TCP三次握手之后,常常还会被问到TCP四次挥手,那么TCP四次挥手又是什么呢?

第一次挥手:客户端发送一个FIN,用来请求关闭客户端到服务器数据传送,此时FIN位置1,初始序号seq=x

第二次挥手:

服务器收到FIN后,发送一个ACK给客户端,确认序号ACK为收到序号X+1(与SYN相同,一个FIN占用一个序号),此时ACK位置1,ack=x+1

第三次挥手:

服务器发送一个FIN包,用来请求关闭服务器到客户端的数据传送,此时FIN位为1,seq为y.

第四次挥手:

客户端收到FIN后,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入关闭状态,完成四次挥手,此时ACK位为1,ack=y+1

5、为什么TCP握手需要三次,挥手需要四次?

因为当服务器端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文,SYN用来同步连接,ACK课直接进行确认,但是关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭连接,所以只能先回复一个ACK报文,当所有报文都发送完毕了再进行关闭连接。

最后我可以给大家分享一些之前工作和学习中整理的资料,算是给能看到这里的朋友一个福利!大概有个几十G,都可以打包赠予!

后台私信“学习”或评论留言“我想要”即可获取,速度冲哦!

资料涵盖:

①网工视频、课件笔记

②大厂面试笔试题、简历模板

③华为认证题库(HCIA/HCIP)

④华为认证电子书籍

⑤ensp 安装包及教程

卧槽了!终于有网络工程师大佬把TCP三次握手解释的明明白白了!