2024年最新SOME IP 协议介绍_someip报文格式,物联网嵌入式开发系统工程师面试宝典

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

SOME/IP的报文格式如下图所示,由消息头部(Header)和消息体(Payload)组成,Header主要包括以下字段:

  • Message ID,用于唯一标识消息,当消息为Method类型时,由Service ID和Method ID组成,当消息为Event类型时,由Service ID和Event ID组成,如下图所示:

  • Length,消息长度(从Request ID开始到Payload结束);
  • Request ID,服务提供者和调用者可用于区分相同消息的不同调用,由Client ID和Session ID组成,如下图所示:

通常我们称服务提供者为Service,服务调用者为Client,Service ID和Client ID用于区分,一般会在一个SOA架构中统一地配置这些ID的数值。

这里插播一点个人理解,在SOA中,每个服务就好像我们每一个人在社会中扮演的角色,在对别人提供着服务的同时,同时也享受着别人提供出来的服务,人与人之间,既是彼此独立的,又是需要互相通讯的。服务提供者将功能具象为一组接口,这样使用者就能知道如何调用服务,完成某件事情,得到某个结果。关于SOA,以后再扯,记得关注哦~

  • Protocol Version,协议头版本号,目前该值必须为1;
  • Interface Version,接口版本号,一般由服务提供者定义;
  • Message Type,用于标识消息的类型,如下图所示:

消息类型和通信机制之间的映射关系,如下图所示(灵魂画手,将就看吧),不难发现,Field结合了Method和Event,这也就理解了Message ID中为什么只有Method ID和Event ID,没有Field ID。Field可以用于实现这样一种通信场景:客户端希望能够获取/设置/监听服务端的某一个状态值,图中SOME/IP-SD,超纲啦,将在下一篇介绍,记得关注哦~

  • Return Code,用于标识请求是否成功处理,不同的消息类型,它们在传输时所携带的Return Code也不同:

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

如果你需要这些资料,可以戳这里获取

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SOME/IP(Scalable service-Oriented MiddlewarE over IP)是AutoSAR(AUTomotive Open System ARchitecture)标准中定义的一种通信协议,用于在汽车中实现分布式系统的通信。它基于IP网络,支持广域网和局域网通信。 SOME/IP报文格式主要由头部、负载和选项三部分组成。 下面是一个SOME/IP报文的实例分析: ``` 00 26 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B 02 00 00 00 01 00 01 00 00 00 00 01 00 00 00 00 00 00 04 00 00 00 02 00 01 00 01 0A 00 00 22 00 00 00 01 00 00 00 01 00 00 00 03 00 00 00 01 00 00 00 04 00 00 00 04 74 65 73 74 ``` 解析: - 头部:00 26 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B 头部包含16个字节,其中前4个字节是消息ID(Message ID),用于标识某个消息,这里是0x0026。接下来的4个字节是长度(Length),指示整个消息的长度,不包括头部,这里是0x00000001。然后是8个字节的发送方ID(Sender ID),表示消息的发送方,这里是0x0203040506070809。最后是4个字节的接收方ID(Receiver ID),表示消息的接收方,这里是0x0A0B。 - 负载:02 00 00 00 01 00 01 00 00 00 00 01 00 00 00 00 00 00 04 00 00 00 02 00 01 00 01 0A 00 00 22 00 00 00 01 00 00 00 01 00 00 00 03 00 00 00 01 00 00 00 04 00 00 00 04 74 65 73 74 负载包含了多个字段,每个字段都有自己的长度、类型和值。这里的负载包含以下字段: - Length:4字节,值为0x00000002,表示后面有两个字段。 - Type:4字节,值为0x00010001,表示某个服务的某个方法。 - Client ID:4字节,值为0x00000001,表示客户端ID。 - Session ID:4字节,值为0x00000000,表示会话ID。 - Protocol Version:4字节,值为0x00000001,表示协议版本号。 - Interface Version:4字节,值为0x00000000,表示接口版本号。 - MessageType:4字节,值为0x00000004,表示消息类型为请求。 - Return Code:4字节,值为0x00000002,表示返回码为E_NOT_OK。 - Method ID:4字节,值为0x00010001,表示方法ID。 - Length of Payload:4字节,值为0x0000000A,表示负载的长度。 - Payload:10字节,值为0x000022000000000100000003000000040074657374,表示数据载荷。 - 选项:没有选项字段。 以上是一个简单的SOME/IP报文的例子,包含了头部、负载和选项三部分。实际中,SOME/IP报文可能会更加复杂,包含多个字段和选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值