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

网络 网络管理
服务器dns DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。

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

服务器dns DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。

如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。其实当解析器发出一个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文***长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就能用更多的segment来传送任意长度的数据。

另外一种情况是,当一个域的辅助域名服务器启动时,将从该域的主域名服务器primary DNS server执行区域传送。除此之外,辅域名服务器也会定时(一般时3小时)向PDS进行查询以便了解SOA的数据是否有变动。如有变动,也会执行一次区域传送。区域传送将使用TCP而不是UDP,因为传送的数据量比一个request或response多得多。

DNS主要还是使用UDP,解析器还是服务端都必须自己处理重传和超时。DNS往往需要跨越广域网或互联网,分组丢失率和往返时间的不确定性要更大些,这对于DNS客户端来说是个考验,好的重传和超时检测就显得更重要了。

[[122055]]
责任编辑:林琳 来源: CSDN
相关推荐

2013-07-29 14:50:43

API

2019-11-29 07:53:07

DNSTCP网络协议

2020-11-18 09:26:52

@property装饰器代码

2023-11-23 23:52:06

options请求浏览器

2013-09-12 10:41:39

VDI部署

2021-06-04 09:17:13

JavaScriptBoolean函数

2015-06-01 06:39:18

JavaJava比C++

2013-09-23 10:05:50

2010-07-13 16:07:26

SQL Server行

2015-06-29 14:23:13

JavaC++慢很多

2023-05-18 08:38:13

Java锁机制

2024-01-09 11:39:47

数字化转型数字优先企业

2009-03-05 10:55:00

企业无线Wi-Fi

2010-07-20 12:46:23

SQL Server聚

2021-09-14 07:26:25

雪花算法ID

2010-04-14 17:46:10

Oracle数据库

2020-09-24 09:43:59

Http协议options请求

2022-07-20 08:07:21

数据库分布式数据库

2012-04-25 09:24:40

Android

2021-04-22 18:34:01

协议DNSUDP
点赞
收藏

51CTO技术栈公众号