Я узнаю о реализации ping в C. Проблема в том, что я использовал сырые сокеты для получения пакета. Для всех пакетов мы имеем идентификационное значение в ICMP header
.Почему ping получает еще один пакет команд ping?
Я работал под управлением ping
в нескольких терминалах.
Например, я использовал три ping google.com
в трех терминалах.
Для первого пинг значение идентификации 23456, второе значение идентификации пинг 34564, а третье значение идентификации пинг 98763.
Моя проблема является второй пинг должен получает идентификацию с 34564 пакета, но получает идентификационное значение как 23456.
Для каждого пинга создается новый сырой сокет. Но он получает еще один пакет ping.
Может ли кто-нибудь объяснить мне, почему он получает еще один пакет ping?
UPDATE: -
У меня есть еще одно сомнение. У сомнений есть:
сырые сокеты считывают пакет откуда и как он идентифицирует пакет для этого сырого сокета?
UPDATE 1: -
Вот ссылка для кодов.
Хотя я старался, я не мог обнаружить проблему в неопубликованной коде вы работаете. – WhozCraig
Это происходит в ответном пакете. С помощью recvmsg я получал пакет. После recvmsg я проверял пакеты, при проверке значение идентификации было изменено. –
@suresh: Спасибо за информацию. Теперь покажите нам какой-нибудь код. – sjsam