UDP 协议

2018-02-02  本文已影响82人  046ef6b0df68

文|Seraph

本文仅记录本人从各文献中收获的一些关键知识点,并不包含原文全过程
如需更进一步的了解,请按文章名获取原文件进行阅读

一、《UDP 协议中分包与重组方法研究》---陆海

  1. 使用UDP协议的目的:相较于TCP协议,UDP协议传输效率较高;

  2. 为何要分包处理:对于应用层来说,UDP报文的信息长度不超过1K字节(其实是链路层协议导致的),如果需要传输超过1K字节的数据,就要对传输数据进行分布处理。
    :文章理解有部分问题,首先,对于单个大包,UDP提供自动分包组包功能,最大包长65535。但是,如果接收端组包过程,一包丢失,UDP便会丢掉整个大包。
    所以,一般尽量限制自己的包长小于1K;否则,如果自己希望控制分包组包过程,需要自己在客户端和服务端通过协议数据内容来实现UDP分包和重组,这就是本文章的最终目的。

  3. 由于UDP是不保证顺序接收到报文的,所以我们需要在协议数据内容作修改,以保证我们需要的顺序接收包内容。

  4. 需要解决的三个主要问题:
    如何区分每组数据
    如何保证每组数据按正确顺序还原
    如何确认每组数据已经全部接收

改装后,报文格式:

改装后的报文格式

接收重组方法:
①当收到第1 包数据(序号可能不为1) ,保存
数据,启动定时器,并检查数据是否全部收到;
②如果数据未全部收到,继续接收数据;
③如果数据已全部收到,关闭定时器,对接收
数据进行重组,并转发给用户;
④如果超时时间到,数据未全部收到,关闭定
时器,丢弃接收数据;
⑤重复步骤①到步骤④。

二、《UDP 协议使用与分析研究》---刘鹏

  1. UDP是分发信息的理想协议,适用于追求效率且不需要额外可靠机制的情形
    例如:
  1. 知名应用:
  1. UDP 在发送数据时附带自身的端口号,接收时不需要确认,所以可以方便的进行一对一、一对多和多对多的交互通信。
    这种方式方便但存在缺陷,如果被攻击者知道服务的端口号,控制多台主机向服务器发送大量垃圾信息,可使服务器瘫痪。

  2. UDP 协议由于没有安全控制,采用UDP 协议的系统在提供服务时最好放在防火墙内,由外围系统对它提供安全保证。

上一篇下一篇

猜你喜欢

热点阅读