UDP协议新认知

千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP发送) 本章将讲解千兆以太网传输层 UDP 协议的相关内容。学习 UDP 层协议的内容,核心也是明确该协议的数据字段格式。在此基础上,理解其“不可靠、无连接”的传输特性。同时,结合前面章节的内容,进一步深化理解用户数据、UDP、IP、MAC 层的层层打包嵌套关系。 阅读详情

应用场景

在传输层上,进程每个操作,都会产生一个udp数据报,这个不同于tcp协议,tcp会对数据进行分段,成为一个个tcp报文段,再传输给网络层,每个tcp报文的可靠性通过tcp层来保证。但是udp并没有提供如此多的可靠性,从其首部8个字节,于tcp首部20个字节相比,就显得功能弱了很多。但是这并不是说udp就比tcp差,有时候应用场景上,还真得用udp,而不适合可靠性强的tcp,比如音视频,数据传输基本通过udp,因为在线视频,丢失了几个包,可能用户肉眼看不出区别,丢失大的时候,最多就卡顿一下。但是如果是保证可靠性、有序性的tcp协议,当数据包中间丢失了几个,导致整个数据流都不能使用(一直在使用超时重传的步骤),这可能就是致命的。还有qq的文件传输,以及现在一些开源的im通信框架,都是投向udp的怀抱。一般在操作系统上,tcp和udp提供是两种服务,但是经常会使用同一个端口号,这不是两个协议规定的,而是作为用户的我们,在使用习惯和方便的角度上去考虑的。

首部校验和

udp和tcp的检验和,取用的数据是数据内容+头部进行计算,这样可以保证我们的数据可以不被篡改。而ip的首部校验和一般就只有ip的首部进行计算,因为内容已经通过传输层计算过了,保证过了,这里ip只要保证其目标ip,源ip等信息正确就可以了。

IP分片

上面说到,进程每个操作产生一个udp数据报,如果这个操作数据量非常大,按照tcp/ip协议的模型,往网络层再加上ip首部,往链路层再封装成数据帧,那么好像最后分组的长度非常大,但是我们知道在网络传输链路上,有一个叫MTU的东西,保证端到端之间,最大的传输单元,所以对于没法自己切割数据报的udp,在网络层,就需要进行切割了,而这个切割,就成为ip分片。基本流程是:
首先udp产生了非常大的数据报,传输到网络层,网络层通过下面的接口层,查看待发送接口的MTU大小,如果此时的ip数据报大于MTU,那么就要进行数据分片了。接着假设需要分片成两份,将源数据报进行首部进行复制,然后“塞满”整个数据区域,记录数据字节大小,已经标记未完的“+”标识。下一个分片中,就要需要记录数据的偏移量(头一个的偏移量也要记录,当时在上一个,就是0),数据字节大小,没有标识。这样在接收的时候,根据有没有“+”就知道数据是否已经完成了。
注意,ip分片的“分”的过程,不仅仅是源数据端,还有中间路由器也有可能分片,但是分片的“合”,就是目的主机上了。为什么中间路由也要分片?假设A发送数据给D,但是要经过路由器B和路由器C,A与B之间的MTU相对较大,所以不需要分片或者分片成较大数据报,但是B和C的MTU比较小,那么数据报经过B后,就要将分片大于MTU的数据报再进行分片。一般以太网上最大数据帧长度是1500B,而1500B还有包括20字节的ip首部和8字节的udp首部,那么数据区域长度就是1472B了(如果是tcp,因为tcp首部长度比较长,最大数据区域剩下1460)。
ip分片有个很大很严重的问题,就是如果在中间路由进行分片,对源主机是透明的,如果发生丢包,源主机是无法判断丢失了哪一个包,所以只能,把这段数据再发一次。。。。这看起来很糟糕,但是因为不像tcp那样,可以可靠控制数据报文段,所以tcp一般是不会让其发生ip分片的,这个在udp上,也尽量少用。

icmp不可达差错

