此篇文章支持pdf文件格式下载,感兴趣的读者请转发至朋友圈集赞满30,后台回复作者
TCP and UDP Port
先来回顾下DoIP中所有的TCP和UDP端口及其用途
这里先明确这几个端口号
- UDP_TEST_EQUIPMENT_REQUEST:随机端口
- UDP_DISCOVERY:13400
- Dynamically assigned:随机端口
- TCP_DATA:13400
接着再逐条分析
车辆发现功能,由外部测试设备发送给DoIP实体,这是一条车辆识别请求消息,所以Payload type是Vehicle Identification request(0x0001/0x0002/0x0003)
源端口号,也就是外部测试设备的udp端口号, 是随机端口
目的端口号,也就是DoIP实体监听的udp端口号,是13400
这是一条多播或单播报文,我理解这里的多播应该包括IPv4的广播
车辆发现功能,由DoIP实体发送给外部测试设备,这是一条车辆识别响应消息,所以Payload type是Vehicle Identification response(0x0004)
源端口号,也就是DoIP实体发送响应的udp端口号,是13400
目的端口号,也就是外部测试设备的监听的udp端口号,是随机端口
这是一条单播报文
一二两条DoIP消息,是外部测试设备为了获取车辆信息,而发送的请求报文,以及DoIP实体收到请求后告知车辆信息,而回复的响应,所以这是一组请求-响应报文,响应报文里的目的端口,虽然不是固定的某个值,但是也具有确定性,就是请求报文里的源端口
车辆公告功能,由DoIP实体发送给外部测试设备,这是一条车辆信息公告消息,所以Payload type是Vehicle announcement(0x0004)
源端口号,也就是DoIP实体的udp端口号,是13400或者随机端口
目的端口号,也就是外部测试设备监听的udp端口号,是13400
这是一条多播报文
思考两个问题
-
为什么目的端口号必须是13400,能想明白吗?这里不做赘述 -
为什么Vehicle Identification response和Vehicle announcement的值都是0x0004呢?因为它们都是DoIP实体把车辆信息发送给外部测试设备的消息
数据传输功能,由外部测试设备发送给DoIP实体,这是在建立DoIP通信时和通信后的消息,它的Payload type有多种类型,比如Routing activation request、Alive check request、Diagnostic message等
源端口号,也就是外部测试设备的tcp端口号,是随机端口
目的端口号,也就是DoIP实体监听的tcp端口号,是13400
这是一条单播报文(tcp报文都是单播报文)
数据传输功能,由DoIP实体发送给外部测试设备,这是在建立DoIP通信时和通信后的消息,它的Payload type有多种类型,比如Routing activation response、Alive check response、Diagnostic message positive acknowledgement/Diagnostic message negative acknowledgement等
源端口号,也就是DoIP实体的tcp端口号,是13400
目的端口号,也就是外部测试设备监听的端口号,是随机端口
这是一条单播报文(tcp报文都是单播报文)
四五两条DoIP消息,是在TCP三次握手后,外部测试设备通过tcp协议发送功能请求,DoIP实体收到请求后给出相应的响应,所以这是一组请求-响应报文,响应报文里的目的端口,虽然不是固定的某个值,但是也具有确定性,就是请求报文里的源端口
这种请求-响应的模式,就是典型的client-server的工作模式
车辆识别和车辆公告
更多内容,请关注汽车网络诊断通信
|