传输层的UDP

article/2025/9/22 16:17:31

文章目录

  • 一、UDP的概念及前置知识储备
    • 1. UDP基本概念
    • 2. OSI协议模型中的传输单位
    • 3. 端口
      • 3.1 端口号范围划分
      • 3.2 认识知名端口号(Well-Know Port Number)
      • 2.3 关于端口号的两个小疑问
  • 二、UDP协议
    • 1. UDP协议端格式
      • 1.1 UDP16位校验和的具体使用
        • 1.1.1 发送方
        • 1.1.2 接收方
    • 2. 基本特征
      • 2.1 无连接
      • 2.2 不可靠
      • 2.3 面向数据报
    • 3. UDP的缓冲区
      • 3.1 发送缓冲区和接受缓冲区
      • 3.2 全双工
    • 4. UDP使用的注意事项
    • 5.基于UDP的应用层协议

一、UDP的概念及前置知识储备

1. UDP基本概念

UDP协议是传输层的一个协议,传输层负责保证数据能够从发送端传输到接收端,是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。在这一层,信息传送的协议数据单元称为段或报文。

百度百科中如此解释UDP:Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。


2. OSI协议模型中的传输单位

  • 比特流(bit):物理层/一层。
  • 数据帧(frame):数据链路层/二层。
  • 数据包/报文分组(packet):网络层/三层。
  • 数据报(datagram):传输层 UDP/四层。
  • 数据段(segment):传输层 TCP/四层。
  • 消息/报文(message):三层以上,通常指应用层/七层。

3. 端口

传输层负责向两个主机中进程之间的通信提供服务,那么如何找到它们的进程呢?这就要用到端口

3.1 端口号范围划分

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

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

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

有些服务器是非常常用的,为了使用方便,人们约定一些常用的服务器,都是用以下这些固定的端口号:

FTP服务器:21
SSH服务器:22
Telnet服务器:23
SMTP服务器:25
DNS服务器:53
HTTP服务器:80
HTTPS服务器:443

2.3 关于端口号的两个小疑问

1.一个进程是否可以bind多个端口号?
答:可以。

2.一个端口号是否可以被多个进程bind?
答:不可以。


二、UDP协议

1. UDP协议端格式

前言

任何一层协议,都应该解决两个问题:
1.报头和有效载荷进行分离的问题
2.将自己的有效载荷交付给上层的问题

在这里插入图片描述
1.如何将UDP的报头和有效载荷分离:
答:UDP是定长报头,大小为8字节,分别包含了“16位源端口号”、“16位目的端口号”、“16位UDP长度”、“16位UDP检验和”。因为UDP是定长的,所以当拿到UDP报文只需读取前8个字节(报头),后面的内容就是有效载荷。

2.如何将自己的有效载荷交付给上层:
答:当UDP取得有效载荷后,要将有效载荷交付给应用层所绑定的某一个进程,如何知道是哪一个进程呢?在报头中,“16位目的端口号”就对应了相应的进程。实际上,在内核中,UDP的底层是用Hash算法实现的,系统内核为了将进程管理起来,根据端口号利用Hash算法构建一张Hash表,最后直接根据端口号定位到进程。

16位UDP长度:表示整个数据报(UDP报头+UDP有效载荷)的最大长度,所以当我们知道16位UDP长度时,用其减去8字节就是UDP有效载荷的长度。

16位UDP校验和:如果校验和出错,就会直接丢弃。丢弃后UDP不会做出任何反馈,不关心。

1.1 UDP16位校验和的具体使用

16位UDP校验和目的:提供差错检测功能,在传输的报文段中检测“差错”(如比特翻转)

1.1.1 发送方

1.将报文段的内容处理为16bit整数的序列

2.校验和计算:
a:计算所有整数的和
b:进位加在和的后面(最高位进比特位的进位需要加到结果中)
c:将得到的值按位求反,得到校验和

3.发送方将校验和放入校验和字段
在这里插入图片描述
由图可知,两个16bit整数相加后最高位有一位进位为1,需要再次进行运算,将其加到末尾,最后按位取反。


1.1.2 接收方

发送方完成报文段的发送后,接收方不能无动于衷。那么接收方接收到报文段后又会采取什么操作来证明接受到的数据在网络传输过程中是否出现了差错呢?

1.计算收到报文段数据部分的校验和

