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

2023-10-06 11:50

本文主要是介绍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的大数据报合理地分解成多个小片段,以适应不同链路的传输要求。接收方可以根据序列号将这些分片重新组装,得到与发送方完全相同的原始数据。

这篇关于lv7 嵌入式开发-网络编程开发 12 IP协议与ethernet协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/152971

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~