以太网 Ethernet 报文解析

news/2024/12/24 1:32:36 标签: mcu

以太网 Ethernet 报文解析 使用canoe 发送报文。解析这个报文

参考资料
IPv4报文协议 链接: https://blog.csdn.net/m0_61643743/article/details/128509490

UDP 报文协议
链接: https://blog.csdn.net/weixin_43142797/article/details/105648071
https://fasionchan.com/network/udp/udp-datagram/
链接: https://blog.csdn.net/weixin_43142797/article/details/105648071

UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,

3、
发送报文 智能驾驶 车道线红路灯信号 NewLanelineDataNotify
New_TSR_Distance_X=10.000

不过这里有一个问题, 10.000 这个不能简单的用进制去转化,一般进制针对整形如int来说会更好。
10.000 是double类型的,那么他对于计算机底层来说 有单独的计算转换公式。
例如 用python 来转化
https://blog.csdn.net/qq_39507748/article/details/110290097
https://blog.csdn.net/cherry1307/article/details/97624014

import struct
#Vector Canoe Class
def double_to_hex(f):
return hex(struct.unpack(‘<Q’, struct.pack(‘<d’, f))[0])
if name == ‘main’:
print(double_to_hex(10.000))

输出 0x4024000000000000 (0x 代表16进制)

4、someip 的动态报文
举例: array数组 的动态意义
假如发送第一个报文里有两个 array 数组 A 、B,A 的长度是20,B的长度是0
那么这个报文payload 长度= 28 byte
= A数组长度属性(4byte)+ A数组长度(20byte)+B数组长度属性(4byte)+ B数组长度(0byte)

假如发送第二个报文里有两个 array 数组 A 、B,A 的长度是20,B的长度是20
那么这个报文payload 长度= 48 byte
= A数组长度属性(4byte)+ A数组长度(20byte)+B数组长度属性(4byte)+ B数组长度(20byte)

4、
TCP/IP 五层模型

五层组包示例

6、
正式示例展示:

Detail View
[-] Time
| 45.283859
| 0:00:00:45.283
[-] General
| Type: Ethernet Packet
| Channel: Ethernet1 (Eth 1)
| Ports: ADAS_Parking
| Packet Length: 165 bytes A5
| Direction: Rx
[-] Data

        |  Length   165  bytes  
         00 80 0F 11 70 00 
         02 22 23 01 02 03 
         08 00 
         45 
         00 
         00 97 
         00 00 
         00 00 
         40 
         11 
         72 FF 
         C0 A8 C3 03 
         C0 A8 C3 02 
         
          C8 CA 
          C8 34 
          00 83 
          16 67 
          00 0C 80 03 
          00 00 00 73 
          00 00 43 26 
          01 
          01 
          02 
          00 

          00 00 00 00 
          00 00
          00 00 00 00 
          
         00 00 00 55 
         00 00 00 00 
         40 14 00 00 00 00 00 00 
         40 14 00 00 00 00 00 00 
         00 00 00 00 00 00 00 00 
         00 00 00 00 00 00 00 00 
         01 
         01 
         03 
         01 
         05 
         01 
         00 
         00 
         00 
         00 00 00 00 00 00 00 00 
         00 00 00 00 00 00 00 00 
         00 00 00 00 00 00 00 00 
         00 00 00 00 00 00 00 00 
         00 00 00 00 00 00 00 00 
         
         00 00 00 00 
         00 00 00 00

[-] Ethernet
| Destination: 00:80:0F:11:70:00
| Source: 02:22:23:01:02:03
| Type: IPv4 0800
[-] Payload

        |  Length   151 bytes
        45 
        00 
        00 97 
        00 00 
        00 00 
        40 
        11 
        72 FF 
        C0 A8 C3 03 
        C0 A8 C3 02 

          C8 CA 
          C8 34 
          00 83 
          16 67 
          00 0C 80 03
          00 00 00 73 
          00 00 43 26 
          01 
          01 
          02 
          00 

          00 00 00 00 
          00 00 
          00 00 00 00 
          
          00 00 00 55 
          00 00 00 00 
          40 14 00 00 00 00 00 00 
          40 14 00 00 00 00 00 00 
          00 00 00 00 00 00 00 00 
          00 00 00 00 00 00 00 00 
          01 
          01
          03 
          01 
          05 
          01 
          00 
          00 
          00 
          00 00 00 00 00 00 00 00 
          00 00 00 00 00 00 00 00 
          00 00 00 00 00 00 00 00 
          00 00 00 00 00 00 00 00 
          00 00 00 00 00 00 00 00 
          
          00 00 00 00 
          00 00 00 00

