Tôi phải viết kịch bản lệnh trceroute nhưng tôi không chắc liệu các nỗ lực của tôi có đúng không.Viết kịch bản lệnh traceroute cơ bản trong C
Ngay bây giờ tôi đang làm nó như thế (xin vui lòng chính xác cho tôi nếu tôi đang làm sai hoặc vụng về):
- Got một struct cho IP và udpheader
- Một chức năng checksum
- Mở 2 ổ cắm: Một để gửi gói UDP ở chế độ SOCK_RAW (để thao tác ttl) và một để nhận các câu trả lời ICMP từ các bộ định tuyến.
- Sử dụng sendto() để gửi UDP gói
- Không có đầu mối làm thế nào để nhận và xử lý một câu trả lời ICMP
Có cách nào thoải mái hơn để thay đổi TTL vì sử dụng SOCK_RAW nơi tôi phải xác định tất cả tiêu đề công cụ của bản thân mình? Tôi nên sử dụng thông số nào cho socket() khi mở khóa ICMP? Làm thế nào để nhận được câu trả lời ICMP?
Cảm ơn câu trả lời của bạn. Nó mang lại cho tôi một litte về phía trước. –