我正在學習Linux上的datalink原始套接字編程,並且我發現這些幫助examples。我編譯了icmp4_ll.c,並用它將ICMP數據包發送到同一局域網中的另一臺計算機。我可以收到目標計算機的回覆。但是,當我使用它向本地計算機發送ICMP數據包時,即將源和目標以太網MAC和IP地址設置爲eth0的MAC和IP地址時,我無法在eth0或lo上收到ICMP應答接口(在Wireshark中,我只注意到通過eth0發送的ICMP請求,但在任何接口上都沒有ICMP回覆。) 我認爲ICMP請求消息組成正確,否則遠程目標不會回覆。但我不知道爲什麼操作系統沒有回覆請求。任何幫助或暗示讚賞。通過本地接口發送和接收帶有數據鏈路原始套接字的ICMP
0
A
回答
0
RFC 792定義的ICMP消息的特殊條件:
否ICMP錯誤消息響應於ICMP錯誤消息發送到避免無限重複。
對於零碎的IP數據報,ICMP消息僅針對分片零(第一個片段)上的錯誤發送。
ICMP錯誤消息永遠不會發送以響應發往廣播或多播地址的數據報。
ICMP錯誤消息從不響應作爲鏈路層廣播發送的數據報而發送。
ICMP錯誤消息從不響應發送到一個數據報的源地址不表示一個唯一的主機(源地址 不能爲零,環回地址,廣播地址或組播 地址)。
ICMP錯誤消息不會響應任何類型的IGMP消息發送。當接收到一個未知類型的ICMP消息時,必須丟棄它,並且默認爲 。
路由器將幾乎總是產生ICMP消息,但是當它涉及到一個目標主機,產生ICMP消息的數量與實現有關。
相關問題
- 1. 通過套接字和端口發送和接收數據
- 2. 在套接字(ICMP)上接收數據
- 3. 通過TCP套接字發送和接收數據的問題
- 4. 通過Java中的套接字發送和接收數據
- 5. 通過套接字發送和接收數據python3
- 6. 通過套接字發送和接收數據
- 7. 從通過Python原始套接字接收到的ICMP消息中讀取TTL
- 8. Python原始套接字未收到ICMP數據包
- 9. VB.net中的原始套接字發送和接收
- 10. 如何通過套接字發送ICMP數據包?
- 11. 原始套接字通過Wifi - 接收器無法接收數據包
- 12. 在Linux原始套接字中接收完整修改的icmp數據包
- 13. 通過TCP套接字的Android發送/接收字節[]通過TCP套接字
- 14. 套接字接收和發送數據端口C
- 15. 套接字 - 不發送/接收數據
- 16. 計算通過套接字發送/接收的數據的帶寬速度?
- 17. 通過wlan和eth接口發送和接收單個套接字
- 18. 如何通過套接字發送/接收數據文件?
- 19. 如何通過套接字發送/接收二進制數據?
- 20. 通過套接字發送和接收數組
- 21. 通過套接字接口接收不同的數據類型
- 22. 通過網絡套接字發送和接收相同的數據通過網絡套接字
- 23. 發送和接收帶有套接字的壓縮文件
- 24. 通過python套接字接收數據
- 25. 分別通過TCP套接字發送和接收字符串
- 26. 用本地鏈接發送HTML並通過Gmail郵箱接收
- 27. 沒有正確的數據正在接收原始套接字
- 28. 發送和接收通過相同的套接字
- 29. 通過原始套接字發送源MAC和IP
- 30. 記錄通過套接字連接發送/接收的內容
如果您沒有得到回覆,迴應請求可能是錯誤的,或者有其他地方阻止了回覆。 – nos
我正在考慮這種可能性,但是當使用同一個程序向遠程計算機發送ICMP請求時,我可以看到遠程計算機的答覆表單。只有當程序用於向本地接口發送請求時,回覆纔會丟失。 – user2975098