以太网基础④IP 协议介绍与 IP 校验和算法实现
1. 今日摸鱼任务
IP 校验和算法实现 |
02_【逻辑教程】基于HDL的FPGA逻辑设计与验证教程V3.5.2.pdf 55 IP 协议介绍与 IP 校验和算法实现 网络-IP协议详解(报文格式、分类、NAT、子网、CIDR、抓包分析)_nat报文-CSDN博客 |
IP 层的实质是在 MAC层的基础上将原有协议更加细化。 最核心的意义是让IP 地址参与到网络数据传输中,让硬件和硬件的通信传输,从网卡号作为唯一的身份识别标志,变为以 IP 地址作为身份识别标志。 |
2. IP 协议数据字段格式
所有的 TCP、UDP、ICMP、IGMP 数据都以 IP 数据报的格式传输。 IP 仅提供尽力而为的传输服务,如果发生某种错误,IP 会丢失该数据,然后发送 ICMP 消息给信源端。另外,IP 数据报可以不按发送顺序接收。 | |||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||
IP 数据报的长度/类型段的数值为 0x0800,数据和填充段包括 IP 头部数据和 IP 数据两个部分。 | |||||||||||||||||||||||||||||||||||||||||||||||||
jiangjiangjiang~ 上面这个图是不是感觉看不懂????? 直接看下面的表就可以啦!!! | |||||||||||||||||||||||||||||||||||||||||||||||||
这样再看上面的图,就会发现,只是每行按32计数,这样可以清楚看懂首部长度~ 前 20 个字节是固定的,可选字段则可有可无。 | |||||||||||||||||||||||||||||||||||||||||||||||||
|
3. 校验和计算
校验和计算步骤: ①将校验和字段置零: 在计算前,先将首部中的校验和字段(16 位)设为 0x0000。 ②将首部分解为 16 位字: IP 首部长度通常是 20 字节(无选项时),按 2 字节为一组分割,得到 10 个 16 位字。 此时校验和为0,计算时累加9个2字节。 ③计算二进制反码和: 将所有 16 位字相加(按二进制加法,溢出时回卷,即最高位进位加到最低位)。 最后对和取反码(按位取反),得到校验和。 ④存储校验和: 将计算得到的校验和存入 IP 首部的校验和字段。 |
使用小兵计算校验和(pdf截图): |
module checksum( assign suma = {ver,hdr_len,tos} + total_len + id + offset + {ttl,protocol} endmodule |