如何使用自定义协议进行数据传输?

时间:2011-02-22 10:21:24

标签: networking tcp protocols ip

我真正需要信息。我想开发一个带有一些字段的协议。经过网上的一些研究后,我得出结论,我可以使用HDRINCL让内核知道程序中定义了标题。但无论何时我都看到他们说应该定义IP和TCP标题中的所有字段。是否可以使用HDRINCL来使用我的协议?

另外还有一个疑问,假设我希望通过我的协议使用IP功能,例如碎片。如何打电话给他们?我可以这样做吗?

1 个答案:

答案 0 :(得分:0)

假设您正在运行Linux,听起来您想要使用系列PF_PACKETSOCK_DGRAM类型的套接字(请参阅man packet)。这些套接字将自动包含第2层以太网标头,但您可以在该层之上指定其余的数据包。

不幸的是,IP中使用的分段逻辑与IP协议紧密相关,因为它依赖于IP头中的字段来进行分段和重组。如果您赶时间并且不想担心碎片,则可以始终将数据包限制为小于MTU。否则,我建议使用IP碎片作为开发自己碎片的参考点。