UDP协议详解

UDP协议详解

UDP是什么?

UDP(User Data Protocol,用户数据报协议),是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。

主要特点如下:

  • UDP是无连接的
  • UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态(这里面有许多参数)。
  • UDP是面向报文的。
  • UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。

对实时应用很有用,如 直播,实时视频会议等。

  • UDP支持一对一、一对多、多对一和多对多的交互通信。
  • UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

UDP对应的应用层协议?

  • DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
  • SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
  • TFTP(Trivial File Transfer Protocol):简单文件传输协议,该协议在熟知端口69上使用UDP服务。

TCP和UDP的区别

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议,它们之间的区别包括:
在这里插入图片描述

  • TCP是面向连接的;UDP是无连接的。
  • TCP是可靠的;UDP是不可靠的。
  • TCP只支持点对点通信;UDP支持一对一、一对多、多对一、多对多的通信模式。
  • TCP是面向字节流的;UDP是面向报文的。
  • TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信。
  • TCP首部开销(20字节),比UDP的首部开销(8个字节)要大。

🦅 为什么 TCP 叫数据流模式? UDP 叫数据报模式?

所谓的“流模式”,是指TCP发送端发送几次数据和接收端接收几次数据是没有必然联系的。

  • 比如你通过TCP连接给另一端发送数据,你只调用了一次write,发送了100个字节,但是对方可以分10次收完,每次收10个字节;你也可以调用10次wirte,每次10个字节,但是对方一次就收完。
  • 原因:这是因为TCP是面向连接的,一个Socket中收到的数据都是由同一台主机发出,且有序地到达,所以每次读取多少数据都可以。

所谓的“数据报模式”,是指UDP发送端调用了几次wirite,接收端必须用相同次数的read读完。

  • UDP是基于报文的,在接收的时候,每次最多只能读取一个报文,报文和报文是不会合并的,如果缓冲区小于报文长度,则多出的部分会被丢弃。
  • 原因:这是因为UDP是无连接的,只要知道接收端的IP和端口,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。

UDP报文的格式在这里插入图片描述

  • 16位*4=64位=8字节。

DNS

DNS是什么?

  • 域名解析,www.xxx.com转换成IP,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
  • DNS协议运行在UDP协议之上,使用端口号53.

主机解析域名的顺序?

  1. 浏览器缓存
  2. 找本机的hosts文件
  3. 路由缓存
  4. 找DNS服务器(本地域名、顶级域名、根域名)

DNS使用什么协议?

参见《DNS使用的是TCP协议还是UDP协议》文章。

既使用TCP又使用UDP。

  • 区域传送时使用TCP协议。
  • 辅域名服务器会定时(一般是3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会进行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
  • TCP是一种可靠的连接,保证了数据的准确性。
  • 域名解析是使用UDP协议。
  • 客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。
    UDP报文的最大长度为512字节。
  • 不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP包。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值