2.核对计算的校验和是否等于校验和字段的值:
a.No-检测到差错
b.YES-没有检验到差错

在这里插入图片描述
在这里插入图片描述

由图可知,当接受方完成计算并与原校验和一一比对,相同为1,不同为0,可看出接受方所接受到的报文段是出现差错的。


2. 基本特征

2.1 无连接

知道对端的IP和端口号就直接进行传输,不需要建立连接。

2.2 不可靠

没有确认机制,没有重传机制。如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。

2.3 面向数据报

对于UDP来说,比如我们要读取一个报文,那么就一定要读取完整,不能只读报头而不读它的数据,UDP不能灵活的控制读写数据的次数和数量。UDP是很有原则的,它对于上层即应用层交付的报文,既不会拆分,也不会合并。当使用UDP传输的数据时,假如发送端调用sendto一次发送了100个字节,那么接收端也必须只调用recvfrom一次接收100个字节,而不能每次接收10个字节,重复10次。


3. UDP的缓冲区

3.1 发送缓冲区和接受缓冲区

发送缓冲区:UDP严格意义上来讲没有发送缓冲区,因为它不保证可靠性,对于接受到的数据会调用sendto直接交给内核,由内核将数据传给网络层协议进行后续的传输动作。

接受缓冲区:UDP具有接受缓冲区,可是UDP是不可靠的,所以这个接受缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致。一旦缓冲区满了,再到达的UDP就会被丢弃。

3.2 全双工

百度百科:全双工(Full Duplex)是通讯传输的一个术语。通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。单工就是在只允许甲方向乙方传送信息,而乙方不能向甲方传送 。(比喻汽车的单行道。)

UDP既能读也能写,所以它是全双工的。


4. UDP使用的注意事项

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


5.基于UDP的应用层协议

1.NFS:网络文件系统
2.TFTP:简单文件传输协议
3.DHCP:动态主机配置协议(路由器便是基于DHCP协议的,并且已经初步具备了应用层功能,当用户通过路由器上网时,路由器通过DHCP会在本身所建立的局域网当中选择一个未被使用的IP发给用户)
4.BOOTP:启动协议(用于无盘设备启动)
5.DNS:域名解析协议
6.自定义的应用层协议


http://chatgpt.dhexx.cn/article/K1h1WLJV.shtml

相关文章

UDP组播

UDP组播 UDP(UserDatagram Protocol) 中文名用户数据报协议,是OSI参考模型中一种无连接的传输层协议,是一种高效但不可靠传输。UDP在IP报文中的协议号是17。 UDP传递方式 UDP有三种传输方式:单播、广播、多播。 1.单…

UDP通信

目录 1.什么是UDP通信 1.扔韭菜例子: 2.总结: 2.UDP通信:多发多收 UDP的三种通信方式: 3.UDP如何实现广播 4.UDP如何实现组播 1.什么是UDP通信 UDP是一种无连接、不可靠传输的协议。 将数据源IP、目的地IP和端口以及数据封…

UDP

概述 用户数据保协议(User Datagram Protocol,UDP)是开放系统互联模型(Open System Interconnection,OSI)中传输层协议的一种,是一种保留消息边界的简单的面向数据报的协议。UDP不提供差错纠正、…

TCP和UDP详解(非常详细)

文章目录 UDPUDP协议报文格式:UDP协议的特点:UDP的缓冲区:UDP存在接收缓冲区,但不存在发送缓冲区。 TCPTCP协议报文格式:确认应答机制:超时重传:超时重发的时间应该如何确定? 连接管理机制TIME_WAIT状态为什…

VS2008安装错误,解决方案

重新整了一下电脑,再次安装VS2008,以前安装很顺利,没想到这次安装却是失败了,各种错误,一路安装失败,再谷歌安装,最后终于安装成功,记下来,呵呵! 刚开始安装…

VS 2008的64位编译环境的安装和使用

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 作者:朱金灿 来源:http://blog.csdn.net/clever101 1. 安装64位编译环境 最近准备…

win7+VS2008安装boost

