以太网基础学习(三)——UDP协议

news/2024/5/18 15:59:33 标签: udp, 网络协议, 以太网

一、UDP协议概述        

        UDP(User Datagram Protocol,用户数据报协议)是一种无连接协议,它不像TCP协议那样需要在发送和接收数据前进行握手和释放,而是直接把数据发送出去,也不会对数据进行可靠传输和流量控制。因此,UDP常用于需要快速传输数据、对数据传输的可靠性要求不高的应用,如音频、视频等实时传输数据的应用。

        UDP协议的特点:

        1. 无连接:UDP协议发送数据时不需要进行握手、释放等操作,也不会维护连接状态,因此相对TCP协议来说,UDP协议的开销更小,传输速度更快。

        2. 不可靠:UDP协议不会对数据进行可靠传输,如果网络发生丢包,UDP协议不会重新发送数据,也不会对数据进行校验。

        3. 简单:UDP协议的头部信息只有8个字节,相对TCP协议的头部信息简单,开销小,传输效率高。

        4. 支持广播和多播:UDP协议可以发送广播和多播消息,让数据同时传输给多个接收者。

        5. 不支持流控制:UDP协议不会进行流量控制,发送方可以一次性发送大量数据,接收方无法限制传输速度。

        6. 适用于实时应用:由于UDP协议不会对数据进行可靠传输,对于实时性要求高的应用(如视频、音频等)较为适用。

二、端口号

        端口号是计算机网络中用于标识不同应用程序或服务的逻辑地址。它是一个数字,通常为0-65535之间的整数。在网络通信中,不同的应用程序或服务使用不同的端口号来处理传入或传出的数据包。例如,Web服务器使用端口号80,邮件服务器使用端口号25或465,FTP服务器使用端口号21等。通过使用不同的端口号,网络中的不同应用程序可以同时运行并提供不同的服务。

        UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据包通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。UDP端口号指定有两种方式:由管理机构指定端口和动态绑定的方式。

三、UDP与TCP的对比

        UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
        TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务;TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP 具有较好的实时性,工作效率较 TCP 协议高;UDP 段结构比 TCP 的段结构简单,因此网络开销也小。TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据。

四、UDP报文格式

        在UDP协议层次模型中,UDP位于IP层之上。应用程序访问UDP层然后使用IP层传送数据包。IP数据包的数据部分即为UDP数据包。IP层的报头指明了源主机和目的主机地址,而UDP层的报头指明了主机上的源端口和目的端口。UDP传输的段(segment)有8个字节的报头和有效载荷字段构成。

        UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据包长度、校验值。


http://www.niftyadmin.cn/n/5066011.html

相关文章

fetch前后端通信

fetch 前后端通信:ajax。 4步走: let xhrnew XMLHttpRequest() xhr.open(get,http://xxx) xhr.onreadystatechange xhr.send() 常用库: jQuery -> 回调地狱 axios fetch:网络获取资源 与Ajax的不同: 网络故障或请求…

Spacewalk

Spacewalk Spacewalk是一种开源的系统管理工具,提供了集中管理多个Linux服务器的功能。以下是一些Spacewalk用例: Spacewalk是基于Substrate的parachains和Stellar之间的桥梁,可以实现与Stellar的资产转移。该拨款申请用于开发太空行走协议…

RTC 时间、闹钟

实时时钟RTC是一个独立的定时器。RTC模块拥有一个连续计数的计数器,在软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。 在掉电情况下 RTC仍可以独立运行 只要芯片的备用电源…

小项目中怎么防止Vue的闪现画面效果

文章目录 前言一句话总结过程用法原理源码 前言 这篇文章主要介绍了小项目中怎么防止Vue的闪现画面效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 一句话总结 HTML: 元素加上v-cloak CS…

计算机竞赛 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…

第二章 进程与线程 十九、管程

目录 一、定义 管程是一种特殊的软件模块,由以下部分组成: 二、管程的基本特征 三、使用管程解决生产者消费者问题 四、总结 一、定义 管程是一种特殊的软件模块,由以下部分组成: 1、局部于管程的共享数据结构说明;&#xf…

【数据开发】DW数仓分层设计架构与同步策略(ODS、DWD、DWS等字段含义)

文章目录 1、什么是数据仓库(DW)2、DW分层设计架构(ODS,DWD,DWS)3、数仓同步策略 1、什么是数据仓库(DW) Data warehouse(可简写为DW或者DWH)数据仓库是什么…

[AIGC] Java 函数式编程

前言: Java函数式编程,是一种强大的编程范式,能够让你的代码更加简洁,优雅。Java 8 引入了函数式编程的支持,其中Lambda表达式和函数式接口是函数式编程的两个重要概念。在本篇文章中,我们将会详细介绍Java…