TCP内部工作原理

TCP内部工作原理

TCP的工作流程分为三个步骤:

  • 三次握手进行连接
  • 进行数据传输
  • 四次挥手断开连接

1. TCP内部工作原理1:与对方套接字的连接

TCP的连接需要进行三次握手
tcp三次握手

  1. 首先由客户端发送syn同步报文
  2. 在服务器收到之后给出ack应答并发送syn同步报文,此时服务器可知自身的接收没有问题
  3. 客户端收到服务器的ack应答后可知自身的发送和接收都没有问题,然后向服务器的syn同步报文给出ack应答
  4. 服务器在收到客服端的ack应答后可知自身的发送没有问题

经过三次无误握手之后,双方可进入就绪状态。

2. TCP内部工作原理2:与对方套接字进行数据交换

TCP传输是全双工(full duplex)的,所以只需要讨论一个方向的传输机制即可:
tcp传输过程

TCP发送数据端采用

  1. 发送序列号+数据长度
  2. 等待应答
    2.1 收到应答,继续发送
    2.2 超时,重新发送

TCP接收数据端采用

  1. 接收到数据序列号+数据长度
  2. 发送应答 = 数据序列号 + 数据长度,即告知对方现在接收到哪里了,可以往后继续发送

3. TCP内部工作原理3:与对方套接字断开连接

TCP断开连接采用四次挥手的机制
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 第一次挥手:
    客户端打算断开连接,向服务器发送FIN报文(FIN标记位被设置为1,1表示为FIN,0表示不是),FIN报文中会指定一个序列号,之后客户端进入FIN_WAIT_1状态。
    也就是客户端发出连接释放报文段(FIN报文),指定序列号seq = u,主动关闭TCP连接,等待服务器的确认。

  • 第二次挥手: 服务器收到连接释放报文段(FIN报文)后,就向客户端发送ACK应答报文,以客户端的FIN报文的序列号 seq+1 作为ACK应答报文段的确认序列号ack = seq+1 = u + 1。
    接着服务器进入CLOSE_WAIT(等待关闭)状态,此时的TCP处于半关闭状态(下面会说什么是半关闭状态),客户端到服务器的连接释放。客户端收到来自服务器的ACK应答报文段后,进入FIN_WAIT_2状态。

  • 第三次挥手: 服务器也打算断开连接,向客户端发送连接释放(FIN)报文段,之后服务器进入LAST_ACK(最后确认)状态,等待客户端的确认。服务器的连接释放(FIN)报文段的FIN=1,ACK=1,序列号seq=m,确认序列号ack=u+1。

  • 第四次挥手: 客户端收到来自服务器的连接释放(FIN)报文段后,会向服务器发送一个ACK应答报文段,以连接释放(FIN)报文段的确认序号 ack 作为ACK应答报文段的序列号 seq,以连接释放(FIN)报文段的序列号 seq+1作为确认序号ack。之后客户端进入TIME_WAIT(时间等待)状态,服务器收到ACK应答报文段后,服务器就进入CLOSE(关闭)状态,到此服务器的连接已经完成关闭。

客户端处于TIME_WAIT状态时,此时的TCP还未释放掉,需要等待2MSL后,客户端才进入CLOSE状态。

参考链接: TCP四次挥手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值