美文网首页
网络协议分析-UDP

网络协议分析-UDP

作者: Odinmx | 来源:发表于2019-12-11 19:55 被阅读0次

    UDP:

    UDP位于传输层,与IP一样提供不可靠的,无连接的数据交付服务。

    引入传输层的必要性:

    在TCP/IP模型中,传输层位于IP层和应用层之间。源主机的应用层进程与目的主机的应用层通信时,要使用传输层的服务。因此传输层在应用层和IP层之间起着承上启下的作用。

    传输层需要满足的条件:

        1. 传输层要提供比IP层质量更高的服务。

        2. 传输层要提供识别应用层进程的机制。

        3. 传输层要针对不同尺寸的应用层数据进行适当的处理。(这里主要是说TCP协议,UDP协议没有对数据尺寸进行调整的能力。)

    UDP的特点:

    ○ 提供不可靠,无连接的数据交付服务。

    ○ 没有使用确认机制,所以不能保证报文全部到达。

    ○ 不对传入的报文进行排序处理。

    ○ 不提供反馈信息来控制机器之间报文传输速率。

    UDP首部报文格式:

    UDP数据报格式

    源端口和目的端口:包含了16bit的UDP端口号,用以在各个等待接收报文的应用程序之间,对数据报进行多路分解操作。其中源端口字段可选,若选用,则指定了应答报文发往的端口,不选用,该字段应为0。

    报文长度:指明以字节为单位的UDP首部和UDP数据的长度,最小值为8,即UDP首部报文长度。

    UDP校验和:是可选的,如果为0,则代表不进行校验。

    UDP最大的用户数据长度:IP数据报最大64kB,需要除去20字节的IP首部,8字节的UDP首部,所以UDP数据区用户内容最长为65535-20-8=65507字节

    UDP校验和计算方法:

    UDP校验和校验的区域包含UDP首部和数据区。从五元组来看,正确的目的地应该包含正确的端口和主机地址,所以UDP校验也要对地址进行校验。但是UDP首部不包含主机地址,所以UDP添加了一个12字节的伪首部。

    这个伪首部逻辑上是UDP首部的一部分,但实际上并不传送。

    伪首部结构:

    伪数据报头部结构

    源IP地址和目的IP地址:记录的是发送UDP报文时使用的源IP地址和目的IP地址。

    协议:指明了使用的协议类型,UDP是17

    UDP长度:指明了UDP数据报的长度,不包含伪首部。

    对于校验和字段的使用,UDP给出了两种方案,一种是使用,另一种自然是不使用了。当使用校验和时,如果接收方检验校验和字段时发现错误,则整个数据报就会被丢弃,这未免太苛刻了,所以在2004年7月,TETF推出了UDP-lite标准。

    UDP-Lite:

    它将数据划分为敏感区域和非敏感区域,其中敏感区域为校验和计算的输入区域,当这个区域发生差错时,则整个数据包会被丢弃。非敏感区域发生差错时,报文不会被丢弃。

    其数据报结构只是将UDP 报文中16bit的UDP长度修改为了校验和覆盖字段。

    校验和覆盖字段是指从UDP数据报首部第一个字节开始计算校验和的字节数,取值为0 或者大于等于8的整数,取值为0 表示UDP数据报全部参与校验和计算,因为UDP首部必须参与校验和计算,所以起始值必须为8。任何1-7的数值都会别认为非法,数据报会被丢弃。

    UDP的一些安全问题:

    由于UDP是无连接的,使用简便,这便给攻击者提供了便利。

    § 一种是UDP泛洪攻击,原理是利用伪造IP地址向某个特定的目的主机端口发送大量的UDP报文。目标主机收到报文后,会将其交付给相应端口进程处理,如果该端口没有处于监听状态,目标主机就会向UDP数据报源地址回应一个ICMP报文,指明“目的端口不可达”,这是一种流量型拒绝服务攻击。

    § 另一种是基于UDP反射的分布式拒绝服务攻击。攻击者并不直接对目标主机发起攻击,而是利用互联网中的一些开放的服务器。攻击者向这些服务器发送基于UDP的请求报文,并将该报文的源地址修改为目标主机,之后数倍于请求报文的回复报文会发送给目标主机,从而对目标主机造成DDoS攻击。


    欢迎指出文章中的错误,谢谢

    相关文章

      网友评论

          本文标题:网络协议分析-UDP

          本文链接:https://www.haomeiwen.com/subject/fgeagctx.html