版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33781658/article/details/84539960
TCP通信包括3次握手和4次挥手
我们分别来说一下
第一阶段.三次握手
1.首先client给server发送一个随机的SYN号
2.s收到这个SYN后,会发送一个SYN+1的ACK确认号,并且同时发送另一个随机的SYN号
3.c收到s发送的ACK和SYN,就发送一个s的SYN+1的ACK确认号
这样就是三次握手了
很简单吧
第二阶段.数据传输
1.c开始发送数据,会在刚刚s发送过来的ACK上给一个数据的计数,
比如刚刚s发过来的是1001,现在我的数据是20个长度,那么就是1001(20)
再加上自己的ACK确认号8001
2.s收到后,也是一样,发送来自c的确认号,8001,然后加上长度8001(10)
然后再加上刚刚c发过来的1001(20),加起来就是1021,所以这次ACK是1021
3.c收到之后,再发送一下来自s的8001(10),加起来就是8010
第三阶段.四次挥手
1.c发送一个FIN号,表示自己要关闭了,再发一个ACK确认号
2.s收到之后,回复一个ACK确认号
3.处理好s自己的事情后,再发送一个FIN号,表示s也要关闭了,一个ACK确认号
4.c收到后,发送一个ACK确认号
SYN---同步序列编号,表示建立连接
ACK---确认字符,表示发来的数据已经确认接收了
FIN---表示关闭连接
ACK=SYN+1
ACK=FIN+1
客户端和服务器端分别有三个对应的状态变化
客户端
1.Closed
2.SYN-send
3.established
服务器端
1.listen
2.SYN-received
3.established