【在Linux世界中追寻伟大的One Piece】传输层协议UDP

news2024/12/24 9:29:11

目录

1 -> 传输层

2 -> 端口号

2.1 -> 端口号范围划分

2.2 -> 知名端口号

3 -> UDP协议

3.1 -> UDP协议端格式

3.2 -> UDP的特点

3.2.1 -> 面向数据报

3.3 -> UDP的缓冲区

3.4 -> UDP使用注意事项

3.5 -> 基于UDP的应用层协议


1 -> 传输层

传输层是计算机网络OSI模型中的第四层,它负责在网络中的两个节点之间提供端到端的数据传输服务。传输层的主要任务包括分段与重组、端口标识、连接控制(面向连接的TCP和无连接的UDP)、流量控制和差错检测与处理等,以确保数据的可靠、有序和高效传输。

简单来说,就是负责数据能够从发送端传输接收端

2 -> 端口号

端口号(Port)标识了一个主机上进行通信的不同的应用程序。

在TCP/IP协议中,用"源 IP","源端口号","目的 IP","目的端口号","协议号"这样一个五元组来标识一个通信(可以通过netstat -n查看)。

2.1 -> 端口号范围划分

  • 0 - 1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号都是固定的。
  • 1024 - 65535:操作系统动态分配的端口号。客户端程序的端口号,就是由操作系统从这个范围分配的。

2.2 -> 知名端口号

有些服务器是非常常用的,为了使用方便,人们约定一些常用的服务器,都是用以下这些固定的端口号:

  • ssh服务器,使用22端口。
  • ftp服务器,使用21端口。
  • telnet服务器,使用23端口。
  • http服务器,使用80端口。
  • https服务器,使用443端口。

执行下面的命令, 可以看到知名端口号。

cat /etc/services

我们自己写一个程序使用端口号时,要避开这些知名端口号。

3 -> UDP协议

UDP(用户数据报协议)是一种无连接的传输层协议,它提供了一种简单的面向报文的数据传输服务。

UDP不保证数据包的可靠交付、顺序或数据完整性,它不进行拥塞控制,也不需要在传输数据前建立连接。

UDP的头部开销较小,只有8字节,包括源端口、目的端口、长度和校验和字段。

由于其简单性,UDP适用于对实时性要求高的应用,如在线游戏、语音视频通信和某些类型的网络广播。

3.1 -> UDP协议端格式

  • 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度。
  • 如果校验出错,就会直接丢弃。

3.2 -> UDP的特点

UDP传输的过程类似于寄信。

  • 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。
  • 不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。
  • 面向数据报:不能够灵活的控制读写数据的次数和数量。
  • 简单高效:UDP头部开销小,只有8字节,适合快速传输数据,尤其是对实时性要求高的应用。
  • 支持广播和多播:UDP可以实现单播、广播和多播通信,适合发送数据到多个目的地。
  • 无流量控制:UDP不提供流量控制功能,可能在网络拥塞时导致数据包丢失或传输延迟增加。
  • 适用场景:UDP适用于实时音视频通话、在线游戏、DNS查询等对实时性要求较高的应用。

3.2.1 -> 面向数据报

应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。

用UDP传输100个字节的数据:

如果发送端调用一次sendto,发送100个字节,那么接收端也必须调用对应的一次recvfrom,接收100个字节;而不能循环调用10次recvfrom。每次接收10个字节。

3.3 -> UDP的缓冲区

  • UDP没有真正意义上的发送缓冲区。调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作。
  • UDP具有接收缓冲区。但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓冲区满了,再到达的UDP数据就会被丢弃。

UDP的socket既能读,也能写,这个概念叫做全双工

3.4 -> UDP使用注意事项

我们注意到,UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部)。

然而64K在当今的互联网环境下,是一个非常小的数字。

如果我们需要传输的数据超过64K,就需要在应用层手动的分包,多次发送,并在接收端手动拼装。

