Проблемы с изменением поля идентификации в заголовке IP с использованием сокета RAW
Я создал сокет RAW и установил опцию сокета как "IP_HDRINCL". Я устанавливаю поле идентификации в исходящем пакете UDP и
отправив то же самое. Я вижу, что это поле меняется на случайное число при отправке пакета. Я могу видеть то же самое в захвате сниффера.
Тот же код при сборке и тестировании на другом компьютере с Windows XP работает нормально, т.е. Я вижу, что поле идентификации в заголовке IP исходящего пакета имеет то же значение, которое я установил.
Не уверен, что происходит не так. Пожалуйста, позвольте мне, если у вас есть какие-либо идеи.
Спасибо,
Рену
1 ответ
Сырые розетки с IP_HDRINCL
автоматически устанавливать значения определенного поля ip-пакетов, которые будут отправлены.
В вашем случае идентификатор пакета будет перезаписан в случае, если он равен нулю. (это твой случай?)
Это случаи: (взято из справочной страницы Raw Socket)
+---------------------------------------------------+
|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. |
+----------------------+----------------------------+