以太网:UDP包结构
参考:
千兆以太网(3):接收——包校验和数据筛选 - 咸鱼IC - 博客园 (cnblogs.com)
计算机网络·啥玩意是源MAC地址,目标MAC地址,源ip地址,目标ip地址_目的mac地址和源mac地址-CSDN博客
UDP协议及verilog实现——(二)协议解读_verilog udp协议-CSDN博客
数据的校验和筛选
仅供参考
帧首部:
7个h55+hd5
MAC层首部:
目的MAC:发送目的的MAC(FPGA MAC)
目的MAC处的广播包指的是全F,意为此网段内的所有主机都能接收。
源MAC:发送源的MAC(PC MAC)
- 字节0-6:
0x55
,前导码,帧头,用于标识数据包的开始。 - 字节7:
0xD5
,界定符,标识帧头结束和实际数据开始的地方。 - 字节8-13:
0xFF_FF_FF_FF_FF_FF
,目的MAC地址,EII格式,表示以太网目的地地址。 - 字节14-19:
0xA8_BB_C8_07_D9_9F
,源MAC地址,表示发送数据包的设备的以太网地址。 - 字节20-21:
0x0800
,Type字段,指定了上层协议(这里是IP报文)。0x0806:ARP报文
IP层首部:
- 字节22:
0x45
,IP版本和头部长度(4表示IPv4, 5表示头部长度是5*4=20字节)。 - 字节23:
0x00
,服务类型字段TOS,指定数据包的处理优先权,一般置为0。 - 字节24-25:
0x041C
,总长度字段,指IP头部、UDP头部和数据的总长度,这里是0x041C
即1052字节。(20+8+1024) - 字节26-27:
0x0000
,标识字段,每发一个数据包就增加的值(可选) - 字节28-29:
0x0000
,标志和片偏移字段。3bit,第一位保留,第二位为1:分片;第二位为2:不分片,第三位:更多分片; - 片偏移:分片数据的顺序
- 字节30:
0x80
,TTL字段,通过最多路由跳数,64或128,过多则“死亡”; - 字节31:
0x11
,协议字段,表示使用的是UDP协议,TCP为’d6,ICMP为'd1。 - 字节32-33:
0x0000
,头部校验和字段,用于错误检测,发送时计算。(接收端可以不校验,仅校验首部,类似MIPI的ECC) - 字节34-37:
0xC0A80001
,源IP地址,这里为192.168.0.1
。(发送源地址) - 字节38-41:
0xFFFFFFFF
,目的IP地址,这里为广播地址255.255.255.255
。(目的地址)
UDP协议,或者说OSI模型下每一层是互相隔离的,CRC解析完以后数据会送完不同的层数,字节32-33仅能在IP层面解析;
- 字节30:
0x80
,TTL字段,通过最多路由跳数。
其值在这个例子中被设置为0x80,即十进制的128。TTL字段用于指定数据包在网络中可以通过的最大路由器跳数。每当数据包通过一个路由器,它的TTL值会减一。当TTL值达到0时,数据包会被丢弃,这样防止了一个数据包在网络中无限期地循环。128是一个常用的默认值,足够大以确保数据包可以通过大多数网络而不会因为TTL耗尽而被丢弃。
UDP层头部 (8字节)
- 字节42-43:
0x04D2
,源端口号,这里为十进制的1234。 - 字节44-45:
0x007B
,目的端口号,这里为十进制的123。 - 字节46-47:
0x0408
,UDP长度,包括UDP头部和数据负载的长度,这里为1032字节。(8+1024) - 字节48-49:
0x0000
,UDP校验和,用于错误检测,发送时计算。
数据负载
- 字节50-1073: 跟随UDP头部的数据负载。(数据长度其实是任意字节,但需要小于等于1.5K字节)
尾部
- 字节1074-1077: CRC(循环冗余检验),4字节,用于错误检测。
- 校验范围:除了8字节帧首部外的8-1077区域是否传输错误;
IP地址规范化
IP 地址分为五类,A 类保留给政府机构,B 类分配给中等规模的公司,C 类分配给任何需要的人,D 类用于组播,E 类用于实验,各类可容纳的地址数目不同。
A、B、C 三类 IP 地址的特征:
当将 IP 地址写成二进制形式时,
A 类地址的第一位总是 0,
B 类地址的前两位总是 10,
C 类地址的前三位总是 110。
地址格式为:
IP 地址=网络地址+主机地址或 IP 地址=网络地址+子网地址+主机地址。
MAC(Media Access Control,介质访问控制)地址
也叫硬件地址,长度是48 比特(6 字节),由 16 进制的数字组成,分为前 24 位和后 24 位:
前 24 位叫做组织唯一标志符(Organizationally Unique Identifier,即 OUI),
是由 IEEE 的注册管理机构给不同厂家分配的代码,区分了不同的厂家。
后 24 位是由厂家自己分配的,称为扩展标识符。
同一个厂家生产的网卡中MAC 地址后 24 位是不同的。
MAC 地址对应于 OSI 参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机 MAC 地址和自身端口的数据库,交换机根据收到的数据帧中的“目的 MAC 地址”字段来转发数据帧。
网卡的物理地址通常是由网卡生产厂家烧入网卡的 EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。
也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一定是全球唯一的。
比如,著名的以太网卡,其物理地址是 48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。
以太网地址管理机构(除了管这个外还管别的)(IEEE)(IEEE:电气和电子工程师协会)将以太网地址,也就是 48 比特的不同组合,分为若干独立的连续地址组,
生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。
物理地址是网卡的身份证,进入网络的通行证。
物理地址不是 IP,是网卡的一个 MAC 地址,这个地址是唯一的。