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.mzph.cn/news/95748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql面试题10:MySQL中有哪几种锁?表级锁、行级锁、页面锁区别和联系?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Mysql中有哪几种锁? 在MySQL中,主要有以下几种类型的锁: 共享锁(Shared Lock):也称为读锁。多个事务可以同时持有共享锁,可以读取但不能修…

浏览器渲染原理

1 浏览器是如何渲染页面的? 浏览器的渲染 render 将 html 字符串 --> 像素信息 function render(html) {// ...return pixels; }网络:拿 HTML(JS和CSS也在HTML中); 渲染:渲染; 当浏览器的 …

c语言系统编程之多进程

程序与进程的区别? 程序是静态的未运行的二进制文件,存储在磁盘中 进程是已经运行的二进制文件,存储在内存中 进程的内存划分图有哪几部分? 堆(存储malloc和calloc出来的空间)、栈(局部变量…

Windows10实用的12个快捷组合键

Windows10实用的12个快捷组合键 1、网页多标签切换 CTRL TAB 2、恢复不小心关闭的标签页 CTRLSHIFT T 3、新建标签页 CTRL T 4、高亮选择地址栏 ALT D 5、打开设置 WIN I 6、打开任务管理器 CTRLSHIFT ESC 7、打开文件资源管理器 WIN E 8、黑屏或屏幕卡顿无响应&#x…

面试题: Spring AOP是如何实现的? 它和AspectJ有什么区别?

Spring AOP是如何实现的? 它和AspectJ有什么区别? 背景答案SpringAOP实现与AspectJ区别AOP 的几种实现方案 个人评价 背景 想换工作, 学习一下面试题, 算是学习记录的输出. 答案 SpringAOP实现 Spring AOP 是利用的动态代理的机制, 如果一个Bean 实现了接口, 那么就会采用…

国庆中秋宅家自省: Python在Excel中绘图尝鲜

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 Python3数据科学包系列(三):数据分析实战 【一】国庆中秋: 悟 【国…

完美清晰,炫酷畅享——Perfectly Clear Video为你带来卓越的AI视频增强体验

在我们日常生活中,我们经常会拍摄和观看各种视频内容,无论是旅行记录、家庭聚会还是商务演示,我们都希望能够呈现出最清晰、最精彩的画面效果。而现在,有一个强大的工具可以帮助我们实现这一目标,那就是Perfectly Clea…

出去重复的列值(关键词:distinct)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: select distinct 列名 from 表名; 案例:查询emp表中,员工的职位(job),并去重…

网络层·IP协议

承接前文TCP协议-CSDN博客 简介 协议头格式 网段划分(重要) 划分方法 IP地址的数量限制(背景介绍) 私有IP地址和公网IP地址(提出解决思路) NAT技术(解决方法) 路由 网络层 在复杂的网络环境中确定一个合适的路径 IP协议 主机: 配有IP地址, 可以认为就是你的电脑; 路由器:…

计算机网络基础(一):网络系统概述、OSI七层模型、TCP/IP协议及数据传输

通信,在古代是通过书信与他人互通信息的意思。 今天,“通信”这个词的外沿已经得到了极大扩展,它目前的大意是指双方或多方借助某种媒介实现信息互通的行为。 如果按照当代汉语的方式理解“通信”,那么古代的互遣使节、飞鸽传书…

基于帝国主义竞争优化的BP神经网络(分类应用) - 附代码

基于帝国主义竞争优化的BP神经网络(分类应用) - 附代码 文章目录 基于帝国主义竞争优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.帝国主义竞争优化BP神经网络3.1 BP神经网络参数设置3.2 帝国主义竞争算…

Golang interface 接口的应用场景 使用细节

应用场景介绍 对初学者讲,理解接口的概念不算太难,难的是不知道什么时候使用接口,下面我例举几个应用场景: 1.说现在美国要制造轰炸机,武装直升机,专家只需把飞机需要的功能/规格定下来即可,然…

闲聊四种旅游方式

十一长假,先不写那些需要深度思考的话题,先写点轻松的。 关于旅游方式,其实也是受梁斌博士一条微博的一些触动,他说他认识个朋友,自由职业,到处旅游,却从不旺季出行,非常省钱&#x…

1700*C. Number of Ways(贪心前缀和)

Problem - 466C - Codeforces Number of Ways - 洛谷 解析: 首先判断所有数总和是否能被三整除。 之后遍历前缀和数组,如果某个位置的前缀和等于sum/3,则记录。 某个位置前缀和等于sum/3*2则记录答案。 注意由于分成三份,所以同…

微信开放平台第三方开发,实现代小程序备案申请

大家好,我是小悟 微信小程序备案整体流程总共分为五个环节:备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前,需要确保小程序基本信息已填写完成、小程序至少存在一个…

Go Gin Gorm Casbin权限管理实现 - 1. Casbin概念介绍以及库使用

1. 核心概念 核心配置中含两部分模型配置以及策略配置,给出两个示范配置,在此基础上对实际请求进行分析。 1.1 Model 模型文件,存储了请求定义(request_definition),策略定义(policy_definition),匹配规则(matchers)&a…

推荐一款在线的JDK17中文文档

spring6.0及springboot3.0最低版本要求都是java17,换上java17是迟早的事,所以虽然我现在做的是java8,但是后面我想从java8直接飞升到java17,先做个准备,找到一个JDK17的中文文档,是在线的,地址&…

【小沐学Python】各种Web服务器汇总(Python、Node.js、PHP、httpd、Nginx)

文章目录 1、Web服务器2、Python2.1 简介2.2 安装2.3 使用2.3.1 http.server(命令)2.3.2 socketserver2.3.3 flask2.3.4 fastapi 3、NodeJS3.1 简介3.2 安装3.3 使用3.3.1 http-server(命令)3.3.2 http3.3.3 express 4、PHP4.1 简…

【MVC】C# MVC基础知识点、原理以及容器和管道

给自己一个目标,然后坚持一段时间,总会有收获和感悟! 国庆假期马上结束,闲暇时间,重温一遍C#关于MVC的技术,控制器、视图、模型,知识点和原理,小伙伴们还记得吗 目录 一、MVC知识点1…

Python柱形图

柱形图 柱形图,又称长条图、柱状统计图、条图、条状图、棒形图,是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析…