简单易懂的TCP三次握手及四次挥手
关于为什么需要三次握手,四次挥手的原因?
第一次握手:
Client什么都不能确认
Server确认了对方发送正常
第二次握手:
Client确认:自己发送/接收正常,对方发送/接收正常
Server确认:自己接收正常 ,对方发送正常
第三次握手:
Client确认:自己发送/接收正常, 对方发送/接收正常
Server确认:自己发送/接收正常,对方发送/接收正常
第二:因为TCP是全双工通信,所以双方都需要关闭;首先 客户端 向 服务器端发送关闭连接信息(这里客户端和服务器端都可以关闭吗,我这儿以客户端关闭举例)
客户端:标志位[FIN、ACK] 客户端先发送关闭信息(客户端告诉服务器端,我要关闭连接了)
服务器端:标志位[ACK] 服务器回应客户端的关闭信息(服务器端告诉客户端,我已经收到你的关闭连接信息了,你可以关闭了)
服务器端:标志位[FIN、ACK] 服务器端发送关闭信息(服务器端告诉客户端,我也要关闭连接了)
客户端:标志位[ACK] 客户端确认服务器的关闭信息(客户端告诉服务器端,我收到了你的关闭消息,你可以关闭了)
总结四次挥手原因:就是TCP的全双工通信
****************************************************************************************
三次握手详细解释:
第一次握手:发送SYN数据包,序列号seq=x(默认为0)======seq=0
第二次握手:发送SYN+ACK数据包,ACK=X+1=1,序列号seq=x(默认为0)======seq=0,ack=1
第三次握手:发送ACK数据包,ACK=X+1=1========seq=1,ack=1