SOME/IP 详解系列(2)—— 报文格式
前言
随着车载以太网技术的快速发展,SOME/IP得到了更多在车内网络应用的机会,同时作为SOA架构的重要支撑,也越来越受到人们的关注。但还是有很多人并不是真正的了解SOME/IP,王师傅打算通过《SOME/IP详解》系列的几篇文章,详细的介绍下SOME/IP的背景、定义、工作机制和应用场景,以及如何通过工具去进行SOME/IP的仿真和验证。
SOME/IP报头
通过上篇文章我们知道了SOME/IP是一个通信中间件,位于传输层之上,那么SOME/IP的数据在封装的时候就在传输层头部的后面。下图是一个普通以太网帧格式的示意图,在SOME/IP数据的前面依次是传输层TCP/UDP的头部,网络层IP的头部以及数据链路层的以太网帧头。本文主要介绍的内容是最后面SOME/IP数据的格式,也就是图片的下半部分。
SOME/IP报头的总长度为16个字节,共有9个字段。
Service ID / 16 bits
服务标识,该字段用来表示这条报文属于哪个服务,由用户或系统设计人员自行定义。
Method ID / Event ID / 16 bits
这个字段的第一个bit是标志位,如果标志位为0,表示后面15位为Method ID;如果标志位为1,表示后面15位为Event ID,如下图。
所以具体是Method还是Event,可以从该字段的值来区分,Method ID的范围为0x0000 ~ 0x7FFF,Event ID的范围为0x8000 ~ 0xFFFF。Method和Event为SOME/IP的两种通信方式,在后面的文章中会详细介绍。Service ID和Method ID/Event ID两个字段可以组成Message ID,每个Message ID在车内网络都是唯一的,可以用来标识某个服务的某个接口,该字段由用户或系统设计人员自行定义。