传输层协议——UDP协议

目录

一、传输层

二、再谈端口号

端口号的划分

知名端口号

pidof

netstat命令

三、UDP协议

1、UDP协议格式

2、UDP协议特点

3、UDP协议的缓冲区

四、基于UDP的应用层协议


一、传输层

上一篇文章我们所讲到的HTTP协议和HTTPS协议,是属于应用层协议。我们知道在网络的七层模型中,应用层的下面一层就叫做传输层,应用层需要先将数据交给传输层,由传输层对数据做进一步处理后再将数据继续向下进行交付。而传输层负责可靠性传输,确保数据能够可靠地传送到目标主机。传输层常用的协议就是UDP协议和TCP协议。

今天我们先来讲一讲UDP协议。

二、再谈端口号

通过前面的学习,我们知道,端口号可以标识一个主机上进行网络通信的唯一的一个进程。当主机从网络中获取到数据后,需要自底向上进行数据的交付,而这个数据最终应该交给上层的哪个应用软件进程,就是由该数据当中的目的端口号来决定的。

因为最终我们需要将数据交给应用层,而且是通过传输层将最终数据交给应用层的,所以传输层必定能够提取出相应的端口号,从而知道应该将数据交付给应用层的哪一个进程。因此端口号应该是属于传输层。

在TCP/IP协议中,我们使用“源IP地址”,“源端口号”,“目的IP地址”,“目的端口号”,“协议号”这样一个五元组来标识一个通信。协议号用来标识通信所使用的协议(TCP还是UDP)。

端口号的划分

端口号是一个16位整数,因此端口号的范围是0 ~ 65535:

0 ~ 1023:知名端口号。比如HTTP,FTP,SSH等这些广为使用的应用层协议,它们的端口号都是固定的。
1024 ~ 65535:操作系统动态分配的端口号。客户端程序的端口号就是由操作系统从这个范围分配的。

知名端口号

因为有些服务器是非常常用的,所以这些服务器的端口号一般都是固定的:

ssh服务器:22端口。
ftp服务器:21端口。
telnet服务器:23端口。
http服务器:80端口。
https服务器:443端口。

pidof

pidof命令:可以通过进程名,查看进程的id。使用:pidof  进程名

netstat命令

netstat是一个用来查看网络状态的命令。

其常见的选项:

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

三、UDP协议

1、UDP协议格式

UDP协议格式如下:

说明:

16位源端口号:表示数据从应用层的哪个服务进程来。
16位目的端口号:表示数据要到服务端的哪个进程去。
16位UDP长度:表示整个数据报(UDP报头+UDP数据)的长度。
16位UDP检验和:如果UDP报文的检验和出错,就会直接将报文丢弃。

我们在应用层看到的端口号大部分都是16位的,其根本原因就是因为传输层协议当中规定了端口号是16位的。

UDP协议如何分离报头和有效载荷(如何进行封装)

UDP协议采取的是定长报头的方式,即UDP协议的报头大小为8字节。如果传输层拿到一个UDP数据报文, 会直接读取最前面的8字节,就是报头。这样就可以将报头和有效载荷分离。

UDP协议如何向上进行交付

UDP协议会根据16位端口号向上进行交付。因为应用层的进程一定是绑定了端口号的。 

UDP协议如何知道得到的是否是一个完整的报文

在传输层,将报头和有效载荷分开后,提取出报头中的16位UDP长度,用其减去报头固定长度8字节,就是有效载荷的大小。

在内核中,UDP报头实际就是一个位段类型。

封装报头的本质,其实就是在传输层创建一个UDP报头类型的变量,然后填充位段当中的各个字段,此时就得到了一个UDP报头。

2、UDP协议特点

UDP的特点:
1、无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。
2、不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。
3、面向数据报:不能够灵活的控制读写数据的次数和数量。

面向数据报:应用层交给UDP多长的报文,UDP就原样发送,既不会拆分,也不会合并,这就叫做面向数据报。比如用UDP传输100个字节的数据:如果发送端调用一次sendto,发送100字节,那么接收端也必须调用对应的一次recvfrom,接收100个字节;而不会循环调用10次recvfrom,每次接收10个字节。

3、UDP协议的缓冲区

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

四、基于UDP的应用层协议

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【小笔记】问答系统可视化实现的三种方式

下面三种方式都是基于Python的哈,从简单到复杂。 方式一:命令行交互问答 优点:原始简单直接 方式二:使用Python可视化框架 优点:无需学习前端技术栈即可搭建一个web。 streamlit:⭐️⭐️⭐️⭐️gra…

【服务器优化】LVS负载均衡

LVS负载均衡 LVS简介 ​ LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,终…

nginx的应用部署nginx

这里写目录标题 nginxnginx的优点什么是集群常见的集群什么是正向代理、反向代理、透明代理常见的代理技术正向代理反向代理透明代理 nginx部署 nginx nginx(发音同enginex)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3&…

Java设计模式 _结构型模式_外观模式

一、外观模式 1、外观模式 外观模式(Facade Pattern)是一种结构型模式。主要特点为隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这有助于降低系统的复杂性,提高可维护性。当客户端与多个子系统之间存在大量…

FPGA+海思ARM方案,可同时接收HDMI/VGA 两种信号,远程控制

FPGA海思ARM方案,可同时接收HDMI/VGA 两种信号,通过配置输出任一图像或者拼接后的图像 客户应用:无线远程控制 主要特性: 1.支持2K以下任意分辨率格式 2.支持H264压缩图像 3.支持WIFI/4G无线传输 4.支持自适应输入图像分辨率 …

