范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

DELPHI学习之构建安全UDP协议

  UDP协议不是安全的网络协议,它和TCP协议正好相反,不做数据检查,容易丢包,而且发送后的顺序无法确定。但它的优点也很突出,就是简单,高效。
  UDP的丢包与处理问题
  一、发送端的原因
  1、数据包过大导致丢包:从加快数据发送的角度考虑,希望把数据包分得大一些,以减少发送的动作次数,提高发送速度。或者出于对网络的不了解,而随便处理数据包的大小,以至于数据包过大,导致丢包。
  通常情况下,我们会创建一个字节数组作为发送的缓冲区,这个缓冲区的大小,就是我们要发送数据包的大小。我们要先把数据写入这个缓冲区中,然后调用SendTo方法,把缓冲区中的数据发送出去。
  如果这个字节数组也就是缓冲区,设置的过大。也就相当于我们要发送的数据包设置的过大,就会导致UDP数据报被分成若干片,一片一片的发送,接收方再把接收到的一片一片的数据进行重组。这样的结果,因为增加了接收端的工作量,毫无疑问将会降低接收端的处理速度,更为严重的是,由于UDP是不安全的协议,它并不检查数据的顺序和完整性。如果接收的这些数据片中,有一片未收到,接收端就会把整个数据包丢弃,这就造成了我们常说的UDP丢包现象。
  既然如此,我们使用UDP发送数据的时候,数据包多大才比较合适呢?这个答案通常是不固定的。要找到合适的UDP数据包大小,我们应当先来了解一下TCP/IP网络协议。
  (1)局域网,它属于以太网(Ethernet)。以太网数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定。因此,1500个字节,被称为以太网链路层的最大传输单元(即MTU)。这个1500,并非全部都可以为我们的数据所用,它还要包括IP数据报的首部20个字节,UDP数据报的首部8个字节。因此,UDP数据报的数据最大长度,是1500 - 20 - 8 = 1472字节。
  所以,答案就是,在局域网中,UDP数据报的数据大小,最好不要超过1472个字节。
  (2)互联网,互联网上由大量各种各样的网络设备联络而成。其中,包括了大量的路由器,各个路由器的最大传输单元即MTU,可能各不相同。但是,互联网上标准MTU的值为576字节,我们在互联网上使用UDP传输数据,应当以这个值作为标准。和局域网环境一样,也要减去IP数据报的首部20字节,UDP数据包的首部8个字节。UDP数据报的数据大小,是576 - 20 - 8 = 548 字节。
  在互联网环境中,UDP数据报的数据大小,最好不要超过548个字节。
  2、发送端发送数据的频率过快:虽然数据包的大小设置合理,但大量的数据包同时发送,也有可能导致丢包。这个时候,应当在每个包发送的中间,适当停顿一下,用Sleep方法,让发送线程休眠几毫秒。具体休眠多长时间,应当在实际开发中,多设置一些值来测试,取最优值。
  二、接收端的原因
  1、接收端处理时间过长导致丢包:如果数据格式复杂,并且经过了加密处理,这个时候,接收端接收到数据包后,就需要花费一些时间来处理。如果处理时间过长,也会导致丢包。
  这个时候,应当把接收的数据包先放入缓冲区,同时再开一个线程专门取出数据进行处理,不要在一个线程中既要接收,又要处理。
  2、对于UDP接收端,可以把系统的接收缓冲区设置得大一些,这个方法,有时候,非常管用。
  使用下面的API函数,设置接收缓冲区大小
  MSDN中API函数原型
  int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
  转换成Delphi语言则后的函数原型
  function setsockopt(sockfd: Integer; level: Integer; optname: Integer; optval: PAnsiChar, optlen: Integer): Integer;
  参数列表
  sockfd:套接字
  level:  设置影响的级别:可以是SOL_SOCKET, IPPROTO_TCP, IPPROTO_IP,和IPPROTO_IPV6
  optname: 设置得具体内容 SO_RCVBUF(接收缓冲区),SO_SNDBUF(发送缓冲区)
  optval: 指向新设置缓冲区大小的指针
  optlen: 缓冲区类型的大小,这里是整数的大小,32位系统中占4个字节
  三、创建自己的安全UDP协议
  UDP丢包是正常现象,我们不能因为它丢包,就忽视了UDP的其它优势。简单,快捷是UDP的突出优点。但是,我们为了避免,或者减轻UDP丢包,乱序的毛病,就需要创建自己的UDP协议。
  说是创建,有点小题大作了,其实是对UDP协议的使用,加以限制和协调。
  1、正式传递数据前,先发送一系列预先定义的常量,告知接收端,所发送数据包的类型,数据总的大小,总的包数等等这些基本信息。同时,接收端接收后,立即发送回执信息。
  2、发送端接收到回执信息后,开始发送第一包数据,数据始终都是一问一答的方式,一包一包的发送。每发送一包,挂起线程,等接收端发过来一个回执,接收到回执,发送方唤醒线程,发送下一包数据。

