lv7 嵌入式开发-网络编程开发 12 IP协议与ethernet协议

目录

1 IP协议作用和意义

2 IP数据报首部格式

3 IP数据报分片

4 以太网协议作用和意义(链路层)

5 练习


1 IP协议作用和意义

IP网的意义 

  • 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。
  • 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。

网络互联使用路由器,路由器转发的都是IP协议

分组在互联网中的传送过程

分组传输路径

2 IP数据报首部格式

  • 版本——占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)
  • 首部长度——占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节
  • 区分服务——占 8 位,用来获得更好的服务(优先级)。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段
  • 总长度——占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节总长度必须不超过最大传送单元 MTU
  • 标识 (identification) ——占 16 位, 它是一个计数器,用来产生 IP 数据报的标识
  • 标志(flag) ——占 3 位,目前只有前两位有意义。 标志字段的最低位是 MF (More Fragment)。 MF=1 表示后面还有分片,MF=0 表示最后一个分片。 标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF=0 时才允许分片
  • 片偏移——占 13 位,指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位

3 IP数据报分片

IP数据报分片是指在网络传输过程中,当一个IP数据报的大小超过了网络链路的最大传输单元(Maximum Transmission Unit, MTU)时,将该数据报分成多个较小的片段进行传输的过程。

IP数据报分片通常发生在发送方的路由器上,以适应不同链路的传输要求。当一个IP数据报需要在某个链路上传输,但其大小超过了该链路的MTU时,发送方的路由器会将数据报分成多个片段。这些片段会被分配序列号,并分别打上标记表示它们是同一个数据报的一部分。

在接收方的路由器或目标主机上,它们会重新组装这些分片,按照序列号将它们合并成完整的IP数据报。这样,接收方就能够得到和发送方完全相同的原始数据。

IP 数据报首部中与分片有关的字段中的数值 

标识相同,DF=0才允许分片,MF=0代表最后的数据报

总长度

标识

MF

DF

片偏移

原始数据报

3820

12345

0

0

0

数据报片1

1420

12345

1

0

0

数据报片2

1420

12345

1

0

175

数据报片3

1020

12345

0

0

350

IP 数据报首部的固定部分中的各字段 

  • 生存时间——占 8 位,记为 TTL (Time To Live), 指示数据报在网络中可通过的路由器数的最大值(最多255)。 
  • 协议——占 8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分上交给那个处理过程
  • IP 协议支持多种协议,IP 数据报可以封装多种协议 PDU。
  • 首部检验和,只检验首部。

ICMP(Internet Control Message Protocol)是一种网络协议,主要用于在IP网络中传递控制消息。ICMP报文通常被用于测试和调试网络,比如网络测量、故障诊断、路由器交互等。

ICMP报文包含一个类型字段和一个代码字段。类型字段表示该报文的作用,通常包括echo回显请求、目的不可达、时间超时等等,而代码字段则更加具体地描述了该类型消息的细节。

比如,ICMP的echo回显请求报文(Type=8)会被发送方发送到目标主机上,目标主机需要根据该报文的内容向发送方返回一个echo回显响应(Type=0),以表明主机之间的连通性。

IGMP(Internet Group Management Protocol)是一种多播协议,主要用于管理多播组或频道的成员关系。IGMP一般运行在网络层上,可以与IP协议一起工作。

使用IGMP时,当主机要加入或离开一个多播组时,它会向所在的局域网发送一个IGMP报文,请求或通知局域网上的路由器,告知它当前主机的多播组成员状态。

路由器会根据收到的IGMP报文进行相应处理,如果发现没有任何主机对该多播组感兴趣,那么它就不会将多播数据包传送到该局域网中,以避免不必要的网络负载。

因此,在一个多播网络中,IGMP可以帮助路由器和主机有效地管理多播组成员关系,并避免造成不必要的网络拥塞。

4 以太网协议作用和意义(链路层)

数据链路层的地位

数据链路层信道类型  

使用一对一的点对点通信方式。(ppp)

使用一对多的广播通信方式。

必须使用专用的共享信道协议来协调这些主机的数据发送。

以太网 V2 的 MAC 帧格式

类型字段用来标志上一层使用的是什么协议, 以便把收到的 MAC 帧的数据上交给上一层的这个协议。(mac地址与ip地址的关系是arp协议)

