假设您已确定对于给定的利基案例,TCP或UDP都不理想,您将如何编写自己的基于IP的协议?
例如,如果您正在Linux上进行开发,那么您在哪里可以查看内核中的“挂钩”协议?
你会从哪里开始?
答案 0 :(得分:9)
您可以通过内核模块执行此操作。我将首先阅读arp的工作原理。这是一个更简单的协议,因为用户空间不会直接发送数据包。
创建新网络协议的切入点是dev_add_pack
,可以找到arp的代码here。
答案 1 :(得分:4)
如果您的协议可以直接在IP之上实现,那么它也可以用UDP数据包实现 - 而后者的优势在于它将通过现有的NAT设备和防火墙,只会丢弃您的自定义协议
答案 2 :(得分:1)
阅读UNIX套接字和网络。它并没有“挂钩”内核,因为它打开了一个套接字并通过它发送二进制数据。