当前位置: 首页 > news >正文

【计算机网络】UDP协议

UDP的结构

我们学习一个协议最主要的就是理解它的报文格式,对于UDP协议来说 我们看下面的这张图。

在这里插入图片描述

16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度。UDP报文长度占两个字节,16位表示的数据范围(0-65535)也就是64kb,UDP数据报最大长度就是64kb。

校验和:因为网络传输中,由于一些外部干扰,数据传输可能会出现出错的情况,网络传输主要是光信号和电信号,由于电磁场、高能离子等,就可能出现比特翻转。因此就需要能识别出出错的数据,所以就有了校验和。

校验和本质上其实也是一个字符串,是通过原始数据生成的体积比原始数据更小,原始数据相同得到的校验和就一定相同,反之,校验和相同那么原始数据大概率也是相同的(不相同的概率忽略不计)。那么我们如何基于校验和来完成数据校验呢?

1.发送方把要发送的数据整理好(要发送的数据data1)通过一定的算法计算出校验和checksum1。

2.发送方把data1和checksum1通过网络发送给接收方。

3.接收方收到数据(收到的数据据data2)收到的校验和checksum1,收到的数据有可能和发送的不一样。

4.接收方根据data2按照相同的算法重新计算校验和,得到checksum2。

5.对比checksum1和checksum2是否相同,如果相同则认为data1和data2大概率是相同的(不同的概率忽略不计)否则data1和data2一定是不相同的。

UDP的特点

无连接:UDP协议本身不会存储对端的信息,发送数据的时候要显示指定对端的IP和端口号,不需要建立连接。

不可靠传输:没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会
给应用层返回任何错误信息。

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

全双工:UDP的socket既能读也能写。

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

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

http://www.lryc.cn/news/230870.html

相关文章:

  • ubuntu安装mysql8.0.35过程和报错处理
  • SQL基础理论篇(一):什么是SQL
  • 物联网AI MicroPython学习之语法 GPIO输入输出模块
  • phalcon 访问IndexController 中只能访问indexAction方法,访问不了testAction等其它问题的解决办法
  • docker安装AWVS 23.9.231005181
  • 数据同步工具调研选型:SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比
  • 【Vue】Vue3 Swiper 插件 loop 无限滚动、并且暂停的问题
  • MySQL的DATE_FORMAT函数使用
  • MySQL的SQL预编译及防SQL注入
  • 博流BL602芯片 - 烧录配置
  • websocket实现实时数据推送,发布订阅重连单点登录功能
  • 前端代理模式之【策略模式】
  • 人工智能-深度学习之残差网络(ResNet)
  • arm2 day6
  • RxSwift和Combine的相同点和使用例子
  • [Linux打怪升级之路]-信号的保存和递达
  • 【科研新手指南3】chatgpt辅助论文优化表达
  • 在应用内维护域名缓存时遇到的问题
  • 网络支付安全:面临的风险与防范策略
  • 『亚马逊云科技产品测评』活动征文|阿里云服务器亚马逊服务器综合评测
  • javascript原来还可以这样比较两个日期(直接使用new Date)
  • [云原生案例2.4 ] Kubernetes的部署安装 【通过Kubeadm部署Kubernetes高可用集群】
  • PP-ChatOCRv2、PP-TSv2、大模型半监督学习工具...PaddleX新特性等你来pick!
  • HarmonyOS 学习记录
  • 阿里云 业务集群的冗余、备份、监控方案
  • 无人驾驶的未来 后疫情时代如何抵达
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • 【第2章 Node.js基础】2.6 Node.js 的Buffer数据类型
  • reactive和effect,依赖收集触发依赖
  • 【C#学习】backgroundWorker控件