3.5 -> 基于UDP的应用层协议

  • NFS(Network File System):网络文件系统。
  • TFTP(Trivial File Transfer Protocol):简单文件传输协议。
  • DHCP:动态主机配置协议。
  • BOOTP:启动协议(用于无盘设备启动)。
  • DNS(Domain Name System):域名解析协议。
  • SNMP(Simple Network Management Protocol):用于网络设备和应用程序的管理,可以使用UDP作为传输层协议。
  • RIP(Routing Information Protocol):一种路由协议,基于距离矢量算法,使用UDP进行信息交换。
  • QUIC(Quick UDP Internet Connection):由谷歌开发的传输层协议,基于UDP,旨在减少连接延迟,提供安全和可靠的连接。
  • UDT(UDP-based Data Transfer Protocol):一种面向连接的双向应用层协议,建立在UDP之上,支持高速数据传输和可靠性控制。

当然,也包括你自己写UDP程序时自定义的应用层协议。


感谢各位大佬支持!!!

互三啦!!!

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

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

相关文章

Vue实战:轻松掌握输入框@功能实现技巧

成员列表 创建 实现成员列表的方式比较简单&#xff0c;其实就是一个列表&#xff0c;一个简单的v-for循环就可以搞定&#xff0c;点击时将当前选择的成员项回调给父组件。 新增一个AtPop.vue文件&#xff1a; <template> <div class"at-pop-index">…

DIFFUSION 系列笔记| Latent Diffusion Model、Stable Diffusion基础概念、数学原理、代码分析、案例展示

目录 Latent Diffusion Model LDM 主要思想 LDM使用示例 LDM Pipeline LDM 中的 UNET 准备时间步 time steps 预处理阶段 pre-process 下采样过程 down sampling 中间处理 mid processing 上采样 upsampling 后处理 post-process LDM Super Resolution Pipeline…

海康视觉二次开发学习笔记8-从回调函数获取结果

回调函数使用方法 通常在方案或流程执行完成后,就可以获取到流程运行的结果.运行一次流程后,我们就可以获取到流程的渲染结果以及流程的数据结果.那么使用通讯或硬件进行外部触发时,如何获取结果呢? 这种时候就要用到回调函数. 1. 注释原获取结果代码 2. 注册回调函数 在构…

【文献及模型、制图分享】数字技术力量下传统村落景观修复演进的特征与机制研究——以岳阳市张谷英村为例(GIS空间分析、点云提取)

文献介绍 景观修复作为弘扬中华优秀传统文化的重要方式&#xff0c;如何在乡村数字化新时代背景下&#xff0c;把握传统村落景观修复的数字赋能&#xff0c;已成为推动中华优秀传统文化创造性转化与创新性发展亟需解决的科学问题。运用深度访谈、GIS空间分析、点云数据提取等方…

html+css+js网页设计 婚庆类型12个页面

htmlcssjs网页设计 婚庆类型12个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xf…

FreeRTOS 低功耗模式

正如STM32的裸机编程一样&#xff0c;FreeRTOS通用提供了低功耗模式。 前面说的很明白&#xff0c;FreeRTOS的低功耗模式实际上还是基于STM32的低功耗模式指令进入睡眠模式来实现的&#xff0c;并且只要中断来临&#xff0c;就会退出低功耗&#xff0c;FreeRTOS的系统时钟是最底…

猫头虎分享:Python库 Statsmodels 的简介、安装、用法详解入门教程

猫头虎分享&#xff1a;Python库 Statsmodels 的简介、安装、用法详解入门教程 &#x1f42f; 引言 &#x1f3af; 今天猫头虎带您 深入探讨 Statsmodels 这个在数据分析和统计建模领域非常重要的Python库。最近有粉丝在评论区问道&#xff1a;“猫哥&#xff0c;如何使用 St…

USB端点

USB端点 各端点使用循环冗余校验&#xff08;CRC&#xff09;来检测传输中发生的错误。 根据 USB 规范&#xff0c;设备端点是 USB 设备中一个独特的可寻址部分&#xff0c;它作为主机和设备间通信流的信息源或库。 USB 枚举和配置一节介绍了设备向默认地址做出响应的步骤。 枚…

能进大厂的自动化测试面试题

前言 每次到金九银十都避免不了要聊一聊面试题了&#xff0c;如今九月已经是中下旬了&#xff0c;马上就要到十月份了&#xff0c;还在投简历找工作的小伙伴可以看看我这几天发的文章&#xff0c;最近发的都是面试题&#xff0c;如果需要笔者教一下大家怎么写简历的小伙伴可以…

光伏高压并网升压箱变

