我创建了一个RAW套接字并将套接字选项设置为“IP_HDRINCL”。我在传出UDP数据包和
中设置标识字段发送相同的信息。我发现当发送数据包时,该字段被更改为随机数。我可以在嗅探器捕获中看到相同的内容。
在不同的Windows XP机器上构建和测试相同的代码,工作正常,即。我可以看到输出数据包的IP头中的标识字段带有我设置的相同值。
不确定哪里出错了。如果您有任何见解,请告诉我。
谢谢,
雷努
答案 0 :(得分:0)
带有IP_HDRINCL
的原始套接字会自动设置将要发送的某些ip数据包字段的值。
在您的情况下,如果为零,则会覆盖数据包ID。 (这是你的情况吗?)
以下情况:(取自Raw Socket man page)
+---------------------------------------------------+
|IP Header fields modified on sending by IP_HDRINCL |
+----------------------+----------------------------+
|IP Checksum |Always filled in. |
+----------------------+----------------------------+
|Source Address |Filled in when zero. |
+----------------------+----------------------------+
|Packet Id |Filled in when zero. |
+----------------------+----------------------------+
|Total Length |Always filled in. |
+----------------------+----------------------------+