[-] IPv4
| Version: 4 4
| Header Length: 20 bytes 5
[-] Differentiated Service Field DSCP=0 ECN=Not-ECT 00
| DSCP: 0 0000 00
| ECN: Not-ECT . . . . . . 00
| Total Length: 151 bytes 0097
| Identification: 0 0000
[-] Control Flags 0
| Reserved Flag: 0 0
| Don’t Fragment: 0 . 0
| More Fragments: 0 . . 0
| Fragment Offset: 0 bytes 0000
| Time to Live: 64 40
| Protocol: UDP 11
| Checksum: 29439 72FF
| Source: private 192.168.195.3
| Destination: private 192.168.195.2
[-] Payload

           |  Length   131 bytes      
           C8 CA 
           C8 34 
           00 83 
           16 67
            00 0C 80 03 
            00 00 00 73 
            00 00 43 26 
            01 
            01 
            02 
            00 

            00 00 00 00 
             00 00 
             00 00 00 00 

             00 00 00 55 
             00 00 00 00 
             40 14 00 00 00 00 00 00 
             40 14 00 00 00 00 00 00 
             00 00 00 00 00 00 00 00 
             00 00 00 00 00 00 00 00 
             01 
             01 
             03 
             01 
             05 
             01 
             00 
             00
             00 
             00 00 00 00 00 00 00 00 
             00 00 00 00 00 00 00 00 
             00 00 00 00 00 00 00 00 
             00 00 00 00 00 00 00 00 
             00 00 00 00 00 00 00 00 
             
             00 00 00 00 
             00 00 00 00

[-] UDP
| Source Port: 51402 C8CA
| Destination Port: 51252 C834
| Length: 131 bytes 0083 这个长度值 = 是UDP整体的长度
| Checksum: 5735 1667
[-] Payload

            |  Length   123 bytes
            |  000h     
		    00 0C 80 03                          // message id (0-3byte)
		    00 00 00 73                          // length (4-7byte)  这个长度值 = 123-8=115=73(16进制)
		                                                 (去掉message id和                            length本身长度)
		    00 00 43 26                          // requestid (8-11byte)
		    01                                           // protocol version (12-12byte)
		    01                                          // interface version (13-13byte)
		    02                                       // message type(14-14byte)
		    00                                     // return code (15-15byte)   
            
            payload 开始
            00 00 00 00                             // checksum  (16-19byte)
		    00 00                                       // counter (20-21byte)
		    00 00 00 00                           //array 的长度=0 FieldLength_Line (22-25byte)
                
            00 00 00 55                            //array 的长度=85 FieldLength_TLA (26-29byte)不算当前数组长度属性
            00 00 00 00                            // TLAID_i  (30-33byte)
            40 14 00 00 00 00 00 00        // TLA_Distance_X (34-41byte)
            40 14 00 00 00 00 00 00        // TLA_Distance_Y (42-49byte)
            00 00 00 00 00 00 00 00        // TLA_Distance_Z (50-57byte)
            00 00 00 00 00 00 00 00       // TLAPosition_confidence (58-65byte)
            01                                           // LeftTLA_Color (66byte)
            01                                          // LeftTLA_Type (67byte)
            03                                          // StraightTLA_Color (68byte)
            01                                          // StraightTLA_Type (69byte)
            05                                         // RightTLA_Color (70byte)
            01                                        // RightTLA_Type (71byte)
            00                                        // New_LeftTLA_Second (72byte)
            00                                        // New_StraightTLA_Second (73byte)
            00                                        // New_RightTLA_Second (74byte)
            00 00 00 00 00 00 00 00     // TLA_Reserved1 (75-82byte)  预留字段
            00 00 00 00 00 00 00 00       // TLA_Reserved2 (83-90byte)
            00 00 00 00 00 00 00 00       // TLA_Reserved3 (91-98byte)
            00 00 00 00 00 00 00 00         // TLA_Reserved4 (99-106byte)
            00 00 00 00 00 00 00 00        // TLA_Reserved5 (107-114byte)
            00 00 00 00                            //array 的长度=0 New_FieldLength_TSR (115-118byte) 
            00 00 00 00                           //array 的长度=0 FieldLength_LanelineReserved (119-122byte)