数据字段的正式名称是 MAC 客户数据字段。 最小长度 64 字节 - 18 字节的首部和尾部 = 数据字段的最小长度(46字节) 举例:MTU是根据链路层规定,如IP数据报最大1500,目标地址6,源地址6,类型2,FCS4,那么MTU最大1518。

无效的 MAC 帧

数据字段的长度与长度字段的值不一致;

帧的长度不是整数个字节;

用收到的帧检验序列 FCS 查出有差错;(CRC算法得出的内容叫做FCS)

数据字段的长度不在 46 ~ 1500 字节之间。

有效的 MAC 帧长度为 64 ~ 1518 字节之间。

5 练习

举例说明IP分片是如何进行的?

当一个IP数据报的大小超过了网络链路的最大传输单元(MTU)时,发送方的路由器会将该数据报进行分片,以下是一个具体的示例:

假设发送方有一个大的IP数据报,大小为1800字节,而链路的MTU为1500字节。

  1. 发送方的路由器首先检查数据报的大小是否超过了链路的MTU。如果超过了,就需要进行分片。

  2. 路由器根据链路的MTU大小(1500字节),将原始数据报分成两个片段。

    第一个片段:包含前面的1500字节数据,剩余300字节被截断。 第二个片段:包含剩余的300字节数据。

  3. 每个分片都会被分配一个序列号,并设置相应的标志位来指示它们是同一个数据报的一部分。

  4. 发送方的路由器将这两个分片分别封装成新的IP数据报,并在其中设置相应的分片信息。

  5. 这两个分片进入网络后,可能经过不同的路径到达目标主机。

  6. 目标主机或接收方的路由器接收到这些分片后,根据它们的序列号和标志位,进行重新组装。

  7. 目标主机成功地将两个分片重新组装成原始的IP数据报,恢复了原始的1800字节数据。

通过IP分片,发送方就能够将超过MTU的大数据报合理地分解成多个小片段,以适应不同链路的传输要求。接收方可以根据序列号将这些分片重新组装,得到与发送方完全相同的原始数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149774.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中实现自定义编辑邮件发送到指定邮箱(纯前端实现)

