【计算机网络】Udp详解

前言

上几文章我们讲解了应用层协议Http和Https,要知道应用层协议有很多,这些都是程序员自己定制的,而真正要传输的时候,是要在操作系统的传输层进行的,今天我们就来学习一下传输层协议Udp的

标识一个通信

要进行跨网络通信,就要标识一个网络通信的唯一性

通常需要:源IP、目的IP、协议号、源端口号、目的端口号这五个信息来标识一个网络通信。

端口划分

  • 0-1023
    属于知名端口号,Http、FTP、SSH等广为使用的应用层协议,端口号是固定的。

    • SSH,使用22端口
    • FTP,使用21端口
    • telnet,使用23端口
    • Http,使用80端口
    • Https,使用443端口

可以使用以下命令查看知名端口号:

cat /etc/services
  • 1024-65535
    操作系统动态分配对策端口号,客户端程序的端口号就是从这里面随机分配的。

我们设计端口的时候,要避开这些知名端口。

netstat

是一个查看网络状态的工具

选项:
- n,拒绝显示别名,能够数字化就全数字化
- l ,只列出在监听状态(listen)的服务状态
- p,显示建立相关链接的程序名
- t ,只显示tcp相关
- u,只显示udp相关
- a,显示所有选项,默认不显示listen相关

pidof

通过进程名查看进程id

Udp协议端格式

在这里插入图片描述

可以看到,Udp报头长度总共八个字节,其中,十六位Udp长度表示数据报的报头+报文总共的大小,十六位校验和出错会直接将数据报丢弃。

而且由于十六位Udp长度的限制,TCP能传输的大小是有限的。一个Udp能传输的数据最大长度是64k,超过就需要在应用层手动分包多次传送,并在接收端手动拼装。

Udp特点

  • 无连接,不需要建立连接,知道ip和端口号就能传输
  • 不可靠,没有确认传传机制,udp不反回任何错误信息
  • 面向数据报,不能灵活控制读写数据的次数和数量
  • 简单。

面向数据报

应用层交给Udp多长的报文,Udp就要直接发送,不能拆分和并,例如:

发送端调用sendto,发送100字节,那么接收端必须调用一次recvfrom100字节,不能循环调用recvfrom,每次10字节

Udp缓冲区

Udp没有真正的发送缓冲区,调用sendto会直接将要发送的数据交给内核,由内核将数据传输给网络并进行后续动作

Udp具有接收缓冲区,但是这个缓冲区不保证Udp数据报的顺序,如果缓冲区满了,照样会被丢弃

也因此,Udp socket 既可以写也可以读,是全双工的。

基于Udp的协议

  • NFS,网络文件系统
  • TFTP,简单文件传输协议
  • DHCP,动态主机配置协议
  • BOOTP,启动协议
  • DNS,域名解析协议

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

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

相关文章

OSI七层模型和TCP/IP四层模型

OSI七层模型和TCP/IP四层模型 七层模型(OSI) OSI七层模型(Open Systems Interconnection Reference Model)是一个用于计算机网络体系结构的标准化框架,旨在定义网络通信中不同层次的功能和协议。 各个层次具体如下: 物理层&am…

MongoDB的下载和安装

一、MongoDB下载 下载地址:https://www.mongodb.com/try/download/community 二、安装 因为选择下载的是 .zip 文件,直接跳过安装,一步到位。 选择在任一磁盘创建空文件夹(不要使用中文路径),解压之后把…

DaVinci Resolve Studio 18 for Mac 达芬奇调色

DaVinci Resolve Studio 18是一款专业的视频编辑和调色软件,适用于电影、电视节目、广告等各种视觉媒体的制作。它具有完整的后期制作功能,包括剪辑、调色、特效、音频处理等。 以下是DaVinci Resolve Studio 18的主要特点: - 提供了全面的视…

nginx一般轮询、加权轮询、ip_hash等负载均衡模式配置介绍

