北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章565 浏览9694032

车辆以太网诊断协议连载(2)——通用报文头负响应

当接收到的DoIP报文格式错误或者负载类型不支持时,接收方应发送“通用报文头负响应报文”。

cover.png

通用报文头负响应报文”由报文头(8字节)+负响应码(1字节)组成,其负载类型的取值为0x0000(更多信息见上一篇文章)。以协议版本号为0x03为例,其报文格式为:

0x03 0xFC 0x00 0x00 0x00 0x00 0x00 0x01 0xXX

其中0xXX为负响应码,其取值及含义如下面的表格所示:

取值
描述动作
0x00
格式不正确关闭套接字
0x01未知的负载类型丢弃报文
0x02报文过长丢弃报文
0x03内存溢出丢弃报文
0x04负载长度无效丢弃报文
0x05 ~ 0xFF
保留

解释如下:

  1. 若接收到的报文不符合DoIP报文头的规范(比如“协议版本号”与“版本号取反”不匹配),或DoIP服务器不支持该版本,则应发送一条“通用报文头负响应”报文,并将否定码设置为0x00;

  2. 若接收到的报文的负载类型不被支持,则DoIP实体应发送一条“通用报文头负响应”报文,并将否定码设置为0x01;

  3. 若接收到的报文的负载长度超过了当前DoIP实体所支持的最大值,无论当前内存使用情况如何,均应发送一条“通用报文头负响应”报文,并将否定码设置为0x02;

  4. 若接收到的报文的负载长度超过了当前DoIP 实体可用的内存,则应发送一条“通用报文头负响应”报文,并将否定码设置为0x03;

  5. 若接收到的报文的负载长度与特定负载类型所期望的长度不匹配,则 DoIP 实体应发送一条“通用报文头负响应”报文,并将否定码设置为0x04。这包括针对特定负载类型的最小长度、固定长度和最大长度的检查;

  6. 当DoIP实体作为服务器运行并通过UDP接收到负载类型为0x0000或0x0004的DoIP消息时,应丢弃该消息且不发送“通用报文头负响应”报文;


取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论