zoukankan      html  css  js  c++  java
  • TCP中seq ack号计算

    TCP包头格式

    seq 和 ack 号存在于TCP报文首部中,是把控数据包顺序和丢包现象。 seq是序号,ack是确认号,都占有4个字节(于大写ACK不同,ACK是报文中控制位中之一,占用一位,仅当ACK = 1时 ack字段才有效。建立TCP连接以后,所有报文中的ACK字段都为1。)

    seq:占用4个字节 即2^32位,所以序号范围为[0,2^32-1],序号增加到2^32-1之后,下一个序号又回到0,TCP是可靠的面向连接,通过TCP传送的字节流中的每个字节都按照顺序编号,而报头中的序号字段值则是本报文段数据的第一个字节的序号。

    ack:占用4个字节,期望收到对方下一个报文的第一个数据字节的序号。

    一、 建立TCP连接的三次握手过程中seq和ack的值

            A                                              B

    1、建立连接请求报文

    请求端A——>[SYN=1,ACK=0,seq=x,ack=0]——>服务端B

    当请求端要和服务端通信时,A首先向B发送一个SYN=1(在TCP报文中的控制位SYN位置标志为1)和seq=x(x是随机数【范围0-2^32-1】)标记的包,请求和B建立连接。

    2、回复建立连接请求报文 

    请求端A<——[SYN=1,ACK=0+1,seq]<——服务端B

  • 相关阅读:
    MySQL启动和关闭命令总结
    MySQL数据库5.6版本首次安装Root密码问题
    tomcat 9性能调优注意事项
    扫除减脂之路上的几个小障碍
    MySQL常见面试题
    关于邮箱发送邮件二之附件及图片
    关于邮箱发送邮件
    关于算法
    python中常见的数据类型
    C++实现复数类的输入输出流以及+-*/的重载
  • 原文地址:https://www.cnblogs.com/gavin11/p/14392096.html
Copyright © 2011-2022 走看看