为什么 recvfrom() 函数可以接收所有流量
why recvfrom() function can receive all of traffic
我用 C 编写了一个 ICMP ping 代码,我通过 socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
创建了一个套接字
我将其绑定为:bind(sendSock, (struct sockaddr *)&addr, sizeof(addr))
,在调用 sendto()
函数后,我调用了 recvfrom()
函数来接收 ICMP 回复,但我发现我可以接收所有的包,而不仅仅是我发送的 destIP之前。
为什么 recvfrom() 行为是这样的?我是一个 Java 程序员,我知道 Java socket 只接收它用特定 IP 发送的包。
是不是任何套接字都可以接收所有C语言的包?
这与 recvfrom
系统调用无关,与您创建的套接字类型有关。
A raw socket can be bound to a specific local address using the
bind(2)
call. If it isn't bound, all packets with the specified IP
protocol are received
我用 C 编写了一个 ICMP ping 代码,我通过 socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
创建了一个套接字
我将其绑定为:bind(sendSock, (struct sockaddr *)&addr, sizeof(addr))
,在调用 sendto()
函数后,我调用了 recvfrom()
函数来接收 ICMP 回复,但我发现我可以接收所有的包,而不仅仅是我发送的 destIP之前。
为什么 recvfrom() 行为是这样的?我是一个 Java 程序员,我知道 Java socket 只接收它用特定 IP 发送的包。
是不是任何套接字都可以接收所有C语言的包?
这与 recvfrom
系统调用无关,与您创建的套接字类型有关。
A raw socket can be bound to a specific local address using the
bind(2)
call. If it isn't bound, all packets with the specified IP protocol are received