首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免多个原始套接字绑定到同一个ip地址?

如何避免多个原始套接字绑定到同一个ip地址?
EN

Stack Overflow用户
提问于 2013-08-08 14:06:02
回答 1查看 2.7K关注 0票数 0

实际上,如果我创建多个具有相同IP地址的原始套接字。我可以绑定所有这些套接字,因此所有套接字都会接收到数据包。

是否有任何可以避免的方法,使试图绑定相同ip地址的其他进程收到错误?

我使用的是原始套接字

代码语言:javascript
复制
#include <sys/socket.h>
#include <netinet/in.h>
raw_socket = socket(AF_INET, SOCK_RAW, int protocol);

原版(7)

可以使用bind(2)调用将原始套接字绑定到特定的本地地址。如果没有绑定,则接收所有具有指定IP协议的数据包。此外,可以使用SO_BINDTODEVICE将原始套接字绑定到特定的网络设备;请参见套接字(7)。

不能将原始套接字绑定到特定端口,因为“端口”是TCP和UDP中的概念,而不是IP。在这三种协议的头图上打喷嚏,这会变得很明显:我是在一个较低的层次上工作,而端口的概念是未知的。这就是我对端口号的理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-08 14:09:35

不是的。仅仅是它的原始意味着除了原始的Internet协议之外没有其他协议。如果没有TCP或UDP,就不会有任何端口来区分该数据包被发送到哪个应用程序,因此,所有内容都必须通过IP数据包的有效负载进行过滤。你必须手动完成。最好的方法是制作一个程序,在检查后将这些数据包转发到任何您想要它去的地方。

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

https://stackoverflow.com/questions/18128167

复制
相关文章

相似问题

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