UDP协议重点总结(附实例)

news/2024/5/18 14:26:48 标签: udp, 网络, tcp/ip

文章目录

  • 前言
  • 一、网络的原生情况
  • 二、UDP协议
    • 2.1 UDP的特点
      • 2.1.1 不可靠性
      • 2.1.2 无连接(不是缺点)
      • 2.1.3 面向数据报(优点)
      • 2.1.4 缓冲区
      • 2.1.5 大小受限
    • 2.2 UDP协议端格式
    • 2.3 关于校验和
    • 2.4 基于UDP的应用层协议
  • 三、UDP总结(如何发送接收的)
  • 后言


前言

回顾2022年,展望2023年,博主给大家带来了网络中传输层的重点总结,附上博主本人的实例,帮助大家更好的理解数据是怎么在网络中传输的。

博主个人社区:开发与算法学习社区

博主个人主页:Killing Vibe的博客

欢迎大家加入,一起交流学习~~

一、网络的原生情况

网络中的数据,是经过路由器之间,一跳一跳地,接力一样地,传送到目标主机上的。

这带来了两个问题:(站在网络层的视角上讨论)

网络传送是不可靠的

  1. 你的发送了数据,对方不保证一定能收到
  2. 不能保证严格按照发送时的顺序被对方接收到

由于路可能不同,所以很难保证按照出发的顺序到达

在这里插入图片描述

网络传送是不安全的

  1. 你发送的所有数据,沿途的路由器都可以进行查看或者修改,窃听,篡改
  2. 别人可以伪造成你发送的数据

这两个问题需要交给网络层以上(传输层、应用层)去解决

这篇文章博主将详细总结一下传输层的重点协议

二、UDP协议

UDP全称:User Datagram Protocol 用户报文协议

UDP是一个很简单的传输层协议,它只是做到了传输层最基本的职责
(在 host to host 连通的情况下,实现了process to process)

2.1 UDP的特点

UDP传输的过程类似于寄快递

在这里插入图片描述

2.1.1 不可靠性

网络层本身是不可靠的,UDP 又没做过任何的处理,所以UDP是不可靠的!!

并不是UDP做了什么,才变得不可靠了,而是UDP什么都没做,所以网络层的不可靠特性直接表达给了应用层,所以站在应用层的角度,我们才说UDP是不可靠的!

2.1.2 无连接(不是缺点)

区别于TCP连接,UDP没有任何可靠机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。(但无连接效率高,不需要连接带来的资源损耗,成本低)

2.1.3 面向数据报(优点)

应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并;
用UDP传输100个字节的数据:

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

2.1.4 缓冲区

UDP只有接收缓冲区,没有发送缓冲区:

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

在这里插入图片描述

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

2.1.5 大小受限

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

2.2 UDP协议端格式

在这里插入图片描述

  • 端口号,表示源主机和目的主机的某个进程的端口号
  • 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度;
  • 如果校验和出错,就会直接丢弃;

所有网络协议的报头中都要具备的职责:如何进行解包(怎么把数据中的header和payload分开)?

答:由于header长度是定长(固定长度),前8个字节一定是header,剩下的一定是payload。

2.3 关于校验和

通常用来在通信中,尤其是远距离通信中保证数据的完整性和准确性。

基本原理就是利用hash函数(checksum函数就是一种hash函数),只要相同的数据,经过函数处理之后,一定得到相同的结果(hash值:checksum)

举个例子

发送方发送的时候:

  1. hash(数据) - 》 checksum_1
  2. 把checksum_1 填在UDP的header中
  3. 发送

接收方接受的时候:

  1. hash(数据) -》 checksum_2
  2. 如果checksum_1 == checksum_2 就接受,如果不等于,说明数据一定不是源数据了,数据损坏

2.4 基于UDP的应用层协议

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

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

三、UDP总结(如何发送接收的)

在这里插入图片描述

在这里插入图片描述

后言

以上就是UDP协议的重点总结了,文章要是有什么疑问或者问题,欢迎大家私信博主,有帮助的话麻烦各位点赞+收藏一波,有助于推荐给更多正在学习的朋友,关注不迷路~~


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

相关文章

webpack概念

webpack概念webpackwebpack-概念webpack-使用准备webpack-基础使用webpack-更新打包webpack-配置修改webpack-打包流程图webpack 使用ES6模块化默认导出和导入 // 默认导出 export default {a: 10,b: 20 }// 默认导入 import Obj from js文件路径按需导出和导入 // 按需导出…

收藏网页版小游戏:蜘蛛纸牌、扫雷、水果忍者、打地鼠、吃豆人

学习之余当然是摸鱼了,这里分享几个不用下载直接在线玩耍的游戏。有蜘蛛纸牌网页版在线玩、在线扫雷小游戏、在线玩的水果忍者、吃豆人、打地鼠、3D模仿。 下面我将一个个列出来。欢迎体验收藏! 蜘蛛纸牌:这是一款刺激好玩的棋牌小游戏。大家…

【C++】了解设计模式,模拟实现栈和队列

文章目录一.设计模式二.stack的模拟实现三.queue的模拟实现四.了解deque五、题目练习一.设计模式 设计模式有很多种,根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面…

http服务转https服务(Nginx 服务器 SSL 证书安装部署)

安装的服务一直使用的是http,结果有客户要求必需使用https,下面是整理的步骤1、证书下载:(要用域名申请的账号登录)域名所在服务商一般都可以下载免费证书,我们用的域名是腾讯云的,所以在腾讯云上申请了免费…

Redis集群

Redis集群一 Redis集群介绍1.1 为什么需要Redis集群?1.2 什么是Redis集群?二 数据分布(分布式数据库)三 集群搭建四 集群扩容(8台机器,4个节点的集群)五 集群缩容六 python操作集群一 Redis集群介绍 1.1 为什么需要Re…

【算法】分治算法(第三章习题解答)

3 分治算法 3.1 设 AAA 是 nnn 个非 000 实数构成的数组, 设计一个算法重新排列数组中的数, 使得负数都排在正数前面. 要求算法使用 O(n)O(n)O(n) 的时间和 O(1)O(1)O(1) 的空间. 算法设计:由于算法要求使用 O(n)O(n)O(n) 的时间和 O(1)O(1)O(1) 的空间&#xff0…

[Linux]Linux项目自动化构建工具-make/Makefile

🥁作者: 华丞臧. 📕​​​​专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文…

密码学_RC4算法

在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TL…