DoIP(一)——基础概念

1. DoIP概述

DoIP(Diagnostic communication over Internet Protocol)是基于车载以太网的诊断,在OSI 七层模型中属于传输层,其传输的诊断数据也是基于UDS,即DoIP是在以太网网络上传输UDS诊断数据的传输协议。DoIP带宽高,适合传输大量数据的场景,如车上的OTA软件升级。

ISO 13400-1中给出的协议体系如下:

DoIP(一)——基础概念_第1张图片

2. DoIP报文格式

DoIP报文也是基于TCP或UDP,但在其报文的Payload起始段添加了DoIP报头(首部),用来区分不同的DoIP报文类型,实现不同的功能。DoIP报文的结构如下图所示:
在这里插入图片描述

3. DoIP端口

我们知道不管是TCP还是UDP,都包含源端口号和目的端口号,在DoIP报文中用到了以下三种端口:

(1)UDP_DISCOVERY:端口类型-UDP,端口号-13400

该端口有以下两个应用场景:

  • 被用于诊断设备发送给DoIP节点的车辆信息请求报文和DoIP节点控制报文,此时该端口在报文中被设置为目的端口。
  • 被用于DoIP节点在没有收到请求的时候发送的UDP报文,如车辆声明报文。此时该端口同样被设置为目的端口,源端口可以为该端口,也可以由发送方动态定义。

(2)UDP_TEST_EQUIPMENT_REQUEST:端口类型-UDP,端口号-动态定义(49152-65535)

该端口由外部诊断设备在49152-65535范围内动态定义,用于诊断设备向DoIP节点发送的UDP报文,在报文中作为源端口,报文的目的端口应设置为UDP_DISCOVERY。

当DoIP节点向诊断设备发送响应的时候,报文中的目的端口应设置为UDP_TEST_EQUIPMENT_REQUEST,源端口可以为UDP_DISCOVERY,也可以有DoIP节点动态定义。

(3)TCP_DATA:端口类型-TCP,端口号-13400

该端口用于外部诊断设备和DoIP节点之间的TCP通信,如路由报文和诊断报文。当诊断设备向DoIP节点发送报文时,使用TCP_DATA作为目的端口号;当DoIP节点向诊断设备发送报文时,使用TCP_DATA作为源端口号。

4. DoIP报头

我们把上图中DoIP的部分单独拿出来:
在这里插入图片描述

我们可以看到DoIP报文由首部和数据两部分组成,我们先来看一下首部四个参数的定义:

(1)协议版本(Protocol Version)

长度一字节,代表遵照ISO 13400 的那个版本,定义如下:

  • 0x00:Reserved
  • 0x01: DoIP ISO 13400-2:2010
  • 0x02: DoIP ISO 13400-2:2012
  • 0x03…0xFE: ISO 13400 reserved
  • 0xFF: default value for vehicle identification request messages

(2)协议版本取反(Inverse Protocol Version)

是上面协议版本字节取反后的数值,即 = 协议版本 XOR 0xFF。
例如:协议版本 = 0x02,该字节 = 0x02 ^ 0xFF = 0xFD

(3)数据类型(Payload Type)

数据类型即DoIP报文的类型,不同类型功能不同,数据部分的解析方式也不一样,我们在下一篇文章中详细介绍每一种报文类型。

(4)数据长度(Payload Length)

我们先来看最后一个参数——数据长度,就是指DoIP报文中DoIP层数据的长度,不包括DoIP报头,只是数据长度,4字节,可以为0,最大为0xFFFFFFFF(4GB)。

你可能感兴趣的:(DoIP,嵌入式,DoIP,诊断,车载以太网,TCP,IP)