首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中实现新的路由协议

在python中实现新的路由协议
EN

Stack Overflow用户
提问于 2020-02-10 04:30:15
回答 1查看 98关注 0票数 0

我正在尝试用python构建一个简单的路由器原型,我可以用它来测试新的路由协议;比方说新构建的IPv7。据我所知,如果不修改sys/socket.h文件,我就不能使用套接字(socket.AF_INET)。如果是这样,我将如何序列化新组成的路由协议?

由于数据包不是IPv4,因此raw_socket也不会起作用。我设想IPv7将类似于IPv4的封装协议。我想知道人们是如何在Python中实现新协议或重新实现旧协议的,比如说IPX或AppleTalk?

我该怎么做,你有什么想法吗?或者唯一的办法就是硬核C语言?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-11 21:30:58

socket.AF_INET是IP级别的套接字,这意味着操作系统负责处理IP层。

但是,您可以使用允许您直接处理帧(L2)的AF_PACKET套接字。来自man 7 packet

代码语言:javascript
复制
PACKET(7)                                                                    Linux Programmer's Manual                                                                                          PACKET(7)

NAME
       packet - packet interface on device level


SYNOPSIS
       #include <sys/socket.h>
       #include <linux/if_packet.h>
       #include <net/ethernet.h> /* the L2 protocols */

       packet_socket = socket(AF_PACKET, int socket_type, int protocol);

DESCRIPTION
       Packet sockets are used to receive or send raw packets at the device driver (OSI Layer 2) level.
       They allow the user to implement protocol modules in user space on top of the physical layer.

在python中,常量是socket.AF_PACKET (link)

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

https://stackoverflow.com/questions/60141014

复制
相关文章

相似问题

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