【发布时间】:2018-02-06 05:17:12
【问题描述】:
关于在这个例子中使用 ICMP 原始套接字
sd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
有一些重要的问题我在文档中的任何地方都找不到答案。据我了解,ICMP协议已实现 在内核级别((通过 %SystemRoot%\System32\Drivers\Tcpip.sys 驱动程序窗口)。
那么这个内核逻辑如何与愿意发送和接收如上例中定义的 ICMP 数据包的原始用户空间套接字交互?
由于 RAW 套接字打开并且操作系统让应用程序完全控制 ICMP,是否取消了 ICMP 逻辑?或者他们正在并行工作(不可避免地在网络上造成混乱)。我可以告诉操作系统我想准确处理哪些 ICMP 数据包吗?
欢迎解答linux和windows。
【问题讨论】:
标签: linux windows network-programming icmp raw-sockets