如何使用RFC中的数据包结构并将其应用于我的套接字程序?

时间:2010-07-02 06:10:36

标签: networking sockets network-programming

以下是“数据包结构”图像的示例:http://freesoft.org/CIE/Course/Section3/7.htm

假设我有一个小型Python程序,它在X端口上进行侦听并捕获该数据包并将其保存到变量“data”中。

如何从数据中提取数据包信息?例如,假设我想阅读'版本',它只是:

print data[0:4] ?

我如何获得源IP地址?

我最近一直在做更多的套接字编码,并遇到了很多这些“数据包结构”图像。我还没弄明白如何将它们应用到我的代码中:/

1 个答案:

答案 0 :(得分:0)

请注意,您的示例显示了一个IP标头 - 如果您只是使用套接字,则会看到此信息(它已被系统IP和TCP堆栈消化)。

如果要捕获原始数据,请查看使用libpcap,这将允许原始数据包。您还可以使用tcpdump生成包含原始数据包的文件。

对于结构,如果data是一个带有命令的字符串,则可以读取前4个字节。您可能希望将字符串编码为“十六进制”(或正常表示的整数),否则您将看到“垃圾”字符。

对于更强大的解包,use the struct module附带python。