目录

  • 1 概述
  • 2 UDP的主要特点
  • 3 UDP的首部格式
    • 3.1 传输关系
    • 3.2 首部格式
    • 3.3 UDP 基于端口的分用和复用
    • 3.4 UDP校验

1 概述

用户数据报协议(UDP,User Datagram Protocol),UDP作为传输层的一个重要的协议,它的主要的功能是在IP端到端的服务之上,增加了有限的两个功能:

  1. 复用和分用的功能
  2. 差错检测的功能

另外,虽然UDP协议只提供不可靠的交付,看起来似乎非常不完美,但是UDP协议在某些方面具有特殊的优点:

  1. 比如我们在看在线视频的时候我们要求数据是最新的最快的,如果这个时候要求数据的准确性,那么会带来较大的延迟,就像我们在看直播球赛的时候,我们希望看到准备直播画面,而不是有延迟半分钟或一分钟的画面
  2. 另外一个典型的例子,比如在网络管理过程中我们希望采集到网络的实时数据,这个时候网络管理会使用某种基于UDP协议的方式,采集到最新最快的数据,若是采集过来的数据有延迟,那么这个数据已经不是实时数据了,不能表示此时网络的状况了

所以在有些情况下,UDP协议简单快速的特点,比TCP协议更有优势

2 UDP的主要特点

  1. UDP 是无连接的:发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延,这个特点是UDP协议的首要特点,可以这么说,UDP其他的特点,都是或多或少源自于这个特点
  2. UDP 使用尽最大努力交付:即不保证可靠交付,因此主机不需要维持复杂的连接状态表,发送端只需要把数据打包成UDP数据报,交给IP协议传输,中间经过了哪些路由器,最后有没有到达目的主机,数据有没有出错,需不需要重传,这些主机问题都不知道
  3. UDP 是面向报文的:所谓报文就是应用层交下来的报文,应用层有各种各样的报文,比如HTTP报文,FTP报文等,根据不同的应用层协议封装成不同的报文,UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文,在网络层,IP协议可能会进行拆分工作

应用程序必须选择合适大小的报文

  • 若报文太长,UDP 把它交给 IP 层后,IP 层在传送时可能要进行分片,这会降低 IP 层的效率
  • 若报文太短,UDP 把它交给 IP 层后,会使 IP 数据报的首部的相对长度太大,这也降低了 IP 层的效率
  1. UDP 没有拥塞控制:因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求,也就是说使用UDP协议的发送端,完全不会感知当前网路的状态是拥塞还是通畅,UDP协议还是会发送出去
  2. UDP 支持一对一、一对多、多对一和多对多的交互通信:这时目的主机不一定是单个主机,有可能是多个主机同时接收到发送端发送的UDP报文
  3. UDP 的首部开销小:只有 8 个字节,比 TCP 的 20 个字节的首部要短,这样也就意味着把数据组成UDP报文时所要做的工作更少,消耗资源小,发送速度也更快

3 UDP的首部格式

3.1 传输关系

UDP协议作为传输层的一个经典协议,它和上下层的传输关系如下:

  1. 应用层会把应用层报文交付给运输层
  2. 运输层的UDP协议,直接把上层交付下来的所有数据当作UDP数据报的数据部分,再加上UDP首部交付给下层IP层
  3. IP层把运输层交付下来的整个UDP数据报当作IP数据报的数据部分,再加上IP首部,继续交给下一层

3.2 首部格式

  • 除去两个端口号字段,还有一个长度字段,它用来标明整个UDP报文的长度是多少,最后一个字段是校验和字段,它实现了对整个UDP报文的校验功能

3.3 UDP 基于端口的分用和复用

  1. 在UDP首部前两个字段当中,是源端口和目的端口,从接收端来讲,当接收端从 UDP报文中拆解出两个端口号之后,会根据端口号标识的内容,发送给上一层的应用程序,从而实现了端口的分用
  2. 复用是分用的相反过程,应用程序把数据交付下来之后,其中的端口号就标明了这是哪一个应用进程,

3.4 UDP校验

  • 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和
  • 所谓伪首部,可以理解它就是一个假的,它并没有一个实际的地址空间,在进行UDP报文封装的时候并没有这部分内容,要不然UDP协议的首部是20 (8+12) 个字节,而不是我们所说的8个字节,实际传输过程中,也并没有这样的字段
  • 设置这个伪首部,只是为了计算 校验和,这个伪首部包含的内容,如上图所示,这就有所疑问了,对于运输层来讲,本身没有IP地址这一概念,因为IP地址是在网络层中路由器转发所用的地址,为了计算校验和而强制引入的伪首部,包含IP地址信息,实际上会破坏网络分层,引入伪首部的目的,就是为了让UDP两次检查数据是不是正确的到达了目的地,其中一次是对UDP端口号和其他数据的校验,另一次是对IP地址的再校验,因为IP地址再路由器转发过程中,有可能会发现IP地址错误,所以UDP协议觉得IP地址校验是很有必要的
  • 如下就是校验的例子,简单来说就是把首部部分,每2个字节写成一行,然后按列排下来,每一列对应的每一位进行求和,得出来的结果再求反码,再将其放入校验和的位置中

