簡體   English   中英

使用原始套接字將數據包寫入接口時,進程未接收到這些數據包

[英]While writing packets to interface using raw socket, process is not receiving these packets

我正在使用原始套接字在eth3端口上寫入以下數據包:

------------------
ETHERNET HEADER
------------------
+ IP HEADER
------------------
+UDP HEADER
------------------
+Payload
------------------

如果我觀察到使用Wireshark從eth3接口傳出的數據包,則可以看到我正在發送的數據包,但是從eth3讀取的本應接收這些數據包的過程卻以某種方式未接收到這些數據包。

如果我在eth3上發送相同的數據包,在外部使用另一台計算機並寫入其eth3接口並通過lan將其連接到前一台計算機,則該過程似乎接收到了這些數據包。

我懷疑在嘗試內部發送數據包時出現問題,即通過同一台計算機上的進程發送數據包。

你能建議一個解決方案嗎?

您的進程可能會根據消息的包類型對其進行過濾(它可能會/可能不會處理類型為3的包)。

這是數據包類型的列表(從文件if_packet.h復制):

#define PACKET_HOST         0       /* To us        */
#define PACKET_BROADCAST    1       /* To all       */
#define PACKET_MULTICAST    2       /* To group     */
#define PACKET_OTHERHOST    3       /* To someone else  */
#define PACKET_OUTGOING     4       /* Outgoing of any type */
#define PACKET_LOOPBACK     5       /* MC/BRD frame looped back */
#define PACKET_USER         6       /* To user space    */
#define PACKET_KERNEL       7       /* To kernel space  */

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM