传输层UDP协议

news2025/2/28 18:36:22

传输层UDP协议

  • 1. 再谈端口号
  • 2. UDP协议
    • 1.1 UDP协议字段
    • 1.2 将报头和数据进行分离
  • 3. UDP的特点

1. 再谈端口号

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

在这里插入图片描述
在 TCP/IP 协议中, 用 “源 IP”, “源端口号”, “目的 IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过 netstat -n 查看);
在这里插入图片描述

  1. 端口号范围划分
    • 0 - 1023: 知名端口号, HTTP, FTP, SSH 等这些广为使用的应用层协议, 他们的端口号都是固定的.
    • 1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的.
  2. 认识知名端口号(Well-Know Port Number)
    有些服务器是非常常用的, 为了使用方便, 人们约定一些常用的服务器, 都是用以下这些固定的端口号:
    • ssh 服务器, 使用 22 端口
    • ftp 服务器, 使用 21 端口
    • telnet 服务器, 使用 23 端口
    • http 服务器, 使用 80 端口
    • https 服务器, 使用 443
执行下面代码可以查看知名端口号
cat /etc/services

2. UDP协议

1.1 UDP协议字段

在这里插入图片描述

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

在前面我们已经讲过了,所谓的协议其实就是机构化字段,我们可以看一看底层的UDP协议结构化字段的样子:

struct udphdr{
	__be16 source; //16为源端口
	__be16 dest;	//16为目的端口
	__be16 len;		//UDP长度
	__sum16 check;	//UDP检验和
}

1.2 将报头和数据进行分离

从UDP协议字段我们不难看出,UDP报头的长度是固定的也就是8字节,而16位UDP长度是表示整个报文的长度,而现在如果要将报文和数据进行分离的话也是很简单,因为我们已经知道了报头的固定长度是8个字节,而我们只要用UDP长度减去固定长度的报头就可以找到数据的长度,进而将报头与数据进行有效的分离。

3. UDP的特点

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

  1. 无连接: 知道对端的IP和端口号就直接进行传输, 不需要建立连接;
  2. 不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息;
  3. 面向数据报: 不能够灵活的控制读写数据的次数和数量;

面向数据报

  1. 应用层交给 UDP 多长的报文, UDP 原样发送, 既不会拆分, 也不会合并;用 UDP 传输 100 个字节的数据:
  2. 果发送端调用一次 sendto, 发送 100 个字节, 那么接收端也必须调用对应的一次 recvfrom, 接收 100 个字节; 而不能循环调用 10 次 recvfrom, 每次接收 10 个字节;

UDP 的缓冲区

  1. UDP 没有真正意义上的 发送缓冲区. 调用 sendto 会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作;
  2. UDP 具有接收缓冲区. 但是这个接收缓冲区不能保证收到的 UDP 报的顺序和发送 UDP 报的顺序一致; 如果缓冲区满了, 再到达的 UDP 数据就会被丢弃;
  3. UDP 的 socket 既能读, 也能写, 这个概念叫做 全双工

UDP 使用注意事项

  1. 我们注意到, UDP 协议首部中有一个 16 位的最大长度. 也就是说一个 UDP 能传输的数据最大长度是 64K(包含 UDP 首部). 然而 64K 在当今的互联网环境下, 是一个非常小的数字. 如果我们需要传输的数据超过 64K, 就需要在应用层手动的分包, 多次发送, 并在接收端手动拼装;

基于 UDP 的应用层协议

  1. NFS: 网络文件系统
  2. TFTP: 简单文件传输协议
  3. DHCP: 动态主机配置协议
  4. BOOTP: 启动协议(用于无盘设备启动) • DNS: 域名解析协议

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

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

相关文章

AI大模型评测方法总结!

大语言模型评测对应用和后续发展至关重要,其评测范式包括经典和新型两种。经典评测范式涵盖自然语言理解和生成任务,本文介绍了流行的经典评测基准及新型评测范式下的代表性基准和实例,并总结了现有评测的不足。随后,文章提出了全…

不入耳耳机和入耳耳机哪个好?四款不入耳蓝牙耳机推荐指南

那当然是不入耳耳机好啦,那先讲讲入耳和不入耳的区别: 佩戴舒适度: 入耳蓝牙耳机是直接插入耳道,所以同时也会堵塞耳道长期积攒耳垢、造成耳道不适。 不入耳蓝牙耳机则通常设计为耳挂式或耳廓式,挂在耳朵外部能保持…

antd pro实现后台管理系统的建立(一)

一、初始化项目 1、全局安装pro-cli初始化脚手架 # 使用 npm或者cnpm或tyarn npm i ant-design/pro-cli -g这里建议使用npm或者tyarn,cnpm和npm部分不兼容,创建项目时会报部分依赖缺失的问题 2、创建项目pro create myapp pro create myappsimple 是基…

本地部署 Llama 3.1:Ollama、OpenWeb UI 和 Spring AI 的综合指南

、 本文介绍如何使用 Ollama 在本地部署 Llama 3.1:8B 模型,并通过 OpenWeb UI 和 Spring AI 来增强模型交互体验和简化 API 的调用过程。 Ollama Ollama 是一个开源的大语言模型服务工具,旨在简化大模型的本地部署和运行过程。用户只需要输入一行命令&…

学习008-02-04-03 Group List View Data(组列表查看数据)

Group List View Data(组列表查看数据) This lesson explains how to group the Employee List View data by department and position. 本课介绍如何按部门和职位对员工列表视图数据进行分组。 Note Before you proceed, take a moment to review the …