红橙色更易招蚊子2007年3月14日,乌拉圭卫生工作人员在首都蒙得维的亚的一处公园辨认蚊子种类。(新华社发)新华社北京2月6日电(记者李雯)英国自然通讯杂志日前刊载的一项研究显示,蚊子偏爱红色橙色数字化影响制造业的六种方式气候和地缘政治事件一般会暴露制造业流水线的弱点。20202021年的芯片短缺,是制造业过去二十年来弱点累积的后果。值得庆幸的是,数字化赶上了全球电子元器件需求骤增的班车,以下是数字世界首富承认错误,特斯拉进军氢能源马斯克曾经不止一次的公开diss燃料电池技术路线,经典的话语包括但不限于Fuelcellsfoolsells,foolcells,mindbogglingstupid,incred被抢断货,中国画质天花板X11,开年迎来大好市场表现22年的第一季度对于家电圈来说真可谓是热闹非凡,各大厂家纷纷发布各种新品,简直是让人眼花缭乱。各种QDMiniLED的产品,各种大屏产品,各种激光产品。其中显示领域最惹人瞩目的无出差点被骗!二手平台乱象,雅马哈假货横飞你是否曾因为囊中羞涩无法购买心仪的物品而苦恼?你是否曾因为剁手一时爽,转眼吃土忙?有人心心念念想要的东西,在另一个人手里却是碍眼的累赘,于是,为了让每件物品回到属于它的位置上,二手静态体验Polestar2,配置丰富,车评人都说好,到底好在哪里?现在各大汽车产商开始往电动化方向发展,随着新能源的普及,现在国内市场纯电动汽车越来越成熟,Polestar是由吉利和沃尔沃共同控股的豪华电动车品牌,2021款Polestar2共推郭台铭说大陆离不开富士康,结果被打脸,郭台铭认清现实了?在小米华为等手机品牌崛起之前,中国手机的半壁江山,曾被苹果牢牢占据。十年前,一部苹果4的价格相当于一台电视机的价格,尽管贵,但在一部分年轻人的心中,,拥有一台苹果手机,象征着走上了小米12ProDXOMARK相机成绩出炉131根据DXOMARK官网显示,近日小米12Pro的拍照评分已经正式出炉,总分获得了131分,目前位列第14名。据悉,小米12Pro是小米12系列目前最强机型,拍照方面也是目前该系列最近期好价!RedmiK40S顶配版仅需2399元最近有选购手机需求的,可以看看这款RedmiK40S,京东目前售价非常划算,顶配版12GB256GB到手价只要2399元。该款RedmiK40S搭载骁龙870处理器,采用三星E4旗App用户协议需要中篇小说那么长?多款下载量过亿次的手机App,平均每款需要用户阅读并同意的协议内容有2。7万字。近日媒体所作网络调查显示,7成以上受访者,很少或从未读过App用户协议隐私协议。2。7万字的用户协议如何定义区块链?区块链的应用场景有哪些?现在很多人认为区块链是一种万能的技术,无所不能,多少有点把区块链技术神话了!在区块链技术的定义上,美国学者梅兰妮斯万在其著作区块链新经济蓝图及导读定义区块链技术是一种公开透明的去中
腾讯二面现在要你实现一个埋点监控SDK,你会怎么设计?大家好,我是年年!这是小伙伴上周被问到的一个综合性设计题,如果是没有用过埋点监控系统,或者没有深入了解,基本就凉凉。这篇文章会讲清楚埋点监控系统负责处理哪些问题,需要怎么设计api清华毕业生都爱去哪些大厂?阿里巴巴仅排第3,华为公司一骑绝尘导语清华是我国最顶尖的高等学府,考上清华大学的学生,不仅大学四年能享受更为优质的教育资源,也能营造更好的朋友圈和人脉,更重要的是,拥有清华大学毕业证书的学生,在用人单位眼中往往是香阿里巴巴自研倚天710芯片已做好准备,开始提供试用实例在2021云栖大会上,阿里巴巴旗下半导体公司平头哥发布了自研云芯片倚天710。据相关媒体报道,经过半年时间的准备,阿里云已经基于该芯片向客户提供了新的实例。不过目前要试用该实例,需福利补贴式建议如今各大网络平台发展日趋完善,淘宝拼多多京东,以及各直播平台也在争抢电商流量。淘宝与京东等传统电商平台消费主要是被动式消费,也就是客户明确自己需要购买什么产品而在淘宝上购买对应的产华为拒绝!俄国手机厂商选用鸿蒙前段时间3月27日俄罗斯媒体发布了一条有关手机系统的消息内容为因美国持续制裁谷歌正式想俄罗斯BQ手机公司提供安卓系统的福服务支持,并且关停了所有的服务运营权限而俄罗斯BQ公司的高管vivoX80接着发布,连开发布会有魅族那味了?vivo的发布会开这么快我总感觉有点当初魅族的味道了,这下是想玩机海战术了吗?说实话新品扎堆发布是不符合市场规律的,而且XNote系列和X80Pro是多多少少有些冲突的?目前viv保价长达2个月,京东联合显卡品牌发起价保618活动,你会买吗这几年,由于币圈的火爆,因为显卡才是挖矿的最主要设备,导致了大量玩家购买大量的显卡进行弄矿机,不仅让显卡的价格飞涨,也让电脑相关配件如硬盘,内存等等主要配件也都不同程度上涨,当然,这才是MIUI智能化的冰山一角,解析MIUI13自动任务,快Get起来智能手机发展到今天,除了支持定时开关机,还有哪些系统会自动执行相关指令,逐步实现AI控制?其实,在MIUI13里已融入了全新自动任务,这项功能手机管家中万能工具箱。MIUI13自动警告弹窗,为了阻止你安装APP,手机厂商到底有多拼?大家好,欢迎来到黑马公社要不是偶然从浏览器下载了一次游戏,黑马居然不知道现在的安卓手机居然这么的可耻。事情是这样的,前段时间黑马突然心血来潮想要玩把游戏,于是乎打开浏览器就开始搜索为什么现在的国产机斗不过苹果随着oppo,小米和华为的新机发布,各位友商无不吹自己的骁龙处理器,索尼摄像头,三星屏幕,基本上各个友商都是一样的配置,不一样的只有外壳和品牌了,主要的核心部件没一样是国产品牌,这中国用户嫌弃的苹果iPhoneSE3手机却被日本人抢购,发生了什么?华为受制裁后,苹果手机市场份额重回巅峰,出货量连续多个季度排名第一,然而,并不是所有型号的苹果手机都受到欢迎,不久前刚刚上市的第三代iPhoneSE被网友评价为昂贵的电子垃圾。由于