formspree里面注册账号 注册完成后进入后台新建项目并且新建表单 这一步完成之后你将得到一个地址 最后就是在项目中请求这个地址 关键代码如下: submitForm() {this.fullscreenLoading true;this.$axios({method: "post",url: "https://xxxxxxx…

golang gin框架1——简单案例以及api版本控制

gin框架 gin是golang的一个后台WEB框架 简单案例 package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {//以json形式输出,还可以xml protobufc.JSON…

【数据结构初阶】六、线性表中的队列(C语言 -- 链式结构实现队列)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】五、线性表中的栈(C语言 -- 顺序表实现栈)_高高的胖子的博客-CSDN博客 1 . 队列(Queue) 队列的概念和结构&#xf…

mysql面试题16:说说分库与分表的设计?常用的分库分表中间件有哪些?分库分表可能遇到的问题有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说说分库与分表的设计? 在MySQL中,分库与分表是常用的数据库水平扩展技术,可以提高数据库的吞吐量和扩展性。下面将具体讲解MySQL中分库与分表…

W25Q128芯片手册精读

文章目录 前言1. 概述2. 特性3. 封装类型和引脚配置3.1 8焊盘WSON 8x6 mm3.2其他封装 4. 引脚描述4.1 片选4.2 串行数据输入输出4.3 写保护4.4 保持脚4.5 时钟 5. 块图6. 功能描述6.1 SPI功能6.1.1 标准SPI6.1.2 双通道SPI6.1.3 四通道SPI6.1.4 保持功能 6.2 写保护6.2.1 写保护…

Python逐日填补Excel中的日期并用0值填充缺失日期的数据

本文介绍基于Python语言,读取一个不同的列表示不同的日期的.csv格式文件,将其中缺失的日期数值加以填补;并用0值对这些缺失日期对应的数据加以填充的方法。 首先,我们明确一下本文的需求。现在有一个.csv格式文件,其第…

C/C++——内存管理

1.为什么存在动态内存分配 灵活性 静态内存分配是在编译时确定的,程序执行过程中无法改变所分配的内存大小;动态内存分配可以根本程序的运行环境来动态分配和释放空间,提供了更大的灵活性 动态数据结构 有些数据结构的大小和结构在编译时…

隐式意图和Activity启动模式:实现文件打开应用【Android、隐式意图】

隐式意图和Activity启动模式:实现文件打开应用 在Android开发中,隐式意图和Activity启动模式是两个重要的概念。它们可以用于实现不同应用之间的协作和交互。在本篇博客中,我们将探讨如何创建一个Android应用,该应用可以从外部应…

IEEE802系列协议知识点总结

IEEE 802 协议包含了以下多种子协议。把这些协议汇集在一起就叫IEEE 802 协议集。 (1)IEEE802.1 IEEE 802.1协议提供高层标准的框架,包括端到端协议、网络互连、网络管理、路由选择、桥接和性能测量。 •IEEE 802.1d:生成树协议(Spanning Tree Protocol&#xff0c…

C++笔记之不同buffer数量下的生产者-消费者机制

C笔记之不同buffer数量下的生产者-消费者机制 文章目录 C笔记之不同buffer数量下的生产者-消费者机制0.在不同的缓冲区数量下,生产者-消费者机制的实现方式和行为的区别1.最简单的生产者-消费者实现:抄自 https://mp.weixin.qq.com/s/G1lHNcbYU1lUlfugXn…

基于虚拟阻抗的下垂控制——孤岛双机并联Simulink仿真

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Oracle Database Express Edition (XE)配置与部署

获取下载安装包 https://www.oracle.com/cn/database/technologies/xe-downloads.htmlhttps://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html安装.rpm安装包 cd /usr/local/src wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-d…

Vue中如何进行分布式搜索与全文搜索(如Elasticsearch)

在Vue中实现分布式搜索与全文搜索(使用Elasticsearch) 分布式搜索和全文搜索在现代应用程序中变得越来越重要,因为它们可以帮助用户快速查找和检索大量数据。Elasticsearch是一种强大的分布式搜索引擎,它可以用于实现高性能的全文…

Gmail 将停止支持基本 HTML 视图

根据 Google 支持文档的更新内容,Gmail 将从明年 1 月起停止支持基本 HTML 视图。 ▲ Gmai 基本 HTML 视图界面 目前网页版 Gmail 提供两个界面:基本 HTML 视图和标准视图。停止支持基本 HTML 视图后,当前打开经典模式的基本 HTML 视图模式 …

苹果签名的MDM(Mobile Device Management)?是怎么做的?优势是什么?什么场合需要应用到?

苹果签名有多少种类之TF签名(TestFlight签名)是什么?优势是什么?什么场合需要应用到? 苹果签名有多少种类之TF签名(TestFlight签名)是什么?优势是什么?什么场合需要应用到? MDM&am…

基于Matlab求解高教社杯数学建模竞赛(cumcm2010A题)-储油罐的变位识别与罐容表标定(附上源码+数据+题目)

文章目录 题目解题源码数据下载 题目 通常加油站都有若干个储存燃油的地下储油罐,并且一般都有与之配套的“油位计量管理系统”,采用流量计和油位计来测量进/出油量与罐内油位高度等数据,通过预先标定的罐容表(即罐内油位高度与储…

lv7 嵌入式开发-网络编程开发 11 TCP管理与UDP协议

目录 1 TCP管理 1.1 三次握手 1.2 四次挥手 1.3 保活计时器 2 wireshark安装及实验 3.1 icmp协议抓包演示 3.2 tcp协议抓包演示 3 UDP协议 3.1 UDP 的主要特点: 4 练习 1 TCP管理 1.1 三次握手 TCP 建立连接的过程叫做握手。 采用三报文握手&#xff1…

机器学习笔记 - 深入研究spaCy库及其使用技巧

一、简述 spaCy 是一个用于 Python 中高级自然语言处理的开源库。它专为生产用途而设计,这意味着它不仅功能强大,而且快速高效。spaCy 在学术界和工业界广泛用于各种 NLP 任务,例如标记化、词性标注、命名实体识别等。 安装,这里使用阿里的源。 pip install spacy…

2023版 STM32实战6 输出比较(PWM)包含F407/F103方式

输出比较简介和特性 -1-只有通用/高级定时器才能输出PWM -2-占空比就是高电平所占的比例 -3-输出比较就是输出不同占空比的信号 工作方式说明 -1-1- PWM工作模式 -1-2- 有效/无效电平 有效电平可以设置为高或低电平,是自己配置的 周期选择与计算 周期重…

华为云云耀云服务器L实例评测|安装搭建学生成绩管理系统

1.前言概述 华为云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。多种产品规格,满足您对成本、性能及技术创新的诉求。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在…