2016-06-17 17 views
0

В traceroute во время пересмотра исходного кода, я увидел, что ICMP размер входящего пакета закодирован 512.В исходном коде traceroute, где размер жестко закодирован до 512: u_char packet [512];

Я не знаю, почему размер ограничен 512 байт. Что произойдет, если размер входящего пакета ICMP превышает 512 байт?

ответ

0

В общем, есть 3 способа (я не знаком с реализацией с использованием протокола GRE) для реализации traceroute, отправки запросов эхо-запросов ICMP, пакетов UDP или пакетов TCP SYN с постепенным увеличением значения TTL, начиная с значения TTL 1.

  • , если он посылает ICMP эхо-запрос, он ожидает, что ICMP TIME Exceed сообщение (8 байт + IP-заголовок (20 байт) + первые 8 байт данных исходной дейтаграммы) или назначения достигается и возвращает эхо-ответ ICMP, который составляет 20 + 8 байтов. Хотя согласно rfc 792, он позволяет произвольную длину данных для запроса эха или ответа, но traceroute не нуждается в этом.
  • Если он отправляет UAC pakcets, ожидается, что сообщение ICMP TIME Exceed или достигнет адресата и вернет сообщение о недостижимости порта длиной 20 + 8 + 20 байт. Возможно, некоторые реализации добавляют некоторые данные, но это было бы не слишком много.
  • Если он отправляет TCP SYN-пакеты, входящие пакеты должны быть сообщением ICMP TIME Exceed, TCP SYN + ACK или TCP RST-пакетом, все они намного меньше 512 байт.

 Смежные вопросы

  • Нет связанных вопросов^_^