Мне нужно написать скрипт trceroute, но я не уверен, верны ли мои попытки.
Прямо сейчас я делаю это так (пожалуйста, поправьте меня, если я делаю неправильно или неуклюже):
- Получил структуру для ip- и udpheader
- Функция контрольной суммы
- Открытие 2 сокетов: один для отправки UDP-пакетов в режиме SOCK_RAW (для управления ttl) и один для получения ICMP-ответов от маршрутизаторов.
- Использование sendto () для отправки UDP-пакета
- Не зная, как получить и обработать ответ ICMP
Есть ли более удобные способы изменить TTL, чем использовать sock_raw, где я должен сам определить все содержимое заголовка?
Какие параметры я должен использовать для socket () при открытии носка ICMP?
Как получить ответ ICMP?