新浪博客

本篇博文以上一篇文章TCP/IP/ARP/ICMP首部分析为基础,根据STM32中以太网程序来着重看一下,以太网数据包的解析过程。
我们以一个简单的服务器应用为主线,进行以太网数据包的解析。在贴程序之前我们先看一下对于以太网数据包各部分的宏定义。
1. //******************* ETH ********************
2.
3. // 目标地址(6),源地址(6),类型/长度(2)
4. #define ETH_HEADER_LEN 14
5.
6. // 类型/长度的定义
7. #define ETHTYPE_ARP_H_V 0x08 // ETH包类型/长度ARP包标识符高位
8. #define ETHTYPE_ARP_L_V 0x06 // ETH包类型/长度ARP包标识符低位
9. #define ETHTYPE_IP_H_V 0x08 // ETH包类型/长度IP包标识符高位
10. #define ETHTYPE_IP_L_V 0x00 // ETH包类型/长度IP包标识符低位
11.
12. // Ethernet type field (2bytes)
13. #define ETH_TYPE_H_P 12 // ETH包类型/长度偏移地址
14. #define ETH_TYPE_L_P 13 // ETH包类型/长度偏移地址
15.
16. // 目的地址与源地址的位置
17. #define ETH_DST_MAC 0 // ETH包目的MAC偏移地址
18. #define ETH_SRC_MAC 6 // ETH包源始MAC偏移地址
19.
20. //******************* ARP ********************
21. #define ETH_ARP_OPCODE_REPLY_H_V 0x0 // ARP包操作类型字节:ARP响应高位
22. #define ETH_ARP_OPCODE_REPLY_L_V 0x02 // ARP包操作类型字节:ARP响应低位
23.
24. #define ETHTYPE_ARP_L_V 0x06
25.
26. //#define ETH_ARP_DST_IP_P 0x26 // arp.dst.ip
27.
28. #define ETH_ARP_OPCODE_H_P 0x14 // ETH包中ARP包类型,ARP头中存储操作类型高位的地址
29. #define ETH_ARP_OPCODE_L_P 0x15 // ETH包中ARP包类型,ARP头中存储操作类型低位的地址
30.
31. // arp.src.mac
32. #define ETH_ARP_SRC_MAC_P 0x16 // ETH包中ARP包类型,ARP头中存储源始MAC的首地址
33. #define ETH_ARP_SRC_IP_P 0x1c // ETH包中ARP包类型,ARP头中存储源始IP的首地址
34. #define ETH_ARP_DST_MAC_P 0x20 // ETH包中ARP包类型,ARP头中存储目的MAC的首地址
35. #define ETH_ARP_DST_IP_P 0x26 // ETH包中ARP包类型,ARP头中存储目的IP的首地址
36.
37. //******************* IP ********************
38. #define IP_HEADER_LEN 20 // IP包头文件长度
39.
40. #define IP_SRC_P 0x1a // ETH包中IP包类型,IP头中存储源始IP地址的首地址
41. #define IP_DST_P 0x1e // ETH包中IP包类型,IP头中存储目的IP地址的首地址
42. #define IP_HEADER_LEN_VER_P 0xe // ETH包中IP包类型,IP头中存储版本的首地址
43. #define IP_CHECKSUM_P 0x18 // ETH包中IP包类型,IP头中存储校验和的首地址
44. #define IP_TTL_P 0x16 // ETH包中IP包类型,IP头中存储生存时间的首地址
45. #define IP_FLAGS_P 0x14 // ETH包中IP包类型,IP头中存储标志的首地址
46. #define IP_P 0xe // ETH包中IP包类型,IP头的首地址
47. #define IP_TOTLEN_H_P 0x10 // ETH包中IP包类型,IP头中存储包裹总长高位的地址
48. #define IP_TOTLEN_L_P 0x11 // ETH包中IP包类型,IP头中存储包裹总长低位的地址
49.
50. #define IP_PROTO_P 0x17
51.
52.

我的更多文章

下载客户端阅读体验更佳

APP专享