如何在tcp之上构建协议?

Moo*_*lit 13 networking network-programming tcp protocols

我正在搜索很多但我找不到任何资源通过构建自己的协议,使用TCP作为传输层.有什么必要的步骤?协议应该是某种设备的"控制协议".所以我可以向设备发送命令并控制它们并获取信息.

那么如何实现自定义协议呢?是否what可以发送defininig 命令并且how接收器对不同的命令作出反应?假设我正在定义一些自定义命令,xml通过有线/空中发送它们,使用tcp,并在那里有一些逻辑,它们对发送的命令作出反应并回复.这是一种可以实现"协议"的方式吗?这甚至被称为"协议"吗?

亲切的问候.

lee*_*sei 17

只要您可以为通过TCP套接字发送的数据编写规范,就可以拥有自己的协议.

它主要是关于定义命令和有效负载.您必须先将命令包序列化,然后才能通过TCP.如果以二进制格式打包数据包,则字节顺序是一个常见的陷阱.XML和JSON是常见的基于文本的数据交换格式.就个人而言,我是亲JSON.

请参考BSON,MessagePackprotobuf进行二进制序列化.它们将键入的数据打包成二进制文件,因此它们比基于文本的序列化具有更好的类型检查,并且尺寸更紧凑.它们还处理字节序转换,数据包版本控制并提供各种语言的驱动程序/绑定.服务器和客户端可以用不同的语言编写.

编辑:添加RFC示例

看到Ross Patterson的评论,我还建议阅读RFC以获取协议定义参考.RTSPHTTP是文本协议,RTP和媒体格式(MPEG4 AV,H-264)是二进制协议.

编辑:

用Todd Montgomery揭开协议和序列化性能的神秘面纱