上文说到了ip分片的不合理性,所以有时候会通过数据包进行标记(DF),标识这个数据报不进行分片。这个似乎有点流氓,分片与否好像不是你能决定的,所以带着DF标记的数据报,在小的MTU链路上,还是要进行分片,所以卡在的那个路由器上,就会返回ICMO不可达差错,怂了,还是要进行分片。

千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP接收) 在前面我们对以太网 UDP 帧格式做了讲解,UDP 帧格式包括前导码+帧界定符、以太网头部数据、IP 头部数据、UDP 头部数据、UDP 数据、FCS 数据,以太网接收模块同样是按照该格式接收数据。 阅读详情

相关推荐

FPGA 39 ,FPGA 网络通信协议栈进阶,RGMII、ARP、UDP 协议与模块设计( RGMII、ARP、UDP原理与模块设计 )

⭐在《FPGA 38 ,FPGA 网络通信协议栈基础,ARP 协议深度解析与模块划分( ARP与以太网帧,以及ARP模块常用文件 )》中,我们围绕 ARP 与 以太网帧展开了深入探讨,从 ARP 协议在 OSI 与 TCP/IP 模型中的定位,到以太网帧内 ARP 数据包的结构解析,再到 FPGA 中 ARP 模块的核心设计与功能实现,为 FPGA 网络通信协议栈搭建起重要的底层基石。而网络通信的完整实现,离不开多种协议的协同运作以及对底层时序和接口的精确控制。这里将基于上篇文章的知识积累,进一步深入剖

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 1862

网络编程之UDP通信

UDP的网络编程

bhsjsjs的博客 1316

模电实验室:手把手教你调试共射放大电路静态工作点(避免波形失真)

本文详细介绍了共射放大电路静态工作点的调试方法,帮助避免波形失真问题。从实验准备、电路搭建到静态工作点测量,提供了实用的电阻选值策略和常见波形失真解决方案,适合电子相关专业学生和硬件工程师参考学习。

weixin_42531128的博客 375

UDP学习

前言 在了解UDP之前 ,我们先了解一下网络编程 ,包括三个要素,分别是IP地址、端口号和通信协议,那本文主要讲述的是UDP这种通信协议,以及编程的实现。 一、IP地址 网络中的计算机使用IP地址来进行唯一标识,IP地址有IPv4和IPv6两种类型。IPv4采用十进制或二进制表示形式,十进制是一种比较常用的表示形式,如192.168.1.131,IPv6采用十六进制表示形式,一般不常用。 在Windows系统下,打开cmd,输入命令ipconfig,按回车即可查看。在Linux或Mac系统下,打开终端,使用

向阳而生的博客 2018

使用sklearn学习多项式回归(三)

1,什么是线性 我们无数次提到”线性“这个名词。在支持向量机中,我们也曾经提到最初的支持向量机只能够分割线性可分的数据,然后引入了”核函数“来帮助我们分类那些非线性可分的数据。我们也曾经说起过,比如说决策树,支持向量机是”非线性“模型。所有的这些概念,让我们对”线性“这个词非常熟悉,却又非常陌生——因为我们并不知道它的真实含义。接下来我们看看线性回归模型改进的核心之一:帮助线性回归解决非线性问题。 1.1,变量之间的线性关系 ”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量

理科男同学 5100

Full Range && Limit Range

Full Range && Limit Range1 Full range和Limit Range定义2 为什么会需要Limit Range3 用Full range去显示limit Range图片4 YUV转RGB5 额外 1 Full range和Limit Range定义 我们知道,对于RGB和YUV的色彩空间来说,有个位深(bit-depth)的概念;位深是指记录图像每个像素的色彩通道时所使用的bit数,常见的RGB888,YUV420-8bit。以RGB888为例,其代表R G B

zjhcj1的博客 1万+

关于UDP的两个小问题的研究

问题一:UDP是长连接还是短连接? 答:长连接是指连接建立以后,可以收发多条消息,不会断开;短连接是指连接建立以后,发送一条消息就断开。长连接和短连接的前提都是“建立连接”,都需要有连接,因此是定义在TCP协议中的,UDP协议中没有连接,所以并没有长连接还是短连接的定义。 问题二:UDP能否找到发送来源并回传消息? 答:可以。UDP的报文段中只有消息来源和消息目的地的端口号,并没有IP地址。要定位消息来源,还需要IP地址。IP地址来源于网络层,而UDP在运输层,网络层在向上传递数据到运输层时,可以保留消息来

