在车载以太网测试过程中,抓取以及分析车载以太网的通信是必不可少的一步,抓取通信后通常还需要对数据进行保存。这个保存的数据格式通常为.pcap格式;
使用这个.pcap格式的,除了专门的车载以太网测试软件外,还有专门的高速数据记录仪:
1, 车载以太网测试软件:
比如Technica Engineering的ANDi, 带有一个专门的抓包分析的工具- Traffic Viewer。由于ANDi当时(2009年给BMW做第一个车载以太网项目时)专门就是为了车载以太网测试开发的,所以Traffic Viewer 进行通信的解析对于用户来讲非常方便,它能够解析目前所有支持的车载以太网协议。如果有相关的协议数据库,还可以进行数据库关联,那么通信里的每个字节都能够被直观的解析。
2,高速数据记录仪:
比如也是给BMW的供应商ViGEM。通常BMW进行车载以太网测试(e.g, 车身域控,信息娱乐,自动驾驶等)时,通常会通过使用多个Media Gateway(Technica Engineering)进行不同通信接口(CAN,LIN, FlexRay, 100base-T1)的路由交换,由于这些通信的数据量大并且带宽很高,不能直接用电脑进行数据存储(存储速度跟不上),而是要使用专门的VIGEM的高速数据记录仪,它的数据存储速度最高可达6.4Gb/s, 并且支持多种接口(CAN, LIN, FlexRay, 100Base-T1, LVDS等),还可以为每个通道打上统一的时间标签等;
(从硬件工具角度讲,Technica Engineering提供的硬件通常包括有以下几种(通常,全部的还有更多):
- Media Converter, 用于100Base-T1与Tx转换;
- Media Gateway, 带有Ethernet Switch, 以及CAN/LIN/Flexray接口;
- SPY,FPGA实现TAP功能,适用于AVB/TSN, 可加40ns精度时间标签;)
对于.pcap具体的格式,用过Wireshark的用户可能比较熟悉;下面是转过来的文章, 介绍.pcap格式,供参考。
以下为.pcap格式介绍,转自:
https://www.cnblogs.com/lvdongjie/p/4064574.html
pcap文件格式是常用的数据报存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包
下面对这种格式的文件简单分析一下:
pcap文件的格式为:
文件头 24字节
数据报头 + 数据报 数据包头为16字节,后面紧跟数据报
数据报头 + 数据报 ......
pcap.h里定义了文件头的格式
1 struct pcap_file_header 2 { 3 bpf_u_int32 magic; 4 u_short version_major; 5 u_short version_minor; 6 bpf_int32 thiszone; 7 bpf_u_int32 sigfigs; 8 bpf_u_int32 snaplen; 9 bpf_u_int32 linktype; 10 };
Pcap文件头24B各字段说明:
Magic:4B:0×1A 2B 3C 4D:用来识别文件自己和字节顺序。0xa1b2c3d4用来表示按照原来的顺序读取,0xd4c3b2a1表示下面的字节都要交换顺序读取。一般,我们使用0xa1b2c3d4
Major:2B,0×02 00:当前文件主要的版本号
Minor:2B,0×04 00当前文件次要的版本号
ThisZone:4B 时区。GMT和本地时间的相差,用秒来表示。如果本地的时区是GMT,那么这个值就设置为0.这个值一般也设置为0 SigFigs:4B时间戳的精度;全零
SnapLen:4B最大的存储长度(该值设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将该值设置为65535; 例如:想获取数据包的前64字节,可将该值设置为64)
LinkType:4B链路类型
常用类型:
0 BSD loopback devices, except for later OpenBSD
1 Ethernet, and Linux loopback devices
6 802.5 Token Ring
7 ARCnet
8 SLIP
9 PPP
10 FDDI
100 LLC/SNAP-encapsulated ATM
101 “raw IP”, with no link
102 BSD/OS SLIP
103 BSD/OS PPP
104 Cisco HDLC
105 802.11
108 later OpenBSD loopback devices (with the AF_value in network byte order)
113 special Linux “cooked” capture
114 LocalTalk
Packet 包头和Packet数据组成
字段说明:
Timestamp:时间戳高位,精确到seconds(值是自从January 1, 1970 00:00:00 GMT以来的秒数来记)
Timestamp:时间戳低位,精确到microseconds (数据包被捕获时候的微秒(microseconds)数,是自ts-sec的偏移量)
Caplen:当前数据区的长度,即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。
Len:离线数据长度:网络中实际数据帧的长度,一般不大于caplen,多数情况下和Caplen数值相等。
(例如,实际上有一个包长度是1500 bytes(Len=1500),但是因为在Global Header的snaplen=1300有限制,所以只能抓取这个包的前1300个字节,这个时候,Caplen = 1300 )
Packet 数据:即 Packet(通常就是链路层的数据帧)具体内容,长度就是Caplen,这个长度的后面,就是当前PCAP文件中存放的下一个Packet数据包,也就 是说:PCAP文件里面并没有规定捕获的Packet数据包之间有什么间隔字符串,下一组数据在文件中的起始位置。我们需要靠第一个Packet包确定。 最后,Packet数据部分的格式其实就是标准的网路协议格式了可以任何网络教材上找得到。