计算机网络-UDP协议相关推荐

  1. 计算机网络---UDP协议与TCP协议

    传输层,负责应用程序之间的数据传输的协议,UDP与TCP UDP协议格式: 源端口与目的端口: 都为16位比特位,表示数据从那个进程来,发送到哪里去,负责应用程序之间的数据传输. 数据报长度: 16位 ...

  2. 计算机网络 UDP协议与TCP协议首部

    目录 UDP首部 UDP-源端口号(Source Port) UDP-目标端口号(Destination Port) UDP-包长度(Length) UDP-校验和(Checksum) 校验和计算中计 ...

  3. 计算机网络—UDP协议

    建议将思维导图保存下来观看,或点击这里在线观看

  4. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  5. 温州大学计算机网络,数据通信与计算机网络(温州大学)实验四 - 运输层TCP和UDP协议分析.doc...

    温州大学 WENZHOU UNIVERSITY 实 验 报 告 学 期2016-2017学年第一学期课 程数据通信与计算机网络专 业电子信息科学与技术班 级14电科1学生姓名徐炜学 号14211111 ...

  6. 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...

    <计算机网络实验-使用Wireshark分析TCP和UDP协议>由会员分享,可在线阅读,更多相关<计算机网络实验-使用Wireshark分析TCP和UDP协议(6页珍藏版)>请 ...

  7. 计算机网络实验 ——wireshark抓包简要分析TCP、UDP协议

    [计算机网络实验 --wireshark抓包简要分析TCP.UDP协议] (1)分析 TCPheader: Source Port:16bit源端口,数据发起者的端口号: Destination Po ...

  8. 计算机网络实验四:利用UDP协议实现点对点聊天

    文章目录 1. 简介 1.1 功能 1.2 技术 1.3 流程 2. 源码 2.1 客户端1 2.2 客户端2(与客户端1不同的只有端口号) 2.3 服务端 3. 运行 4. 注意 4.1 端口占用 ...

  9. 计算机网络之传输层:2、UDP协议

    传输层:2.UDP协议 UDP特点: UDP首部格式: UDP校验过程: UDP特点: UDP首部格式: UDP校验过程: 伪首部不向上交付也不向下交付,只在UDP数据报校验的时候出现 UDP校验过程 ...

最新文章

  1. html自适应pc窗口大小_自适应技术很难吗?为什么Shopyy平台将网站分为PC端和移动端...
  2. python语言编写的modbus协议_RTU Modbus从机的python脚本
  3. 【机器学习入门】深入浅出聚类算法!如何对王者英雄聚类分析,探索英雄之间的秘密...
  4. hdu 6183 线段树的空间优化
  5. python读单行文本求平均值_如何从文本文件python中的数字列表中找到平均值
  6. 信息学奥赛一本通(1242:网线主管)
  7. 修改Tomcat Connector运行模式,优化Tomcat运行性能
  8. beatsx三闪红灯是什么意思_“左转弯待转区”还有坑?走错了等于闯红灯,驾照直接扣6分罚200...
  9. 数字电路与微型计算机原理,电子科技大学1999年考研真题-微机原理与数字电路...
  10. EEG公开数据集汇总
  11. 计算机常出现的问题及解决办法,电脑发生故障的常见现象和解决方法
  12. oj-杭电 熊猫阿波的故事
  13. 【二】HTML:图像标签和超链接标签
  14. 【转】为什么linux系统变慢了
  15. linux启用dcb步骤,Linux内核DCB子系统
  16. 关于网线,你了解多少?
  17. C 程序设计语言——第四章练习题
  18. 如何导入BurpSuite 证书
  19. 苹果手机如何设置http代理?
  20. ArcGis For JavaScript API Drawing Tool (绘图工具又称框选地图)

热门文章

  1. Symantec Backup Exec 2012 Agent For Linux安装
  2. 移动端app设计指南
  3. 牛腩新闻发布系统(2)使用存储过程查询表
  4. 黑马lavarel教程---5、模型操作(AR模式)
  5. Python学习---协程 1226
  6. PHP 设计模式系列 —— 资源库模式(Repository)
  7. iOS -数据库网络之xml解析之远程解析XML
  8. Delphi 2010 refactor / refactoring 重构不能使用的原因以及解决
  9. 2018-2019-2 网络对抗技术 20165230 Exp9 :Web安全基础
  10. 条件运算符?:接受三个操作数,是C#中唯一的三元运算符(转)