DNS⽤的是TCP协议还是UDP协议
DNS占⽤53号端⼝,同时使⽤TCP和UDP协议。那么DNS在什么情况下使⽤这两种协议?
DNS在区域传输的时候使⽤TCP协议,其他时候使⽤UDP协议。
DNS区域传输的时候使⽤TCP协议:
1.辅域名服务器会定时(⼀般3⼩时)向主域名服务器进⾏查询以便了解数据是否有变动。如有变动,会执⾏⼀次区域传送,进⾏数据同步。区域传送使⽤TCP⽽不是UDP,因为数据同步传送的数据量⽐⼀个请求应答的数据量要多得多。
2.TCP是⼀种可靠连接,保证了数据的准确性。
域名解析时使⽤UDP协议:
客户端向DNS服务器查询域名,⼀般返回的内容都不超过512字节,⽤UDP传输即可。不⽤经过三次握⼿,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时⽤TCP,但事实上,很多DNS服务器进⾏配置的时候,仅⽀持UDP查询包。
DNS为什么⽤TCP和UDP
DNS同时占⽤UDP和TCP端⼝53是公认的,这种单个应⽤协议同时使⽤两种传输协议的情况在TCP/IP栈也算是个另类。但很少有⼈知
道DNS分别在什么情况下使⽤这两种协议。
先简单介绍下TCP与UDP。
TCP是⼀种⾯向连接的协议,提供可靠的数据传输,⼀般服务质量要求⽐较⾼的情况,使⽤这个协议。UDP---⽤户数据报协议,是⼀种⽆连接的传输层协议,提供⾯向事务的简单不可靠信息传送服务。
TCP与UDP的区别:
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递⽅⾯不同。TCP协议中包含了专门的传递保证机制,当数据接收⽅收到发送⽅传来的信息时,会⾃动向发送⽅发出确认消息;发送⽅只有在接收到该确认消息之后才继续传送其它信息,否则将⼀直等待直到收到确认信息为⽌。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送⽅到接收⽅的传递过程中出现数据报的丢失,协议本⾝并不能做出任何检测或提⽰。因此,通常⼈们把UDP协议称为不可靠的传输协议。相对于TCP协议,UDP协议的另外⼀个不同之处在于如何接收突发性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。事实上,UDP协议的这种乱序性基本上很少出现,通常只会在⽹络⾮常拥挤的情况下才有可能发⽣。
既然UDP是⼀种不可靠的⽹络协议,那么还有什么使⽤价值或必要呢?其实不然,在有些情况下UDP协议可能会变得⾮常有⽤。因
为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植⼊了各种安全保障功能,但是在实际执⾏的过程中会占⽤⼤量的系统开销,⽆疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应⽤来完成,极⼤降低了执⾏时间,使速度得到了保证。
DNS在进⾏区域传输的时候使⽤TCP协议,其它时候则使⽤UDP协议;
DNS的规范规定了2种类型的DNS服务器,⼀个叫主DNS服务器,⼀个叫辅助DNS服务器。在⼀个区中主DNS服务器从⾃⼰本机的数据⽂件中读取该区的DNS数据信息,⽽辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当⼀个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。
为什么既使⽤TCP⼜使⽤UDP?
⾸先了解⼀下TCP与UDP传送字节的长度限制:
UDP报⽂的最⼤长度为512字节,⽽TCP则允许报⽂长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使⽤TCP发送。通常传统的UDP报⽂⼀般不会⼤于512字节。
区域传送时使⽤TCP,主要有⼀下两点考虑:
1.辅域名服务器会定时(⼀般时3⼩时)向主域名服务器进⾏查询以便了解数据是否有变动。如有变动,则会执⾏⼀次区域传送,进⾏数据同步。区域传送将使⽤TCP⽽不是UDP,因为数据同步传送的数据量⽐⼀个请求和应答的数据量要多得多。
2.TCP是⼀种可靠的连接,保证了数据的准确性。
域名解析时使⽤UDP协议:
客户端向DNS服务器查询域名,⼀般返回的内容都不超过512字节,⽤UDP传输即可。不⽤经过TCP三次握⼿,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使⽤TCP,但事实上,很多DNS服务器进⾏配置的时候,仅⽀持UDP查询包。
UDP
UDP 与 TCP 的主要区别在于 UDP 不⼀定提供可靠的数据传输。事实上,该协议不能保证数据准确⽆误地到达⽬的地。UDP 在许多⽅⾯⾮常有效。当某个程序的⽬标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使⽤ UDP。ICQ 短消息使
⽤ UDP 协议发送消息。
许多程序将使⽤单独的TCP连接和单独的UDP连接。重要的状态信息随可靠的TCP连接发送,⽽主数据流通过UDP发送。
TCP
TCP的⽬的是提供可靠的数据传输,并在相互进⾏通信的设备或服务之间保持⼀个虚拟连接。TCP在数据包接收⽆序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供⼀个序号来完成此恢复。记住,较低的⽹络层会将每个数据包视为⼀个独⽴的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同⼀消息的组成部分。这种路由与⽹络层处理分段和重新组装数据包的⽅式⾮常相似,只是级别更⾼⽽已。
为确保正确地接收数据,TCP要求在⽬标计算机成功收到数据时发回⼀个确认(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果⽹络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使⽤数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。
TCP与UDP的选择
如果⽐较UDP包和TCP包的结构,很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同,UDP的源端⼝数和⽬的端⼝数也都⽀持⼀台主机上的多个应⽤。⼀个16位的UDP包包含了⼀个字节
长的头部和数据的长度,校验码域使其可以进⾏整体校验。(许多应⽤只⽀持UDP,如:多媒体数据流,不产⽣任何额外的数据,即使知道有破坏的包也不进⾏重发。)
很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能⽽不是传输的完整性时,如:⾳频和多媒体应⽤,UDP是最好的选择。在数据传输时间很短,以⾄于此前的连接过程成为整个流量主体的情况下,UDP 也是⼀个好的选择,如:DNS交换。把SNMP建⽴在UDP上的部分原因是设计者认为当发⽣⽹络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会⽤于绝⼤多数的⽹络应⽤。
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对⽅建⽴可靠的连接。⼀个TCP连接必须要经过三次“对话”才能建⽴起来。三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第⼀次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机⼀个在发送,⼀个在接收,协调⼯作)的数据包:“可以,你什么时候发?”,这是第⼆次对话;主机A再发出⼀个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的⽬的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
基于tcp协议的应用程序包括UDP(User Data Protocol,⽤户数据报协议)是与TCP相对应的协议。它是⾯向⾮连接的协议,它不与对⽅建⽴连接,⽽是直接就把数据包发送过去!
UDP适⽤于⼀次只传送少量数据、对可靠性要求不⾼的应⽤环境。⽐如,我们经常使⽤“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对⽅主机发送UDP数据包,然后对⽅主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么⽹络就是通的。例如,在默认状态下,⼀次“ping”操作发送4个数据包(如图2所⽰)。⼤家可以看到,发送的数据包数量是4包,收到的也是4包(因为对⽅主机收到后会发回⼀个确认收到的数据包)。这充分说明了UDP协议是⾯向⾮连接的协议,没有建⽴连接的过程。正因
为UDP协议没有连接的过程,所以它的通信效果⾼;但也正因为如此,它的可靠性不如TCP协议⾼。QQ就使⽤UDP发消息,因此有时会出现收不到消息的情况。HTTP是⽤TCP协议传输的。
TCP协议与UDP协议的区别
TCP基于⾯向连接的协议,数据传输可靠,传输速度慢,适⽤于传输⼤量数据,可靠性要求⾼的场合。
UDP协议⾯向⾮连接协议,数据传输不可靠,传输速度快,适⽤于⼀次只传送少量数据、对可靠性要求不⾼的应⽤环境。
⾯向连接的TCP
“⾯向连接”就是在正式通信前必须要与对⽅建⽴起连接。⽐如你给别⼈打电话,必须等线路接通了、对⽅拿起话筒才能相互通话。
TCP协议能为应⽤程序提供可靠的通信连接,使⼀台计算机发出的字节流⽆差错地发往⽹络上的其他计算机,对可靠性要求⾼的数据通信系统往往使⽤TCP协议传输数据。
⾯向⾮连接的UDP协议
“⾯向⾮连接”就是在正式通信前不必与对⽅先建⽴连接,不管对⽅状态就直接发送。这与现在风⾏的⼿机短信⾮常相似:你在发短信的时候,只需要输⼊对⽅⼿机号就OK了。
UDP适⽤于⼀次只传送少量数据、对可靠性要求不⾼的应⽤环境
UDP协议是⾯向⾮连接的协议,没有建⽴连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果⾼;但也正因为如此,它的可靠性不如TCP协议⾼。QQ就使⽤UDP发消息,因此有时会出现收不到消息的情况。
TCP协议与UDP协议⽀持的应⽤协议
TCP⽀持的应⽤协议主要有:Telnet、FTP、SMTP等;
UDP⽀持的应⽤层协议主要有:NFS(⽹络⽂件系统)、SNMP(简单⽹络管理协议)、DNS(主域名称系统)、TFTP(通⽤⽂件传输协议)等。
TCP和UDP都是位于OSI模型中的传输层中。
TCP优点:⾯向连接的,具有实时性,就象打电话⼀样,两者必须建⽴连接.
它保证你所传输的东西是准确到达的,并且收⽅要给你⼀个收到或没有\    收到的回复,所以它具有安全性的特点..
UDP优点:⾯向⽆连接的,就象给某⼈寄信⼀样,对⽅不需要在邮局等着你的信到.
所以说,它没有保障性,不能确保你⼀定能收到信,不象TCP那样,,但是它⽐TCP好的⼀点,就是速度快,因为他不需要双⽅交流是否收到,对发的东西有⼀个确认的过程.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。