面试官:三次握手,四次挥手

三次握手

第一次

第一次握手:建立连接时, 客户端发送 syn包(syn=j)到 服务器,并进入 SYN_SENT状态,等待服务器确认;SYN:同步序列编号( Synchronize Sequence Numbers)。

第二次

第二次握手服务器收到 syn包,必须确认客户的SYN( ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入 SYN_RECV状态;

第三次

第三次握手: 客户端收到 服务器的SYN+ACK包,向 服务器发送确认包ACK( ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED(TCP连接成功)状态,完成三次握手。
完成三次握手, 客户端与服务器开始传送 数据,在上述过程中,还有一些重要的概念:

连接终止协议(四次挥手)

编辑
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的 数据传送
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端。
(4) 客户端发回ACK 报文确认,并将确认序号设置为收到序号加1。

猜你喜欢

转载自blog.csdn.net/a13330069275/article/details/79603918