使用RAW套接字更改IP头中的标识字段的问题

时间:2013-03-26 11:48:30

标签: header ip field identification

我创建了一个RAW套接字并将套接字选项设置为“IP_HDRINCL”。我在传出UDP数据包和

中设置标识字段

发送相同的信息。我发现当发送数据包时,该字段被更改为随机数。我可以在嗅探器捕获中看到相同的内容。

在不同的Windows XP机器上构建和测试相同的代码,工作正常,即。我可以看到输出数据包的IP头中的标识字段带有我设置的相同值。

不确定哪里出错了。如果您有任何见解,请告诉我。

谢谢,

雷努

1 个答案:

答案 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.           |
          +----------------------+----------------------------+