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

来源:互联网 发布:多源异构大数据 编辑:程序博客网 时间:2024/04/28 00:49

最近在处理一些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
 
我也是参考<TCP/IP详细卷1> Richard Stevens著,Stevens大叔的书写得都很精彩,特别是TCP/IP详细卷那三部.

原创粉丝点击