Я создаю программу Tracert, и мне интересно, действительно ли значение «buffer», используемое в полезных данных Ping, имеет значение. Может это быть что угодно, или роутеры по-разному реагируют в зависимости от содержимого буфера?
А как насчет других частей сообщения проверки связи ICMP? Не фрагментировать и т. Д.
http://msdn.microsoft.com/en-us/library/ms144962.aspx
Я нашел один образец, который устанавливает такой буфер:
byte[] Buffer
{
get
{
if (_buffer == null)
{
_buffer = new byte[32];
for (int i = 0; i < Buffer.Length; i++)
{
_buffer[i] = 0x65;
}
}
return _buffer;
}
}
Раздел данных эхо-запроса не является обязательным. Вам нужно только включить его, если вы хотите
Хороший справочник по этой теме - Эрик Холл. Основные протоколы Интернета.
Нет, раздел данных эха ICMP не имеет смысла.
Он служит средством для увеличения размера пакетов запроса и ответа (потенциально после точки фрагментации, MTU пути) для проверки сетевых условий, но никаким образом не обрабатывается реализациями ICMP (кроме того, что он копируется в эхо-ответ с помощью отвечающее устройство).
Это зависит. Для отметок времени, переадресации и сообщений о недоступности полезная нагрузка содержит ценную информацию. Даже эхо-запросы и полезные данные ответа может содержать такую информацию, как отметки времени.
Вы говорите, что пишете программу traceroute, но затем используете фразу «Ping payload», которая предполагает, что вы пытаетесь обрабатывать эхо-запросы и ответы ICMP. Хотя, безусловно, можно использовать сообщения ICMP для отслеживания маршрутов (это ваш единственный вариант с tracert
в Windows) во многих случаях вы не сможете отследить полный путь, поскольку чрезмерно усердные администраторы часто блокируют эхо.
Вы можете рассмотреть возможность использования других протоколов для ваших зондов, в частности TCP. Например, при отслеживании маршрута к веб-серверу traceroute
(который использует UDP по умолчанию) или tracert
(ICMP) не так полезен, как nmap -Pn --traceroute -p 80
или tcptraceroute
.