一、定义

UDP 全称 User Datagram Protocol, 用户数据报协议。和TCP协议一样,也处于计算机网络的运输层(传输层)。

但是UDP是一种不可靠的协议,正如名字,他是无连接的面向应用报文的协议。

  1. 无连接:不同于TCP的三次握手建立连接、四次挥手释放连接,UDP协议的通信双方随时可以互相发送数据;
  2. 面向应用报文:对于应用层的报文,不拆、不合,保留他们的边界进行传输。(不同于TCP面向字节流、会将他们都看成连续的字节流放入自己的发送缓存,每次拿一部分组成报文)
  3. 支持单播、多播、广播。

二、UDP首部格式


如图所示,不像TCP报文那么复杂的首部内容。UDP的首部只有首部字段只有 8 个字节,由四个字段组成,每个字段的长度是 2 个字节。

  1. 源端口
  2. 目的端口
  3. 长度:UDP 用户数据报的长度,在只有首部的情况,其最小值是 8 。
  4. 校验和:检测 UDP 用户数据报在传输中是否有错,有错就丢弃。

三、总结

  • 我们先来回忆TCP协议:要保证可靠、要建立连接、错误、重复、乱序都要额外的内容进行处理,要流量控制、拥塞控制,显然是复杂很多很多的。

但是UDP既然无连接、也不可靠,就相对简单很多了:

  1. 传输数据之前客户端和服务器不建立连接,当它想传送时就把应用程序的数据抓来,尽快扔到网络上;
  2. 报文的首部也没有那么多开销,主要精力都集中在了数据本身;
  3. 因为丢了也不管就直接丢了,所以也没有等啊、重传的过程,吞吐量显然就很高,最多受限只是受限于传输带宽、应用本身和计算机本身的性能。

问题来了,为什么还需要这么一个看似不靠谱的协议呢?

显然,最大的优点就是,另外一方面,看似不靠谱的这一点其实反过来避免了TCP的弱点。(比如TCP的建立连接过程,难以避免DOS攻击,就是攻击者疯狂向服务器发送SYN+ACK请求,拖垮服务器,也就是SYN flood攻击)。

不过UDP也是有自己的被攻击的弱点,比如UDP Flood攻击,这个就是通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包,且速率非常快,从而让网络阻塞,然后拖垮设备。

UDP怎样才能变可靠?

借鉴tcp的优点,使用udp,但是在其之上,应用层解决他的不可靠问题,附加重传机制和排序机制,因为udp最大问题就是丢包和不按序,发了应用报文原模原样不负责丢了没有,那么可以在此之上设计重传和排序

四、TCP和UDP的对比


注:数据无边界和有边界指的就是,一个面向报文,保留边界,一个看作字节流,装进缓冲区再组合成报文。

关于TCP和UDP各自的适应场景:

1.TCP:当对网络通讯质量有要求的时候,往往要求数据的准确无误,比如文件传输(FTP协议就是基于TCP)、接收邮件(SMTP协议),浏览器(HTTP协议就是基于tcp的实现)。

2.UDP:当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。比如语音通话、视频通话、广播通信一类应用,实时性比较高。

根据特性,直播、在线游戏似乎都是UDP更适合,但事实上市场还是大多在用tcp协议,虽然基于tcp的游戏通常在线人数会有限制,但是使用分布式架构或者游戏滚服会解决掉这个问题;udp虽然快,但是即时性之外,丢包率肯定会很大,另外协议的第三方库太少,开发起来难度比较大,直播也是一样,用udp开发太麻烦。

五、攻击

TCP可能面临的攻击?

SYN Flooding,根据三次握手协议的连接过程,不断发送SYN请求,其他用户就无法再链接到被攻击者服务器。

应对措施:通过增加连接数目、减小超时时间,可以缓解。但是无法从根本阻止,是 DOS 的一种,可通过 netstat 命令通过查看服务器网络连接情况,如果存在大量 SYN 的连接,则有可能收到了SYN Flooding攻击。

UDP可能面临的攻击?

UDP Flood属于带宽类攻击,黑客通过向目标服务器发起大量的UDP报文,消耗网络带宽资源,严重时造成链路拥塞,导致网络设备性能降低,从而导致网络瘫痪。

应对措施:第一种是限流,通过限流将链路中的UDP报文控制在合理的带宽范围之内。第一种方式简单粗暴,容易对正常业务造成误判,防火墙又进一步推出了针对UDP Flood的指纹学习功能,额外附加了一个学习过程。

