【Linux Network】传输层协议——UDP

news2024/11/27 10:39:38

目录

传输层

端口号

 端口号范围划分

认识知名端口号(Well-Know Port Number)

netstat

pidof

UDP协议

UDP协议端格式

UDP的特点

面向数据报

UDP的缓冲区

UDP使用注意事项

基于UDP的应用层协议



UDP详解🌷

传输层

在TCP/IP协议中可以把网络简单的划分为四个部分:

自顶向下分别是应用层、传输层、网络层和数据链路层;

在这里插入图片描述

传输层的功能:负责数据能够从发送端传输到接收端,但数据在实际的传输过程中是贯穿整个网络协议栈的

在传输层中,我们主要学习两个协议:UDP协议和TCP协议;

上篇博客中讲到的HTTP协议是应用层的协议,它是基于传输层的TCP协议设计的;

端口号

端口号 (Port) 标识了一个主机上进行通信的不同的应用程序 ;
一个进程通常是可以绑定多个端口号的,但一个端口号只能被一个进程所绑定,因此在网络通信时,大都是一个进程对应一个端口号;

TCP/IP 协议中 , " IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一个五元组来标识一个通信 ( 可以通过 netstat -n 查看 );

 端口号范围划分

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

认识知名端口号(Well-Know Port Number)

有些服务器是非常常用的 , 为了使用方便 , 人们约定一些常用的服务器 , 都是用以下这些固定的端口号:
  • ssh服务器, 使用22端口;
  • ftp服务器, 使用21端口;
  • telnet服务器, 使用23端口;
  • http服务器, 使用80端口;
  • https服务器, 使用443端口;
使用命令: vim /etc/services  可以看到知名端口号;或执行如下命令:
cat /etc/services
我们自己写一个程序使用端口号时 , 要避开这些知名端口号;

netstat

netstat 是一个用来查看网络状态的重要工具;
语法 netstat [ 选项 ]
功能 :查看网络状态
常用选项
  • n 拒绝显示别名,能显示数字的全部转化成数字
  • l 仅列出有在 Listen (监听) 的服務状态
  • p 显示建立相关链接的程序名
  • t (tcp)仅显示tcp相关选项
  • u (udp)仅显示udp相关选项
  • a (all)显示所有选项,默认不显示LISTEN相关

我们平常查看TCP进程的命令 netstat -nltp 

我们平常查看TCP进程的命令 netstat -nlup 

pidof

在查看服务器的进程 id 时非常方便;
语法 pidof [ 进程名 ]
功能 :通过进程名 , 查看进程 id

UDP协议

UDP协议端格式

  • 16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度;
  • 如果校验和出错, 就会直接丢弃;

UDP的特点

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

面向数据报

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

UDP的缓冲区

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

UDP使用注意事项

我们注意到 , UDP 协议首部中有一个 16 位的最大长度 . 也就是说一个 UDP 能传输的数据最大长度是 64K( 包含 UDP 首部);
然而 64K 在当今的互联网环境下 , 是一个非常小的数字;
如果我们需要传输的数据超过 64K, 就需要在应用层手动的分包 , 多次发送 , 并在接收端手动拼装 ;

基于UDP的应用层协议

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

当然, 也包括你自己写UDP程序时自定义的应用层协议;

 如果上述文章对您有所帮助的话,还请点赞👍,收藏😉,关注🎈

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

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

相关文章

大数据如何助力营销(3)产品定位

在市场竞争日益激烈的环境下,产品定位是企业成功的关键因素之一。产品定位是指根据目标市场和目标消费者的需求、偏好和期望,确定产品的特性、功能、形象和价值,并与竞争对手的产品进行差异化的过程。产品定位不仅影响产品的设计、开发、生产…

全面讲解涂鸦PaaS2.0开发平台!物联网干货预警

之前我们有介绍过涂鸦 IoT PaaS(点击查看往期介绍),面向开发生态,它集成了云开发、App 开发、硬件开发三大核心支撑能力,能够全方位助力开发者打造极具竞争力的个性化 IoT 解决方案,极大地降低 IoT 开发门槛…

Appium APP自动化环境搭建

1.下载安装 F:\android-sdk-windows F:\Appium-windows-1.21.0 F:\nodejs 2.创建一个bat文件,命名为appium.bat,并在其中写入如下内容: node Appium安装目录\resources\app\node_modules\appium\build\lib\main.js %* 注意:请…

从0到1开始,一步步搭建Web自动化测试框架

测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程。另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人。本章和下一张…

【zabbix】批量监控端口,自动发现规则

快速搞定端口批量监控 一、脚本及配置 1、(文件名:check_port.py)(python2.7版本) 存在路径:/etc/zabbix/zabbix_agentd.d/check_port.py 这个脚本有一部分内容是我从百度上找的,有一部分自己…

【C++】红黑树的实现

文章目录 📕 概念特性 📕 红黑树具体实现节点定义结构框架插入 📕 概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个…

Python基础(四)

