传输层TCP的标志位及三次握手,四次挥手

传输控制协议(TCP,Transmission Control Protocol)的标志位

  • SYN:同步序列编号(Synchronize Sequence Numbers)请求建立连接
  • ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给 发送站的一种传输类控制字符。表示发来的数据已确认接收无误。
  • PSH(Push)表示有 DATA数据传输,当设置为1时,要求把数据尽快的交给应用层,不做处理
  • FIN(Finish)表示关闭连接
  • REST(Reset) 一般是在FIN之后才会出现为1的情况,表示的是连接重置。
  • URG(Urgen)设置为1时,首部中的紧急指针有效;为0时,紧急指针没有意义。
  • Sequence number(顺序号码)
  • Acknowledge number(确认号码)

TCP的三次握手

第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

完成三次握手后,主机A与主机B开始传送数据。
图片来自百度图片
四次挥手(客户端和服务端均可发起)

  • L第一次挥手:客户端的数据传输了底部,向服务器发送了FIN=1,就是客户端请求断开。
    就是我这边即将要把数据传输完了,我准备跟你断开连接了。

  • 第二次挥手:TCP的连接时全双工的双向连接,关闭必须从两边关闭,服务端收到了FIN标志位后,并不会立即向客户端发送FIN标志位,而是发送一个ACK的应答信息。
    相当于:你想要关闭的请求我已经收到,但是我可能还没有接受完你的数据,等我数据接受完了我会告诉你。

  • 第三次挥手:服务器接受数据完成,向客户端发送一个FIN=1

  • 第四次挥手:客户端收到服务器发来的接收数据完成并想要断开连接的请求,然后客户端发送一个确认断开连接的请求给服务端。这时候客户端进入TIME_WAIT定时器状态。
    如果在2MSL(2倍的最大报文生存时间)时间内没有收到服务端的重传请求,就确认服务端已经收到了,此时关闭自己的连接。如果超时了,客户端就会重新发送。
    来自百度图片
    就那蹦极来举个例子:

  • 我:(此时我的安全带已经绑好(相当于数据传输完毕))我要跳了(第一次挥手)。

  • 工作人员:等等,我再检查一下安全带,我让你跳你再跳(第二次挥手)

  • 工作人员:(安全措施检查完毕)好了,现在你可以跳了。(第三次挥手)

  • 我:啊!!!!!(第四次挥手)

我跳完之后工作人员会帮我解开安全带把我带上岸,若没有听见我的 啊!!!!!!的尖叫声 我就会再 啊!!!!! 给工作人员。(超时重传)

如果是服务端主动请求断开连接的话,服务端就会先发送FIN=1标志位

参考博客:
https://blog.csdn.net/zycxnanwang/article/details/77413870
在这里插入图片描述

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值