传输层--UDP协议

news2025/7/23 16:20:58

目录

一.补充知识

1.1传输层​

1.2端口号 

1.3netstat

二.UDP

2.1UDP协议格式

2.2UDP如何将有效载荷上交给上层

2.3UDP如何将报头与有效载荷进行分离?

2.4理解报头

2.5.UDP协议特点

2.6UDP缓冲区

2.6基于UDP的应用层协议


一.补充知识

1.1传输层

 之前介绍了应用层HTTP协议与HTTPS协议,表示如何对数据进行划分,进行处理,交给用户。其实应用层之后要把数给传输层。传输层负责可靠性传输,确保数据能够可靠地传送到目标地址(UDP不太可靠)

1.2端口号 

端口号(Port) 标识了一个主机上进行通信的不同的应用程序 。当主机从网络中获取到数据后,需要自底向上进行数据的交付,数据上交给那个程序就由端口号来决定。在 TCP/IP 协议中 , 用 " 源 IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一个五元组来标识一个通信。

端口号范围划分:

0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的,端口号和进程是一一对应的。

1024 ~ 65535:操作系统动态分配的端口号。客户端程序的端口号就是由操作系统从这个范围分配的。

一些知名端口号:

  • ssh服务器,使用22端口。
  • ftp服务器,使用21端口。
  • telnet服务器,使用23端口。
  • http服务器,使用80端口。
  • https服务器,使用443端口。

我们可以查看/etc/services文件,该文件是记录网络服务名和它们对应使用的端口号及协议。

 一个端口号只能绑定一个进程,但一个进程可以绑定多个端口号

1.3netstat

netstat是一个用来查看网络状态的重要工具 。

  • n:拒绝显示别名,能显示数字的全部转换成数字。
  • l:仅列出处于LISTEN(监听)状态的服务。
  • p:显示建立相关链接的程序名。
  • t(tcp):仅显示tcp相关的选项。
  • u(udp):仅显示udp相关的选项。
  • a(all):显示所有的选项,默认不显示LISTEN相关。

 查看TCP相关的网络信息时,一般选择使用nltp组合选项,例如:

补充:pidof命令可以通过进程名,查看进程id,比较方便

二.UDP

2.1UDP协议格式

16位源端口号:自己的进程的端口号
16位目的端口号:要访问的目标进程的端口号

16位UDP长度:表示整个数据报(UDP首部+UDP数据)的最大长度;就是为了让UDP成为数据报式,而不是流式的。

 数据报:报文和报文之间有明显边界,因为有16位UDP长度。

注意:我们在进行网络套接字编程时,所用到的接口是在应用层与传输层之间的,是操作系统提供的。socket接口往下的传输层实际就是由操作系统管理的,因此UDP是属于内核管理的,是操作系统本身协议栈自带的,其代码不是由上层用户编写的,UDP的所有功能都是由操作系统完成,因此网络也是操作系统的一部分。

2.2UDP如何将有效载荷上交给上层

UDP上层有许多应用层协议,应用层的每一个网络进程都会绑定一个端口号,只需把数据上交给与目的端口号相同的进程即可。

2.3UDP如何将报头与有效载荷进行分离?

UDP的报头当中只包含四个字段,每个字段的长度都是16位,总共8字节。因此UDP采用的实际上是一种定长报头,UDP在读取报文时读取完前8个字节后,其余的就是有效载荷。

2.4理解报头

 报头就是带有位段的结构体,添加报头时,本质就是将数据拷贝到对应内核的空间当中。

当应用层将数据交给传输层后,在传输层就会创建一个UDP报头类型的变量,然后填充报头当中的各个字段,此时就得到了一个UDP报头。

此时操作系统再在内核当中开辟一块空间,将UDP报头和有效载荷拷贝到一起,此时就形成了UDP报文。

2.5.UDP协议特点

