UDP协议详解

1、UDP协议的基本属性

  1. 什么是udp协议

    udp也是传输层特别重要的协议;它提供一种无连接的、不可靠的、数据报传输服务。

  2. udp协议的技术特性

    无连接:发送端与接收端传输数据时不用建立连接;因此udp的传输速度快。

    不可靠:这个不可靠是相对于tcp来说的,由于udp协议不用维护连接状态,没有TCP的确认机制、重传机制,如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息;网络中的拥塞也不影响主机的发送速率,因此udp没有拥塞控制。

    基于报文传输:传输的数据是以整包的形式;比如sendto发送一包数据(100k),recvfrom就必须把这一整包数据一次性全部接受完。

  3. udp协议的应用

    当程序对数据的传输速度要求远高于传输可靠性时,传输层的数据转发可以使用udp。

    比如视频通话,网络直播,实时网游等,对实时性要求特别高的,即使过程中丢失一些数据,对整体效果影响不大的应用场景。

2、udp协议头简介

        16位源端口号:源主机的应用程序使用的端口号。

        16位目的端口号:目的主机的应用程序使用的端口号。

        16位UDP长度:udp数据包的总长度,udp协议头+数据。因为UDP头部长度为8字节,所以该字段的最小值为8。

        16位UDP校验和:检测udp数据报中是否有错,有错就丢弃;该字段是可选的。(UDP校验

3、UDP的工作原理

        udp协议与ip协议非常类似,可以将udp看作是ip协议暴露在传输层的接口,但是udp与ip协议的区别就是,ip协议中没有端口(port)的概念,他只负责两台主机(ip地址)之间的数据传输,而udp协议引入了端口(可以精确到主机上的某一个应用程序)。

        正因为udp协议是不面向连接的,所以它才可以实现一对一单播,一对多的广播,组播等数据传输。

  1. 一对一单播原理 
    • 单播:两个主机间单对单的通信。     

      udp协议也是通过套接字编程实现基于TCP/IP协议的面向无连接的通信,因此也可分为客户端和服务端,由于它是无连接的,所以服务器端并不需要listen或accept函数,bind函数看去求,也可不用。具体流程如下图:

  2. 一对多的广播原理   
    • 广播:一个主机对整个局域网上所有主机上的数据通信(网络地址全1),传输层只有udp可以广播。

      单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网的主机进行通信  

    • 广播地址:在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。

    • 广播的具体实现可以参考udp实现广播

  3. 特定主机的组播

    • 组播:实际情况下,经常需要对一组特定的主机进行通信,而不是所有局域网上的主机。
    • 组播地址:IP 组播通信必须依赖于 IP 多播地址,在 IPv4 中它是一个 D 类 IP 地址,范围从 224.0.0.0 到 239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址3类:

       局部链接多播地址范围在 224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;

      预留多播地址为 224.0.1.0~238.255.255.255,可用于全球范围(如Internet)或网络协议;

      管理权限多播地址为 239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有 IP 地址,不能用于 Internet,可限制多播范围。 

4、TCP协议与UDP协议的技术特点对比

  1. 相同点:TCP和UDP都是传输层协议,都能都能保护网络层的传输,双方的通信都需要开放端口,TCP和UDP中都存在复用分用技术。
  2. 不同点:
    1. 最主要的区别就是TCP可靠,UDP不可靠。

    2. 传输数据的格式,TCP是字节流,UDP数据报。

      对于TCP:TCP不关心应用程序一次性把多长的数据报文发送到TCP缓存中,而是根据对方给出的窗口值和网络拥塞程度决定报文段应该包含多少字节。
      对于UDP:一次交付一个完整的报文,报文长度由应用程序给出。

5、如何克服UDP的缺点

        虽然UDP协议有不可靠等缺点,但是因为它那传输速度,依旧无法被替代,因此工程师们想尽办法在应用层对UDP进行完善,进而实现可靠的UDP传输协议——KCP

### UDP协议工作机制详解 用户数据报协议(User Datagram Protocol, UDP)是一种无连接的传输层协议,属于OSI七层模型中的第四层。与TCP相比,UDP的设计目标是提供一种轻量级、低延迟的通信方式,适用于对速度要求较高而对可靠性要求较低的应用场景。 #### 1. 基本特性 UDP的主要特点是其无连接性和不可靠性。这意味着发送方无需等待接收方的确认即可直接发送数据包[^3]。这种设计使得UDP在某些特定应用中表现出更高的效率和更低的开销。然而,由于缺乏重传机制和错误校验能力,UDP无法保证数据包按序到达或完全送达。 #### 2. 数据结构 一个典型的UDP数据报由首部字段和数据部分组成。其中,首部固定长度为8字节,包含源端口号、目的端口号、长度以及检验和四个字段。以下是具体描述: - **源端口(Source Port)**: 占用两个八位组(即16比特),用来标识发送进程的身份; - **目的端口(Destination Port)**: 同样占用两个八位组,表示接收进程的身份; - **总长度(Total Length)**: 记录整个数据报的大小,包括头部和负载两部分内容; - **校验和(Checksum)**: 可选字段,用于检测IP头以外的数据是否有误码发生;如果未启用,则该值应设为全0。 ```c struct udphdr { uint16_t source; /* Source port */ uint16_t dest; /* Destination port */ uint16_t len; /* Datagram length (header + data) */ uint16_t check; /* Checksum of header and data */ }; ``` #### 3. 应用场景 尽管UDP不具备像TCP那样强大的保障措施,但它仍然广泛应用于多种领域,比如实时音视频通话(VoIP)、在线游戏、域名解析服务DNS查询响应等场合。这些情况下往往更看重及时反馈而非绝对准确性。 #### 4. 缺点分析 当然,任何事物都有利弊两面,对于采用UDP协议来说也不例外。主要缺点如下: - 容易丢失分组或者重复收到相同的信息片段; - 接收次序混乱可能导致重组困难甚至失败; - 对于大规模文件下载之类的任务而言并不适合因为缺少必要的流量控制手段来防止拥塞现象的发生。 综上所述,虽然UDP存在诸多局限之处,但由于其实现简单快捷的特点使其成为众多现代互联网应用程序不可或缺的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值