你如何编写自己的IP协议? (假设TCP和UDP不合适)

时间:2011-05-30 01:06:39

标签: linux protocols ip

假设您已确定对于给定的利基案例,TCP或UDP都不理想,您将如何编写自己的基于IP的协议?

例如,如果您正在Linux上进行开发,那么您在哪里可以查看内核中的“挂钩”协议?

你会从哪里开始?

3 个答案:

答案 0 :(得分:9)

您可以通过内核模块执行此操作。我将首先阅读arp的工作原理。这是一个更简单的协议,因为用户空间不会直接发送数据包。

创建新网络协议的切入点是dev_add_pack,可以找到arp的代码here

答案 1 :(得分:4)

如果您的协议可以直接在IP之上实现,那么它也可以用UDP数据包实现 - 而后者的优势在于它将通过现有的NAT设备和防火墙,只会丢弃您的自定义协议

答案 2 :(得分:1)

阅读UNIX套接字和网络。它并没有“挂钩”内核,因为它打开了一个套接字并通过它发送二进制数据。