Написание базового сценария traceroute на C

Мне нужно написать сценарий trceroute, но я не уверен, верны ли мои попытки.

Сейчас я делаю это так (пожалуйста, поправьте меня, если я делаю неправильно или неуклюже) :

  1. Получил структуру для ip- и udpheader
  2. Функция контрольной суммы
  3. Открытие 2 сокетов: один для отправки UDP-пакетов в режиме SOCK_RAW (для управления ttl) и один для получения ICMP-ответов от маршрутизаторов.
  4. Использование sendto () для отправки UDP-пакета.
  5. Незнание, как получать и обрабатывать ICMP-ответ.

Есть ли более удобные способы изменить TTL, чем использование sock_raw, где мне нужно определить все заголовки с помощью себя? Какие параметры нужно использовать для socket () при открытии сокета ICMP? Как получить ответ ICMP?

6
задан d.hill 3 February 2011 в 13:39
поделиться