一.负载均衡含义简介 二.nginx负载均衡配置方式 准备三台设备: 2.190均衡服务器,2.191web服务器1,2.160web服务器2,三台设备均安装nginx,两台web服务器均有网页内容 1.一般轮询负载均衡 (1&#xff09…

马来西亚的区块链和NFT市场调研

马来西亚的区块链和NFT市场调研 基本介绍 参考: https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A zz制度:联邦议会制 语言文字: 马来语 民族: 69.4%原住民(土著),23.2%…

逗号操作符

逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。 运用:

人工智能任务1-【NLP系列】句子嵌入的应用与多模型实现方式

大家好,我是微学AI,今天给大家介绍一下人工智能任务1-【NLP系列】句子嵌入的应用与多模型实现方式。句子嵌入是将句子映射到一个固定维度的向量表示形式,它在自然语言处理(NLP)中有着广泛的应用。通过将句子转化为向量…

(七)Unity VR项目升级至Vision Pro需要做的工作

Vision Pro 概述 定位为混合现实眼镜,对AR支持更友好 无手柄,支持手(手势)、眼(注视)、语音交互 支持空间音频,相比立体声、环绕声更有沉浸感和空间感 支持VR/AR应用,支持多种应用模…

使用chatGPT-4 畅聊量子物理学(二)

Omer 量子力学的主导哲学或模型或解释是什么? ChatGPT 量子力学是一门描述微观世界中粒子行为的物理学理论,但它的解释和哲学观点在学术界存在多种不同的观点和争议。以下是几种主要的哲学观点或解释: 哥本哈根解释:这是最为广泛…

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…

HTTP之cookie基础学习

目录 Cookie 什么是Cookie Cookie分类 Cookie版本 Cookie工作原理 Cookie详解 创建cookie cookie编码 cookie过期时间选项 Cookie流程 Cookie使用 会话管理 个性化信息 记录用户的行为 Cookie属性 domain选项 path选项 secure选项 cookie…

【eNSP】OSPF实验

【eNSP】OSPF实验 原理术语Router-idOSPF区域DR与DDR 过程 实验根据图片连接模块配置设备名称和IP地址修改R1:修改R2:修改R3修改R4修改R5测试连通性 OSPF设置设置进程号和RID划分OSPF区域DR设置,2way实验设置查看设置结果 口令验证 原理 OSP…

【深度思考】聊聊CGLIB动态代理原理

1. 简介 CGLIB的全称是:Code Generation Library。 CGLIB是一个强大的、高性能、高质量的代码生成类库,它可以在运行期扩展Java类与实现Java接口, 底层使用的是字节码处理框架ASM。 Github地址:https://github.com/cglib/cgli…

Windows下升级jdk1.8小版本

1.首先下载要升级jdk最新版本,下载地址:Java Downloads | Oracle 中国 2.下载完毕之后,直接双击下载完毕后的文件,进行安装。 3.安装完毕后,调整环境变量至新安装的jdk位置 4.此时,idea启动项目有可能会出…

【前端二次开发框架关于关闭eslint】

前端二次开发框架关于关闭eslint 方法一方法二方法三方法四:以下是若想要关闭项目中的部分代码时: 方法一 在vue.config.js里面进行配置: module.exports {lintOnSave:false,//是否开启eslint保存检测 ,它的有效值为 true || false || err…

uniapp+uview封装小程序请求

提要: uniapp项目引入uview库 此步骤不再阐述 1.创建环境文件 env.js: let BASE_URL;if (process.env.NODE_ENV development) {// 开发环境BASE_URL 请求地址; } else {// 生产环境BASE_URL 请求地址; }export default BASE_URL; 2.创建请求文件 该…

【Redis】Redis三种集群模式-主从、哨兵、集群各自架构的优点和缺点对比

文章目录 前言1. 单机模式2. 主从架构3. 哨兵4. 集群模式总结 前言 如果Redis的读写请求量很大,那么单个实例很有可能承担不了这么大的请求量,如何提高Redis的性能呢?你也许已经想到了,可以部署多个副本节点,业务采用…

无涯教程-Perl - sethostent函数

描述 该函数应在首次调用gethostent之前调用。 STAYOPEN参数是可选的,在大多数系统上未使用。 当gethostent()检索主机数据库中下一行的信息时,然后sethostent设置(或重置)枚举到主机条目集的开头。 语法 以下是此函数的简单语法- sethostent STAYOPEN返回值 此函数不返回…

【Unity每日一记】关于物体(敌方)检测—(向量点乘相关)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

Docker中部署Nginx

1.Nginx部署需求 2.操作教程 3.实际步骤 把配置粘过来。