DNS 使用的是tcp 还是udp?

Domain Name System aka DNS is used to match domain names to the IP addresses. DNS is provided over the intranet and internet servers with different port numbers.DNS can use both transmission protocols TCP and UDP. But general usage is over UDP protocol because of its simplicity and speed.
域名系统又名DNS,用于将域名与IP地址进行匹配。 DNS是通过具有不同端口号的Intranet和Internet服务器提供的。DNS可以同时使用TCP和UDP传输协议。 但是由于其简单性和速度,一般使用基于UDP协议。

TCP端口53 (TCP Port 53)

One of the used DNS port is TCP Port 53. TCP provides stability over the DNS resolutions process. With TCP 53 there will be no data loss over network transmission which makes DNS transaction more stable. But this will create some overhead for the server and client because of the TCP behavior.
使用的DNS端口之一是TCP端口53。TCP在DNS解析过程中提供了稳定性。 使用TCP 53,将不会通过网络传输丢失任何数据,这将使DNS事务更加稳定。 但这会由于TCP行为而给服务器和客户端带来一些开销。

UDP端口53 (UDP Port 53)

The most known and popular usage protocol of DNS is UDP 53. Most DNS servers use UDP 53 port which provides simplicity and less resource usage.
DNS的最广为人知的使用协议是UDP53。大多数DNS服务器使用UDP 53端口,可简化操作并减少资源使用。

DNSSEC端口号 (DNSSEC Port Number)

DNSSEC provides secure DNS transactions which will secure a domain name to IP translation secure manner. DNSSEC can use both UDP and TCP 53 ports. But as DNSSEC packets are generally larger than 512 bytes and UDP can transmit a maximum 512 byte TCP protocol is used for DNSSEC. So DNSSEC uses TCP 53 port for communication.
DNSSEC提供安全的DNS事务,该事务将确保域名到IP转换的安全方式。 DNSSEC可以同时使用UDP和TCP 53端口。 但是由于DNSSEC数据包通常大于512字节,并且UDP可以传输的最大512字节TCP协议用于DNSSEC。 因此,DNSSEC使用TCP 53端口进行通信。

Understanding DNS Port 53 with Examples

What is DNS? DNS Meaning

Exploring EDNS with Examples

### DNS协议使用的传输层协议类型 DNS协议既可以使用TCP也可以使用UDP,具体取决于不同的场景需求。 #### 1. DNS 使用 UDP 的场景 DNS在绝大多数情况下使用的是UDP协议。这是因为UDP具有较低的延迟和简单的通信模型,非常适合于快速完成的小型查询操作。当DNS查询的响应数据小于等于512字节时,通常会选择UDP作为其传输方式[^4]。此外,由于UDP无需建立连接即可直接发送数据包,因此它能够显著提升查询效率并减少服务器负载[^3]。 #### 2. DNS 使用 TCP 的场景 尽管大部分时间里DNS依赖于UDP来执行基本功能,但在某些特殊条件下则改用TCP来进行更复杂的交互过程。这些条件主要包括但不限于以下几种情形之一:如果应答消息长度超过512字节而触发TC(Truncation)标志位,则客户端需重新尝试利用TCP发起新的请求以便获取完整的记录信息;或者是在涉及区域传送(Zone Transfer)这种大规模数据交换活动期间也会切换至更为可靠的TCP通道上进行处理[^1]。 #### 3. 总结对比 | 特性 | UDP | TCP | |-----------------|---------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| | **可靠性** | 不可靠,可能丢失或乱序 | 可靠,确保数据按顺序到达 | | **连接模式** | 无连接 | 面向连接 | | **适用场合** | 小型、频繁的DNS查询 | 大型数据传输如区传递 | | **性能表现** | 更高效,低延迟 | 较慢启动阶段因三次握手增加了一些额外的时间成本 | 综上所述,在日常标准询问过程中采用轻便快捷又经济实惠的用户数据报协议即能满足实际需要;然而一旦遇到超出常规范围之外的任务比如大文件下载或是更新同步等情况之下就必须依靠具备高度稳定性的传输控制协议才能顺利完成整个流程[^2]。 ```python import socket def dns_query(domain, use_tcp=False): sock_type = socket.SOCK_DGRAM if not use_tcp else socket.SOCK_STREAM with socket.socket(socket.AF_INET, sock_type) as s: server_address = ('8.8.8.8', 53) message = b'\xaa\xaa\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07example\x03com\x00\x00\x01\x00\x01' try: if use_tcp: s.connect(server_address) length = len(message).to_bytes(2, 'big') s.send(length + message) data = s.recv(1024)[2:] else: s.sendto(message, server_address) data, _ = s.recvfrom(4096) return data.hex() excep
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值