网络原理之UDP

news/2024/5/18 14:09:22 标签: java, 网络协议, udp

hi,大家好,又见面了,今天为大家介绍一下UDP的网络原理🐷🐷🐷
在这里插入图片描述

文章目录

  • 认识UDP报文格式
    • UDP特点
      • TCP,UDP应用场景
      • 基于UDP的应用层协议

认识UDP报文格式

UDP特点

TCP,UDP应用场景

基于UDP的应用层协议

1.认识UDP报文格式
在这里插入图片描述
在这里插入图片描述

其实在真正传输的过程中,格式就是第二章图,每个端口号占2个字节,也就是16个比特位,取值范围是0-65535
网络层已经有了源IP和目的IP,那么源端口和目的端口是干啥的呢,是区分发送和接收的数据是从哪个程序的,在同一台主机上可以区分,在不同的主机上也能区分,举个现实的例子,来区分一下源IP,目的IP,源端口和目的端口
我从西边来,到东边买个菜去
这里的我就是源端口,菜就是目的端口
西边就是源IP,东边就是目的IP
端口号的取值范围是0-65535
<1024的端口,称为"知名端口号",这些知名端口号是给名气大的端口号用的
比如http服务器 :8080,ssh :22,ftp :21

报文长度
报文长度也是2个字节,65535,换算成64KB,这个容量其实是非常小的
使用UDP传输室数据的时候要注意UDP数据报不能太长,万一真的要传输一个比较大的数据,可以把一个大的数据拆分成多个部分,使用多个UDP数据报来传输,但是涉及到的封装分用次数太多了,很麻烦,所以直接用TCP,TCP没有限制

校验和
网络传输充满变数,传输过程复杂,网络路径也复杂,可能会出现传输错误
通过网线的电信号来传输,电信号使用高低电平表示0,1
如果外部环境干扰,比如遇到强磁场,强电场,就会导致高低电平的翻转,这个过程就叫做比特翻转,此时数据传输就出错了
因此就要设计校验和,校验和存在的意义就是用来判定一下,当前传输的数据是否出错
如果传输前和传输后的校验和对不上,那么数据一定不对
如果校验和对,数据也有可能不对,因为校验和是一个数字,可能数据个数对,但是内容可能是被替换了,为了解决问题,我们将数据内容作为参数计算数据内容发送变化,校验和也会变化
UDP的校验和算法是CRC算法,是一个简单粗暴的校验和算法,不作过多讨论,自己了解一下吧👀

2.UDP特点
我们再来复习一下
无连接
不可靠
面向数据报
全双工:UDP的socket既能读,也能写,这个概念叫做全双工

缓冲区

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

3. TCP和UDP应用场景
TCP用于可靠传输的情况,比如应用于文件传输,重要状态更新等场景;
UDP用于对高速传输和实时性要求较高的通信领域,例如,学校机房广播上课
注意!
UDP可以实现广播
TCP不能实现广播
广播和群聊不一样
广播是不知道对端IP,群聊是一个一个遍历用户IP,挨个转发

4基于UDP的应用层协议
NFS:网络文件系统
TFTP:简单文件传输协议
DHCP:动态主机配置协议
BOOTP:启动协议(用于无盘设备启动)
DNS:域名解析协议
在这里插入图片描述
今天内容比较简单短小,下期我们介绍TCP,就比较有难度了,我们下期见,拜拜~🤗🤗🤗


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

相关文章

Java并发基石_CAS原理实战02_CAS实现原理

文章目录什么是CAS&#xff1f;CAS的实现原理是什么&#xff1f;cmpxchg指令怎么保证多核心下的线程安全&#xff1f;什么是ABA问题&#xff1f;如何解决ABA问题呢&#xff1f;什么是CAS&#xff1f; CAS&#xff0c;全称CompareAndSwap&#xff0c;比较并替换。 CAS包含了三个…

Optional基础用法

Optional 常用方法 Optional.of() // 参数不能是null Optional<Integer> optional1 Optional.of(1);Optional.of()或者Optional.ofNullable()&#xff1a;创建Optional对象&#xff0c;差别在于of不允许参数是null&#xff0c;而ofNullable则无限制。 Optional.ofNu…

回炉重造三---文件管理

1、文件管理 Linux一切皆文件1.1文件系统的目录结构 每个文件的数据都分为metadata(元数据)&#xff1a;即文件的属性&#xff08;所有者、所属组等&#xff09;,data&#xff08;数据&#xff09;&#xff1a;即文件的内容蓝色&#xff1a;目录&#xff1b;绿色&#xff1a;…

darknet_ros+yolo+realsenseD455+Ubuntu18.04+ROS

很想实现ros和yolo的联合使用&#xff0c;所以找到了darknet_ros这个包&#xff0c;我感觉难点不在于工程&#xff0c;而在于yolo的环境配置。本文将从环境入手逐步实现功能。 1.设备 相机&#xff1a;realsenseD455 笔记本&#xff1a;T440P 显卡&#xff1a;GT-730M 算力&am…

PTA:C课程设计(7)

山东大学&#xff08;威海&#xff09;2022级大一下C习题集&#xff08;7&#xff09;函数题7-6-1 递增的整数序列链表的插入7-6-2 查找学生链表7-6-3 统计专业人数7-6-4 建立学生信息链表编程题7-7-1 查找书籍7-7-2 找出总分最高的学生函数题 7-6-1 递增的整数序列链表的插入…

PHP 7 教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 PHP7入门教程 - 从简单的步骤了解PHP 7&#xff0c;从基本到高级概念&#xff0c;包括简介&#xff0c;性能&#xff0c;环境设置&#xff0c;标量类型声明&#xff0c;返回类型声明&#xff0c;空值合并运算符&#xff0c;Spaceship运算符&#xff0c;常量数组&…

我如何学习使用 Jetpack Compose 开发 Android 应用程序

我如何学习使用 Jetpack Compose 开发 Android 应用程序 Jetpack Compose 和 Android 开发简介 2021 年 7 月&#xff0c;Google 发布了用于为 Android 应用构建原生 UI 的全新工具包 1.0 版。Jetpack Compose 是 Android 开发人员的游戏规则改变者&#xff0c;因为它从通过 X…

dpkg:package architecture (aarch64) does not match system (arm64)

在nx平台下执行 rootroot-desktop:~/test$ sudo dpkg -i MyTest_0.2.1.0_aarch64.deb dpkg: error processing archive MyTest_0.2.1.0_aarch64.deb (--install): package architecture (aarch64) does not match system (arm64) Errors were encountered while processing…