searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

DNS采用UDP与TCP

2023-06-26 02:50:35
22
0

响应时间:用户从发起请求到获取完整资源所消耗的时间间隔(约等于DNS域名解析 + TCP连接 + HTTP请求响应)

1 采用UDP的优点 

  • 响应速度快:UDP协议不需要进行建立连接的握手,因此响应速度更快,特别是对于小数据包和查询速度较快的情况。
  • 占用带宽少:由于UDP协议不需要进行建立连接和断开连接的操作,也不需要对数据进行分包和组包操作,因此占用的带宽比TCP更少。

采用UDP的缺点

  • 数据传输不可靠:UDP是一种不可靠的传输协议,数据包在传输过程中可能会丢失或顺序错乱,因此在传输需要可靠性的数据时不适合使用。
  • 数据包大小受限:因为DNS只能标识报文ID,不能标识报文序号,故默认只有一个报文。UDP协议一般只支持512字节以下的数据包,因此在需要传输更大的数据时需要使用其他传输协议。

3  DNS协议从UDP切换到TCP的过程:

(1)客户端向DNS服务器发送查询请求,并使用UDP传输协议进行传输。

(2)DNS服务器接收到查询请求,并返回响应数据。如果响应数据的大小超过了512字节,则在响应数据中设置truncated标记位,表示响应数据被截断了。

(3)客户端收到带有truncated标记位的响应数据,并意识到需要切换到使用TCP协议进行传输。客户端向DNS服务器发送TCP连接请求,并在同一个TCP连接上重新发送查询请求;

(4)DNS服务器接收到TCP连接请求后,向客户端发送TCP连接响应,并在同一个TCP连接上接收到客户端的查询请求。

(5)DNS服务器使用TCP连接向客户端发送完整的响应数据,以保证数据传输的可靠性。

(6)客户端收到完整的响应数据后,关闭TCP连接,结束DNS查询过程。

采用TCP的缺点

  • 响应速度相对较慢:TCP协议需要进行三次握手、连接建立和断开等操作,因此响应速度相对较慢,适合小数据包或者查询速度较慢的情况。
  • 占用带宽相对较多:TCP协议需要进行建立连接、断开连接、分包、组包和流量控制等操作,因此占用的带宽相对较多。

注意:若缓存未命中,则TCP不仅只建立一次连接,localDNS会迭代查询(从根节点)至权威DNS,每次查询过程都需要建立一次连接。

如何采用UDP突破512限制——EDNS(参考RFC 6891)

为了实现UDP承载超过512字节的数据包,RFC 6891提出了扩展DNS,允许更多的标志和响应代码并且实现更长的消息响应,称为EDNS

EDNS使用场景:

  • DNS协议头部的第二个16字节中都已经被用的差不多了,需要添加新的返回类型(RCODE)和标记(FLAGS)来支持其他需求;
  • 兼容IPv6:IPv6的地址长度比IPv4的地址长度更长,因此对于IPv6的DNS查询,需要支持更大的DNS数据包传输。EDNS扩展允许DNS服务器和客户端使用UDP的最大数据包大小上限为65535字节,从而支持IPv6地址的查询和传输。
  • 支持DNSSEC扩展:DNSSEC是基于公钥基础设施的Web安全扩展,主要用于防止DNS欺诈和缓存污染攻击。在DNSSEC中,每个DNS回答的签名数据都很大,EDNS扩展可以支持DNSSEC扩展,并且在DNS回答中可以添加签名数据。
  • 改善DNS查询性能:DNS查询中,采用UDP传输数据包的优点是传输速度快,不需要连接和断开连接。但由于UDP协议传输数据包大小有限制,EDNS可以使用更大的数据包传输限制,提高DNS查询性能

EDNS扩展允许DNS服务器和客户端使用UDP的最大负载大小上限为65535字节,它在RFC 2671中定义了一种“OPT”资源记录类型。当客户端支持EDNS时,它会在DNS查询消息头的“Additional RRs”的最后一个部分中包含一条OPT记录,并且在DNS响应消息头的“Additional RRs”的最后一个部分中包含一条记录。

 

OPT RR字段的格式:

