TCP(一) 建立连接 & 连接释放

2021-11-10  本文已影响0人  又语

TCP是一个面向连接的服务,建立连接需要经过三次握手,释放连接需要经过四次挥手。

三次握手

客户端与服务器交互需要 3 个数据包,握手的主要作用就是为了确认双方的接收和发送能力是否正常,初始序列号、交换窗口大小以及 MSS 等信息。

四次挥手

思考

1 为什么建立连接需要握手三次,两次行不行?
2 三次握手可以携带数据吗?

第一次握手和第二次握手不可以携带数据,第三次握手可以携带数据。假如第一次握手携带数据,如果碰到恶意攻击,那么每次在第一次握手的SYN报文中都会加入大量数据,会造成服务器花费大量存储空间来缓存这些数据。

3 为什么释放连接是四次,比建立连接多一次?

建立连接时服务器的SYNACK是合并发送的,而因TCP是全双工通信,释放连接过程中在客户端发送FIN包后,服务器可能还有数据需要发送,不能立即关闭连接,所以不能同时发送FIN包和ACK包,只能先确认ACK,然后等服务器无数据发送时再发送FIN包。

4 为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSED状态?

MSL是指报文在网络中的最大生存时间。

上一篇下一篇

猜你喜欢

热点阅读