UDP协议

作者: JBryan | 来源:发表于2021-01-25 22:24 被阅读0次

本文作为学习笔记,文章内容来自“极客时间”专栏《趣谈网络协议》,如有侵权,请告知,必即时删除。

UDP和TCP的区别

TCP 是面向连接的,UDP 是面向无连接的。所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。

  1. TCP 提供可靠交付。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。但是 TCP 号称能做到那个连接维护的程序做的事情。而 UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。
  2. TCP 是面向字节流的。发送的时候发的是一个流,没头没尾。IP 包可不是一个流,而是一个个的 IP 包。之所以变成了流,这也是 TCP 自己的状态维护做的事情。而 UDP 基于数据报的,一个一个地发,一个一个地收。
  3. TCP 是可以有拥塞控制的。它意识到包丢弃了或者网络的环境不好了,就会根据情况调整自己的行为,看看是不是发快了,要不要发慢点。 UDP 就不会,应用让我发,我就发,管它洪水滔天。
  4. TCP 其实是一个有状态服务,通俗地讲就是有脑子的,里面精确地记着发送了没有,接收到没有,发送到哪个了,应该接收哪个了,错一点儿都不行。而 UDP 则是无状态服务。通俗地说是没脑子的,天真无邪的,发出去就发出去了。

UDP包头

当我发送的 UDP 包到达目标机器后,发现 MAC 地址匹配,于是就取下来,将剩下的包传给处理 IP 层的代码。把 IP 头取下来,发现目标 IP 匹配。 IP 头里面有个 8 位协议,这里会存放,数据里面到底是 TCP 还是 UDP,当然这里是 UDP。于是,如果我们知道 UDP 头的格式,就能从数据里面,将它解析出来。

解析完成之后,传输层就没什么事了,内核的事情基本就干完了,里面的数据应该交给应用程序自己去处理。无论是 TCP 还是 UDP 包头里面应该有端口号,根据端口号,将数据交给相应的应用程序。


UDP1.jpg

UDP 包头有源端口号、目标端口号、长度、校验和以及数据组成。

UDP 的三大特点

UDP有以下这些特点:

  1. 沟通简单,不需要大量的数据结构、处理逻辑、包头字段。
  2. 它不会建立连接,虽然有端口号,但是监听在这个地方,谁都可以传给他数据,他也可以传给任何人数据,甚至可以同时传给多个人数据。
  3. 它不会根据网络的情况进行发包的拥塞控制,无论网络丢包丢成啥样了,它该怎么发还怎么发。

UDP的使用场景

1. 需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。DHCP (动态主机配置协议)就是基于 UDP 协议的,一般的获取 IP 地址都是内网请求,而且一次获取不到 IP 又没事,过一会儿还有机会。
2. 不需要一对一沟通,建立连接,而是可以广播的应用。UDP 的不面向连接的功能,可以使得可以承载广播或者多播的协议。
3. 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。当前很多应用都是要求低时延的,它们可不想用 TCP 如此复杂的机制,而是想根据自己的场景,实现自己的可靠和连接保证。例如直播、游戏,实时性比较重要,宁可丢包,也不要卡顿的。

相关文章

  • 计算机网络02 - 传输层

    目录 TCP协议和UDP协议TCP首部TCP连接管理UDP首部 1. TCP协议和UDP协议 TCP协议:面向连接...

  • Linux下Socket编程(六)——udp

    简介 udp协议 udp通信流程 示例 udp协议 中文叫用户数据报协议,属于传输层。UDP是面向非连接的协议,它...

  • UDP协议详解

    相比于TCP协议(传输控制协议)来说,UDP协议(用户数据报协议)要简单很多。 UDP协议的首部格式 UDP协议的...

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • 网络编程---获取ip地址 使用UDP协议发送与接收数据

    获取ip地址 UDP协议发送端 UDP协议接收端

  • 【Java】【网络编程】UDP协议

    UDP协议 概述:UDP协议是面向无连接协议,数据不安全。 DatagramSocket

  • iOS 网络相关面试题

    问题:TCP、UDP TCP/UDP 传输层协议 ||—— UDP:用户数据报协议 TCP与UDP的区别: 问题...

  • TCP和UDP

    TCP协议为TCP/IP协议;UDP为UDP/IP协议。TCP和UDP都是对应网络七层协议上的传输层。IP属于网络...

  • 第九篇 异常处理和并发编程1

    一、异常处理 二、基于udp协议的套接字通讯 三、udp协议不会粘包 Tcp和udp的区别Tcp协议是可靠的协议。...

  • UDP协议

    UDP协议在IP协议上增加了复用、分用和差错检测功能。UDP的特点: UDP报文格式 UDP协议分为首部字段和数据...

网友评论

      本文标题:UDP协议

      本文链接:https://www.haomeiwen.com/subject/sntwzktx.html