目录 一、程序的组织结构 1、前言 二、顺序结构 1、介绍 三、对象的布尔值 1、介绍 2、规定 四、分支结构 1、单分支if结构 1、语法语义 2、语法结构 3、案例 2、双分支if...else结构 1、语法语义 2、语法结构 3、案例 3、多分支if...elif...else结构 1、语…

Java语言---栈与队列

目录 一.栈 1.1栈的概念 1.2.栈的实现 1.2.1数组实现 栈 栈的创建 栈的基本方法实现 1.2.2链表实现 栈 栈的创建 栈的基本方法实现 二.队列 2.1队列的概念 2.2队列的实现 2.3代码实现 2.3.1队列代码的构建 2.3.2 队列 基础方法实现 总结 😽个人主页…

深入理解2D卷积和3D卷积

文章目录 卷积核的维度2D卷积单通道多通道代码example2d卷积操作后变化 3D卷积单通道多通道代码 在项目中用到了conv3但是对其背后的原理还有一些模糊的地方,conv2d与多通道的conv2d的区别在哪里?conv3d的思想理论是什么?对此进行探究和记录……

「AI之劫」:当机器超越人类底线,正在侵犯我们的创造力和道德

随着AI技术的不断发展,AI生成内容(AIGC)已经成为数字娱乐、商业营销和学术研究等领域的热门话题。随着人工智能技术的不断发展越来越多的领域开始应用AI技术,其中之一就是内容生成领域。 AIGC全称为AI-Generated Content, 指基于生…

2023年5月广州/深圳制造业产品经理很适合考的证书-NPDP

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…

【利用AI让知识体系化】入门Egg框架(含实战)

思维导图 文章目录 思维导图第一章:概述1.1 Egg.js 简介1.2 Egg.js 的架构和优势1.3 Egg.js 的基本组件和插件 第二章:环境搭建2.1 Node.js 环境安装和配置2.2 Egg.js 应用创建和项目结构介绍2.3 Egg.js 应用部署和启动 第三章:基本开发3.1 路…

经纬恒润新产品系列 | 这款AR-HUD将颠覆你的认知

随着科技的发展与突破,智能化产品在汽车领域扮演了越来越重要的角色。本文即将介绍**经纬恒润新产品——AR-HUD(增强现实抬头显示系统),**它可以将科幻电影中的驾驶场景变为现实——将信息投影在挡风玻璃上,基于此功能…

开发环境搭建和创建STM32工程

目录 一、开发环境搭建 1. STM32CubeMX 2.Keil安装 二、创建STM32工程 一、开发环境搭建 1. STM32CubeMX ST公司出品 工具链接 https://www.st.com/zh/development-tools/stm32cubemx.html STM32CubeMX是一种图形工具,通过分步过程可以非常轻松地配置STM32微控制器和…

coolshell 镜像备份站点

缅怀技术大佬做的一个镜像站点 - RIP 消息刚开始是在推特传开,后面得到了家人同事的证实。噩耗! worldpeople2019 太意外了!中年程序员,感觉年龄跟我差不多,怎么就这么突然去世了?!诸位码农朋友…

Python爬虫进阶(1),Django+Selenium+Mysql+SimpleUI,从零开始搭建自己的爬虫后台管理系统

如果爬虫做完的话都会发现每个文件要么保存到csv或者是其他格式的文件中,这样做多少会有些麻烦,所以需要将这些内容保存起来方便自己管理和查看内容。 相对于flask而言Django有着相对成熟的一个后台管理系统配合上其他一些插件就可以做到即插即用的效果…

hive安装及配置

hive安装和部署 Hive地址 1.Hive官网地址 http://hive.apache.org/ 2.文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 3.下载地址 http://archive.apache.org/dist/hive/ 4.github地址 http…

全新版本,手把手教你配置c\c++

上一篇图片多,语句乱,内容乱 这一篇采用全新的教程 这次在不删软件的前提下进行 老规矩先把之前看的教程残余删除 如果你有很多插件和设置这边建议先备份 打开c盘,在搜索栏里输入你的用户名 在箭头位置搜索你的用户名,就是你…

通过Python的wordcloud库将单词生成词云(心形形状)

文章目录 前言一、wordcloud库是什么?二、安装wordcloud库三、查看wordcloud库版本四、使用方法1.引入库2.定义图片路径3.定义需要分词的文本4.采用jieba搜索引擎模式分词5.加载心形图片6.创建词云对象7.生成词云8.保存词云图9.词云图效果 总结 前言 大家好&#xf…

第十五章 使用iSCSI服务部署网络存储

文章目录 第十五章 使用iSCSI服务部署网络存储一、iSCSI技术介绍1、硬盘接口类型 二、创建RAID磁盘阵列1、添加四块硬盘2、创建RAID磁盘阵列 三、配置iSCSI服务端1、iSCSI服务的和客户端的操作系统以及IP地址2、安装targetcli3、配置服务端共享资源4、创建iSCSI target名称及配…