DNS什么时候用UDP什么时候用TCP来传输解释

2009-05-13 06:07:16来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

最近在处理一些DNS问题,考虑用了4层交换机来实现,根据4层交换机来说做负载均衡是采用TCP或DUP负载来做的,这时候我想DNS用的是53端口,53是TCP和UDP工用的,那么什么时候用TCP什么时候用UDP呢?下面是我看书结合下自己找出来的答案.

主要是查看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使用DUP 53端口,这并不完整,会导致别人误解,认为DNS只用UDP,不用TCP,呵呵。

详细可查看RFC1035,连接:

http://www.ietf.org/rfc/rfc1035.txt

我也是参考 Richard Stevens著,Stevens大叔的书写得都很精彩,特别是TCP/IP详细卷那三部.

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25055/showart_224364.html

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: FreeBSD获得Java二进制授权

下一篇:FreeBSD中编译JDK