在当今能源领域的变革浪潮中&#xff0c;光伏能源以其清洁、可再生的显著优势&#xff0c;成为了备受瞩目的焦点。而光伏高压并网升压箱变&#xff0c;则是实现光伏电能顺利接入高压电网的核心设备。 光伏高压并网升压箱变宛如光伏能源系统中的一位“大力士”&#xff0c;承担着…

一张图浏览CSS Functions

点我CSS Functions思维导图下载 函数文章链接示例属性函数var attr env介绍访问文章示例地址

银河麒麟编译opencv库并配置qt环境

1.opencv下载版本:opencv4.5.5,qt安装的是qt5.12.11,系统版本: 2.首先应该安装cmake工具: 下载地址:https://cmake.org/download/ 安装步骤: 1)解压; 2)进入解压后的文件夹cd cmake-3.30.2 3)./bootstrap 4)sudo make 5)sudo make install 3.下载opencv,下…

实现 GridLayoutManger 和 StaggeredGridLayoutManager 混排的工具类

序言 最近项目中要实现瀑布流的混排&#xff0c;于是写了一些工具类来实现。使用了这个工具类&#xff0c;可以处理混排&#xff0c;可以处理间距。都集成在一个接口中。 最后效果类似这样。 工具类 GridItemUI 下面的这个类是用来实现在GridLayouManger中混排的。 packag…

硬件-PCB-正片(常用默认)和负片

文章目录 问题&#xff1a;什么是PCB的正片和负片&#xff1f;1.正片设计默认是无铜的&#xff08;常用&#xff09;2.负片设计是默认有铜的3.网友评论道友&#xff1a;我们的对手从来不是别人&#xff0c;而是自己。如果有什么必须战胜&#xff0c;那就是过去的自己。战胜自己…

Nginx 部署前端 Vue 项目全攻略

一、前期准备工作 要将 Vue 项目部署到 Nginx &#xff0c;需要做好以下准备工作&#xff1a; Nginx 的安装&#xff1a; 对于 Centos 系统&#xff0c;可以通过 yum install -y nginx 命令来安装 Nginx 。 对于 Windows 系统&#xff0c;需要在 Nginx 官网下载相应的安装包并…

数据迁移新技能,MongoDB轻松同步至ClickHouse

在当今数据驱动的世界中&#xff0c;企业的成功依赖于对数据的高效管理和精准分析。数据迁移是实现这些目标的关键环节&#xff0c;而选择合适的工具可以让这项工作变得更加轻松和高效。ETLCloud 是一款创新的 ETL&#xff08;提取、转换、加载&#xff09;工具&#xff0c;它提…

(三)了解MySQL 【用户创建和权限/索引】

一、创建用户 DCL主要用于定义数据库的安全性和访问权限&#xff0c;包括创建用户、授予权限、撤销权限等。 CREATE USER 属于DCL因为它关注的是数据库的安全性和用户管理 格式 create user 用户名来源地址 [identified by [password] 密码 ]; 用户名&#xff1a;指…

Web开发:ABP框架中的服务调用原则--避免服务之间的直接依赖

示意图 &#xff08;Service之间可以相互调用&#xff0c;使用依赖倒置原则&#xff1a;例如某个服务可注入到另一个服务&#xff0c;用法&#xff1a;private readonly IyyyService _yyyService;&#xff09; 命名约定 WebAPI 控制器: 建议命名为 XXXXController 或 XXXXMa…

Linux学习(15)-网络编程:滑动窗口、拥塞控制、udp

本节学习内容 1.滑动窗口&#xff08;1.滑动窗口的作用2.如果如果接收端填充的接收窗口为0&#xff0c;发送端接下来怎么处理3.糊涂窗口综合征4.tcp中nagle算法是什么&#xff09; 2.拥塞控制 3.udp协议特点及编程流程 本节可能会用到的指令 ifconfig查看自己的ip地址 pi…

Scrapy添加代理IP池:自动化爬虫的秘密武器

在网络爬虫的世界里&#xff0c;IP地址的频繁更换是防止被目标网站封禁的有效手段。通过在Scrapy中添加代理IP池&#xff0c;你可以轻松实现自动化的IP切换&#xff0c;提高数据抓取的效率和稳定性。今天&#xff0c;我们就来详细讲解一下如何在Scrapy中添加代理IP池&#xff0…