网络协议设计的一点思考

分层协议一般都提供一种或几种固定的服务,这些服务中高层一些的大多数都是通过“握手”动作来协商的,另外一些比较底层的服务则是协议本身提供的,比如udp服务,ip服务等。下层的握手过程对上层不可见,握手其实就是协商一条带有一定功能(可以提供一定服务)的虚拟链路,握手完成之后,下层也就承诺了那种服务,之后服务的实现完全在本层完成。可是基于消息协议一般不这么做,没有握手之类的固定过程,因为基于消息的协议所完成的功能各不一致,因此也就难以抽象出共同点来完成固定的握手协商。
     对于分层协议来说,下层为上层提供服务,比如tcp的序列号机制就是为上层提供的数据包按序服务,上层协议可以完全信任tcp传过来的数据一定是按序的,再比如ssl为上层提供安全加密服务,最终的应用可以相信ssl提供上来的数据都是安全的,不管是按序服务还是安全服务,都是两端协商出来的结果,而协商的过程就是我们熟悉的握手过程。层间服务的控制数据大多数都在协议头当中。
     对于基于消息的平坦模型的协议,并不分层,没有谁能提供承诺的透明的服务,应用可以认为下面就是物理线路了,因此必须自己维护状态机,也就是说得到一条消息后根据消息体的内容来自行控制下一步的做法,注意不是协议头,而是消息体,基于消息的协议的协议头的重要性没有分层协议的协议头的重要性大。协议头几乎都是格式固定的,对于灵活多变的应用消息来说,固定化的控制并不可取,正确的做法应该是定义符合ASN.1标准的消息体,应用在解析消息的同时,见机行事,见什么消息做什么事,这样比较好。

原文链接: https://blog.csdn.net/dog250/article/details/5721814

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    网络协议设计的一点思考

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/409722

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月26日 上午11:35
下一篇 2023年4月26日 上午11:35

相关推荐