UDP协议解析

UDP协议解析????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????UDP协议简介UDP是UserDatagramProtocol的简称,中文名是用户数据报协议,是OSI(OpenSystemInt

大家好,又见面了,我是你们的朋友全栈君。


?‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍?


UDP协议简介

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 [1] 是UDP的正式规范。UDP在IP报文的协议号是17。(摘自百度百科)

UDP协议端格式

UDP协议解析

 端口号

?端口号用来标识同一台计算机中进行不同通信的不同应用程序,因此它也被称作程序地址。

通过IP地址可以确定一台主机,但是这个主机上运行同时运行着很多的程序,比如 qq、浏览器。

当这个主机收到一个具体的数据的时候,那么它怎么知道要把这个数据交给哪个程序来处理?

就是通过 端口号 来区分

每个访问网络的进程都需要有一个不同的端口号,比如MySQL默认的端口号 3306。

端口号是一个整数(2个字节,一共16比特位,取值范围0~65535)。

一台主机上,不能 有两个进程尝试关联(绑定)同一个端口号。

如果第一个进程绑定了端口号 1102,第二个进程也尝试绑定这个端口号 1102的时候,就会失败。

源端口号:发送方的端口号

目的端口号:接收方的端口号

知名端口号

21端口:FTP 文件传输服务

22端口:SSH 远程连接服务

23端口:TELNET 终端仿真服务

25端口:SMTP 简单邮件传输服务

53端口:DNS 域名解析服务

80端口:HTTP 超文本传输服务

443端口:HTTPS 加密的超文本传输服务

3306:MySQL默认端口

UDP长度

整个UDP数据报的长度 = 报头+载荷。

使用2个字节(16bit)的数据来表示,UDP长度的单位也是字节.

2个字节能表示的数据范围: 0~65535。

所以一个UDP数据报最大就是64K(65536 / 1024 = 64 单位 kb)

从现在来看,这个64K的空间属实太小了,一个图片都放不下。

主要因为UDP诞生的时间比较早,对于当时来说,64k的空间已经足够使用

如果使用UDP来传输数据,一定要警惕大的报文

如果报文长度超过64K,此时就可能丢失一部分数据

UDP效验和

?检测UDP数据(包含头部和数据部分)报在传输中是否有错,有错则丢弃

(可以选择开启或者关闭)

在网络上传输的数据,是可能会出现一些问题的。

因为网络上的数据本质都是一些 0/1 BIT流,而这些BIT流是通过光信号或者电信号来传递的。

如果传输过程中,受到一些干扰(比如磁暴?),就容易出现”比特翻转”的情况 (0变1 ,1变0)。 

UDP效验和就是为了验证当前的传输数据是否出现了问题。

UDP校验和往往是根据原始数据的内容来生成,不同的内容生成效验和也就不一样

这个时候,如果数据内容发生了改变,效验和也就会发生变化。

接收方就可以通过计算数据内容来获取效验和,和保存在UDP首部的效验和进行对比,不相同则说明数据发送了错乱。

关于UDP效验和的计算

关于UDP的检验和计算(附代码) – roccoshi – 博客园 (cnblogs.com)icon-default.png?t=LA23https://www.cnblogs.com/roccoshi/p/13033014.html

UDP数据

?存放来自上层应用层的数据报

UDP协议的特点

1.无连接

当发送方的socket创建好之后,就可以立即尝试读写数据。

举个例子

你随便告诉我了一个地址(相当于IP地址)和电话号码(相当于端口号),我不管这个地方是不是真的存在,我就向这个地方发送了个滑稽。

这个过程就相当于无连接。

UDP协议解析

 

2.不可靠传输

由于数据在网络上传输存在丢包及传输错误甚至被恶意篡改的情况,UDP无法规避这些情况。

UDP传输数据就像,从我这里离开之后,你出现的任何问题,都与我无关。

3.面向数据报

以一个一个的数据报为基本单位(每个数据报多大,不同的协议里面是有不同的约定的)

发送的时候,一次至少发一个数据报(如果尝试发一个半,实际只能发出去一个)

接收的时候,一次至少接收一个数据报(如果尝试收半个,剩下半个就没了)

4.全双工

支持双向通信,可以同时向对方发送接收数据

UDP协议解析

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133879.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 感知机原理小结

    感知机原理小结  感知机由Rosenblatt于1957年提出,是神经网络和支持向量机的基础。这里先简单介绍一下什么是感知机。本篇博客为《统计学方法》第二章和博客《感知机原理小结》的总结。感知机模型  感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,分别取+1+1+1和−1−1-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。这还是很…

    2022年10月8日
    3
  • vsftp 用户_共享提示用户账户限制

    vsftp 用户_共享提示用户账户限制背景Oracle全库备份,异地备份在实现异地备份后,由第三方人员登录服务器拉取dmp文件.为了确保安全,创建一个特定ftp账号用于第三方人员使用要求1.可以登录服务器2.可以拉取dmp文件3.仅限在dmp文件的目录下,不能cd其他路径,ls其他目录解决过程yum安装ftp服务[root@78778e06dc0a/]#yuminstallvsftpd-y修改vsftp配置文件,开启限制[…

    2022年9月25日
    2
  • 2021最新Java基础篇(后续已更新到另一篇文章)

    2021最新Java基础篇(后续已更新到另一篇文章)提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Java基础?1.1什么是变量:1.2类型的分类:1.3类型的大小:1.4类型的转换与强制类型转换:二、使用步骤1.引入库2.读入数据总结前言提示:在这里可以学到Java基础内容。一、Java基础?1.1什么是变量:变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为”变量”1.2类型的分类:1、基本数据类型变量2、引用数据类型变量

    2022年7月9日
    19
  • thinkphp5 layui分页样式[通俗易懂]

    thinkphp5 layui分页样式[通俗易懂]tp5之layui分页样式1.分页类路径:\thinkphp\library\think\paginator\driverLayui.php<?phpnamespacethink\paginator\driver;usethink\Paginator;classLayuiextendsPaginator{/***上一页按钮…

    2022年7月17日
    26
  • linux系统网桥管理工具brctl 安装及使用

    linux系统网桥管理工具brctl 安装及使用

    2022年2月12日
    46
  • 大学微积分函数的极限_微积分基本公式求极限

    大学微积分函数的极限_微积分基本公式求极限LaTeX语法参考:http://www.mohu.org/info/lshort-cn.pdf第一讲:函数实数与数轴,实数集(区间、邻域)。有界集与确界。函数及常用函数(函数三要素、数列(整标函数)、基本初等函数、初等函数)。【分段函数是否一定非初等;y&amp;amp;amp;amp;amp;NegativeThinSpace;&amp;amp;amp;amp;amp;NegativeThinSpace;=&amp;amp;amp;amp;amp;Negati

    2022年8月11日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号