首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UDP套接字是否可以接收ARP消息

UDP套接字是否可以接收ARP消息
EN

Stack Overflow用户
提问于 2014-11-06 20:45:54
回答 1查看 4.7K关注 0票数 1

我在linux下创建了一个udp套接字来发现网络上的另一个系统。创建udp套接字并分配src IP、src Port、dst端口(我知道正确的值)和dst IP (广播)后,应用程序向另一端发送UDP数据包。这个想法是让另一台计算机发回一个UDP数据包,这样我的计算机就可以推断出目的IP地址。另一端使用ARP消息进行响应,其中包含其IP、端口以及我的IP和端口。

虽然,我使用的套接字是数据报,但我的应用程序声明另一端已被发现并可以获取其IP。我使用的udp套接字似乎收到了另一端发送的ARP报文,这让我看起来很困惑。

请任何人解释一下发生了什么。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2014-11-06 21:04:20

ARP不是基于UDP的协议,因此无法使用UDP套接字捕获。查看OSI layer,您会发现ARP位于第2层...3层(link..network),而UDP位于传输层(第4层)。如果没有ARP,UDP甚至无法在本地网络中工作。

如果您从套接字发送UDP数据包,它将查找系统的ARP缓存,以找出与目标IP地址关联的硬件地址(MAC) (至少如果目标IP位于同一本地网络内)。如果没有有效的缓存条目,它将发出ARP请求。此ARP请求由内核“拥有”,它与您的套接字没有关联,即使您的套接字上的发送导致了ARP查找。一旦内核(而不是您的套接字)接收到ARP回复,它将知道目标MAC地址,因此可以将您的IP数据包(UDP基于IP)封装到本地(物理)网络(包括本地和目标MAC )的帧中,并通过网卡发送出去。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26779828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档