Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 如何使用RFC中的数据包结构并将其应用于套接字程序?_Networking_Sockets_Network Programming - Fatal编程技术网

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

Networking 如何使用RFC中的数据包结构并将其应用于套接字程序?,networking,sockets,network-programming,Networking,Sockets,Network Programming,下面是一个示例“数据包结构”图像: 假设我有一个小型Python程序,它在X端口上监听并捕获该数据包并将其保存到变量“data”中 如何从数据中提取数据包信息?例如,假设我想阅读“版本”,是否只是: print data[0:4] ? 如何获取源IP地址 我最近一直在做更多的套接字编码,并且遇到了很多这样的“数据包结构”图像。我还没有弄清楚如何将它们应用到我的代码中:/注意,您的示例显示了一个IP头-如果您只是使用套接字,您将看不到这些信息(它已经被系统IP和TCP堆栈消化) 如果您想捕获原始

下面是一个示例“数据包结构”图像:

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

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

print data[0:4] ?
如何获取源IP地址


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

注意,您的示例显示了一个IP头-如果您只是使用套接字,您将看不到这些信息(它已经被系统IP和TCP堆栈消化)

如果您想捕获原始数据,请考虑使用libpcap,它将允许原始数据包。您还可以使用tcpdump生成包含原始数据包的文件

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


获取python附带的更强大的解包功能。

如何阅读该包的第二行?比如说,获取“Flags”字段?我一定要看看struct模块。干杯从左到右,从上到下。在这种情况下,第二行只是第二个字节(每行0-31位)。