以太网通信之UDP

news2024/9/21 22:45:06

免责声明:

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

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

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

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

目录

前言

一、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.coloradmin.cn/o/2106202.html

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

相关文章

使用堆叠 LSTM 模型预测市场趋势

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 本文主要介绍预测市场趋势的一种研究方法,这一研究的重点是利用堆栈式长短期记忆(LSTM)网络预测股票价格。这种方法利用先进的神经网络架构,根据历史价格数据分析和预测市场趋势。并展示了如何通…

图像边缘检测技术详解:利用OpenCV实现Sobel算子

图像边缘检测技术详解:利用OpenCV实现Sobel算子 前言Sobel算子的原理代码演示结果展示结语 前言 在数字图像处理的广阔领域中,边缘检测技术扮演着至关重要的角色。无论是在科学研究、工业自动化,还是在日常生活中的智能设备中,我们…

出现 TypeError: Cannot read properties of undefined (reading ‘getUserMedia‘) 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 调用摄像头的时候出现如下所示: Uncauht (in promise) TypeError: Cannot read properties of undefined (reading getUserMedia)截图如下: 2. 原理分析 TypeError: Cannot read properties of undefined (reading ‘…

Mysql梳理1——数据库概述(上)

笔记来源:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 https://www.bilibili.com/video/BV1iq4y1u7vj 目录 11.2 引入 11.2. 1 数据库与数据库管理系统 11.2.2 数据库与数据库管理系统的关系 11.2.…

【Python】4.基础语法(4)列表和元组

文章目录 1. 列表是什么, 元组是什么2. 创建列表3. 访问下标4. 切片操作5. 遍历列表元素6. 新增元素7. 查找元素8. 删除元素9. 连接列表10. 关于元组 1. 列表是什么, 元组是什么 编程中, 经常需要使用变量, 来保存/表示数据。 如果代码中需要表示的数据个数比较少, 我们直接创…

【间接经验】高性能调度系统设计总结

原文 他人的间接经验 -> 自己的直接经验 调度模块在很多系统中都是常用的模块,比如实习生的每天签到邮件,预约银行的业务短信,学习通的上课通知,腾讯视频push中台的任务下发,调度系统在中间起到关键作用。 用户画像…

Python中的异或操作

你是否曾经想过,仅仅使用一个简单的符号就能实现数据加密、快速交换变量值,甚至是检测重复元素? 欢迎来到Python异或操作的神奇世界!在这篇文章中,我们将深入探讨这个看似简单却蕴含无限可能的位运算符。 无论你是刚入门的新手,还是想要提升算法技能的资深程序员,这篇文章都将…

每日一练4:牛牛的快递(含链接)

链接&#xff1a; 牛牛的快递_牛客题霸_牛客网 题目&#xff1a; 代码1&#xff1a; #include <iostream> using namespace std;int main() {double mo;char ch;int ret 0;cin >> mo >> ch;if(ch y) ret 5;ret 20;if(mo < 1){cout << ret;re…

LIN总线CAPL函数——计算PID(linGetProtectedID)

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

了解依赖反转原则(DIP)、控制反转(IoC)、依赖注入(DI)及 IoC容器

这篇文章将描述 DIP、 IoC、 DI 和 IoC 容器。大多数情况下&#xff0c;初学者开发人员会遇到 DIP、 IoC、 DI 和 IoC 容器的问题。他们混淆在一起&#xff0c;发现很难辨别他们之间的区别&#xff0c;不知道为什么他们需要使用他们。另一方面&#xff0c;很多人使用 DI&#x…

YOLOv8改进实战 | 注意力篇 | 引入基于跨空间学习的高效多尺度注意力EMA,小目标涨点明显

YOLOv8专栏导航&#xff1a;点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习&#xff0c;并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8 是一种尖端的、最先进的 (SOT…

Centos安装配置Gitea(Ubuntu等系统也可参考)

准备工作 安装好宝塔面板&#xff0c;再进入宝塔面板安装好MySQL&#xff0c;添加配置一个MySQL数据库gitea&#xff0c;用户名和密码也为gitea &#xff08;也可用命令行做相关操作&#xff0c;自行搜索教程&#xff09; 通过终端下载安装git&#xff0c;添加普通用户git&a…

数据库管理-第238期 23ai:全球分布式数据库-架构与组件(20240904)

数据库管理238期 2024-09-04 数据库管理-第238期 23ai&#xff1a;全球分布式数据库-架构与组件&#xff08;20240904&#xff09;1 架构图2 分片数据库与分片3 Shard Catalog4 Shard Director5 Global Service6 管理界面总结 数据库管理-第238期 23ai&#xff1a;全球分布式数…

效率升级,创意无限:2024年必备录屏软件

随着科技的飞速发展与用户需求的多元化趋势&#xff0c;录屏软件市场迎来了前所未有的繁荣景象&#xff0c;各种功能强大、特色鲜明的软件如雨后春笋般涌现。今天&#xff0c;我们将聚焦于那些如同obs录屏般&#xff0c;能够提供快捷操控体验的专业录屏工具。 1.福昕录屏大师 …

第L5周:机器学习:决策树(分类模型)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标&#xff1a; 1. 决策树算法是一种在机器学习和数据挖掘领域广泛应用的强大工具&#xff0c;它模拟人类决策过程&#xff0c;通过对数据集进行逐步的分析和…

Chrome 浏览器插件获取网页 window 对象(方案二)

前言 最近有个需求&#xff0c;是在浏览器插件中获取 window 对象下的某个数据&#xff0c;当时觉得很简单&#xff0c;和 document 一样&#xff0c;直接通过嵌入 content_scripts 直接获取&#xff0c;然后使用 sendMessage 发送数据到插件就行了&#xff0c;结果发现不是这…

Python(TensorFlow)和MATLAB及Java光学像差导图

&#x1f3af;要点 几何光线和波前像差计算入瞳和出瞳及近轴光学计算波前像差特征矩阵方法计算光谱反射率、透射率和吸光度透镜像差和绘制三阶光线像差图和横向剪切干涉图分析瞳孔平面焦平面和大气湍流建模神经网络光学像差计算透镜光线传播几何偏差计算像差和像散色差纠正对齐…

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

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

嵌入式全栈开发学习笔记---C++(函数/类模板)

目录 函数模板 模板机制 函数模板语法 函数模板和普通函数的区别 函数模板和普通函数调用规则 函数模板机制 排序模板函数 类模板 类模板语法 模板继承 类模板中的static关键字 模板声明 .hpp文件 类模板小结 上节学习了运算符重载&#xff0c;本节开始学习函数模…

使用 GZCTF 结合 GitHub 仓库搭建独立容器与动态 Flag 的 CTF 靶场+基于 Docker 的 Web 出题与部署+容器权限控制

写在前面 关于 CTF 靶场的搭建&#xff08;使用 CTFd 或者 H1ve&#xff09;以及 AWD 攻防平台的搭建&#xff0c;勇师傅在前面博客已经详细写过&#xff0c;可以参考我的《网站搭建》专栏&#xff0c;前段时间玩那个 BaseCTF&#xff0c;发现它的界面看着挺不错的&#xff0c…