TCP 报文分析

TCP 报文分析TCP 数据格式握手通讯过程握手通讯 完成事宜 建立通讯 确认双方消息发送的 sequencenumb 确认 windowsize 握手 抓包分析 TCP 握手的三个报包 1 发送方请求建立连接包括信息 请求建立连接 SYN 1 ACK 0 发送方 SequenceNumb WindowSize 协商值 64240 2 8 window 2 Windowscale 包 2 服务方同意建立连接包括信息 同意建立连接

TCP数据格式

在这里插入图片描述

握手通讯过程

在这里插入图片描述

握手通讯,完成事宜:

  1. 建立通讯;
  2. 确认双方消息发送的sequence number;
  3. 确认window size;

握手-抓包分析

包1,发送方请求建立连接

在这里插入图片描述

包2,服务方同意建立连接

包括信息:

  1. 同意建立连接(SYN = 1, ACK = 1)
  2. 服务方Sequence Number:
  3. Window Size(协商值):29200 * 2^7
    在这里插入图片描述
包3,发送方确认建立连接

包含信息:

  1. 连接建立确认(ACK=1)
  2. 确认Window Size:1029 * 256

在这里插入图片描述

挥手通讯过程

在这里插入图片描述

挥手–抓包分析

在这里插入图片描述

包1– 发起方请求断开连接

在这里插入图片描述

包2 – 接收方接收确认

在这里插入图片描述

包3 – 接收方确认断开连接

在这里插入图片描述

包4 – 请求方断开确认

在这里插入图片描述

header格式分析

源端口和目的端口

  • Source port:源端口;
  • Destination port:目标端口。

序列号和确认号

  • Sequence Number:序列号字段。用于标识本报文段中所发送数据的第一个字节的编号。TCP传输中,每个字节都会按顺序编号。如果SYN标记为1时(表示发送方请求建立连接),这个序列号是初始序列值;如果SYN标记不为1,表示是当前数据分段的第一个字母的序列号;
  • Acknowledgment Number (Ack Number):TCP确认号。表示接收方期望接收的下一个报文段的第一个字节数据的编号。即编号为ack-1以及之前的字节均已收到。

数据偏移字段

  • Header Length:TCP首部长度;数据偏移指数据段中“数据”部分起始处距离TCP数据段起始处的字节偏移量。

保留字段

  • Reserved:保留字段

标志位字段

  • CWR (Congestion Window Reduce):拥塞窗口减少标志,用来表明它接收到了设置ECE标志的TCP包。并且,发送方接收到消息之后,通过减少发送窗口的大小来降低发送速率;
  • ECE(ECN Echo):用来在TCP三次握手时表明一个TCP端是具备ECN功能的;
  • URG (Urgent):表示本报文段中发送的数据是否包含紧急数据;
  • ACK:表示前面的确认号字段是否有效。ACK=1时表示有效;
  • PSH (Push) : 告诉对方接收到该报文后是否立即把数据推送给上层;
  • RST:表示是否重置连接。如果RST=1,说明TCP连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接;
  • SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYNC=1时,说明这是一个请求建立连接或者同意建立连接的报文,只有前两次握手中SYN才为1;
  • FIN:标记数据是否发送完成。如果FIN=1,表示数据已经发送完成,可以断开连接;

窗口大小字段

  • Window Size:表示从Ack Number开始还可以接收多少字节,也表示当前接收端的接收窗口还有多少剩余空间。该字段可以用于TCP的流量控制。

TCP校验和字段

  • 校验位(TCP Checksum):用于确认传输的数据是否损耗。

紧急指针字段

  • 紧急指针(Urgent Pointer):仅当前面的URG控制位为1时才有意义。它指出本数据段中为紧急数据的字节数。

可选项字段

  • 选型(Option):长度不定,当必须是32bits的整数倍。

协商过程理解

参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217978.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:20
下一篇 2026年3月18日 上午8:20


相关推荐

  • linux更新文件名时间,Linux文件的时间及修改命令touch-linux修改文件名

    linux更新文件名时间,Linux文件的时间及修改命令touch-linux修改文件名Linux 文件的时间及修改命令 touchLinux 系统中的文件主要有三个时间参数 他们分别是修改时间 modification mtime 状态时间 statustime ctime 访问时间 accesstime atime 具体含义如下 修改时间 modification mtime 主要指的是文件的内容发生改变时 这个修改时间会发生变化 而文件的权限和属性变化

    2025年8月21日
    9
  • js书写规范

    js书写规范

    2020年11月19日
    184
  • 如何解决ChatGPT绑卡失败及OpenAI绑卡被拒绝的问题?远程环境绑定与支付全攻略

    如何解决ChatGPT绑卡失败及OpenAI绑卡被拒绝的问题?远程环境绑定与支付全攻略

    2026年3月15日
    1
  • Java 日志相关的面试

    近期整理的关于日志的面试题,对于初级者来说,很少会涉及到日志的处理,架构的选择。但是我相信作为一个资深者,这部分是必不可少的,同时也是评定一个系统的指标,足以证明日志的重要性。1.常用的日志框架    JavaLoggingAPI(Oracle)——Java默认的日志框架    Log4j(Apache)——开源日志框架    Logback(LogbackProject)——开源项目,…

    2022年4月7日
    34
  • c#防止代码被反编译_C程序反编译

    c#防止代码被反编译_C程序反编译1.在编码过程中尽量使用private/internal关键词修饰class、方法和字段名称2.编码过程尽可能少地使用public修饰class、方法和字段名称3.避免使用反射和序列化,反序列化操作4.添加生成事件,调用Dotfuscator进行代码混淆if$(ConfigurationName)==Debug”C:/ProgramFiles(x86)/MicrosoftVisualStudio14.0/PreEmptiveSolutions/Dotfuscatora

    2025年8月28日
    14
  • cb使用msagent

    cb使用msagent—-1、添加agent控件—-选择菜单component,importactivexcontrol——在importactivex下的列表框中选择microsoftagentcontrol2.0(version2.0),点击按钮install——在install对话框中点击按钮ok——在confirm对话框中点击按钮yes——在对话框中点击按钮ok。至此,agent控件

    2022年6月16日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号