文|Seraph
本文仅记录本人从各文献中收获的一些关键知识点,并不包含原文全过程
如需更进一步的了解,请按文章名获取原文件进行阅读
一、《UDP 协议中分包与重组方法研究》---陆海
-
使用UDP协议的目的:相较于TCP协议,UDP协议传输效率较高;
-
为何要分包处理:对于应用层来说,UDP报文的信息长度不超过1K字节(其实是链路层协议导致的),如果需要传输超过1K字节的数据,就要对传输数据进行分布处理。
注:文章理解有部分问题,首先,对于单个大包,UDP提供自动分包组包功能,最大包长65535。但是,如果接收端组包过程,一包丢失,UDP便会丢掉整个大包。
所以,一般尽量限制自己的包长小于1K;否则,如果自己希望控制分包组包过程,需要自己在客户端和服务端通过协议数据内容来实现UDP分包和重组,这就是本文章的最终目的。 -
由于UDP是不保证顺序接收到报文的,所以我们需要在协议数据内容作修改,以保证我们需要的顺序接收包内容。
-
需要解决的三个主要问题:
如何区分每组数据
如何保证每组数据按正确顺序还原
如何确认每组数据已经全部接收
改装后,报文格式:
接收重组方法:
①当收到第1 包数据(序号可能不为1) ,保存
数据,启动定时器,并检查数据是否全部收到;
②如果数据未全部收到,继续接收数据;
③如果数据已全部收到,关闭定时器,对接收
数据进行重组,并转发给用户;
④如果超时时间到,数据未全部收到,关闭定
时器,丢弃接收数据;
⑤重复步骤①到步骤④。
二、《UDP 协议使用与分析研究》---刘鹏
- UDP是分发信息的理想协议,适用于追求效率且不需要额外可靠机制的情形
例如:
- 音、视频流媒体分发
- 高层协议或应用程序提供错误和流控制功能时的快速分发
- 知名应用:
- 网络文件系统(NFS)
- 简单网络管理协议(SNMP)
- 域名系统(DNS)
- 简单文件传输系统(TFTP)
- 动态主机配置协议(DHCP)
- 路由信息协议(RIP)
-
UDP 在发送数据时附带自身的端口号,接收时不需要确认,所以可以方便的进行一对一、一对多和多对多的交互通信。
这种方式方便但存在缺陷,如果被攻击者知道服务的端口号,控制多台主机向服务器发送大量垃圾信息,可使服务器瘫痪。 -
UDP 协议由于没有安全控制,采用UDP 协议的系统在提供服务时最好放在防火墙内,由外围系统对它提供安全保证。
网友评论