如何让电脑发的dns报文是基于tcp的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让电脑发的dns报文是基于tcp的相关的知识,希望对你有一定的参考价值。

参考技术A 让电脑发的dns报文是基于tcp的步骤。
1、有了DNSServer的IP地址。
2、需要做的就是搭建nettyclient。
3、向DNSserver端发送DNS查询消息。

DNS啥时候用UDP啥时候用TCP来传输?

参考技术A 一、DNS报文角度来看
主要是查看DNS报文首部中的标志字段
[QR][opcode][AA][TC][RD][RA][(zone)][rcode]

主要关注字段为TC字段,当TC字段为1时,表示应答总长度超过512字节,只返回前512个字节,这时DNS就需要使用TCP重发原来的查询请求。因为在UDP的应用程序中,其应用程序被限制在512个字节或更小,因此DNS报文穿数据流只能有512字节,而TCP能将用户的数据流分为一些报文段,因此TCP就能用多个报文段去传超过512字节的数据流或是任意长度的数据流。

大多数书只写DNS使用UDP 53端口,这并不完整,会导致别人误解,认为DNS只用UDP,不用TCP,呵呵。

二、应用角度来看
区域传输用TCP,其他用UDP。
什么是区域传输?
dns的规范规定了2种类型的dns服务器,一个叫主dns服务器,一个叫辅助dns服务器。在一个区中主dns服务器从自己本机的数据文件中读取该区的dns数据信息,而辅助dns服务器则从区的权威dns服务器中读取该区的dns数据信息。当一个辅助dns服务器启动时,它需要与主dns服务器通信,并加载数据信息,这就叫做区传送(zone transfer).
通俗地讲,就是DNS服务器之间传输时使用TCP,而客户端与DNS服务器之间传输时用的是UDP。

以上是关于如何让电脑发的dns报文是基于tcp的的主要内容,如果未能解决你的问题,请参考以下文章

关于网页点击链接后游览器如何生成页面的过程

DNS啥时候用UDP啥时候用TCP来传输?

如何修改DNS地址

我想问怎么用c语言实现对一个二进制报文的读取(报文里是以太网,IP,UDP,DNS,ARP,TCP

tcp面试题

TCP和UDP的常见面试题