UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。

用户数据报协议UDP只在IP得到数据报服务至上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。

1.UDP的主要特点

(1)  UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。

(2)  UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

(3)  UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文。

(4)  UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。很多的实时应用(如IP电话、实时视频会议等)要去源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太多的时延。UDP正好符合这种要求。

(5)  UDP支持一对一、一对多、多对一和多对多的交互通信

(6)  UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

注意:

(1)  不使用拥塞控制功能的UDP有可能会引起网络产生严重的拥塞问题。

(2)  一些使用UDP的实时应用进程本身可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错重传已丢失的报文

2.UDP的首部格式

用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,由四个字段组成,每个字段的长度都是两个字节。各字段的意义如下:

(1)  源端口      源端口号。在需要对方回信时选用。不需要时可用全0。

(2)  目的端口    目的端口号。 这在终点交付报文时必须要使用到。

(3)  长度        UDP用户数据报的长度,其最小值是8(仅有首部)

(4)  检验和      检测UDP用户数据报在传输中是否有错。有错就丢弃。

一个UDP模块必须提供产生和验证检验和的功能,但是一个应用程序在使用UDP服务时,可以自由选择是否要求产生校检和。在计算校检和时,要在UDP用户数据报之前增加12字节的伪首部。校检和就是按照这个临时的UDP用户数据报来计算的。

UDP计算校检和的方法和计算IP数据报首部校检和的方法相似。但不同的是:IP数据报的校检和只校检IP数据报的首部,但UDP的校检和使把首部和数据部分一起都校检。

3.UDP的复用和分用

当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交到最后的终点——应用进程。下图是UDP基于端口分用的示意图。

基于端口的复用示意图与上图相似,只是数据报的传输方向相反。

如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方。

参考资料:

1.《计算机网络》

UDP的主要特点、首部格式及功能相关推荐

  1. 详解TCP和UDP数据段的首部格式

    TCP数据段的首部格式: 源端口号(16) 目的端口号(16) 序列号(32) 确认应答号(32) 数据偏移(4) 保留(6) 代码位(6) 窗口(16) 校验和(16) 紧急指针 选项(长度可变) ...

  2. TCP、UDP的首部格式及其含义

    一.TCP报文段的首部格式 TCP是面向字节流的 TCP在发送数据时,从发送缓存中取出一部分或全部字节并给其加上一个TCP首部,使其成为TCP报文段然后交给网络层(TCP是运输层,其下层是网络层) ​ ...

  3. linux网络编程之IP协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)和TCP、UDP协议头结构总结

    首先声明,这篇博客是几篇博客转载然后总结在一起的,只当是学习笔记,不在意是什么原创和转载了,学到东西就好. 1.IP协议首部格式(IP协议处余网络层) IP数据报首部图片格式: 最高位在左边,记为0 ...

  4. 网络编程(四) ———— UDP首部格式

    接上一篇博客 Java Socket(UDP/TCP 套接字) 文章目录 UDP的特点 1. 无连接 2. 不可靠 3.面向数据报 4.全双工 UDP首部格式 源端口号 (Source Port) 目 ...

  5. TCP/UDP协议首部格式

    1. UDP协议首部格式 UDP首部有8个字节,由4个字段构成,每个字段都是两个字节, 1.源端口号: 可有可无,需要对方回信时选用,不需要时全部置0. 2.目的端口号:必须有,在终点交付报文的时候需 ...

  6. 5.3 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接---三次握手、tcp连接释放---四次握手)

    文章目录 1.TCP协议特点 2.TCP报文段的首部格式 3.TCP连接管理 (1)连接的建立 - - - 三次握手 (2)SYN泛洪攻击 4.TCP连接释放----四次握手 5.TCP连接建立和释放 ...

  7. IPv4_数据报文首部格式

    IPv4数据报首部格式 IPv4数据报首部分为固定部分(20字节)与可变部分(0~40字节) 用WireShark抓包的IPv4协议中报文首部格式一一对应: 字段 说明 版本号 目前广泛使用的ip协议 ...

  8. 【计算机网络】网络层 : IP 数据报格式 ( IP 数据报首部格式 )

    文章目录 一.TCP / IP 协议栈 二.IP 数据报 格式 三.IP 数据报 首部格式 一.TCP / IP 协议栈 TCP / IP 协议栈 : ① 应用层 : HTTP , FTP , DNS ...

  9. TCP报文段首部格式详解

    TCP首部格式 格式字段详解 源端口.目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要 ...

最新文章

  1. pytorch实现attention_Longformer: 局部Attention和全局attention的混搭
  2. Machine Learning week 7 quiz: Support Vector Machines
  3. tmpfs加速并降低squid负载(一)
  4. 循环神经网络 递归神经网络_了解递归神经网络中的注意力
  5. python3 最简单的实现 模版设计模式
  6. 一步步编写操作系统 62 函数调用约定
  7. C语言: ---Linux下ulimit是什么鬼
  8. java中为什么要使用代理
  9. 关于BMZCTF中 shell_exec的解法详解
  10. 判断滚动条到底部的JS代码
  11. JavaEE学习--javascript中的正则表达式
  12. 30096大学计算机应用基础,300道计算机应用基础试题(附答案)
  13. matlab直方图 | 不用imhist循环实现,imhist检验
  14. Openwrt使用指定版本的toolchain工具链
  15. wordpress主题模板开发制作教程
  16. OLTP和OLAP的区别;
  17. canvas绘制虚线图表
  18. 图灵奖得主Yoshua Bengio:用因果打开AI的黑盒
  19. 思科Cisco AnyConnect 下载地址(windows、macos、iOS、Android、linux)
  20. 【读书笔记->统计学】04-01 利用概率理论预测和决策-概率与事件、维恩图、互斥与相交事件、交集与并集概念简介

热门文章

  1. 华为搅局ERP,北用友南金蝶格局改变?用户:NO,我们另有选择
  2. Python 爬虫 Selenium 基本使用
  3. wpa_supplicant 介绍
  4. 你绝对不知道的17个Maya插件
  5. 因为你是我的英雄音译_我可以成为你的英雄宝贝
  6. windows7家庭普通版 添加 gpedit 组策略
  7. 用数据说话,Python就业前景分析
  8. 文旅灯光秀应该怎样进行设计
  9. 数字图像处理第三章<一>、灰度变换
  10. java 随机数生成算法_java 语言实现的随机数生成算法