0条评论
0 / 1000
马建奇
2文章数
0粉丝数
马建奇
2 文章 | 0 粉丝
马建奇
2文章数
0粉丝数
马建奇
2 文章 | 0 粉丝
原创

DNS采用UDP与TCP

2023-06-26 02:50:35
22
0

响应时间:用户从发起请求到获取完整资源所消耗的时间间隔(约等于DNS域名解析 + TCP连接 + HTTP请求响应)

1 采用UDP的优点 

  • 响应速度快:UDP协议不需要进行建立连接的握手,因此响应速度更快,特别是对于小数据包和查询速度较快的情况。
  • 占用带宽少:由于UDP协议不需要进行建立连接和断开连接的操作,也不需要对数据进行分包和组包操作,因此占用的带宽比TCP更少。

采用UDP的缺点

  • 数据传输不可靠:UDP是一种不可靠的传输协议,数据包在传输过程中可能会丢失或顺序错乱,因此在传输需要可靠性的数据时不适合使用。
  • 数据包大小受限:因为DNS只能标识报文ID,不能标识报文序号,故默认只有一个报文。UDP协议一般只支持512字节以下的数据包,因此在需要传输更大的数据时需要使用其他传输协议。

3  DNS协议从UDP切换到TCP的过程:

(1)客户端向DNS服务器发送查询请求,并使用UDP传输协议进行传输。

(2)DNS服务器接收到查询请求,并返回响应数据。如果响应数据的大小超过了512字节,则在响应数据中设置truncated标记位,表示响应数据被截断了。

(3)客户端收到带有truncated标记位的响应数据,并意识到需要切换到使用TCP协议进行传输。客户端向DNS服务器发送TCP连接请求,并在同一个TCP连接上重新发送查询请求;

(4)DNS服务器接收到TCP连接请求后,向客户端发送TCP连接响应,并在同一个TCP连接上接收到客户端的查询请求。

(5)DNS服务器使用TCP连接向客户端发送完整的响应数据,以保证数据传输的可靠性。

(6)客户端收到完整的响应数据后,关闭TCP连接,结束DNS查询过程。

采用TCP的缺点

  • 响应速度相对较慢:TCP协议需要进行三次握手、连接建立和断开等操作,因此响应速度相对较慢,适合小数据包或者查询速度较慢的情况。
  • 占用带宽相对较多:TCP协议需要进行建立连接、断开连接、分包、组包和流量控制等操作,因此占用的带宽相对较多。

注意:若缓存未命中,则TCP不仅只建立一次连接,localDNS会迭代查询(从根节点)至权威DNS,每次查询过程都需要建立一次连接。

如何采用UDP突破512限制——EDNS(参考RFC 6891)

为了实现UDP承载超过512字节的数据包,RFC 6891提出了扩展DNS,允许更多的标志和响应代码并且实现更长的消息响应,称为EDNS

EDNS使用场景:

  • DNS协议头部的第二个16字节中都已经被用的差不多了,需要添加新的返回类型(RCODE)和标记(FLAGS)来支持其他需求;
  • 兼容IPv6:IPv6的地址长度比IPv4的地址长度更长,因此对于IPv6的DNS查询,需要支持更大的DNS数据包传输。EDNS扩展允许DNS服务器和客户端使用UDP的最大数据包大小上限为65535字节,从而支持IPv6地址的查询和传输。
  • 支持DNSSEC扩展:DNSSEC是基于公钥基础设施的Web安全扩展,主要用于防止DNS欺诈和缓存污染攻击。在DNSSEC中,每个DNS回答的签名数据都很大,EDNS扩展可以支持DNSSEC扩展,并且在DNS回答中可以添加签名数据。
  • 改善DNS查询性能:DNS查询中,采用UDP传输数据包的优点是传输速度快,不需要连接和断开连接。但由于UDP协议传输数据包大小有限制,EDNS可以使用更大的数据包传输限制,提高DNS查询性能

EDNS扩展允许DNS服务器和客户端使用UDP的最大负载大小上限为65535字节,它在RFC 2671中定义了一种“OPT”资源记录类型。当客户端支持EDNS时,它会在DNS查询消息头的“Additional RRs”的最后一个部分中包含一条OPT记录,并且在DNS响应消息头的“Additional RRs”的最后一个部分中包含一条记录。

 

OPT RR字段的格式:

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0