TCP-三次握手-四次挥手

前言:网络传输层主要是建立端到端的连接,那TCP通信的连接和断开原理是什么呢?也就是TCP的三次握手和四次挥手是什么意思?下面对这两个概念进行详细的理解和学习。

这篇文章写的不错,很详细。

面试官,不要再问我三次握手和四次挥手 - 知乎 (zhihu.com)

TCP三次握手

建立TCP连接

客户端与服务器交互需要三个数据包

握手的主要作用是确认双方的接收和发送能力是否正常

第一次握手:客户端发送syn报文,并进入syn_send状态,等待服务器确认

第二次握手:服务器收到syn报文,需要给客户端发送ack确认报文,同时服务器也要向客户端发送一个syn报文,此时服务器进入syn_rcvd状态

第三次握手:客户端收到syn+ack报文,向服务器发送确认包,客户端进入established状态,待服务器收到客户端发送的ack包,也会进入established状态,完成三次握手

两次握手是否可以?

TCP建立连接前,需要确认客户端、服务端双方的收包发包能力

第一次握手,客户端发送网络包,服务器收到了,服务端得出结论:客户端的发送能力、服务端的接收能力是正常的

第二次握手,服务端发包,客户端收到了,客户端得出结论:服务端的接收、发送能力、客户端接收、发送能力是正常的

但此时服务端不能确定客户端的接收能力是否正常

第三次握手,客户端发包,服务器收到了,服务器端得出结论:客户端的接收、发送能力是正常的,服务器的接收、发送能力是正常的

如果是两次握手,服务端无法确认客户端是否已经收到了自己发送的初始序列号,如果第二次握手报文丢失,那么客户端就无法知道服务端的初始序列号

TCP四次挥手

1、客户端和服务端都可以发起关闭的请求,举例客户端发起关闭请求,FIN+ACK

2、服务端发送ACK 

3、服务端发送FIN+ACK

4、客户端发送ACK

为什么需要四次挥手,因为可能存在未发生完的数据。

猜你喜欢

转载自blog.csdn.net/MRJJ_9/article/details/131676070
今日推荐