• UDP协议结构及其注意事项


    UDP报文结构

    UDP报文结构主要是由两个部分组成的:UDP头部和数据部分。

    UDP头部

    • 源端口号:16位字段,指示数据发送方的端口号。
    • 目的端口号:16位字段,指示数据接收方端口号。
    • UDP报文长度:16位字段,指示整个UDP报文长度(包括头部和载荷数据)。
    • 校验和:16位字段,用于检测数据是否在传输过程中出现错误。

    关于校验和工作原理:

    1. 发送端计算校验和:在数据包发送之前,发送端将UDP头部和数据部分的所有比特位进行二进制求和运算。
    2. 接收端验证校验和:在接收端,UUDP数据报到达之后,接收端将执行类似的校验和计算,然后和发送端计算的值进行比较。

     数据部分

    数据部分包含传输的实际数据,其长度可以根据应用程序的需求而变化。

    UDP的注意事项

    无连接性:UDP是一种无连接的协议,不需要在数据的传输前建立联系,而是直接根据端口号和IP直接连接,这意味着它的开销比较低,但是也意味着不提供连接建立的维护机制。

    不可靠性:UDP不提供数据的可靠性保证,因此无法保证数据包的创数顺序是否被成功接收。换句话说,如果数据包在传输过程中丢失或者损坏,UDP不会自动进行重传。

    面向数据报: 应用层交给UDP的报文,UDP原样照发,不会拆分,也不会合并。

    例如:应用层交给UDP100字节的数据报的时候,发送端一次发送100字节长度,而接收端也必须要一次接受100字节长度,所以接收端就需要提前创建好空间。

    缓冲区:UDP只有接受缓冲区,没有发送缓冲区:

    UDP没有真正意义上的发送缓冲区,发送的数据会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作。

    UDP具有接受缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓冲区满了,在到达的UDP数据报就会被丢弃,这个时候就会发生丢包

    大小受限:UDP协议头部中有一个16位最大长度,也就是说一个UDP能传输的数据最大长度就是64k。

  • 相关阅读:
    K8s---网络通信 Configmap secrer volumesk8s
    C#应用程序的多语言方案 - 开源研究系列文章
    过滤器,simple_tag,inclusion_tag,模板继承
    Quartz,更优雅地管理你的定时任务
    跨境电商卖家必知的【圣诞节营销】终极指南(一)
    微信小程序uniapp校园租房指南房屋租赁系统java+python+nodejs+php
    mysql 不输入密码进入mysql5.7
    四、Shiro认证
    正点原子开拓者FPGA,程序固化下载到板子里面
    docker(五)构建私有仓库
  • 原文地址:https://blog.csdn.net/loss_rose777/article/details/132700430