从零开始使用YOLOv8——环境配置与极简指令(CLI)操作:1篇文章解决—直接使用:模型部署 and 自建数据集:训练微调

目录 一、Yolov8源码下载 二、虚拟环境创建与必要包的安装 1.虚拟环境 2.Pytorch安装 3.Ultralytics安装 3.环境测试 三、简单命令行指令(CLI)使用 1.模型配置(关键指令)——cfg (1)选择任务场景——ta…

收藏丨企业官网一般选择什么类型的SSL证书比较好?

企业官网在选择SSL证书时,应综合考虑网站的安全性需求、用户信任度、成本效益以及管理便捷性等因素。一般来说,企业官网比较适合选择以下几种类型的SSL证书: 1. 企业型SSL证书(Organization Validated, OV) 特点&…

初识MyBati s

J D B C 编 程 和 O R M 模 型 加 载 驱 动 导 入 J D B C 连 接 数 据 库 的 j a r 包 , 利 用 C L A S S . f o r N a m e 加 载 驱 动 ; 获 取 连 接 利 用 D r i v e r M a n a g e r 获 取 C o n n e c t i o n , 然 后 创 建 S t a t e…

生成式人工智能的第一课,揭开她那神奇的面纱

一、人工智能(Artificial Intelligence) 从1940年代开始,科学家们在数学推理的基础上发明了可编程数字计算机,这一突破激发了他们对创建“电子大脑”的探索热情,为后续的人工智能发展奠定了坚实的基础。1956年&#x…

2024西安铁一中集训DAY23 ---- 模拟赛(类括号匹配dp + baka‘s trick 优化双指针 + 组合数学/高斯消元 + 图上性质题)

文章目录 前言时间安排及成绩题解A. 稻田灌溉(类括号匹配dp)B. 最长模区间(bakas trick 优化双指针)C. 三只小猪和狼(组合数学,高斯消元)D. 黑色连通块 前言 感觉是开始集训以来最难的一场了&a…

睿考网:中级会计师和注册会计师哪个难?

中级会计师和注册会计师两个资格证书对比下来,后者具有更高的挑战性,主要原因有以下几点: 1. 考试科目和内容: 注册会计师考试包含专业阶段与综合阶段,共涉及六个科目,考察的内容覆盖范围更广泛&#xff…

最新Yiso智云搜索引擎系统源码/开源PHP源码/修复版

源码简介: 最新Yiso智云搜索引擎系统源码/开源PHP源码/修复版。Yiso 是一个性能非常好的搜索引擎,不仅免费开源,还能当作收录网址的平台来用呢!只需要输入关键词,就能轻松找到相关的搜索结果内容。 1、Yiso 用的是自…

脚本: 监控Oracle数据库中正在运行的SQL(Oracle DBA的工作利器)

英文原文网址:[Script: Monitoring Running SQL in Oracle Database in Real Time] (https://byte-way.com/2024/07/24/script-monitoring-running-sql-in-oracle-database-in-real-time/) 以下SQL查询活动会话及其正在执行的SQL语句的信息,并提供有关其…

生成式AI 未来发展的两大要素:数据和开发者

这一年来,生成式 AI 领域的发展可谓日新月异。大语言模型 (LLM) 已经从学术研究圈的新宠,变成了开发者、产品经理、IT 决策者、高管等所有人都密切关注和亲身参与的重要课题。 一年间,这类问题在新闻报道、技术大会、开发者闲聊、同事讨论、…

【Dash】Hello World

一、最简单的 Dash Building and launching an app with Dash can be done with just 5 lines of code. Open a Python IDE on your computer, create an app.py file with the code below and install Dash if you havent done so already. To launch the app, type into yo…

DBeaver如何连接本地的mysql服务

要使用 DBeaver 连接本地的 MySQL 服务,可以按照以下步骤进行设置: 1. 下载和安装 DBeaver 首先确保已经下载并安装了 DBeaver。你可以从官方网站 DBeaver 官网 下载适用于 macOS 的安装包,并按照提示安装。 2. 打开 DBeaver 并添加新的数…

Python编程的思维导图

创建一个Python编程的思维导图是一个很好的方式来组织和理解Python编程的核心概念、语法、库和应用领域。下面是一个简化的Python编程思维导图的概要,可以根据需要进行扩展或修改: Python编程 ├── 基础概念 │ ├── 变量与数据类型 │ │…

基于 YOLO V10 Fine-Tuning 训练自定义的目标检测模型

一、YOLO V10 在本专栏的前面几篇文章中,我们使用 ultralytics 公司开源发布的 YOLO-V8 模型,分别 Fine-Tuning 实验了 目标检测、关键点检测、分类 任务,实验后发现效果都非常的不错,但它已经不是最强的了。最新的 YOLO-V10 已经…

如何看待储殷教授说的“现在的码农和纺织工人没区别“

储殷教授的观点认为现代的程序员(通常被称为“码农”)与过去的纺织工人没有本质的区别。这种说法引发了一些讨论和争议,码哥从几个角度来探讨这一观点: 工作性质的比较 重复性劳动 储殷教授可能认为,就像过去纺织工人…

18、基于DDD的微服务设计实例

在本章基于DDD的微服务设计实例中,我们将通过一个实际的微服务设计实例,详细介绍如何基于领域驱动设计(DDD)来构建微服务架构。这个实例不仅涵盖了微服务设计的基本原则,还展示了实际应用中的具体实现细节和最佳实践。…