网络原理之 UDP 协议

ops/2024/12/29 17:21:11/

目录

1. UDP 协议报文格式

2. UDP 的特点

(1) 无连接

(2) 不可靠

(3) 面向数据报

(4) 全双工

3. 基于 UDP 的应用层协议


前文是:UDP 的使用

首先了解一下基础知识:

1. UDP 协议报文格式

传输层最重要的协议有两个,一个是 TCP,一个是 UDP。

端口号,大家应该都知道吧,就是用来绑定进程的,这样就能够区分主机上不同的应用程序了,比如 3306 是 mysql 的端口号,8080 是 tomcat 的端口号。端口号就是固定占 2 个字节。

1 - 1023 这个范围的端口号称为知名端口号,是用来给知名的服务器,预留一个 "位置" (比如 22: ssh,  80: http, 443: https )

1024 - 65535 就是普通的端口号,知名端口号和普通端口号没什么区别,就是我们写程序的时候尽量不要绑定知名端口号,来确保我们的端口号和别人的端口号不会重复。

相比于 crc 算法,md5 算法就更好。
md5:有一系列的公式,来完成 md5 的计算。
md5 的特点:
1. 定长       
无论数据多长,计算得到的 md5 ,都是固定长度(校验和本身就不应该很长,太长的话会加大网络传输的带宽)。
2. 分散       
给定两个原始数据,哪怕绝大部分内容都一样,只要其中一个字节不同,得到的 md5 值差异都会很大。(非常适合作为 hash 函数)
3. 不可逆
给你一个原始数据,要计算出 md5,非常容易,给你一个 md5,让你还原出原始数据,计算了非常庞大,超过了现有计算机的算力极限,理论上是不可能的。

2. UDP 的特点

(1) 无连接

UDP 自身是不会存储对端的信息(ip 和端口)的,要在发送数据的时候,显式指定要传输给谁。

(2) 不可靠

UDP 将数据传输后就不管了,不会管数据有没有成功送到对端。

(3) 面向数据报

UDP 传输数据是以数据报为单位的,这个从 UDP 协议的报文格式上也能看出来。

(4) 全双工

一个信道,允许双向通信。

通过一个 socket 对象,既能 send ,又能 receive。

3. 基于 UDP 的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议
  • 还包括程序员自身写 UDP 程序时定义的应用层协议

相比于 UDP 来说,TCP 是更具有优势的,所以一般都是优先考虑使用 TCP。


http://www.ppmy.cn/ops/139582.html

相关文章

vscode通过ssh连接虚拟机进行开发

虚拟机自带的vscode很卡而且画质感觉不行,所以用这种方法解决 1.VSCODE安装扩展Tabnine(AI代码补全),Remote Development 2.虚拟机终端ifconfig查看本机ip 192.168.43.197 开启ubuntu的SSH服务 sudo apt-get install openssh-server 配置vscode的ssh …

登Nature子刊!华中师范大学提出DigFrag,用AI精准分割分子片段,并生成44个药物/农药分子

过去几十年,基于片段的药物发现 (FBDD) 通过识别与靶标蛋白有微弱相互作用的小分子片段,并优化这些片段的结构信息,可以开发出活性更高的先导化合物,在新药研发中发挥了重要作用。 尽管 FBDD 在药物发现和开发领域扮演着关键角色…

springai结合ollama

目录 ollama 介绍 使用 下载: 安装: 点击这个玩意next就行了。 运行 spring ai使用ollama调用本地部署的大模型 加依赖 配置yml 写代码 ollama 介绍 官网:Ollama Ollama是一个用于部署和运行各种开源大模型的工具; …

热点数据失效 详解

热点数据失效详解 热点数据失效是指在分布式系统中,缓存中某些被频繁访问的热点数据在某个时间点同时失效,导致大量请求直接涌向数据库或后端服务,造成系统瞬间高负载甚至宕机。热点数据失效问题常见于高并发的业务场景(如秒杀、…

挑战用React封装100个组件【008】

项目地址 https://github.com/hismeyy/react-component-100 组件描述 这次的组件有点简单,这个卡片是可以控制视频播放的,用于展示一些比较小的视频动画。 样式展示 代码展示 VideoCard.tsx import { useRef, useState } from react import ./Video…

洛谷P4387 【深基15.习9】验证栈序列(c嘎嘎)

题目链接:P4387 【深基15.习9】验证栈序列 - 洛谷 | 计算机科学教育新生态 题目难度:普及/提高 解题思路:首先这道题很明显是要用栈来解决的(题目都已经明示了),我们得利用好栈的后进先出的特点来模拟这道…

【Linux探索学习】第十八弹——进程等待:深入解析操作系统中的进程等待机制

Linux学习笔记:https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在Linux操作系统中,进程是资源的管理和执行单元,每个进程都有其自己的生命周期。在进程的执行过程中,进程…

[Redis#14] 持久化 | RDB | bgsave | check-rdb | 灾备

目录 0.概述 持久化的策略 1 RDB 1.1 触发机制 1.2 流程说明 1.3 RDB 的优缺点 0.概述 在学习 MySQL 数据库时,我们了解到事务的四个核心特性:原子性、一致性、持久性和隔离性。这些特性确保了数据库操作的安全性和可靠性。当我们转向 Redis 时&a…