网工面试经典题目:TCP三次握手、四次挥手是什么?

2022/03 作者:ihunter 0 0

1、TCP是什么?

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

2、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报文,当所有报文都发送完毕了再进行关闭连接。


赞(1) 更多分享

上篇: 三级等级保护综合解决方案
下篇: 弱点扫描工具NESSUS详细教程