运输层

运输层

晚风吻尽荷花叶 9 2025-03-13

TCP协议的三次握手,四次挥手?

TCP协议是一种面向连接的,可靠的运输层协议。在通信过程中一般有三个阶段,建立连接,传输数据,释放连接。

建立连接时,客户端和服务器会互相发送TCP报文,这个过程称为三次握手,

1.首先,客户端向服务器发送SYN包;

2.服务器向客户端发送SYN+ACK包;

3.客户端向服务器发送ACK包;

第二个过程可以拆分,即先发送ACK包,再发送SYN包;这样就变成了四次握手。

最后一次是有必要的,是为了防止之前在网络中滞留的包一段时间后重新到达服务器端,白白浪费服务器资源。

如果没有最后一次握手,丢失的包发给服务器,服务器就建立连接,但客户端并不会发送数据到服务器,服务器只是等待。有了的话需要客户端最后一次确认才可以建立连接。

断开连接时,客户端和服务器互相发送TCP报文,释放连接。

1.客户端向服务器发送FIN报文;

2.服务器向客户端发送ACK;此时半关闭;

3.服务器向客户端发送FIN报文;

4.客户端ACK;服务器收到ACK后关闭,客户端自发送ACK报文段开始经过2MSL后关闭。

为什么需要2MSL,不能立刻关闭?

发送的ACK可能丢失;防止网络中滞留的失效报文重新到达。

保活计数器是什么?

万一客户端立即挂了,服务器不能一直等待,要是长时间没有收到消息,陆续发送探测报文,没有回复后可以关闭服务器。