肯特技术宅的博客 3239

基于Java的OPC UA Server开发指南:从零开始构建高效服务器

本文介绍了如何使用开源项目org.eclipse.milo创建Java OPC UA Server。通过创建Spring Boot项目,添加Milo SDK依赖,定义Namespace类,服务器启动类以及监听器,详细阐述了建立OPC UA Server服务的步骤。启动后,服务器默认监听地址为opc.tcp://localhost:12685,可使用Softing OPC Client进行连接。

洛阳泰山的博客 3023

ICMP协议详解

ICMP协议详解

m0_69926138的博客 9000

高通平台蓝牙学习-- 基于WCN6750 Bluetooth 5.2的讲解

摘要:蓝牙5.2解决方案WCN6750具备多项先进特性:完全兼容5.2标准及ANT+协议,支持2Mbps高速BLE和长距离传输;采用射频集成方案,与WLAN共享天线并支持5G并发;内置功率放大器,支持Class1/2传输;提供双音频流和Slimbus接口优化。其HCI UART接口支持3.2Mbps速率,通过BlueZ协议栈实现蓝牙5.2功能,包括2Mbps模式和长距离传输,符合核心规范要求。(149字)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 3万+

基于R-CNN深度学习的常见手势识别系统:数据集、模型和UI界面的完整实现

卷积神经网络(CNN):用于从图像中提取特征。区域提议网络(RPN):用于生成可能包含手势的候选区域。:将候选区域调整为固定大小,并进行进一步的分类和回归。接下来,我们需要加载一个预训练的Faster R-CNN模型,并对其进行微调。我们将使用# 加载预训练的Faster R-CNN模型# 获取分类器的输入特征数# 替换分类器头部,设置为我们数据集的类别数(假设有5类手势)

YOLO 1000

UDP bind 端口和IP

结论:1、采用TCP通信时,客户端不需要bind()他自己的IP和端口号,而服务器必须要bind()自己本机的IP和端口号;2、若采用UDP通信时(这里是有客户端和服务器之分才这么说的,若是指定特定端口的UDP对等通信则不一样了),客户端也可以不需要bind()他自己的IP和端口号,而服务器需要bind自己IP地址和端口号;原因:1、因为服务器是时时在监听有没有客户端的连接,如果服务器不绑定IP和

small house 1万+

第18章:Ingestion Pipeline 数据摄取流水线

本文介绍了LlamaIndex的IngestionPipeline如何解决合同文档处理中的四大核心问题:不可重复、无追溯、无容错和无法缓存。通过标准化数据处理流程,将手工操作升级为工厂流水线模式,实现数据的可复用、可追踪和高效处理。文章详细阐述了Pipeline的设计原理,包括Transformation的串行编排、缓存机制(基于输入和Transformation的哈希值)以及数据血缘追踪(通过Node的metadata记录处理过程)。

davidwang456的专栏 62

天外客翻译机QUIC协议应用实践

天外客翻译机通过采用QUIC协议,解决了传统TCP在移动网络下的高延迟、队头阻塞和连接迁移等问题。实现在弱网环境下的低延迟语音传输与无缝网络切换,端到端延迟控制在180~250ms,显著提升用户体验。

weixin_32480007的博客 1084

YOLO 系列专栏(二十九)YOLO26 × StarNet 轻量化涨点方案(CVPR 2024)轻量化、主干改进篇 | 星星卷积虽小,却蕴藏着巨大的高效潜力

StarNet 出自 CVPR 2024 轻量化主干网络工作,核心创新是,依靠逐元素乘法实现高阶特征融合,在几乎不增加参数量与 FLOPs 的前提下,大幅提升特征表达能力,天然适合等多任务统一建模。本文将 StarNet 完整替换 YOLO26 原有主干,保留 YOLO26 无 NMS 检测头与轻量化结构,实现,并提供。

