以太网通信之UDP

免责声明:

本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。

读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证。

本文所涉及的任何商标、版权或其他知识产权均属于其各自的所有者。若本文中引用了第三方的资料或信息,引用仅为学术交流目的,不构成对第三方内容的认可或保证。

若有任何疑问或需进一步信息,请联系本文作者或相关专业人士。

目录

前言

一、OSI

二、IP协议

IPv4 协议结构

IPv6 协议结构

三、UDP协议

UDP 数据报结构

UDP 数据部分

特点

四、理解UDP和ARP的关系及其在网络通信中的作用

1. 协议层次

2. 数据流动过程

五、参考的原文


前言

在本章中,我们将继续深入阅读正点原子的《达芬奇 Pro FPGA 开发指南》,探讨以太网通信的相关知识。这将为我后续讲解基于ZYNQ-UltraScale+的UDP使用奠定坚实的基础。


一、OSI

OSI(开放系统互联模型,Open Systems Interconnection Model)是一个网络通信模型,由国际标准化组织(ISO)于1984年提出。该模型用于促进不同计算机系统之间的通信,定义了网络通信的各个层次和标准。OSI模型分为七个层次,每个层次都有特定的功能和任务:

  1. 物理层(Physical Layer):负责传输原始比特流,包括电气、机械、光学和功能规范。它定义了硬件设备的电气特性和信号传输方式。

  2. 数据链路层(Data Link Layer):确保数据的可靠传输,处理错误检测和纠正,定义数据帧的格式,并控制流量。常见协议包括以太网和PPP(点对点协议)。

  3. 网络层(Network Layer):负责数据包的传输和路由选择,确保数据在不同网络之间有效传送。主要协议有IP(互联网协议)。

  4. 传输层(Transport Layer):提供端到端的通信服务,负责数据的分段、重组和流量控制,确保数据完整性和可靠性。常见协议包括TCP(传输控制协议)和UDP(用户数据报协议)。

  5. 会话层(Session Layer):管理用户会话和连接,提供建立、管理和终止会话的机制,确保在两个应用程序之间进行有效的通信。

  6. 表示层(Presentation Layer):处理数据格式的转换和加密解密,确保不同系统之间的数据能被理解。它负责数据的表示和语法。

  7. 应用层(Application Layer):为用户提供网络服务,直接与用户的应用程序交互。常见的协议包括HTTP、FTP、SMTP等。

OSI模型通过将网络通信划分为七个层次,使得网络协议的开发和实施更加系统化和模块化,有助于不同厂商的设备和系统之间的互操作性。虽然在实际应用中,许多协议并没有严格遵循OSI模型,但它仍然是网络通信的一个重要理论框架。

二、IP协议

IP协议有两个主要版本:IPv4 和 IPv6。以下是它们的结构概述。

IPv4 协议结构

IPv4 数据包的结构由一个头部和一个数据部分组成。头部的长度通常为20字节(不包括选项),最大可达60字节。其基本结构如下:

IPv6 协议结构

IPv6 是为了克服 IPv4 的限制而设计的,具有更大的地址空间和一些新的特性。IPv6 数据包的结构如下:

三、UDP协议

UDP(用户数据报协议,User Datagram Protocol)是一个无连接的传输层协议,提供简单的、面向数据报的服务。UDP适用于需要快速传输和较少开销的应用,比如视频流、游戏和语音通信。以下是UDP协议的结构:

UDP 数据报结构

UDP数据报由一个头部和数据部分组成。UDP头部的固定长度为8字节。其结构如下:

UDP 数据部分

UDP数据部分可以是可变长度的,包含了应用层要传输的实际数据。UDP并不对数据进行分段,因此如果数据超过了最大传输单元(MTU),需要在应用层进行处理。

特点

  • 无连接:UDP不建立连接,因此开销较小,适合快速传输。
  • 面向数据报:每个UDP数据报是独立的,不保证顺序、完整性和可靠性。
  • 简单性:UDP的头部非常简单,只有8个字节的固定长度,这使得UDP的处理速度非常快。

