我正在使用tcpdump -X
捕获服务器和客户端之间的通信。我注意到了一种模式,我不确定我是否完全理解它。在下面我用X替换了所有的头数据(IP和TCP,都是20个字节,因此有效载荷从第三行开始,第五个十六进制在每个数据包中),因此所有ascii都替换为点。但是你可以阅读我的问题所指的有效载荷。
下面您将看到服务器和客户端之间每隔约15秒发生的确切模式。如果将“0500 0000 0000”(第一个数据包的负载)从十六进制转换为二进制到十进制并在ascii表中查找,您会注意到客户端发送到服务器的第一条消息是“ENQ”。然后服务器以“06”响应。再次,如果您转换06(十六进制>二进制> ascii表),您会注意到服务器实际上说“ACK”。在第三个数据包中,客户端发送零(为什么???)。之后会有沉默,15秒后,这种确切的模式会重演。
所以这是我的问题: 这是一个已知的模式,它有什么用?一定是某种“嘿,你还有伙伴吗?”沟通(请确认是否属实?)。我对探索网络通信很陌生。但为什么ENQ带有尾随零(第一个数据包)?我的意思是ACK(第二个数据包)只有1个字节,这是足够的和有意义的。我希望ENQ也一样吗?为什么客户端在模式重复之前在第三个数据包中发送零?这是为了什么目的?
10:22:10.579188 IP CLIENT > SERVER
0x0000: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ................
0x0010: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ................
0x0020: XXXX XXXX XXXX XXXX 0500 0000 0000 ..............
10:22:10.579360 SERVER > CLIENT
0x0000: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ................
0x0010: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ................
0x0020: XXXX XXXX XXXX XXXX 06 .........
10:22:10.779322 CLIENT > SERVER
0x0000: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ................
0x0010: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ................
0x0020: XXXX XXXX XXXX XXXX 0000 0000 0000 ..............
答案 0 :(得分:0)
编辑: 看起来像保持活跃消息(https://tools.ietf.org/html/rfc1122#page-101),但通常它是没有数据或一个八位字节垃圾数据的ACK数据包。你的数据包用XX填充,所以我不确定它是否是一个ACK数据包,但只有一个数据包有一个八位字节(可能)的垃圾数据。你能用数据包显示你的标志字节(字节数34)吗?
顺便说一句,恕我直言,没有名为ENQ的数据包 - 写ENQ你的意思是旗帜还是别的什么?上一个答案:
IP和TCP头确实有20个字节(通常),但不要忘记前14个字节 - 它是以太网头。因此,通常有效的TCP / IP标头是14 + 20 + 20 = 54字节 - 您的数据包有46或41个字节。它不是TCP数据包。可能这篇文章会有所帮助:
https://www.pacificsimplicity.ca/blog/reading-packet-hex-dumps-manually-no-wireshark
检查以太网报头以确定使用何种协议(字节13-14并与http://standards-oui.ieee.org/ethertype/eth.txt进行比较)。