UDP协议、UDP和TCP优缺点对比相关推荐

  1. udp协议:udp和tcp相比快在哪里?

    TCP 协议,是一个支持可靠性的协议.UDP 协议,是一个不支持可靠性的协议. 校验和(Checksum) 最简单的校验和算法:纵向冗余检查 UDP 不支持可靠性,但是像校验和(Checksum)这一 ...

  2. UDP协议为什么比TCP协议快的原理

    一直以来,大家知道相对于TCP协议,UDP协议快,但是具体快在哪里呢,研究了一番,记录下来供大家学习. 1.工作位置: 首先,在OSI七层模型中,TCP,UDP工作在传输层,使源端主机和目标主机上提供 ...

  3. 网络原理之TCP/UDP协议

    UDP协议 UDP协议端格式 16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度; 如果校验和出错, 就会直接丢弃 UDP的特点 UDP传输的过程类似于寄信. 无连接: 知道对端的 ...

  4. 图解 | 为什么HTTP3.0要弃用TCP协议,而改用UDP协议?

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 来源:后端技术指南针 作者:指南针氪金入口 1. 大白和小黑 生活不止眼前的苟且,还有诗和远方的田野. 新的一 ...

  5. TCP和UDP协议详解

    引言 假设,进程A要和进程B要通信,首先要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.那么网络中不同机器的不同进程之间如何 ...

  6. TCP/UDP协议总结与应用层常见协议及端口

    TCP/UDP协议总结与应用层常见协议及端口 1.TCP协议 TCP协议概述 TCP的应用场景 TCP的特点 TCP的报文格式 TCP三次握手 TCP四次挥手 2.UDP协议 UDP概述 UDP的应用 ...

  7. 网络基础(二)之TCP/UDP协议

    目录 传输层 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 pidof netstat UDP协议 UDP协议端格式 对于16位UDP长度的理解 ...

  8. tcp、udp协议连接的建立和释放

    tcp协议连接的建立和释放 一.tcp协议 (1)tcp的头部结构 (2)tcp的三次握手(重点) (3)tcp的四次挥手(重点) (4)tcp的状态转移图 (5)tcp可靠性的体现 二.UDP协议 ...

  9. http与https与socket tcp/IP与UDP 协议等

    网络由下往上分为:   物理层--                       数据链路层-- 网络层--                       IP协议 传输层--               ...

最新文章

  1. android 相机智能补光,美图秀秀智能补光功能应用详解
  2. android中设置ListView的选中的Item的背景颜色(附源码)
  3. 信息学复赛用linux,NOIP/CSPJ 复赛中noilinux里的atbiter测评机的使用(附数据)
  4. 使用 AppFuse 的七个理由
  5. C、C++中的逻辑运算符
  6. Spring boot maven 搭建框架
  7. 3/3 常用符号:转义字符
  8. 自从装了windows神器,再也不用羡慕mac了
  9. task2 EDA数据分析
  10. mongodb java数组_MongoDB 基础java数据类型
  11. Jupyter Notebook——如何快速地以当前文件夹目录打开 Jupyter Notebook
  12. CSS3属性calc函数(CSS3)
  13. Media Player Classic - HC 源代码分析 5:关于对话框 (CAboutDlg)
  14. jq22扒的网站, 左右箭头图标问题
  15. Java滑动窗口实现当前窗口内最大值输出
  16. 【PRML 学习笔记】附录 - 变分法 (Calculus of Variations)
  17. 使用php制作wap网站
  18. id导出pdf失败_InDesign 导出印刷用PDF时如何设置?
  19. Sentinel Slot扩展实践-流控熔断预警实现
  20. opencv-3.0.0-beta和opencv2版本的区别

热门文章

  1. STM32H7xx 串口DMA发送接收(LL库)
  2. 顺利解决org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException!
  3. 国务院:电子印章跨地区跨部门互信互认,契约锁助力企业办事提效
  4. 别找了Docker常用命令都在这
  5. 软件开发报价的计算方法 (转)
  6. php 随机文章段落,[WordPress教程]在文章内容随机段落中插入广告
  7. 序列循环oracle,Oracle创建序列及循环自增取值问题-Oracle
  8. 国内十大人工智能网站
  9. 影院服务器可以给投影机信号吗,投影机有哪些接口类型 投影机接口类型与连接知识【介绍】...
  10. AFL++: Combining Incremental Steps of Fuzzing Research 翻译