【问题标题】:TCP/IP Frame header formatTCP/IP 帧头格式
【发布时间】:2014-09-18 09:56:40
【问题描述】:

我使用 ethereal 来捕获一些数据包,并试图理解这些数据。这是其中 1 帧的输出。

0x0000:  4500 003a 4564 4000 4006 df05 0a01 012b    E..:Ed@.@......+
0x0010:  0a01 0128 bfcf 3a98 e938 b9c8 e8a0 761f    ...(..:..8....v.
0x0020:  8018 05b4 ef33 0000 0101 080a 0005 ff31    .....3.........1
0x0030:  0005 2c31 6865 6c6c 6f0a                   ..,1hello.

右边的字符是左边信息的ASCII表示(十六进制)。发送的消息是“你好”,其余信息(或至少其中一些)是标题,对吧?标题的格式是什么?我做了一些谷歌搜索,发现这张图片:http://electronicdesign.com/site-files/electronicdesign.com/files/archive/electronicdesign.com/files/29/2099/figure_03.gif。这个对吗?根据图像,字节 27-30 (761f 8018) 是目标 IP,但将十六进制转换为十进制最终不会成为我的 IP。我错过了什么还是我完全错了?另外我如何找到协议号?

【问题讨论】:

  • Ethereal 已经过时了。 Wireshark 是它的继任者。它将剖析数据包数据并向您显示所有内容。至于转换 IP,您不会将 4 个字节转换为 1 个十进制数,而是将每个字节转换为自己的十进制数。最好使用像 inet_ntoa() 这样的函数,从原始字节中输出人类可读的字符串。

标签: tcp network-protocols


【解决方案1】:

你的源 ip 是 10.1.1.43 和目标 ip 10.1.1.40 吗?

我相信显示的信息不是以太网框架,它是一个 IP 包。第一个八位字节已经是 IP 头了。

要快速参考 IP 和 TCP 标头,您可以使用 wiki

http://en.wikipedia.org/wiki/IPv4#Header

http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure

但是如果你想要更多的细节和可靠的信息,你应该直接查看 RFC。

https://www.rfc-editor.org/rfc/rfc791#section-3.1

https://www.rfc-editor.org/rfc/rfc793#section-3.1

如果我以每行 4 个八位字节的格式重新排列您的数据

4500 003a  total length
4564 4000  fragment
4006 df05  header checksum
0a01 012b  source IP  
0a01 0128  destination IP
bfcf 3a98  ports
e938 b9c8  seq
e8a0 761f  ack
8018 05b4  windows
ef33 0000  checksum
0101 080a 
0005 ff31    
0005 2c31 
6865 6c6c 
6f0a 

第一个八位字节是 4,因此您应该使用 IPv4。在第三行,第二个八位字节是 6。这是 TCP 的协议号。从这两个提示我猜这是 IP 包而不是以太网包。

关于空灵,Remy 是对的,使用 Wireshare https://www.wireshark.org/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2015-03-28
    • 2011-07-22
    • 2014-03-09
    • 2014-03-12
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多