• 传输层-用户数据报协议(UDP)


    UDP协议概述

    用户数据报协议 UDP 是 Internet 传输层协议,提供无连接、不可靠、数据报尽力传输服务。

    • 无连接:因此在支持两个进程间通信时,没有握手过程。
    • 不可靠:当应用进程将一个报文发送近 UDP 套接字时,UDP 并不能保证将该报文送达到目的的接收进程。

    不仅如此,在发送方依次发送的报文段,UDP 即便将这些报文段送达到接收进程,也可能是乱序到达的。UDP 没有拥塞机制,所有 UDP 发送端可以用任何速率向其下层(即网络层)注入数据。当然,实际端到端吞吐量可能小于这种速率,这可能是因为中间链路的带宽受限或因为网络拥塞而造成的。

    使用 UDP 的主要原因:

    1. 应用进程更容易控制发送什么数据以及何时发送。会出现分组的丢失和重复。
    2. 无须建立连接:TCP 需要三次握手建立,UDP 不需要任何准备即可进行数据传输。
    3. 无连接状态:TCP 需要再端系统中维护连接状态,包括接收和发送缓存、拥塞控制参数以及序号与确认号的参数等;而 UDP 是无连接的,因此也无需维护连接状态。
    4. 首部开销小:每个 TCP 报文段都至少有 20 字节的首部开销,而 UDP 仅有 8 字节的开销。

    虽然 UDP 提供不可靠传输服务,但使用 UDP 的应用仍然可以实现可靠数据参数。这可以通过在应用程序自身中建立可靠传输机制来完成,如 停-等协议或滑动窗口协议等。也就是说,应用进程可以使用 UPD 的同时进行可靠通信,只是需要在应用层设计可靠传输机制而已。

    UDP 数据报结构

    1. UDP 首部四个字段,每个字段长度都是 2 个字节( 16 bit ),共 8 个字节,。
    2. 源端口号和目的端口号:用于 UDP 实现复用和分解,范围(0~65535)。
    3. 长度:指示 UDP 报文段中的字节数 (首部和数据的总和)。
    4. 校验和:接收方使用来检测报文段是否出现差错。
      shuyu

    UPD数据传输过程

    shuyu
    • int socket():创建套接字。
    • int bind():绑定套接字的本地端点地址。
    • ssize_t sendto():发送数据。
    • ssize_t recvfrom():接收数据。
    • int close():关闭套接字。
  • 相关阅读:
    漫谈:C语言 C++ static究竟是什么
    verdi仿真过程中特定时间段的波形的dump
    【算法三】冒泡排序
    电路积木(14423字)(10000字文章计划完成)
    4.js中next()方法与prev()方法使用
    初识 MySQL HeatWave
    指针进阶(二)
    K8S二进制部署之定义CA证书与ETCD
    IP地址定位是什么?有哪些优缺点?
    java毕业设计中国民航酒店分销系统Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/weixin_44988085/article/details/127918729