TCP协议

1、TCP协议

  • 报文格式
    在这里插入图片描述
  • Source Port Number:源端口
    之所以占据16个bit位,是因为2的16次方正好可以标识65535个端口号
  • Destination Port Number:目标端口
  • Sequence Number:请求时附带的随机序列号
  • Acknowledgement Number:应答时附带的序列号
    在对方请求时附带的序列号的基础上加1
  • Header Length:报文首部的长度
    4个bits表示首部最长的长度为2个4次方,也就是可以标识15段,一段为4个字节,则最长长度为60个字节
  • Reserved:报文的标识位,占据6bit,可表示6个flag
  • URG:紧急指针(urgent pointer)有效。
  • ACK:确认序号有效。
  • PSH:接收方应该尽快将这个报文交给应用层。
  • RST:重置连接。
  • SYN:发起一个新连接。
  • FIN:释放一个连接。

不要将确认序号Ack与标志位中的ACK搞混了。确认方Ack=发起方Seq+1,两端配对。

  • Windows Size:滑动窗口的大小
    用以告知对方自己接受缓冲区的大小,以协商出一个合适的传输速率

  • TCP Checksum:TCP的校验和,提供额外的可靠性

  • Urgent Pointer:标记进制数据在字段中的位置

  • Options:可选部分(这部分的最大长度为40Bytes)

  • Data:数据部分

  • 三次握手和四次挥手
    在这里插入图片描述

  • 三次握手
    第一次握手:序列号初始情况下是随机产生的。
    服务器:响应
    序列号初始情况下是随机产生的。
    ACK=X+1:它有两个功能
    一个功能是:告诉客户端,我已经收到你发给我的请求。
    第二个功能:告诉客户端,希望下一次再给发的时候,你的序号要是X+1
    (SEQ=X+1).
    RWND:是服务器告诉客户端,我现在可以接收多少个字节。窗口–提高数据传输的效率设置。

  • 四次挥手过程说明
    ①主机A发送断开TCP连接请求的报文,其中报文中包含seq序列号,是由发送端随机生成的,并目还将报文中FIN字段置为1,表示需要断开TCP连接。
    ②主机B会回复A发送的TCP断开请求报文,其中包含seq序列号,是由回复端随机生成的,而且会产生ACK字段,ACK字段数值,是在A发过来的seq序列号基础上加1进行回复,以便A收到信息时,知晓自己的TCP断开请求已得到了验证。
    ③主机B在回复完A的TCP断开请求后,不会马上就进行TCP连接的断开,主机B会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕就会将回复报文的FIN字段置1,并产生随机seq序列号。
    ④主机A收到主机B的TCP断开请求后,会回复主机B的断开请求,包含随机生成的seq字段和ack字段,ack字段会在主机B的TCP断开请求的seq基础上加1,从而完成主机B请求的验证回复至此TCP断开的4次挥手过程完毕。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值