UDP的设计理念是以速度和效率为优先,适合对延迟敏感的应用。虽然UDP没有TCP提供的可靠性机制,但在某些场景中,其快速传输特性更为重要。

四、理解UDP和ARP的关系及其在网络通信中的作用

UDP并不封装在ARP中,ARP和UDP是两个不同层次的协议,分别位于网络协议栈的不同层。以下是对它们之间关系的详细解释:

1. 协议层次

  • ARP(地址解析协议)

    • 位于链路层(数据链路层),用于将IP地址转换为MAC地址。ARP负责在同一局域网内找到设备的物理地址(MAC地址),以便数据包能够正确发送到目标设备。
  • UDP(用户数据报协议)

    • 位于传输层,主要负责在网络上进行数据传输。UDP将应用层的数据封装为数据报,并通过网络进行发送。

2. 数据流动过程

UDP数据的发送

当应用层需要发送数据时,它将数据传递给UDP,UDP封装数据为UDP数据报。

构建IP包

UDP数据报随后被封装在IP包中,IP包包含了源和目标的IP地址。

链路层的处理

在链路层,IP包需要通过ARP找到目标设备的MAC地址。此时,源设备会检查其ARP缓存,如果没有找到目标MAC地址,则会发送ARP请求。

ARP的作用

ARP请求是以广播的形式发送,网络中的所有设备都会接收到该请求。拥有该IP地址的设备会发送ARP应答,提供其MAC地址。

发送以太网帧

一旦源设备获得了目标设备的MAC地址,它就可以将IP包(包含UDP数据报)封装在以太网帧中并发送出去。

五、参考的原文


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

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

相关文章

DML、DQL、DCL的基础介绍

