如何在Perl中获得原始套接字,然后构建与其一起使用的数据包的最佳方法是什么?
与在C中执行的方式相同...通过在创建套接字时设置套接字类型.
在CPAN上的示例中,使用SOCK_RAW而不是SOCK_DGRAM(UDP)或SOCK_STREAM(TCP).
注意:创建原始套接字通常需要管理权限(即UNIX上的root).Windows操作系统可能已禁用创建原始套接字的功能,您只需测试并查看即可.
也许搜索CPAN可能会有所帮助? 想到IO :: Socket.
起初我以为大多数先前的答案都没有回答这个问题.经过进一步思考,我认为作者可能没有提出正确的问题.
如果您正在编写应用程序,通常不会想到"构建数据包".你只需打开套接字,格式化数据有效负载,它就是用你的数据构建数据包的协议栈.好的,如果您正在使用数据报,则需要定义,生成和解析有效负载.但是您通常让内核将其封装在网络级别(例如添加IP头)或链接层(例如添加以太网帧).你通常不使用pcap.有时只需打包和拆包,也许vec就足够了.
如果你正在编写一个不寻常的数据包处理器,如主动恶意攻击工具,中间人进程或流量整形设备,那么就更有可能"构建数据包"并使用pcap.也许Net :: Packet也适合你.