3次握手(SYN:请求端口 ACK:确认请求)
客户端–发送带有 SYN 标志的数据包----请求服务器端口(例:80端口)–⼀次握⼿
服务端–发送带有 ACK/SYN 标志的数据包---确认客户端请求,请求客户端源端口(源端口:客户端最开始发出请求的端口),-–⼆次握⼿
客户端–发送带有带有 ACK 标志的数据包---客户端确认服务器端请求–三次握⼿
为什么是四次挥手(FIN:请求关闭端口;ACK:确认请求)
服务器B收到客户端A的 FIN 报文时,先回一个 ACK 应答报文,而服务端B可能还有数据需要处理和发送(服务端B的 ACK 和 FIN 一般都会分开发送,故比三次握手导致多了一次),等服务端B不再发送数据时,才发送 FIN 报文给客户端来表示同意现在关闭连接。
事实上,是可以三次挥手的,即把ACK和FIN合并到一起发送,但一般不这么做。