无连接: 知道对端的IP和端口号就直接进行传输, 不需要建立连接;
不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息;(不可靠可理解为:传输过程UDP报文丢失就真的丢失了。优点是:代码简单,维护简单,效率更高等)
面向数据报:当应用层交给UDP多长的报文,UDP就原样发送,既不会拆分,也不会合并,这就叫做面向数据报 ,不能够灵活的控制读写数据的次数和数量。

2.6UDP缓冲区

UDP没有真正意义上的 发送缓冲区.,会调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作,但它具有接受缓冲区。

原因:如果UDP收到一个报文后是因为上次收到的报文没有被上层读取,而被迫丢弃一个可能并没有错误的报文,这就浪费了资源。UDP的接收缓冲区的作用就是,将接收到的报文暂时的保存起来,供上层读取。但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致(即:UDP报文大概率乱序,因为UDP不保证可靠性); 如果缓冲区满了, 再到达的UDP数据还是会被丢弃。

2.6基于UDP的应用层协议

       NFS: 网络文件系统

        TFTP: 简单文件传输协议

        DHCP: 动态主机配置协议

        BOOTP: 启动协议 ( 用于无盘设备启动 )

        DNS: 域名解析协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相恨见晚的office办公神器(不坑盒子/打工人Excel插件2023年最新版)

不坑盒子 这是一个非常好用的插件工具,专门应用在Word文档和wps,支持Office 2010以上的版本,操作也简单且实用。 不坑盒子下载及使用说明 一键排版功能 像是下面的自动排版功能,可以在配置里面先设定好需要的格式,…

站内SEO排名不上?或许是这些常见问题导致的

在当今数字化的时代,几乎所有的企业和个人都有自己的网站。 然而,拥有一个网站并不代表着它就一定能够被搜索引擎优先展示。 SEO(搜索引擎优化)是一门需要技巧和耐心的艺术。在实践SEO的过程中,站内SEO是一个重要的环…

Hive 运行环境搭建

文章目录Hive 运行环境搭建一、Hive 安装部署1、安装hive2、MySQL 安装3、Hive 元数据配置到 Mysql1) 拷贝驱动2) 配置Metastore 到 MySQL3) 再次启动Hive4) 使用元数据服务的方式访问Hive二、使用Dbaver连接HiveHive 运行环境搭建 HIve 下载地址:http://archive.a…

剑指-Offer-09-用两个栈实现队列

剑指-Offer-09-用两个栈实现队列 题目描述: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作…

Qt 事件循环

一、QT消息/事件循环机制   Qt作为一个可视化GUI界面操作系统,是基于事件驱动的,我们程序执行的顺序不再是线性的,而是由一个个应用程序内部或外部的事件进行驱动的,无事件时便阻塞。这个有点类似于while循环,函数体…

智能交通数据集Rope3D(仅限科研使用)

Rope3D Dataset 官网:https://thudair.baai.ac.cn/index !!!如想要使用Rope3D数据集进行2D检测,最后有我们处理完的数据集链接。 !!! 介绍: DAIR-V2X数据集是首个用于…

11 款全能的苹果设备激活锁移除工具

出于安全原因,每个 Apple 用户都可以设置一个 Apple ID和密码来保护他们的信息。但如果您忘记了 Apple ID 和密码,您将无法使用 iCloud 激活锁。如果发生这种情况,您应该怎么办?不用担心。iCloud 激活锁移除工具专为在 iOS 设备上…

【Arduino疑难杂症】:arduino IDE2.0.4安装ESP8266、ESP32库教程

& 项目场景: 2023年3月7日,在使用新版arduino编程ESP8266的时候,发现无法像老版本那样去添加库或添加zip库,这个纯个人原因,以免习惯了老版本的一些同学也会迷茫这个问题,于是这篇文章应运而生&…

汽车标定知识整理(三):CCP报文可选命令介绍

