同时使用tcp和udp(同时使用tcp和ssl)

      最后更新:2022-12-13 10:02:56 手机定位技术交流文章

      DNS何时使用TCP协议,何时使用UDP协议?

      刚被设计出来的 DNS 就会同时使用 UDP 和 TCP 协议,对于绝大多数的 DNS 查询来说都会使用 UDP 数据报进行传输,TCP 协议只会在区域传输(它的作用就是在多个命名服务器之间快速迁移记录,由于查询返回的响应比较大,所以会使用 TCP 协议来传输数据包)的场景中使用,其中 UDP 数据包只会传输最大 512 字节的数据,多余的会被截断;DNS 记录中存储的数据会越来越多,同时显示的指出了发现 UDP 包被截断时应该通过 TCP 协议重试。 使用 UDP 进行传输的 DNS 查询和响应最大不能超过 512 字节,不能支持大量 IPv6 地址或者 DNS 安全签名等记录的传输;EDNS 为 DNS 提供了扩展功能,让 DNS 通过 UDP 协议携带最多 4096 字节的数据;能够帮助我们在一定程度上解决大数据包被截断的问题,减少了使用 TCP 协议进行重试的需要,但是由于最大传输单元的限制,这并不能解决所有问题。所以提出了使用 TCP 协议作为主要协议来解决 UDP 无法解决的问题,TCP 协议也不再只是一种重试时使用的机制现在的网路状况使我们不仅遇到了 IPv4 即将无法分配的状况,而且还需要引入 DNSSEC 等机制来保证 DNS 查询和请求的完整性以及传输安全,总而言之,DNS 协议需要处理的数据包越来越大、数据也越来越多,但是『为什么当需要传输的数据较多时我们就必须使用 TCP 协议呢?』,如果继续使用 UDP 协议就不能完成 DNS 解析么。从理论上来说,一个 UDP 数据包的大小最多可以达到 64KB,这对于一个常见的 DNS 查询其实是一个非常大的数值;但是在实际生产中,一旦数据包中的数据超过了传送链路的最大传输单元(MTU,也就是单个数据包大小的上限,一般为 1500 字节),当前数据包就可能会被分片传输、丢弃,部分的网络设备甚至会直接拒绝处理包含 EDNS 选项的请求,这就会导致使用 UDP 协议的 DNS 不稳定。TCP 作为可靠的传输协议,可以非常好的解决这个问题,通过序列号、重传等机制能够保证消息的不重不漏,消息接受方的 TCP 栈会对分片的数据重新进行拼装,DNS 等应用层协议可以直接使用处理好的完整数据。同时,当数据包足够大的时候,TCP 三次握手带来的额外开销比例就会越来越小,与整个包的大小相比就会趋近于 0所以,我们在 DNS 中存储较多的内容时,TCP 三次握手以及协议头带来的额外开销就不是关键因素了,不过我们 TCP 三次握手带来的三次网络传输耗时还是没有办法避免的,这也是我们在目前的场景下不得不接受的问题。很多人认为 DNS 使用了 UDP 协议来获取域名对应的 IP 地址,这个观点虽然没错,但是还是有一些片面,更加准确的说法其实是 DNS 查询在刚设计时主要使用 UDP 协议进行通信,而 TCP 协议也是在 DNS 的演进和发展中被加入到规范的:DNS 查询选择 UDP 或者 TCP 两种不同协议时的主要原因:无论是选择 UDP 还是 TCP,最核心的矛盾就在于需要传输的数据包大小,如果数据包小到一定程度,UDP 协议绝对最佳的选择,但是当数据包逐渐增大直到突破 512 字节以及 MTU 1500 字节的限制时,我们也只能选择使用更可靠的 TCP 协议来传输 DNS 查询和相应。 为什么 DNS 会使用 UDP 协议,假如使用 TCP 协议又会发生什么呢?
      DNS何时使用TCP协议,何时使用UDP协议?

      tcp和udp可以是一个服务共用一个端口吗

      tcp和udp是传输层下的两个协议,为应用层提供服务;不同的应用本身定义使用不同的传输层协议,ftp属于面向连接的应用所以只使用tcp下的21端口,没有听说过用udp协议的。只有个别的应用会同时用到tcp和udp的相同端口,比如dns53。
      tcp和udp可以是一个服务共用一个端口吗

      TCP和UDP能不能同时监听同一个端口

      TCP和UDP端口是可以相同的,因为TCP和UDP都在OSI的第四层,端口号就是第四层,也就是说端口只是TCP定义的数据而已,TCP端口和UDP端口就是两个传输层协议自己的东西,分别进行维护。tcp维护着tcp的端口列表,udp维护着udp的端口,所以不会冲突可以监听。 另外linux 3.9内核之后有了TCP的SO_REUSEPORT选项,主要用来做负载均衡,也是可以两个进程监听同一个tcp端口。
      这样的:如果在同一台机器上登录一个账户不会不会出现问题,在登录成功后都回由端口返回登录成功的信息,可是同时登录两个账号的时,第二个账号登陆成功的信息还是返回到第一个账号中,看了下服务器上的信息,两个账号使用了同样的ip和端口号,怎么解决这样的问题呢,我用的UDP通信,是不两个进程不能监听同一端口呢看 就像一样,同一机器登录两个账号,怎么实现端口的监听呢,能保证信息发送到正确的账号中,它是怎么实现监听同一端口的看
      我在找服务器端口复用的方法。你问的如果是本地需要同时登陆多个账号,就需要先用一个固定端口x和服务器通信登陆,成功后服务器返回一个端口y表示本地账户用y和服务器通信。本地端收到y后需要释放x,使用y和服务器通信。登陆第二个账号又用x和服务器通信登陆,成功后服务器返回一个端口y2,继续上面的过程就可以了。
      TCP和UDP能不能同时监听同一个端口

      关于TCP/UDP混合使用的问题

      就你的需求来说,我个人觉得没必要将2种协议混合使用. 使用UDP的话,采用短连接,每次只管发送就OK了.如果发生了需要重传的情况,那么TCP需要建立一次连接,来发送重传的消息,那么你是准备发完这个消息以后就关闭掉这个TCP的连接吗?如果不关闭,那采用长连接的话,作为服务器端,最大能接受的TCP客户端的默认值只有64个,这个你要注意下.如果你用TCP短连接,那么每次重传完,你还要关闭掉TCP连接. 当然你出于个人兴趣,可以这样写写,我建议还是使用长连接好.但需要额外定义listen的连接数
      TCP只在建立连接时需要三次握手,如果两端都没有发FIN的话,会一直保持连接状态。UDP可以在应用层实现简单的重传机制。
      关于TCP/UDP混合使用的问题

      tcp-udp服务管理同时多个设备

      同时处理TCP、UDP的服务我们讨论的服务器程序都只能监听一个端口。 UDP是UserDatagramProtocol的简称,是一种无连接的协议,每个数据包都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以TCP是TranferControlProtocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接
      tcp-udp服务管理同时多个设备

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/47321.html

          热门文章

          文章分类