【在Linux世界中追寻伟大的One Piece】传输层协议UDP
发布时间 - 2025-07-21 00:00:00 点击率:次1 -> 传输层
传输层是计算机网络OSI模型中的第四层,负责在网络中的两个节点之间提供端到端的数据传输服务。其主要任务包括数据分段与重组、端口标识、连接控制(如面向连接的TCP和无连接的UDP)、流量控制以及差错检测与处理。这些功能确保数据传输的可靠性、有序性和高效性。
简单来说,传输层确保数据从发送端顺利传输到接收端。
2 -> 端口号
端口号(Port)用于标识一台主机上不同应用程序之间的通信。
在TCP/IP协议中,通过"源IP"、"源端口号"、"目的IP"、"目的端口号"和"协议号"这五元组来唯一标识一个通信连接(可以通过netstat -n命令查看)。
2.1 -> 端口号范围划分
0 - 1023:被称为知名端口号,用于HTTP、FTP、SSH等常用应用层协议,这
些端口号是固定的。
1024 - 65535:由操作系统动态分配,客户端程序的端口号通常从这个范围内分配。
2.2 -> 知名端口号
常用服务器使用固定端口号以便于识别和使用:
ssh服务器使用22端口,ftp服务器使用21端口,telnet服务器使用23端口,http服务器使用80端口,https服务器使用443端口。可以通过特定命令查看这些知名端口号。
在编写程序时,应当避免使用这些知名端口号。
3 -> UDP协议
UDP(用户数据报协议)是一种无连接的传输层协议,提供简单且面向报文的数据传输服务。
UDP不保证数据包的可靠交付、顺序或完整性,不进行拥塞控制,也不需要在传输数据前建立连接。
UDP的头部开销较小,仅8字节,包括源端口、目的端口、长度和校验和字段。
由于其简单性,UDP适用于对实时性要求高的应用,如在线游戏、语音视频通信和某些网络广播。
3.1 -> UDP协议端格式
UDP长度字段为16位,表示整个数据报(UDP首部+UDP数据)的最大长度。如果校验出错,数据报将被直接丢弃。
3.2 -> UDP的特点
UDP传输类似于寄信:
无连接:只需知道对端的IP和端口号即可直接传输,无需建立连接。 不可靠:没有确认和重传机制;如果网络故障导致数据包无法送达,UDP不会向应用层返回错误信息。 面向数据报:不能灵活控制读写数据的次数和数量。 简单高效:UDP头部开销小,仅8字节,适合快速传输数据,尤其是对实时性要求高的应用。 支持广播和多播:UDP可实现单播、广播和多播通信,适合发送数据到多个目的地。 无流量控制:UDP不提供流量控制功能,网络拥塞时可能导致数据包丢失或传输延迟增加。 适用场景:UDP适用于实时音视频通话、在线游戏、DNS查询等对实时性要求高的应用。
3.2.1 -> 面向数据报
应用层交给UDP的数据报文,UDP会原样发送,不拆分也不合并。
例如,使用UDP传输100个字节的数据:
如果发送端通过一次sendto发送100个字节,那么接收端也必须通过一次recvfrom接收这100个字节,而不能通过多次recvfrom接收,每次接收10个字节。
3.3 -> UDP的缓冲区
UDP没有真正的发送缓冲区。调用sendto后,数据直接交给内核,由内核传递给网络层协议进行后续传输。UDP有接收缓冲区,但不能保证接收到的UDP报文的顺序与发送顺序一致;如果缓冲区已满,新的UDP数据将被丢弃。UDP的socket支持读写操作,这被称为全双工。
3.4 -> UDP使用注意事项
UDP协议首部中有一个16位的最大长度字段,这意味着一个UDP数据报的最大长度为64K(包括UDP首部)。
然而,在当今的互联网环境下,64K是一个非常小的数字。
如果需要传输的数据超过64K,必须在应用层手动分包多次发送,并在接收端手动拼装。
3.5 -> 基于UDP的应用层协议
NFS(网络文件系统):用于网络文件共享。 TFTP(简单文件传输协议):用于简单文件传输。 DHCP:动态主机配置协议,用于自动分配IP地址。 BOOTP:启动协议,用于无盘设备启动。 DNS(域名解析系统):用于将域名解析为IP地址。 SNMP(简单网络管理协议):用于网络设备和应用程序的管理,可以使用UDP作为传输层协议。 RIP(路由信息协议):一种基于距离矢量算法的路由协议,使用UDP进行信息交换。 QUIC(快速UDP互联网连接):由谷歌开发的基于UDP的传输层协议,旨在减少连接延迟,提供安全和可靠的连接。 UDT(基于UDP的数据传输协议):一种面向连接的双向应用层协议,建立在UDP之上,支持高速数据传输和可靠性控制。
当然,也包括你自己编写的基于UDP的自定义应用层协议。
感谢各位大佬的支持!!!
互三啦!!!
# linux
# 操作系统
# 谷歌
# 算法
# http
# https
# udp
# ssh
# 端口号
# 应用层
# 互联网
# 数据包
# 首部
# 适用于
# 性要求
# 可以通过
# 将被
# 被称为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Android GridView 滑动条设置一直显示状态(推荐)
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何快速查询网址的建站时间与历史轨迹?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
北京的网站制作公司有哪些,哪个视频网站最好?
南京网站制作费用,南京远驱官方网站?
中山网站制作网页,中山新生登记系统登记流程?
用yum安装MySQLdb模块的步骤方法
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
简单实现jsp分页
装修招标网站设计制作流程,装修招标流程?
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何用狗爹虚拟主机快速搭建网站?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
,在苏州找工作,上哪个网站比较好?
智能起名网站制作软件有哪些,制作logo的软件?
javascript基于原型链的继承及call和apply函数用法分析
如何在香港服务器上快速搭建免备案网站?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
详解CentOS6.5 安装 MySQL5.1.71的方法
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel如何创建自定义Facades?(详细步骤)
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
如何用搬瓦工VPS快速搭建个人网站?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何用PHP工具快速搭建高效网站?
如何在建站主机中优化服务器配置?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何在云指建站中生成FTP站点?
如何在局域网内绑定自建网站域名?
如何在Windows虚拟主机上快速搭建网站?
,怎么在广州志愿者网站注册?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
如何挑选最适合建站的高性能VPS主机?
详解Android中Activity的四大启动模式实验简述
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
香港网站服务器数量如何影响SEO优化效果?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?