http://www.niftyadmin.cn/n/5797193.html

相关文章

《计算机组成及汇编语言原理》阅读笔记:p28-p47

《计算机组成及汇编语言原理》学习第 3 天&#xff0c;p28-p47 总结&#xff0c;总计 20 页。 一、技术总结 1.Virtual Machine 2.stack 3.The fetch-execute Cycle 在控制单元(Control Unit, CU)里面有一个指令寄存器(Instruction Register, IR)和一个程序计数器(Program…

探索数据可视化的利器:Matplotlib

探索数据可视化的利器&#xff1a;Matplotlib 引言 在数据科学和机器学习领域中&#xff0c;有效的数据可视化是理解和传达信息的关键。Python拥有许多优秀的可视化库&#xff0c;其中Matplotlib是最基础也是最强大的之一。它不仅为其他高级可视化库&#xff08;如Seaborn、P…

JUC并发工具---并发容器

HashMap为什么是线程不安全的 import java.util.HashMap; /*** 由于 HashMap 的线程不安全性&#xff0c;最终的 HashMap 值可能不符合预期。* 例如&#xff0c;预期值应该是 0&#xff08;因为增加和减少操作相互抵消&#xff09;&#xff0c;但实际上可能得到一个不同的值。…

Android 蓝牙Bluedroid线程池设计思路介绍

零. 前言 由于Bluedroid的介绍文档有限,以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等),加上需要掌握的语言包括Java/C/C++等,加上网络上其实没有一个完整的介绍Bluedroid系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员…

适用于.net的操作excel的库

目录 目录 知识点概要 知识点具体说明(使用步骤、解释) 使用场景及示例 1. EPPlus 2. NPOI 3. ClosedXml 4. SpreadsheetLight 5.ExcelDataReader 开源库 6. ExcelDataWriter 总结 知识点概要 使用Excel来导入和导出数据&#xff0c;在日常工作中使用频率是相当高的&…

[c++进阶(三)]单例模式及特殊类的设计

1.前言 在实际场景中,总会遇见一些特殊情况,比如设计一个类,只能在堆上开辟空间, 或者是设计一个类只能实例化一个对象。那么我们应该如何编写代码呢&#xff1f;本篇将会详细的介绍 本章重点&#xff1a; 本篇文章着重讲解如何设计一些特殊 的类,包括不能被拷贝,只能在栈/堆上…

基于哈希的字符串子串匹配算法

标题&#xff1a;基于哈希的字符串子串匹配算法 摘要&#xff1a; 本文介绍了一种基于哈希的算法&#xff0c;用于快速比较两个字符串中子串的相似性。该算法利用了Rabin-Karp算法的思想&#xff0c;通过计算子串的哈希值来快速判断它们是否相同。这种方法在处理大量数据时具有…

关于ftp.ncbi.nlm.nih.gov数据下载路由调整的记录

经查防火墙看到ftp.ncbi.nlm.nih.gov的流量比较大&#xff0c;对专线带宽使用造成比较大的负担。 于是把ftp.ncbi.nlm.nih.gov改从PPOE线出&#xff0c;发现下载速度下降好多。通过流量图进行分析&#xff0c; 可以看出路由走PPOE时&#xff0c;仅HTTPS协议有通迅流量&#xf…