我在这里和维基百科上搜索过。我最常提到的是我应该查看旧的SMTP规范,因为该协议是最简单的查看和理解(HTTP显然非常复杂,我不反对)。但是,对这些建议的评论说,查看SMTP是错误的方法,因为它的编写方式已经过时且效率低下。
我也看到人们建议使用C或Java的某些变体编写自定义协议。
我想知道在哪里可以找到一个为现代编写的自定义/简单协议的例子,以及什么语言是编写协议的理想选择。我认为低级语言是最好的,而这就是我对此类知识的了解。
答案 0 :(得分:1)
我意识到这是一个老问题,但我想我对此有一些了解。我最近为我正在开发的项目开发了一些嵌入式原型,并且需要一种方法让这些设备以高速通信到我的PC。 USB非常头疼,坦率地说,编写自定义tcpip堆栈也是如此,尽管我之前至少已经这样做了。此外,除了将其硬编码到c /程序集中之外,嵌入式设备无法从用户获取IP地址。所以我想如果我可以通过以太网连接,只是避免所有的IP层废话。我决定在电路板上添加磁性元件,并在通道上添加10Mbps以太网/ MAC帧。在PC端,我使用libPCap读出原始以太网帧并在我的应用程序中处理它们。像我的嵌入式项目和我的电脑之间创建高速连接的魅力。好吧,除了有一个捕获。它通过交叉电缆或虚拟交换机连接到我的电脑时工作,但如果你试图通过传统路由器将其连接到局域网的其余部分,路由器将丢弃该数据包。为什么?我从来没有确定过,但我最好的猜测是Ethernet Frame中的EtherType字段用于表示上层使用的协议与已知类型(即IP,ARP,等)。
最重要的是,您可以制作自定义链路层协议并使用libPCap等库实现应用程序端,但不保证可以在所有路由器上运行,因为如果某些路由器无法识别协议,则会丢弃您的数据包您正在使用。它肯定无法在互联网上运行,因为IP层决定了互联网上的路由。