qq_36130719的博客 410

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TCP和UDP协议的区别以及原理

TCP和UDP协议的区别以及原理 最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。 一、作用 首先:tcp和udp都是工作再传输层,用于程序之间传输数据的。数一般包含:文件类型,视频类型,jpg图片等。 二、区别 TCP是基于连接的,而UDP是基于非连接的。 tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等 udp的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如

五颜六色的白 6万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

浅谈面向数据报的协议-UDP协议

了。还有两个小问题:1.UDP协议是如何解决。

2301_79035870的博客 1494

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深入理解 UDP 协议:从原理到实战的技术解析

本文解析UDP协议,其是TCP的轻量替代方案,具无连接、不可靠传输、数据报服务、高效传输四大特性,头部仅8字节。对比UDP与TCP在连接方式、可靠性等多维度差异,介绍UDP无连接通信流程、校验和机制及端口复用。还提供实时通信应用的服务器与客户端实现代码,指出UDP存在不可靠传输等局限及应用层增强方案,其适用于实时通信等对延迟敏感场景,总结需依业务权衡速度与可靠性选择协议。

2501_92388952的博客 1596

网络原理——传输层协议UDP

本文主要介绍了传输层协议UDP的核心概念和特性。文章首先强调了端口号在网络通信中的关键作用,以及如何通过端口号+IP地址+协议号来唯一标识进程间通信。详细解析了UDP协议的格式,包括其固定8字节报头结构和16位报文长度字段,解释了UDP如何实现数据报分离和分用。重点讨论了UDP的面向数据报特性、缓冲机制(仅接收缓冲区)、无连接、不可靠等特点,并通过寄信类比形象说明。最后从操作系统角度分析了应用层解析与内核收发报文的并行性。文章通过理论与实践结合的方式,深入浅出地阐述了UDP协议的核心原理。

2301_79705195的博客 1295

千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP回环)

经过前面章节的理论讲解和模块设计,相信大家已经对以太网传输以及如何实现以太网通信有了一定的了解。为了验证前面章节的内容,我们将进行以太网回环案例。通过判断回环数据是否一致,对前面章节内容和设计的模块进行验证。

小王在努力...的博客 2982

传输层协议 UDP

本文深入探讨了网络编程的传输层原理,重点分析了UDP协议的特性与实现机制。文章首先明确了传输层在网络协议栈中的位置,指出其核心作用是在发送端和接收端之间传输数据。通过对UDP协议格式的详细解析,说明了UDP报头包含的四个关键字段:源端口、目的端口、长度和校验值。文章阐述了UDP的典型特征包括无连接、不可靠但高效传输、面向数据报等特点,并分析了其适用场景。此外,还探讨了UDP的缓冲区管理机制,解释了端口号的作用原理,以及操作系统如何通过sk_buff结构体来组织和管理网络数据包。最后,文章简要介绍了基于UDP

Small_entreprene的博客 1503

Linux——UDP/TCP协议理论

UDP/TCP协议理论

m0_51952310的博客 1684

TCP/IP协议的简单认知

以下内容来源于太厉害了,终于有人能把TCP/IP协议讲的明明白白了! - 51CTO.COM 本文是笔者的归纳,从而方便自我理解 1.TCP/IP在很多情况下,是指利用IP进行通信时所必须用到的协议群的统称-->IP,ICMP,TCP,UDP.HTTP等都属于TCP/IP协议。因此TCP/IP≈网际协议群 2.互联网进行通信时,需要对应的网络协议,TCP/IP就是为了使用互联网而开发指定的协议 互联网的协议就是TCP/IP,TCP/IP就是互联网的协议 3.新概念:数据包 包、帧、数据包、段

qq_54151629的博客 1776

Linux网络编程: udp,tcp协议原理

Linux网络编程: udp,tcp协议原理

Wzs040810的博客 1412
上一篇: TCP窗口协议
下一篇: tomcat的运作和性能调优杂谈
@云师兄
博客等级 码龄10年 10粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值