require,tcpudp


为什么有的DNS使用的是UDP而不是TCP?

require,tcpudp


“网络极客”,全新视角、全新思路,带你遨游神奇的网络世界 。谢谢悟空问答的邀请 。为什么有的DNS使用的是UDP而不是TCP?很好的一个技术问题,DNS同时支持TCP和UDP,使用的是53这个端口;那么,很少有人知道DNS什么时候使用TCP,什么时候使用UDP协议 。先来简单认识一下TCP和UDP协议,在来看看究竟什么时候使用吧 。
TCP/UDP协议TCP协议TCP面向连接的可靠的传输协议,在数据传输之前需要建立三次握手;有点类似我们打的电话,通话之前需要先建立连接,双方确认在线后在进行数据传输 。UDP协议UDP面向非连接的不可靠的传输协议,不必建立连接,直接发送数据;有点类似我们的微信,发送之间无需确定对方是否在线,只需发送信息即可 。
DNS中对TCP和UDP的使用通过抓包软件,我们常看到的是UDP的数据包,那么究竟什么时候使用TCP协议呢?DNS的区域传输时使用TCP协议什么是DNS的区域传输,DNS服务器分为主DNS服务器和辅DNS服务器;在副DNS服务器和主DNS服务器进行通信,加载DNS信息时叫做DNS的区域传输 。DNS的区域传输使用的是TCP协议,能够提供更加可靠的数据 。
UDP和TCP的socket一般分别用在什么地方?
require,tcpudp


Socket是网络通讯经常采用的一种方式,它不是一个具体的物件也不是想http类的通讯协议 。你可以把它看成是一组基于TCP和UDP通信协议的接口,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议 。
Socket基本概念在了解Socket之前你需要对计算机通讯的分层有个大概的了解,具体讲解我在这里就不讲了,放一张很好的图分享给大家:上面图详细讲了基本整个计算机通信的分层架构,很多我也不了解没我们只看我们关心的TCP/IP,其分层简化图示如下:理解Socket好,了解了基本分层机构后,我们现在来形象的理解一下Socket到底是什么 。
我这里有一个很形象的实例可以帮助我们很好的理解Socket,这也是我当初在学习Socket编程时自己领悟出来的,那就是物流 。我们要传送的数据就是物流中的货物,ip就是发货人和收货人的联系方式,那么Socket是什么?大家想想这送货这这一流程还缺少啥?对呀,物流公司啊,对吧!物流公司就是那个Socket,他负责帮你处理送货的琐碎事情,比如你的货物该怎么打包、该怎么防止易碎物品破碎、该用什么方式运输、等等,如果是境外货物还牵涉到报关等等一系列复杂琐碎的事情,这些物流公司(Socket)帮你处理好了 。
示意图如下:理解TCP与UDP的区别以及三次握手和四次挥手然后我们来说一下TCP和UDP的区别 。前面讲到Socket就相当于是物流公司,那么TCP协议就相当于是:假设你是寄货方,你要寄给你朋友一份礼物,你首先得去物流公司去寄,这样你再物流公司就相当于建立了一个事物(Socket实例) 。然后物流公司有两种服务方式让你选择(TCP和UDP) 。
先说TCP,TCP这个协议它比较保守,物流公司说我必须确保你朋友会接收这份礼物,不然它不送 。于是物流公司就回去联系你朋友 。然后联系内容大致如下:物流:你好,我这里有个你朋友寄的礼物要给你,你收吗?你朋友:OK,收,什么时候发,多久到?物流:现在就发,大概要12小时到 。然后物流才开始发货,并且会给你们一个物流单号,这个单号就是关于这份货物你和你朋友的发货收货凭证 。

推荐阅读