您的位置:首页 > 理论基础 > 计算机网络

tcp的三次握手和四次挥手、长链接和短链接

2017-08-22 22:25 204 查看
tcp的socket是全双工的,有发送和接收两条通道

三次握手

例如:一般是客户端先请求链接

1 客户端发送链接请求SYN包(SYN=J)给服务器,客户端connect堵塞,进入SYN-SEND状态;

2 服务器接收到SYN包,确认客户端的SYN(ACK=J+1),服务器recv默认堵塞;

3 服务器把自己的链接请求SYN(SYN=K)和ACK(ACK=J+1)打包发给客户端,服务器进入SYN-RECV状态;

4 客户端收到SYN(SYN=K),connect解堵塞;客户端发送ACK(SYN=K+1)包给服务器,客户端和服务器进入ESTABLISHED状态,确认建立链接,可以收发数据。

长链接和短链接:

短连接:建立链接后,仅进行一次读写操作,然后断开链接;

长链接:建立链接之后,多次发送数据,直到客户端或服务器主动关闭链接;

四次挥手:

例如:一般是客户端先关闭链接

1 客户端发送断开链接请求FIN包给服务器(socket关闭发送数据的通道);

2 服务器接收到FIN包,发送ACK包给客户端,表示同意关闭链接的请求;

3 服务器recv解堵塞,数据返回长度为0,确认客户端确实已断开链接;

4 服务器发送断开链接请求FIN包给客户端;

5 客户端收到FIN包,并发送ACK包给服务器。

6 客户端同时进入2MSL时间,若时间等待计时器(time_wait)到时,没有再次收到了服务器的FIN,证明服务器接收到自己的ACK包后已正常关闭,客户端也断开链接(socket关闭接收数据的通道);若未到时,又收到了服务器的FIN包,证明自己发送的ACK包丢失,会再次发送。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tcp