dns可以使用tcp与udp两种协议,分别在啥情况下使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dns可以使用tcp与udp两种协议,分别在啥情况下使用相关的知识,希望对你有一定的参考价值。
dns可以使用tcp与udp两种协议,分别在什么情况下使用
现在就来说说DNS分别在什么情况下使用这两种协议。
如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。其实当解析器发出一个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就能用更多的segment来传送任意长度的数据。
2. 另外一种情况是,当一个域的辅助域名服务器启动时,将从该域的主域名服务器primary DNS server执行区域传送。除此之外,辅域名服务器也会定时(一般时3小时)向PDS进行查询以便了解SOA的数据是否有变动。如有变动,也会执行一次区域传送。区域传送将使用TCP而不是UDP,因为传送的数据量比一个request或response多得多。
DNS主要还是使用UDP,解析器还是服务端都必须自己处理重传和超时。DNS往往需要跨越广域网或互联网,分组丢失率和往返时间的不确定性要更大些,这对于DNS客户端来说是个考验,好的重传和超时检测就显得更重要了。
参考技术A DNS一般情况下使用UDP通讯,但有两种情况例外:1、当客户端发出DNS查询请求,从服务器收到的响应报文中的TC(删减标志)比特被置为1时,此时意味着服务器响应长度超过512字节,而仅返回前512字节(udp报文最长为512B 而tcp无此限制)。在遇到这种情况时,客户端会使用TCP重发起原来的DNS查询请求,它将运行返回的响应超过512字节。
2、DNS的主辅名字服务器在同步时使用TCP协议。辅名字服务器一般每3小时向主名字服务器发起查询,看主服务器是否有新的记录变动,如有变动,将执行一次区域传送,区域传送使用TCP协议。 参考技术B tcp/udp是两种连接方式
跟DNS没关系
tcp是基于安全的连接,比如说网页
udp是基于快速的连接,比如游戏,
具体资料你可以去网上搜
学问很深
估计看一个月都看不完 参考技术C 可靠传输基于TCP
不可靠传输基于UDP
干货:DNS何时使用TCP协议,何时使用UDP协议?
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。
TCP:面向连接的协议,提供可靠的数据传输,一般服务质量要求比较高的情况,使用这个协议。
UDP:用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。
TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。
与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突发性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。事实上,UDP协议的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。
既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。
虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。
反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。
DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。
首先了解一下TCP与UDP传送字节的长度限制:
UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。
区域传送时使用TCP,主要有一下两点考虑:
1. 辅助域名服务器会定时(一般是3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
2. TCP是一种可靠的连接,保证了数据的准确性。
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。
虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
为了方便广大网络爱好学习者一起学(聚)习(众)交(搞)流(基),特开设华为干货交流群,里面已经上传大量学习资料,欢迎广大网络工程师进群学习!
扫我入群 以上是关于dns可以使用tcp与udp两种协议,分别在啥情况下使用的主要内容,如果未能解决你的问题,请参考以下文章