tcp/ip学习之15: tcp协议之数据报文

一、数据抓包

image

在上面的抓包数据中,有进行数据报文。请下来分析数据接收和应答的分析。

二. 数据分析

1、数据报文
0000   00 e0 4c 68 03 8d 02 00 00 30 00 4a 08 00 45 00
0010   00 52 00 04 00 00 ff 06 37 e7 c0 a8 01 02 c0 a8
0020   01 68 13 89 dd b0 00 00 19 7b 53 e5 15 41 50 18
0030   0b 68 42 3a 00 00 54 43 50 20 63 6c 69 65 6e 74
0040   20 63 6f 6e 6e 65 63 74 65 64 0a 54 43 50 20 63
0050   6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 65 64 0a

这段数据是一个以太网帧的十六进制表示,包含了TCP协议的数据传输过程。我们可以逐步解析这个数据包,以了解其各个字段的含义。

以太网帧结构

以太网帧的结构如下:

  • 目的MAC地址(6字节)
  • 源MAC地址(6字节)
  • 类型字段(2字节)
  • 数据(可变长度)
  • 帧校验序列(FCS,4字节,可选)

数据解析

1. 目的MAC地址和源MAC地址

  • 目的MAC地址02 00 00 30 00 4a
  • 源MAC地址00 e0 4c 68 03 8d

2. 类型字段

  • 类型字段08 00,表示这是一个IPv4数据包。

3. IPv4报头

IPv4报头的格式如下:

  • 版本(4位):4
  • 首部长度(4位):5(表示20字节的IP报头)
  • 服务类型(8位)00
  • 总长度(16位)00 52(十进制82字节)
  • 标识(16位)00 04
  • 标志和片偏移(16位)00 00(标志位为0,表示不分片)
  • 生存时间(TTL,8位)ff(十进制255)
  • 协议(8位)06(表示TCP)
  • 头部校验和(16位)37 e7(校验和由发送方计算,接收方验证)
  • 源IP地址(32位)c0 a8 01 02(十进制192.168.1.2)
  • 目的IP地址(32位)c0 a8 01 68(十进制192.168.1.104)

4. TCP报头

TCP报头的格式如下:

  • 源端口(16位)13 89(十进制5001)
  • 目的端口(16位)dd b0(十进制56784)
  • 序列号(32位)00 00 19 7b(十进制6523)
  • 确认号(32位)53 e5 15 41(十进制1406062081,这是对之前报文的确认号)
  • 数据偏移(4位)50(十进制80,表示20字节的TCP报头)
  • 保留(6位)00
  • 标志位(6位)18(二进制000110,表示ACK和PSH标志位为1)
  • 窗口大小(16位)0b 68(十进制2920)
  • 校验和(16位)42 3a(校验和由发送方计算,接收方验证)
  • 紧急指针(16位)00 00(十进制0,表示没有紧急数据)

5. 数据部分

TCP数据部分如下:

  • 数据内容

    54 43 50 20 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 65 64 0a
    54 43 50 20 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 65 64 0a
    
  • ASCII表示

    TCP client connected.
    TCP client connected.
    

总结

这是一个TCP数据报文,用于传输应用层数据。以下是关键信息:

  • 目的MAC地址02:00:00:30:00:4a
  • 源MAC地址00:e0:4c:68:03:8d
  • 源IP地址192.168.1.2
  • 目的IP地址192.168.1.104
  • 源端口5001
  • 目的端口56784
  • 序列号6523
  • 确认号1406062081(对之前报文的确认号)
  • 标志位ACKPSH
  • 窗口大小2920
  • 数据内容TCP client connected.(重复两次)

解释

  • ACK标志位:表示对之前接收到的报文的确认。
  • PSH标志位:表示这是一个推送报文,接收方应尽快将数据传递给上层应用程序。
  • 数据内容TCP client connected.,这是一条应用层消息,表明客户端已经成功连接。

这个报文是服务器向客户端发送的数据报文,表明客户端已经成功连接。

2、应答报文
0000   02 00 00 30 00 4a 00 e0 4c 68 03 8d 08 00 45 00
0010   00 28 f2 9d 40 00 80 06 00 00 c0 a8 01 68 c0 a8
0020   01 02 dd b0 13 89 53 e5 15 41 00 00 19 a5 50 10
0030   ff d5 83 d5 00 00

这段数据是一个以太网帧的十六进制表示,包含了TCP协议的ACK报文,用于确认收到的数据。我们可以逐步解析这个数据包,以了解其各个字段的含义。

以太网帧结构

以太网帧的结构如下:

  • 目的MAC地址(6字节)
  • 源MAC地址(6字节)
  • 类型字段(2字节)
  • 数据(可变长度)
  • 帧校验序列(FCS,4字节,可选)

数据解析

1. 目的MAC地址和源MAC地址

  • 目的MAC地址02 00 00 30 00 4a
  • 源MAC地址00 e0 4c 68 03 8d

2. 类型字段

  • 类型字段08 00,表示这是一个IPv4数据包。

3. IPv4报头

IPv4报头的格式如下:

  • 版本(4位):4
  • 首部长度(4位):5(表示20字节的IP报头)
  • 服务类型(8位)00
  • 总长度(16位)00 28(十进制40字节)
  • 标识(16位)f2 9d
  • 标志和片偏移(16位)40 00(标志位为4,表示不分片)
  • 生存时间(TTL,8位)80(十进制128)
  • 协议(8位)06(表示TCP)
  • 头部校验和(16位)00 00(校验和由发送方计算,接收方验证)
  • 源IP地址(32位)c0 a8 01 68(十进制192.168.1.104)
  • 目的IP地址(32位)c0 a8 01 02(十进制192.168.1.2)

4. TCP报头

TCP报头的格式如下:

  • 源端口(16位)dd b0(十进制56784)
  • 目的端口(16位)13 89(十进制5001)
  • 序列号(32位)53 e5 15 41(十进制1406062081)
  • 确认号(32位)00 00 19 a5(十进制6597,这是对之前报文的确认号)
  • 数据偏移(4位)50(十进制80,表示20字节的TCP报头)
  • 保留(6位)00
  • 标志位(6位)10(二进制000100,表示ACK标志位为1)
  • 窗口大小(16位)ff d5(十进制65525)
  • 校验和(16位)83 d5(校验和由发送方计算,接收方验证)
  • 紧急指针(16位)00 00(十进制0,表示没有紧急数据)

总结

这是一个TCP ACK报文,用于确认收到的数据。以下是关键信息:

  • 目的MAC地址02:00:00:30:00:4a
  • 源MAC地址00:e0:4c:68:03:8d
  • 源IP地址192.168.1.104
  • 目的IP地址192.168.1.2
  • 源端口56784
  • 目的端口5001
  • 序列号1406062081
  • 确认号6597(对之前报文的确认号)
  • 标志位ACK
  • 窗口大小65525

解释

  • ACK标志位:表示对之前接收到的报文的确认。
  • 确认号6597,这是对之前报文的确认号,表示接收方已经正确接收了序列号为6596之前的所有数据。
  • 窗口大小65525,表示接收方的接收窗口大小,用于流量控制。

这个报文是客户端向服务器发送的ACK报文,确认已经成功接收了之前发送的数据。

posted @ 2025-07-28 13:49  cupid8505  阅读(11)  评论(0)    收藏  举报