是否可以在IP协议下使用ICMP套接字?也许像:
socket(PF_INET, <type>, IPPROTO_ICMP)?
我应该在字段中输入什么?我看到了一些使用SOCK_RAW的示例,但是这是否会阻止OS处理IP协议呢?
还有一件事。由于该协议不涉及任何端口,操作系统如何知道他应该向哪个进程发送ICMP数据报?
是的,这是可能的,因为该ping命令执行ICMP。
ping
要找出所涉及的系统调用,您可以使用strace该命令(在根目录下)。
strace
您也可以浏览该命令的源代码,例如Debian的ping
还有一个liboping库可以帮助您…