1.DML、DQL、DCL 1.1DML-介绍 DML英文全称Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作 添加数据(INSERT)修改数据(UPDATE)删除数据(DEL…

github中action作用和讲解

1,简介 GitHub Actions 是 GitHub 的一个自动化功能,它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务,比如: 自动测试:每当代码被推送到仓库时,自动运行测试…

SpringBoot2:RESTFUL风格接口开发及源码解读

一、RESTFUL简介 Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改…

开源vscode AI插件

1、twinny - AI Code Completion and Chat 2、Continue - Codestral, Claude, and more 3、Cody: AI Coding Assistant with Autocomplete & Ch

报错:java:程序包org.springframework.boot不存在

Date: 2024.08.31 18:01:20 author: lijianzhan 简述:关于java:程序包org.springframework.boot不存在问题如何进行修复。 操作如下: 点击左侧菜单栏选择设置,弹框内选择构建,执行,部署----->构建工具点击Maven按键&#xf…

Kafka-设计原理

ControllerLeader - PartitionRebalance消息发布机制HW与LEO日志分段 Controller Kafka核心总控制器Controller:在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理…

Java的IO模型详解-BIO,NIO,AIO

文章目录 一、BIO相关知识读写模型BIO 概述BIO 特点BIO 实现示例服务器端客户端 二、NIO相关知识点读写模型NIO 核心概念NIO 特点NIO 实现示例服务器端客户端 三、AIO相关知识读写模型AIO 概念AIO 组件AIO 特点AIO 实现示例服务器端客户端 总结 一、BIO相关知识 Java 的 BIO (…

从0开始学杂项 第八期:流量分析(2) 数据提取

Misc 学习(八) - 流量分析:数据提取 这一期,我们主要写一下如何进行比较繁多的数据的提取。 使用 Tshark 批量提取数据 有时候,我们会需要从多个包中提取数据,然后再进行截取和组合,比如分析…

人机环境系统智能与Petri网

人机环境系统工程是一门新兴的交叉学科,它以人、机、环境为系统,研究系统整体的优化。而 Petri 网是一种用于描述和分析系统动态行为的图形化建模工具。 在人机环境系统中,智能体现在人、机、环境三个要素之间的相互作用和协同工作。人的智能…

嵌入式24千兆电口+4万兆光口管理型三层交换机RTL9301模块

核心模块概述: 嵌入式RTL9301模块可以支持4口万兆上联24口千兆三层管理型以太网交换机,也就是最多可以提供24个10/100/1000自适应电口、4个10 Gb SFP 端口、1个console口、1个USB串口。 完善的安全控制策略及CPU保护策略(CPU protect policy)提高容错能力&#xff0…

振动分析-25-频域分析之深入理解包络分析的计算过程

1 拍和幅值调制的区别 1.1 拍的现象 当两个幅值和频率相近的简谐波进行叠加时,会出现幅值忽高忽低的现象,也就是所谓的“拍”现象,但它又不同于幅值调制,虽然在时域上表现相同:都是幅值忽高忽低,但二者有着本质的区别。 当同方向的两个频率相差不大的简谐波叠加时,叠…

QT 信号和槽

效果 代码 在窗体的头文件中定义信号函数,注意只定义不实现 信号的返回值类型都是 void 后面是函数名() 槽函数可以有参数。一定要实现 //信号和槽函数绑定 connect(ui->btnSignalsSlots,SIGNAL(clicked()),this, SLOT(ViewSlot())); connect()函数是一个…

【unity实战】利用Root Motion+Blend Tree+Input System+Cinemachine制作一个简单的角色控制器

文章目录 前言动画设置Blend Tree配置角色添加刚体和碰撞体代码控制人物移动那么我们接下来调整一下相机的视角效果参考完结 前言 Input System知识参考: 【推荐100个unity插件之18】Unity 新版输入系统Input System的使用,看这篇就够了 Cinemachine虚…

Burp Suite Professional 2024.8 for macOS x64 ARM64 - 领先的 Web 渗透测试软件

Burp Suite Professional 2024.8 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件 世界排名第一的 Web 渗透测试工具包 请访问原文链接:https://sysin.org/blog/burp-suite-pro-mac/,查看最新版。原创作品,转载请保留出处。 作者主页…

vivado 创建时间约束1

步骤3:创建时间约束 在此步骤中,您打开合成的设计并使用AMD Vivado™定时约束 男巫定时约束向导分析门级网表并发现缺失 约束。使用“定时约束”向导为此设计生成约束。 1.在“流导航器”中,单击“打开综合设计”。 2.当综合设计打开时&#…

Java | Leetcode Java题解之第385题迷你语法分析器

题目&#xff1a; 题解&#xff1a; class Solution {public NestedInteger deserialize(String s) {if (s.charAt(0) ! [) {return new NestedInteger(Integer.parseInt(s));}Deque<NestedInteger> stack new ArrayDeque<NestedInteger>();int num 0;boolean n…

微链接: 利用 MinIO 实现计算和存储的还原

Microblink 是一家专门从事图像检测的 AI 公司。他们从 BlinkID、BlinkID Verify 和 BlinkCard 等产品开始进入身份空间。最近&#xff0c;他们的图像检测能力催生了可以处理其他类型图像的产品。例如&#xff0c;可以对收据执行产品检测&#xff0c;从而使用收据上的产品描述来…

【图解版】Likes Vs Dislikes——C语言提高题【7 kyu】

一、原题 链接&#xff1a;Training on Likes Vs Dislikes | Codewars YouTube had a like and a dislike button, which allowed users to express their opinions about particular content. It was set up in such a way that you cannot like and dislike a video at the…

云原生 | 在 Kubernetes 中使用 Cilium 替代 Calico 网络插件实践指南!

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 简述介绍 什么是 Cilium? Cilium 是一款开源软件,它基于一种名为eBPF的新的Linux内核技术提供动力,用于透明地保护使用 Docker 和 Kubernetes 等Linux 容器管理平台中部署的应用程序服务之间的网络连接,Ciliu…

kubernetes中的ParallelizeUntil()框架源码解读与使用

概述 摘要&#xff1a;本文从源码层面解读了kubernetes源码中常用的workqueue.ParallelizeParallelizeUntil()框架的源码实现&#xff0c;并且本文也将举例说明了workqueue.ParallelizeUntil()方法的典型使用场景。 正文 说明&#xff1a;基于 kubernetes v1.18.0 源码分析 …