速读原著-TCP/IP(用UDP还是用TCP)

2020-03-11 16:09:54 浏览数 (1)

第14章 DNS:域名系统

14.8 用UDP还是用TCP

注意到D N S名字服务器使用的熟知端口号无论对 U D P还是T C P都是5 3。这意味着D N S均支持U D P和T C P访问,但我们使用 t c p d u m p观察的所有例子都是采用 U D P。那么这两种协议都在什么情况下采用以及采用的理由都是什么呢?

当名字解析器发出一个查询请求,并且返回响应中的 T C(删减标志)比特被设置为 1时,它就意味着响应的长度超过了 5 1 2个字节,而仅返回前 5 1 2个字节。在遇到这种情况时,名字解析器通常使用T C P重发原来的查询请求,它将允许返回的响应超过 5 1 2个字节(回想在11 . 1 0节讨论的U D P数据报的最大长度)。既然T C P能将用户的数据流分为一些报文段,它就能用多个报文段来传送任意长度的用户数据。

此外,当一个域的辅助名字服务器在启动时,将从该域的主名字服务器执行区域传送。我们也说过辅助服务器将定时(通常是 3小时)向主服务器进行查询以便了解主服务器数据是否发生变动。如果有变动,将执行一次区域传送。区域传送将使用 T C P,因为这里传送的数据远比一个查询或响应多得多。

既然D N S主要使用U D P,无论是名字解析器还是名字服务器都必须自己处理超时和重传。此外,不像其他的使用 U D P的I n t e r n e t应用(T F T P、B O O T P和S N M P),大部分操作集中在局域网上,D N S查询和响应通常经过广域网。分组丢失率和往返时间的不确定性在广域网上比局域网上更大。这样对于D N S客户程序,一个好的重传和超时程序就显得更重要了。

0 人点赞