UDP-协议-为什么-使用-DNS (udp协议的特点包括)

教程大全 2025-07-21 07:53:07 浏览

今天要分析的具体问题是『为什么 DNS 使用 UDP 协议』,DNS 作为整个互联网的电话簿,它能够将可以被人理解的域名翻译成可以被机器理解的 IP 地址,使得互联网的使用者不再需要直接接触很难阅读和理解的 IP 地址。作者曾经在 详解 DNS 与 CoreDNS 的实现原理 一文中介绍过 DNS 的实现原理,这篇文章中就不会介绍 DNS 的实现原理了,感兴趣的读者可以看一下。

为什么 DNS 协议使用 UDP 呢?这个问题可能大部分同学在各种博客或者面试过程中都或多或少遇见过,张口就来,UDP 快啊,DNS 使用 UDP 使得打开网页速度更快。

那各位有没有想过,既然 UDP 更快,为什么 HTTP 不使用 UDP 呢?

另外,为什么 DNS 协议使用 UDP 这个问题本身其实并不完全正确,DNS 并非只使用 UDP 协议,它同时占用了 UDP 和 TCP 的 53 端口,作为单个应用层的协议,DNS 同时使用两种传输协议也属实是个另类了。

我们从 TCP 与 UDP 的比较说起,老生常谈的话题,不过相信大部分同学都会忽略掉一个点,等下会指出来。

OK,轻松环节,闭着眼睛背:

上面这些是最基本的吧。

接下来讲的这个点,也就是很多人容易忽略的点,和 DNS 为什么需要同时使用 UDP 和 TCP 这个问题息息相关:

那就是 TCP 是面向字节流的,而 UDP 是面向报文的

解释一下这句话,我们知道,TCP 具有序列号机制,发送方会把一个大的 HTTP 报文按序号分割成若干报文段并加上 TCP 首部,也就是封装成 TCP 报文段。那么接收方在收到这些 TCP 报文段后,就会按照序号以原来的顺序重组 HTTP 报文。这就是面向字节流的 TCP。

而所谓 UDP 面向报文,发送方的 UDP 对应用层交付下来的 HTTP 报文, 在添加 UDP 首部后也就是封装成 UDP 报文,就向下交付给网络层 IP 协议。不做任何的拆分与合并,主要就是因为 UDP 没有像 TCP 一样的序列号机制来标识报文,所以默认只有一个 UDP 报文。

UDP 这么做就会导致一个问题。

互联网上物理链路的最小传输单元 = 576 字节,为了在物理链路上顺利传输,UDP 报文不能超过 576 字节,为此,UDP 报文被限制在 512 字节以内。

而 DNS 由于大面积使用了 UDP,这样一旦 DNS 报文超过 512 字节,基于 UDP 的 DNS 报文就只有抛弃多出来的 64 字节,截短为 512 字节,那么用户得到的 DNS 报文就是不完整的。

如何解决这个问题呢?

没错,最简单的方式就是使用 TCP。尽管速度可能相之 UDP 较慢,但对于得到完整的 DNS 报文,速度慢一点也可以忍受。

DNS 分别在什么情况下使用 UDP 和 TCP

udp协议的特点包括

了解了 TCP 面向字节流而 UDP 面向报文的这个特性之后,在域名解析的时候,也就是客户端向 DNS 服务器 查询域名获取 IP 地址的时候,DNS 协议关于 UDP 和 TCP 的选择通常可以分为以下两种情况:

当然了,在域名解析的时候,一般返回的 DNS 响应报文都不会超过 512 字节,用 UDP 传输即可。事实上,很多 DNS 服务器进行配置的时候,也仅支持 UDP 查询包。

不过,DNS 不仅存在域名解析的过程,还有区域传输的过程,而在进行区域传输的时候 DNS 会强制使用 TCP 协议。

这就不得不提一下主域名服务器和辅助域名服务器。

设置域名服务器时,服务器管理员可以选择将域名服务器指定为主服务器还是辅助服务器(也称为从服务器)。

主域名服务器负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。主服务器直接从本地文件获取此信息。只能在主服务器上更改区域的 DNS 记录,然后主服务器才能更新辅助服务器。

当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。辅助域名服务器中的区域文件中的数据是从主域名服务器中复制过来的,无法自行修改。

其实就是主从的概念,各位应该也都比较熟悉了。主域名服务器用来写,辅助域名服务器用来读,提供负载均衡的能力,缓解主域名服务器的压力。

那么所谓区域传输(zone transfer)呢,就是辅助域名服务器与主域名服务器通信,并同步数据信息的过程。

辅域名服务器会定时向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传输。区域传输使用 TCP 而不是 UDP,因为数据同步传送的数据量比一个 DNS 请求和响应报文的数据量要多得多。

文章开头提到的既然 UDP 更快,为什么 HTTP 不使用 UDP 呢?这个问题的答案也大抵如此。

由于互联网的不安全性,我们需要数字证书并携带数字签名来保证数据的安全性,为此,整个 HTTP 报文的大小已经远远超过 512 字节,无法使用 UDP 传输。