目录 一、可选命令 CRO命令报文的可选命令表: 二、可选命令帧格式介绍 1、GET_SEED——获取被请求资源的种子(0x12) 2、UNLOCK——解锁保护(0x13) 3、SET_S_STATUS——设置Session状态(0x0C&#xff0…

Webpack打包--优化项目

1. Webpack基本概念 目标: webpack本身是, node的一个第三方模块包, 用于打包代码 2.Webpack能做什么 把很多文件打包整合到一起, 缩小项目体积, 提高加载速度 3.Webpack的官方解释 从本质上来讲,webpack是一个现在的javaScript应用的静态模块化打包工具。&#xff…

leetcode 2187. Minimum Time to Complete Trips(完成行程的最短时间)

(Medium) time数组里面是每个bus完成一次路程需要的时间,假设时间单位是h, 比如time [1,2,3]就表示第1辆bus跑完路程需要1h,第2辆需要2h,第3辆需要3h. 那么把所有bus都考虑进来,总共要跑完totalTrips次路程,问至少需…

数据库之基本功:Where 中常用运算符

1. 运算符及优先级 ( )优先级最高 SQL> show user; USER is "SCOTT" SQL> select ename, job, sal, comm from emp where jobSALESMAN OR jobPRESIDENT and sal> 1500;ENAME JOB SAL COMM …

Pyspark基础入门5_RDD的持久化方法

Pyspark 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hi…

回收站清空恢复,4种方法任你选!

案例:不小心清空了回收站怎么恢复? “回收站刚刚清空的文件怎么恢复呀?辛苦收集的材料不小心删除了,请大神来帮我下。” 回收站是我们电脑上的一个非常实用的功能,可以让我们暂时存放不需要的文件或者是可以被删除的…

启动u盘还原成普通u盘(Windows Diskpart)

使用windows系统的diskpart 命令解决系统盘恢复成普通U盘的问题:1. 按Windows R键打开运行窗口。在搜索框中输入“ Diskpart ”,然后按 Enter 键。2. 现在输入“ list disk ”并回车。3. 然后输入“ select disk X ”(将 X 替换为可启动U盘的…

围棋高手郭广昌的“假眼”棋局

(图片来源于网络,侵删)文丨熔财经作者|易不二2022年,在复星深陷债务压顶和变卖资产漩涡的而立之年,“消失”已久的郭广昌,在质疑与非议声中回国稳定军心,强调复星将在未来的五到十年迎来一个全新…

安卓反编译入门03-dex2jar反编译apk得到Java源代码

1.获取工具dex2jar下载地址:http://sourceforge.net/projects/dex2jar/files/直接下载下载完成后,解压得到文件夹dex2jar-2.0jd-gui下载地址:http://jd.benow.ca/ 直接下载(官网版本无法复制中文,可以用这个&#xff0…

K8s pod 动态弹性扩缩容 HPA

一、概述Horizontal Pod Autoscaler(HPA,Pod水平自动伸缩),根据平均 CPU 利用率、平均内存利用率或你指定的任何其他自定义指标自动调整 Deployment 、ReplicaSet 或 StatefulSet 或其他类似资源,实现部署的自动扩展和…

算法练习-二分查找(二)

算法练习-二分查找(二) 文章目录算法练习-二分查找(二)1 二分查找1.1 题目1.2 题解2 猜数字大小2.1 题目2.2 题解3 寻找比目标字母大的最小字母3.1 题目3.2题解4 搜索插入位置4.1 题目4.2 题解5 在排序数组中查找元素的第一个和最后一个位置5.1 题目5.2 …

34- PyTorch数据增强和迁移学习 (PyTorch系列) (深度学习)

知识要点 对vgg 模型进行迁移学习定义数据路径: train_dir os.path.join(base_dir, train) # base_dir ./dataset 定义转换格式: transform transforms.Compose([transforms.Resize((96, 96)), # 统一缩放transforms.ToTensor(), # 转换为tensortransforms.No…