全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

udp协议简介_动力节点Java学院整理

1.UDP简要介绍

UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。

2.UDP协议头

UDP端口号

由于很多软件需要用到UDP协议,所以UDP协议必须通过某个标志用以区分不同的程序所需要的数据包。端口号的功能就在于此,例如某一个UDP程序A在系统中注册了3000端口,那么,以后从外面传进来的目的端口号为3000的UDP包都会交给该程序。端口号理论上可以有2^16这么多。因为它的长度是16个bit

UDP检验和

这是一个可选的选项,并不是所有的系统都对UDP数据包加以检验和数据(相对TCP协议的必须来说),但是RFC中标准要求,发送端应该计算检验和。

UDP检验和覆盖UDP协议头和数据,这和IP的检验和是不同的,IP协议的检验和只是覆盖IP数据头,并不覆盖所有的数据。UDP和TCP都包含一个伪首部,这是为了计算检验和而摄制的。伪首部甚至还包含IP地址这样的IP协议里面都有的信息,目的是让UDP两次检查数据是否已经正确到达目的地。如果发送端没有打开检验和选项,而接收端计算检验和有差错,那么UDP数据将会被悄悄的丢掉(不保证送达),而不产生任何差错报文。

UDP长度

UDP可以很长很长,可以有65535字节那么长。但是一般网络在传送的时候,一次一般传送不了那么长的协议(涉及到MTU的问题),就只好对数据分片,当然,这些是对UDP等上级协议透明的,UDP不需要关心IP协议层对数据如何分片,下一个章节将会稍微讨论一些分片的策略。

IP分片

IP在从上层接到数据以后,要根据IP地址来判断从那个接口发送数据(通过选路),并进行MTU的查询,如果数据大小超过MTU就进行数据分片。数据的分片是对上层和下层透明,而数据也只是到达目的地还会被重新组装,不过不用担心,IP层提供了足够的信息进行数据的再组装。

在IP头里面,16bit识别号唯一记录了一个IP包的ID,具有同一个ID的IP片将会被重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表示中间的3bit标志则标示着该分片后面是否还有新的分片。这三个标示就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织(就算是后面的分片比前面的分片先到,这些信息也是足够了)。
因为分片技术在网络上被经常的使用,所以伪造IP分片包进行流氓攻击的软件和人也就层出不穷。

可以用Trancdroute程序来进行简单的MTU侦测。请参看教材。

UDP和ARP之间的交互式用

这是不常被人注意到的一个细节,这是针对一些系统地实现来说的。当ARP缓存还是空的时候。UDP在被发送之前一定要发送一个ARP请求来获得目的主机的MAC地址,如果这个UDP的数据包足够大,大到IP层一定要对其进行分片的时候,想象中,该UDP数据包的第一个分片会发出一个ARP查询请求,所有的分片都辉等到这个查询完成以后再发送。事实上是这样吗?
结果是,某些系统会让每一个分片都发送一个ARP查询,所有的分片都在等待,但是接受到第一个回应的时候,主机却只发送了最后一个数据片而抛弃了其他,这实在是让人匪夷所思。这样,因为分片的数据不能被及时组装,接受主机将会在一段时间内将永远无法组装的IP数据包抛弃,并且发送组装超时的ICMP报文(其实很多系统不产生这个差错),以保证接受主机自己的接收端缓存不被那些永远得不到组装的分片充满。

ICMP源站抑制差错

当目标主机的处理速度赶不上数据接收的速度,因为接受主机的IP层缓存会被占满,所以主机就会发出一个“我受不了”的一个ICMP报文。

UDP服务器设计

UDP协议的某些特性将会影响我们的服务器程序设计,大致总结如下:

1.关于客户IP和地址:服务器必须有根据客户IP地址和端口号判断数据包是否合法的能力(这似乎要求每一个服务器都要具备)
2.关于目的地址:服务器必须要有过滤广播地址的能力。
3.关于数据输入:通常服务器系统的每一个端口号都会和一块输入缓冲区对应,进来的输入根据先来后到的原则等待服务器的处理,所以难免会出现缓冲区溢出的问题,这种情况下,UDP数据包可能会被丢弃,而应用服务器程序本身并不知道这个问题。
4.服务器应该限制本地IP地址,就是说它应该可以把自己绑定到某一个网络接口的某一个端口上。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# udp  # 协议  # Java 基于UDP协议实现消息发送  # java实现基于UDP协议网络Socket编程(C/S通信)  # Java基于UDP协议实现简单的聊天室程序  # java编程实现基于UDP协议传输数据的方法  # Java基于socket服务实现UDP协议的方法  # 详解UDP协议格式及在java中的使用  # 分片  # 数据包  # 将会  # 端口号  # 这是  # 很长  # 首部  # 自己的  # 就会  # 先来后到  # 让人  # 就在  # 都在  # 第一个  # 都要  # 也就  # 是这样  # 不需要  # 还会  # 被人 


相关文章: 建站之星如何优化SEO以实现高效排名?  如何通过山东自助建站平台快速注册域名?  如何快速生成橙子建站落地页链接?  ,怎么在广州志愿者网站注册?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  建站之星安装后如何配置SEO及设计样式?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  常州自助建站费用包含哪些项目?  宁波自助建站系统如何快速打造专业企业网站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  建站之星安装路径如何正确选择及配置?  建站之星代理商如何保障技术支持与售后服务?  如何快速生成高效建站系统源代码?  TestNG的testng.xml配置文件怎么写  香港服务器租用每月最低只需15元?  如何快速搭建响应式可视化网站?  建站之家VIP精选网站模板与SEO优化教程整合指南  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  如何续费美橙建站之星域名及服务?  宝塔建站后网页无法访问如何解决?  Thinkphp 中 distinct 的用法解析  学校建站服务器如何选型才能满足性能需求?  如何制作算命网站,怎么注册算命网站?  内网网站制作软件,内网的网站如何发布到外网?  建站与域名管理如何高效结合?  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何在阿里云服务器自主搭建网站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何在万网开始建站?分步指南解析  建站之星安装失败:服务器环境不兼容?  如何零基础开发自助建站系统?完整教程解析  建站主机功能解析:服务器选择与快速搭建指南  公司门户网站制作流程,华为官网怎么做?  音响网站制作视频教程,隆霸音响官方网站?  如何基于云服务器快速搭建网站及云盘系统?  建站之星如何助力企业快速打造五合一网站?  如何做静态网页,sublimetext3.0制作静态网页?  建设网站制作价格,怎样建立自己的公司网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  建站之星会员如何解锁更多建站功能?  浅谈Javascript中的Label语句  如何高效利用200m空间完成建站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  宿州网站制作公司兴策,安徽省低保查询网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。