如何编辑百度百科里面的资料

编辑百度百科资料是一个相对简单的过程,但同时也需要遵循一定的规则和流程。以下是百科优化网yajje整理的编辑百度百科资料的步骤和注意事项。 登录账户 首先,编辑百度百科需要一个百度账号。如果没有,你需要先注册一个。登录后,…

西奥机电CLRT-01:重塑碳酸饮料质检新纪元

西奥机电CLRT-01:重塑碳酸饮料质检新纪元 在追求品质生活的今天,碳酸饮料的品质检测成为了行业内外关注的焦点。西奥机电,作为行业创新的领跑者,携其最新研发的CLRT-01二氧化碳气容量测试仪,为碳酸饮料行业带来了革命性…

一文详解|影响成长的关键思考(二)

之前写过一篇《一文详解|影响成长的关键思考》,里面对自己工作前几年的心法进行了总结,并分享了出来。现在又工作了一段时间后,有了一些新的体会,想进一步分析一下,于是便有了此文。的确,思考也…

LeetCode63:不同路径Ⅱ

题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从左上角…

【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(NPS篇)

NPS简介 Network Policy Server(NPS)是微软Windows Server中的一个网络服务,它作为RADIUS服务器实现,用于集中管理网络接入请求。NPS处理对网络资源的认证、授权和审计请求,通常用于控制远程访问VPN和无线网络的接入。…

Python 数据库操作- sqlite3 模块

Python sqlite3 模块 1. 安装 SQLite3 可使用 sqlite3 模块与 Python 进行集成。sqlite3 模块是由 Gerhard Haring 编写的。它提供了一个与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。用户不需要单独安装该模块,因为 Python 2.5.x 以上版本默认自带了该模块…

(动画详解)LeetCode225.用队列实现栈

. - 力扣&#xff08;LeetCode&#xff09; 题目描述 解题思路 这道题的思路就是使用两个队列来实现 入栈就是入队列 出栈就是将非空队列的前n-1个元素移动到新的队列中去 再将最后一个元素弹出 动画详解 代码实现 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.…

打车遇到臭车的底层逻辑!修炼的法门居然又捡起来了!——早读(逆天打工人爬取热门微信文章解读)

冥冥之中自有天意 引言Python 代码第一篇 洞见 热搜上“打车遇到臭车”话题&#xff0c;戳到了650万成年人的尴尬第二篇 冯站长之家 三分钟新闻早餐结尾 生命不息 探索不止 在生命的旅程中 我不断探索不断发现 永不停歇 引言 记 ​一大突破 炁​机启动 ​没想到 ​去年9月份…

【NodeMCU实时天气时钟温湿度项目 3】连接SHT30传感器,获取并显示当前环境温湿度数据(I2C)

今天&#xff0c;我们开始第三个专题&#xff1a;连接SHT30温湿度传感器模块&#xff0c;获取当前环境实时温湿度数据&#xff0c;并显示在1.3寸TFT液晶显示屏上。 第一专题内容&#xff0c;请参考 【NodeMCU实时天气时钟温湿度项目 1】连接点亮SPI-TFT屏幕和UI布局设计…

【0day漏洞复现】中移铁通禹路由器信息泄露漏洞

0x01 阅读须知 “如棠安全的技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供…

AJAX家政系统源码部署/售后更新/搭建/上线维护

基于FastAdmin和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统&#xff0c;用户端、服务端(高级授权)、门店端(高级授权)各端相互依赖又相互独立&#xff0c;支持选择项目、选择服务人员、选择门店多种下单方式&#xff0c;支持上门服务和到店核销两种服务方式…

收放卷控制系统详细算法介绍(全伺服系统)

收放卷控制系统涉及的内容非常多,这里我们介绍全伺服系统利用电子齿轮指令实现主从轴的比例随动速度控制,收放卷控制算法介绍常用链接如下 1、收放卷+排线控制 收放卷+排线控制系统框图-CSDN博客文章浏览阅读24次。1、收放卷前馈量计算FC收放卷前馈量计算FC(CODESYS ST源代…

基于51单片机的智能导盲手杖—超声波测距

基于51单片机的智能导盲手杖 &#xff08;仿真&#xff0b;程序原理图&#xff0b;PCB设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.显示前方障碍物距离。 2.实时测量距离&#xff0c;并通过蜂鸣器提醒距离过短&#xff0c;蜂鸣器蜂鸣发出预警。 3.可以通过按键调…

IP代理对矩阵养号带来哪些帮助?

IP代理技术在矩阵养号策略中发挥着不可忽视的作用&#xff0c;特别是在当今这个信息爆炸、网络高度发达的时代。矩阵养号&#xff0c;尤其是抖音等社交媒体平台的矩阵养号&#xff0c;旨在通过精心策划和管理多个账号&#xff0c;实现内容的多元化展示、提升曝光率和互动率&…

.NET WebService \ WCF \ WebAPI 部署总结 以及 window 服务 调试

一、webservice 部署只能部署IIS上&#xff0c; 比较简单&#xff0c;就不做说明了 二、 WCF 部署 1 部署到IIS 跟部署 webservice 部署方法一样的 wcf 部署2 部署到控制台 要以管理员运行vs&#xff0c;或者 管理员运行 控制台的exe 在控制器项目中 创建IUserInfoService 接口…