半双工/全双工
Full-duplex(全双工)全双工是在通道中同时双向数据传输的能力。
Half-duplex(半双工)在通道中同时只能沿着一个方向传输数据。
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
四次挥手
![](https://img.haomeiwen.com/i23598658/749c8c82b29fc6ca.png)
1.第一次挥手
客户端发送的标志位FIN和ACK为1,FIN位表示关闭连接的请求。此时序列号是上一次服务端ACK应答的确认序列号,ACK序列号则是上次数据传输序列号加数据大小。服务端检测FIN是否为1,ACK的作用是告诉对方之前的数据接收了多少
2.第二次挥手
服务端向客户端回应ACK包,确认序列号为上次序列号加数据大小加1,这里就是1011
3.第三次挥手
服务端再次向客户端发送包,此次就是服务端去主动断开与客户端的连接。FIN与ACK标志位都为1,此时序列号是上一次客户端ACK应答的确认序列号,ACK的确认序列号就是上次ACK的确认序列号
4.第四次挥手
客户端向服务端回应ACK包,确认序列号为上次序列号加数据大小加1,这里就是221
网友评论