综上,总结下,虽然 UDP 速度更快,DNS 协议也确实大面积使用了 UDP,但是由于 UDP 面向报文、只能传输小于 512 字节的特性,DNS 并非只使用了 UDP,具体的 TCP 和 UDP 使用场景如下:

DNS 在域名解析的过程中,会根据 DNS 响应报文的大小选择使用 TCP 还是 UDP。但是一般情况下,返回的 DNS 响应报文都不会超过 512 字节,所以事实上,很多 DNS 服务器进行配置的时候,也仅支持 UDP 查询包;

DNS 在进行区域传输的时候使用 TCP 协议。


TCP/IP协议的含义与功能

TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构,即网络接口层、IP层、传输层和应用层。 TCP/IP是一组专业化协议,包括IP、TCP、UDP、ARP、ICMP以及其它的一些被称为子协议的协议。

网络接口层:TCP/IP模型中的网络接口层与OSI/RM的物理层、数据链路层以及网络层的一部分相对应。 TCP/IP参考模型并未对这一层做具体的描述,它一般指各种计算机网络,如SATNET、ARPAnet、LAN、分组无线网等.该层中所使用的协议大多是各通信子网固有的协议,例如以太网802.3协议、令牌环网802.5协议或分组交换网X.25协议等。 IP层,Internet Protocol层,也被称为网际层、网络互连层。 是TCP/IP模型的关键部分。 它的功能是使主机可以把IP数据报(datagram)发往任何网络,并使数据报独立地传向目标,为IP数据报分配一个全网唯一的传送地址(称为IP地址),实现IP地址的识别与管理 .传输层为应用程序提供端到端通信功能,这与OSI/RM 中的传输层相似。 该层协议处理IP层没有处理的通信问题,保证通信连接的可靠性,能够自动适应网络的各种变化,传输层主要有两个协议:传输控制协议TCP,用户数据报协议UDP.应用层位于传输层之上,包含所有的高层协议,为用户提供所需要的各种服务。 主要的服务有:远程登录(Telnet)、文件传输(FTP)、电子邮件(SMTP)、Web服务(HTTP)、域名系统(DNS)等。

比较OSI七层参考模型与TCP/IP四层模型

TCP/IP与OSI模型是一种相对应的关系。 应用层:大致对应于O S I模型的应用层和表示层,应用程序通过该层利用网络。 传输层:大致对应于O S I模型的会话层和传输层,包括T C P(传输控制协议)以及U D P(用户数据报协议),这些协议负责提供流控制、错误校验和排序服务。 所有的服务请求都使用这些协议。 互连网层:对应于O S I模型的网络层,包括I P(网际协议)、I C M P(网际控制报文协议)、I G M P(网际组报文协议)以及A R P(地址解析协议)。 这些协议处理信息的路由以及主机地址解析。 网络接口层:大致对应于O S I模型的数据链路层和物理层。 该层处理数据的格式化以及将数据传输到网络电缆。 Telnet:提供远程登录(终端仿真)服务,好象比较古老的BBS就是用的这个登陆。 FTP :提供应用级的文件传输服务,说的简单明了点就是远程文件访问等等服务;SMTP:不用说拉,天天用到的电子邮件协议。 TFTP:提供小而简单的文件传输服务,实际上从某个角度上来说是对FTP的一种替换(在文件特别小并且仅有传输需求的时候)。 SNTP:简单网络管理协议。 看名字就不用说什么含义了吧。 DNS:域名解析服务,也就是如何将域名映射城IP地址的协议。 HTTP:不知道各位对这个协议熟不熟悉啊?这是超文本传输协议,你之所以现在能看到网上的图片,动画,音频,等等,都是仰仗这个协议在起作用啊!OSI中的层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层数据格式化,代码转换,数据加密TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,html会话层解除或建立与别的接点的联系RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP传输层提供端对端的接口TCP,UDP网络层为数据包选择路由IP,ICMP,RIP,OSPF,BGP,IGMP数据链路层传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,ARP,RARP,MTU物理层以二进制数据形式在物理媒体上传输数据ISO2110,IEEE802。 IEEE802.2TCP/IP:数据链路层:ARP,RARP网络层: IP,ICMP,IGMP传输层:TCP ,UDP,UGP应用层:Telnet,FTP,SMTP,SNMP.

TCP UDP 是什么意思啊 ?

这是两个工作在TCP/IP协议传输层的两个不同的协议,是用来传输数据用的。 TCP:Transfer Control Protocol,传输控制协议。 这是一个全双工的、面向连接的、可靠的并且是精确控制的协议。 主要是用在那些实时性不强、但要求不能出错的应用。 比如说,网页的浏览、文件的下载(不是BT、电驴下载)、邮件的收发等场合,就需要TCP协议进行传输(因为不会出错)。 当然,它在网络方面的开销是昂贵的。 UDP:User Datagram Protocol,用户数据报协议。 这是一个不可靠的传输协议。 因为它不排序所要发送的数据段、不关心这些数据段到达目的方的顺序(所以它才不可靠),所以它在网络的开销要比TCP小很多。 因此UDP适合用在那些实时性强、允许出错的场合。 比如说:即时通信(MSN、QQ),视频,语音等方面。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