找了好久boost的安装教程,杂七杂八的方法有很多,说直接下载boost安装包installer,但是boostpro.com貌似挂了...所以最后还是得自己上阵,重新编译,方法综合了几个,最后终于搞定了(某些细节部分也…

VS2008安装Mercurial插件

(1)安装Mercurial或TortoiseHg. 从官网下载Mercurial或包含GUI的TortoiseHg。 (2)安装VS插件HgSccPackage。 下载VS插件HgSccPackage并安装,该插件支持VS2008和VS2010. (3)在VS中将版本控制…

在Win10 系统中安装VS 2008

安装原因:由于要对一个之前用win ce的项目进行开发维护,而win ce最多只能兼容VS2008的版本。因此现要在Win10上安装vs2008 1.由于win10系统没有自带.net Framework 3.5框架,需要我们下载一个.net Framework3.5框架的离线安装包。同时下载好VS2008的镜像。…

WIN SERVER 2008安装VS2015踩坑小结

系统:WIN SERVER 2008 Enterprise R2,未连接外网 软件:VS2015企业版 第一遍普通安装过程就不多赘述了,选择的典型安装 1、安装完成后,打开解决方案,所有项目显示加载失败,提示“项目无法加载&a…

安装VS2008(转)

原文链接 http://dev.yesky.com/msdn/329/7823829.shtml1、先用虚拟光驱将我们下载下来的文件打开: 打开后的会自动弹出一个安装对话框,如果没有的话到我的电脑里找到那个虚拟光驱将它打开就是了。安装对话框的效果如下图: 单击对话框中的Ins…

安装VS2008 SP1

最近由于在学习SQL2008,所以需要使用VS2008太耍一下关于SQL2008的新特性,尤其是Entity Framework。VS2008和SQL2008我都更新成英文版了。接下来安装VS2008的Sp1补丁,MS又使用了很恶心的网络安装,下载的Sp1才450K,然后网…

vs2008安装包及安装教程

注:本博客为原创博客,允许转载,转载时请注明出处 1.下载vs2008安装包,找不到资源的请戳这里:链接:https://pan.baidu.com/s/1dGIaPrj 密码:25dq 2.打开安装包,点击autorun进行安装 3…

VS2008安装部署应用程序安装包制作过程

制作过程 1.打开vs,新建项目->其他项目类型->安装和部署->安装项目 2、这里就会出现三个文件夹,不用多说一看就明白意思,点“应用程序文件夹–>添加–>文件夹 3、在“应用侧滑盖内需文件夹”文件夹上右键–>添加–>…

vs2008安装过程

解压SQLFULL_CHS.iso后,安装sql 2008: 重新运行安装程序后,有一个dos窗口,最后结果是成功。显示SQL Server 安装中心。 默认是在计划页面的,我点击了“系统配置检查器”,结果:操作完成,已通过13,失败0,警告0,已跳过1。 点击安装,进入安装页面。使用“全新SQL Serve…

VS2008安装Qt4.8

用MFC觉得就像是在刀尖上跳舞。听说Qt不错,忍不住想学一番,谁知安装就遇到许多困难。施展百度大法,耗尽心力终于练成。说实话,每次配置开发环境就像打仗一样,尤其像Qt这样的。 虽然Qt已经升级到5.3,但是由…

VS2008+Qt4.8安装笔记

一.建议安装顺序 可能需要先安装.NET3.5 1.vs2008(vs2008安装需勾选Team Developer,可避免安装后闪退,默认不勾选x64编译器)。 2.qt-opensource-windows-x86-vs2008-4.8.6(避免cmake找不到Qt4)。 3.Addin。 4.番茄。 二.安装成功记录 A(win10)&#x…

Visual Studio 2008系列教程(一):VS 2008安装详解!

前天得知Visual Studio 2008的正式版发布了!所以到www.Microsoft.com去看了一下,确定VS2008是真的发布了。不知道他会给我们带来什么惊喜呢?我们大家一起来体验一下吧! 想要用VS 2008的话,肯定就先要将它下载下来然后安…

VS2008(Visual Studio 2008)下载安装步骤

最近公司一个旧的项目,要进行优化,需要用到Visual Studio 2008编辑器,这里总结一下Visual Studio 2008编辑器的下载和安装步骤。 1、首先去微软的官网,下载vs2008,官网地址,官网下载可能比较慢,可以移步至…

关于证书(certificate)和公钥基础设施(PKI)的一切

这篇长文并不是枯燥、零碎地介绍 PKI、X.509、OID 等概念,而是从前因后果、历史沿革 的角度把这些东西串联起来,逻辑非常清晰,让读者知其然,更知其所以然。 证书和 PKI 的目标其实很简单:将名字关联到公钥&#xff08…