对于介绍SomeIP协议,我还是想从最基础的协议解析来,所以今天还是先将SomeIP协议详解给大家列举一下,也方便大家在工作中如果不记得哪些信息随时可以查看学习,也算是留给我自己的笔记吧,毕竟确实容易忘记。
SomeIP数据:
0000 dm dm dm dm dm dm sm sm sm sm sm sm 08 00 45 00
0010 00 2d 12 66 00 00 40 11 0d 3f sa sa sa sa da da
0020 da da bf cc bf d6 00 19 a0 f1 01 00 80 01 00 00
0030 00 09 00 00 00 00 01 01 02 00 00 00
上面试一组最常见的SomeIP数据,也是比较完整的一段。
解析:(同前面DoIP、ICMP、ARP等数据)
前导码:
帧起始:
1、Destination MAC:dm dm dm dm dm dm 目标物理地址
2、Source MAC:sm sm sm sm sm sm 源物理地址
3、ETH type:08 00
General Use:0x0800 IPv4;0x86DD IPv6;0x8100 Adressing resolution protocol;0x9100 VLAN 0x0806 ARP;ICMP
Single Tag:0x88F5 VLAN Double Tag;
AVB:0x22F0 IEEE 1722;0x88F7 GPTP网络;0x22EA Multiple Stream Reservation Protocol;
V2X:0x88DC Wave short Message Protocol;
802.3:0x0-0x05DC IEEE 802.3长度
4、Version+HIL:45
版本:如4表示IPV4 IPV4:4,IPV6:6
5、 DSCP+ECN:00
Differentiated Service:一般没有使用,详细参考RFC
Explicit Congestion Notification:用于扩展检测丢包
6、 Total length:00 2d
总长度:header+数据 总长度
7、 Identification:12 66
计时器:占16位,它是一个计数器,用来产生数据包的标识
8、Flags+Fragment Offset: 40 00
标明是否分片 bit 0: Reserved; must be zerobit 1: Don't Fragment (DF) bit 2: More Fragments (MF)
占12位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位
9、 Time to alive:40
生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
10、Protocol:11
协议类型:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
11、Header checksum:0d 3d 数据头CRC
12、Source IP:sa sa sa sa 源IP地址
13、Destination IP:da da da da 目标IP地址
14、Source Port:bf cc 源端口号
15、Destination port:bf d6 目标端口号
16、UDP Length:00 19
17、Checksum:a0 ed UDP校验
SomeIP数据:
Message ID:
18、Service ID:01 00 用于标识一个特定的服务,同一辆车中的不同的服务应具有不同的Service ID;特殊Service ID我们后面会介绍。
19、Method ID:80 05 最高位用于标识事件和通知(Method、Field-Getter/Setter、Event、Field-Notifier)。
20、Length:00 00 00 09
Request ID:
21、Client ID:00 00 车辆中的唯一标识符,高字节设置为0x00,低字节为ECU对应的诊断ID
22、Session ID:00 00 客户端调用的唯一标识符,表示一次会话过程;
23、Protocol Version:01 SomeIP协议版本号,当前一般使用的都是0x01
24、Interface Version:01 SomeIP协议接口版本,用于检测匹配的一致性,一般也是设置为0x01
25、Message Type:01 SomeIP报文类型,这个湖面会做详细介绍
26、Return Code:00 返回码,不同的返回码表示不同的意思;类似于CAN诊断的NRC码
23、Payload:00 负载数据
数据对比字节图:
由于SomeIP报文类型种类太多,因此我们今天这里只介绍到SomeIP Header信息,这样方便后面的逐一进行介绍,大家感兴趣的话关注下,后面会一一进行分享,绝对是全网最细致的内容。