千兆以太网网络层 IP 协议介绍与 IP 校 验和算法实现

news/2024/7/24 7:48:25 标签: tcp/ip, 算法, 网络, fpga开发, fpga, 网络协议

文章目录

  • 前言
  • 一、IP 协议数据字段格式
  • 二、IP 协议首部详解
  • 三、IP 首部校验和算法介绍
  • 四、用 Verilog 实现
  • 五、模块仿真
  • 六、仿真结果


前言

本章将讲解千兆以太网网络层 IP 协议的内容及算法实现。IP 层的实质是在MAC 层的基础上将原有协议进行一个更加细化的定义而得。它最核心的意义,就是让 IP 地址参与到网络数据传输中,让硬件和硬件的通信传输,从网卡号作为唯一的身份识别标志,变为以 IP 地址作为身份识别标志。而 IP 层最核心的内容,就是 IP 协议数据字段的格式。


提示:以下是本篇文章正文内容,下面案例可供参考

一、IP 协议数据字段格式

IP 是 TCP/IP 协议族中最核心的协议,所有的 TCP、UDP、ICMP、IGMP 数据都以 IP 数据报的格式传输。IP 仅提供尽力而为的传输服务,如果发生某种错误,IP 会丢失该数据,然后发送 ICMP 消息给信源端。另外,IP 数据报可以不按发送顺序接收。IP 数据报的格式如下,IP 数据报的长度/类型段的数值为 0x0800,数据和填充段包括IP 头部数据和 IP 数据两个部分。
1
其中,和以太网帧具有帧头一样,IP 数据报也包含了一个 IP 报头部分,与 IP 协议相关的一些信息如 IP 地址,数据包长度等会被打包进 IP 报头中,然后再与需要传输的 IP 报文数据一起,作为 MAC 帧的数据和填充字段送往 MAC 层发送,接下来,将着重介绍 IP 协议首部的详细信息。

二、IP 协议首部详解

IP 数据报的格式如下:
在这里插入图片描述
前 20 字节和紧接其后的选项部分是 IP 数据报的首部,前 20 个字节是固定的,可选字段可有可无。首部的每一行是一个以 32bit 为单位的数据,最高位在左边,为 0bit,最低位在右边,为 31bit。4 字节的 32bit 值按照以下次序传输:首先 0-7bit,其次 8-15 比特,然后16-23bit,最后是 24-31bit,这种传输次序称为 big endian 字节序(我们在 C 语言写位操作的算法时常用到该词)。TCP/IP 首部中的所有二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序,其他形式存储的二进制数据,如 little endian 格式,则必须在传输数据之前把首部转化成网络字节序。首部长度是指首部占 32bit 字(4 字节)的数目,因为 4 位的最大值为 15,因此首部最长为 60(4*15=60)字节,也即是说选项部分的最大值为 40 字节,不够 4 的倍数,要用 0 填充,使数据部分的起始地址为 4 的倍数。总长度指整个 IP 数据报的长度,包括首部和数据部分,16bit,最长可达 65535 字节。尽管理论上可以传送一个长达 65535 的 IP 数据报,但协议标准规定的是 1500。3 个标志位主要用来标识分片的 IP 数据报,片位移为分片的数据报的首个字节偏离整个原始数据报的位置。
在这里插入图片描述
以下对 IP 报头中各个字段的内容详细介绍。
 版本为当前使用的 IP 协议版本号,大家最熟悉,用的最多的是 IPv4 版本,当然现在 IPv6 版本用的也越来越多了。本实验使用的是 IPv4 版本,所以在版本字段为 4就表示版本号为 IPv4。
 首部长度是指首部占 32bit 字的数目,因为 4 位的最大值为 15,因此首部最长为 60字节,也即是说选项部分的最大值为 40 字节,不够 4 的倍数,要用 0 填充,使数据部分的起始地址为 4 的倍数。
 服务类型:略。可直接置0
 总长度指整个 IP 数据报的长度,包括首部和数据部分,16bit,最长可达 65535 字节。尽管理论上可以传送一个长达 65535 的 IP 数据报,但实际上还要考虑网络的最大承载能力等因素,故协议标准规定的是 1500。(此处可以开启巨型帧可以达到>9000 字节的大小,在接下来UDP发送中有介绍)。
 3 个标志位主要用来标识分片的 IP 数据报,片位移为分片的数据报的首个字节偏离整个原始数据报的位置。
 报头校验和指 IPv4 数据报报头的校验和。这个数值用来检错用的,用以确保封包被正确无误的接收到。当封包开始进行传送后,接收端主机会利用这个检验值会来检验余下的封包,如果一切无误就会发出确认信息表示接收正常。
 源 IP 地址和目的 IP 地址则是该 IP 报文的发送方和接收方的网络地址,例如在我们前面的实验中,说 FPGA 的 IP 地址为 192.168.0.2,电脑的 IP 地址为 192.168.0.3,

下表为 IP 数据报中上层协议字段常见协议与其对其应的协议号。
在这里插入图片描述
【注:】以上数字均为10进制数据。<


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

相关文章

HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。

用IIS 发布网站&#xff0c;不能访问且出现错误&#xff1a;HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。您无权查看此目录或页面 问题截图&#xff1a; 问题描述&#xff1a;HTTP 错误 401.3 - 未经授权&#xff1a;访问由于 A…

为什么在token在http请求头中的Authorization要加Bearer前缀?

为什么在token在http请求头中的Authorization要加Bearer前缀&#xff1f; token认证方式一般是放在http的请求头中Authorization字段&#xff0c;那么有两种形式&#xff1a; Authorization : Bearer eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJCRkwiLCJhdWQiOiJDaGluYU1vYmlsZSIsImV4…

指针(二)------字符指针+数组指针+指针与数组(传参)

&#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C语言 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学习编程知识 前言&#xff1a; 在指针&#xff08;一&#xf…

用于大规模 MIMO 检测的近似消息传递 (AMP)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

为什么定时发朋友圈会更有效呢?

这是因为在同一时段 发送的好友朋友圈 无法有效分散用户的注意力 导致曝光度难以提升 而通过推广定时发朋友圈 可根据自己的粉丝活跃度 设置发圈时间 让每一条朋友圈都能高效 传递到更多的好友手中 这样&#xff0c;曝光度自然而然地就大大提升了&#xff01; 1.多个号…

Spring面试题2:说一说IOC控制反转以及底层是如何实现的?说一说面向切面的编程(AOP)以及底层是如何实现的?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说IOC控制反转以及底层是如何实现的? IoC(Inversion of Control,控制反转)是Spring框架的核心概念之一。它是一种设计原则,通过将对象的…

获取el-select选中的下标

accountZbList:[ ]:下拉列表已通过接口获取数据 <el-row><el-col :span"12"><el-form-item label"账簙" prop"accountTook" class"itemzb"><el-select v-model"tableForm.accountTook" placeholder&…

竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…