栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

原始套接字监听器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

原始套接字监听器

没错,您唯一需要做的就是打电话给

socket()
then
recvfrom()
。不过请注意,使用收听存在一些限制
SOCK_RAW

如果您不是在“发送后忘记”的基础上使用原始套接字,那么您将有兴趣阅读原始数据包的回复数据包。数据包是否将被传递到原始套接字的决策逻辑可以这样放大:

  1. TCP和UDP数据包永远不会传递到原始套接字,它们始终由内核协议栈处理。

2.
ICMP数据包的副本将传递到匹配的原始套接字。对于某些ICMP类型(ICMP回显请求,ICMP时间戳请求,掩码请求),内核可能希望同时进行一些处理并生成答复。

  1. 所有IGMP数据包都传递到原始套接字:例如OSPF数据包。

  2. 指定给协议的所有其他未由内核子系统处理的数据包都传递到原始套接字。

您正在处理将答复数据包传递到原始套接字的协议这一事实并不一定意味着您将获得答复数据包。为此,您可能还需要考虑:

1.
通过socket(2)system调用创建套接字时,相应地设置协议。例如,如果您要发送ICMP回显请求数据包,并且想要接收ICMP回显应答,则可以将协议参数(第3个参数)设置为IPPROTO_ICMP)。

  1. 将socket(2)中的协议参数设置为0,以便接收到的数据包头中的任何协议号都将匹配。

  2. 为套接字定义一个本地地址(例如通过bind(2)),因此,如果目标地址与套接字的本地地址匹配,它也将被传递到您的应用程序。

有关更多详细信息,您可以阅读例如this。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号