udp广播(udp广播会造成网络堵塞)

udp广播(udp广播会造成网络堵塞)p 这一篇文章开始着重讲解 UDP 编程 这块的知识也算是非常重要的 而且现在的编程都离不开网络 花了一些时间整理了一下 p p 一 基本认识 p p 1 什么是 UDP 协议 p p blockquote UDP 协议 也就是用户数据报协议 User Datagram blockquote p

大家好,我是讯享网,很高兴认识大家。




讯享网

 <p>这一篇文章开始着重讲解UDP编程。这块的知识也算是非常重要的,而且现在的编程都离不开网络。花了一些时间整理了一下。</p><p>一、基本认识</p><p>1、什么是UDP协议?</p><p><blockquote>UDP协议,也就是用户数据报协议(User Datagram Protocol),是一个简单的面向数据报的传输层协议。只在IP协议上增加了很少一点的功能,就是复用和分用,以及差错检测的功能。<br/></blockquote></p><p>特点我们可以整理总结一下:</p><p>(1)无连接:也就是说发送之前不需要建立连接,直接发送就可以,和TCP协议相比就减少了三次握手四次挥手等时间的消耗。</p><p>(2)不可靠交付:也就是说,我们只管发送数据,对方收没收到不需要去管。</p><p>(3)面向报文:只进行简单的添加首部数据,就直接封装成IP包发送了。</p><p>(4)支持多对多:这里表示的就是单播多播广播机制。</p><p>(5)没有拥塞控制</p><p>2、数据格式</p><p>在上面我们知道,UDP协议包只在I协议上增加了很少一点的功能,就是复用和分用,以及差错检测的功能。那添加的这些数据是什么样子的呢?</p><p>UDP协议分为首部字段和数据字段,其中首部字段只占用8个字节,分别是个占用两个字节的源端口、目的端口、长度和检验和。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2Fs%3DFPPOLHeWoREoBbwMLTUx6S96yZkHdlPvg7s1tQ0voqR60.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>我们在这里对添加的数据字段分别进行一个解释说明:</p><p>(1)伪首部:伪首部其实是在校验和的时候添加的,起到一个辅助运算的作用。并不是真正的首部。校验和是为了检查报文中的数据是否有差错,如果没有差错,那么校验和之后的结果应该是1.</p><p>(2)源端口:源端口,这是为了收到对方的回音才使用的。</p><p>(3)目的端口:也就是UDP数据包的发送目的地。</p><p>(4)长度:数据长度</p><p>(5)检验和:检查是否数据出现了差错,如果有差错,那就丢弃。</p><p>3、UDP协议能做什么?</p><p>在UDP协议之上的协议相信我们都听过,比如说DNS、TFTP、SNMP等等,这些协议在网络通信中非常的实用也非常的重要。而且像视频、音频、和一些无关紧要的数据都可以使用他来发送,省时省力。</p><p>有一个非常重要的例子,那就是我们的微信聊天的场景,他就是采用的UDP协议,因为UDP协议是不可靠协议,你只管发送就好了,不管对方是否收到信息。对方有时间就会看到这条消息。</p><p>4、通信方式</p><p>在java中,UDP通信方式主要有三种:单播、多播和广播。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F6xhKxovAflWnf05MRXjfiKqF1tpKwr77qYMOvbVlY2eaK60.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>(1)单播:每次只有两个主机在通信。</p><p>在IPv4网络中,0.0.0.0到223.255.255.255属于单播地址。就好比说你在大街上叫你女朋友名字,那么就只有你女朋友回头。</p><p>(2)广播:当前主机和当前局域网下所有的主机通信</p><p>广播肯定都是限制在局域网中的,因为你要是朝着整个互联网广播一条消息,那实在是太麻烦了,而且很多人广播的时候会造成网络堵塞,因此只限定在局域网中。这种方式也很好理解,就好比你在大街上叫了一声“美女帅哥”,那么周围(局域网)所有的人都会回头。</p><p>他的地址一般都是255.255.255.255。另外ipv6不支持广播。</p><p>(3)多播:当前主机和当前局域网下一部分主机通信</p><p>多播也很好理解,就比如你在大街上只喊了一句美女,没有喊帅哥,那么就只有美女回头,帅哥不会回头。组播的地址就比较麻烦一点了。因为你可以把你要通信的地址汇聚到一块形成一个多播组。但是有些地址是官方已经限定好了的,你就没法使用,这叫做永久组。还有一些没被使用的地址就组成了临时组。</p><p>其中永久的组播地址:224.0.0.0-224.0.0.2。而剩下的就是临时组了:224.0.1.0~224.0.1.255是公用组播地址</p><p>下面我们着重使用代码来实现一下这三种通信方式:</p><p>二、代码实现</p><p>1、单播案例</p><p>单播案例很简单,在这里我们假设,你在大街上叫你女朋友名字,然后你女朋友回头答复了你一句。</p><p>首先看一下服务端:代表女朋友:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2FX0Wykb5UsxgQgo8q7M5RKzhT92BE25N22xOWHD3SHvQlW60.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>然后就是客户端了</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2FLSCkBV%3DqT2kRDagwonVVq9WCcDcvjvVgFaBNkCM0z9v5y54.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>代码很简单,你运行一下就能体会到,在这里就不显示结果了。在这里我们会发现里面主要涉及到了两个类DatagramSocket和DatagramPacket。分别表示socket和数据包。这一点和广播涉及到的类是一样的。</p><p>2、广播</p><p>在大街上,你突然喊了一句,帅哥美女们,于是乎都回头了。</p><p>首先是服务端:帅哥美女们</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F7%3DoPdsF%3D81OgN7KywztJI4Tl3Mhc2z6onT88VdLbgrrfx60.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>然后就是客户端:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2FCeBnENUum2qDPnk%3DeIm3YgkLRjvLOnMjeEUxykTrbId8D60.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>完整的代码都在这了,对于结果自己运行一下吧。</p><p>3、多播</p><p>在大街上,你突然喊了一句美女,于是乎街上的美女们就都回头了,但是帅哥却不会。</p><p>首先是服务端:美女</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2FgMzJsaV%3DeUK3XUOh85T4QwBSOqGtNes7zqP0miUfkYIJq58.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>然后是客户端</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2FyaHdxU2MemSCDzcefwPrjGwcQky5ou3tqYVZJJtBXViBC61.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>可能你已经发现了,DatagramSocket已经变成了MulticastSocket,说明多播有自己的实现机制。如果你想进一步了解,可以深入其源码看看。</p><p>OK。java中UDP编程基本上就是这三种方式,基本案例在此,你可以根据自己的需要变形。</p> 

讯享网
小讯
上一篇 2025-05-27 21:45
下一篇 2025-05-24 22:49

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/167876.html