• 有关于UDP


    网络原理:

    一:  应用层

    与应用程序相关 --- 不同的应用程序有不同应用层协议
    自定义应用层协议:

    考虑在客/服之间传什么信息 [需求]

    考虑信息/数据什么格式组织 [需求]

    但是这种自定义太过于灵活,所以有一些特定的数据传输格式,基于这些传输数据

    介绍

    结束标签

    HTTP

    是一个标签化的语言,类似XML

    xml的标签是自定义

    html的标签是约定好的

    分隔符和长度

    XML

    典型,古老

    格式很有特点-通过“标签”形式组织键值对数据

    ; 分隔符

    JSON

    相当于XML的替代品

    与语言无关的数据组织格式

    } 分隔符

    protobuffer

    上面两个都带宽高,效率下降,

    高效组织数据-(谷歌)(数据格式&库)(操作这种格式的数据)

    但是为二进制的,不方便看

    通过声明长度来确定边界

    这个表的内容不做过多的介绍,只是在这里列出一个纲,详细展开来说,有点long

    二: 传输层

    端与端之间的传输 -- 重点关注起点和终点
    核心协议有两个:UDP,TCP

    UDP

    无连接

    不可靠连接

    面向数据报

    全双工

    TCP

    有连接

    可靠连接

    面向字节流

    全双工

    UDP协议详细介绍:

    先给你们看一个UDP协议的报文格式:

     

    在详细一点:

    源端口

    2个字节

    发件人

    目的端口

    2个字节

    收件人

    UDP长度

    2个字节

    0~65535

    校验和

    2个字节

    检查数据是否出错了 (2)

    UDP载荷

    一个完整的应用层的数据报

    1)

    • 2个字节-> 0—65535 ->
    • 这个大小现在不够用,so->如果使用UDP传输一个比较大的数据,就需要考虑进行拆包,把一个大的数据报,拆成多个小的~~ ->
    • 那这考虑的事情就很多了~,比如拆成三个发送,不一定按顺序到 -> 用TCP~~

    2)

    • 网络传输中, 受到一些干扰, 是容易导致一些传输数据出错的->
    • 使用CRC算法, (循环冗余校验) -> 检验一下
    • 把UDP报文中的每个字节,都进行累加,加和也放到两个字节的数字中(如果溢出就溢出),最终的结果就是校验和~
    • 发送方发送的时候,就先计算一个校验和,接收方按照同样的规则,再算一遍校验和,来看一下自己算的校验和 和 发送方的校验和是不是一样~~

  • 相关阅读:
    【MySQL基础】为什么大部分人选择使用MySQL数据库?
    vscode Remote SSH 报错及其解决方案
    Go(八)函数
    西南科技大学派森全套作业
    CIRRUS LOIGC CS5343-CZZR 音频数模转换器芯片
    MyBatis的Mapper文件的foreach标签详解
    测试人必备的Linux常用命令大全...【全网最全面整理】
    特征工程完整指南 - 第一部分
    【Nuxt3】安装引入 echarts-wordcloud 报错 window is not defined 解决方法
    Nim语言获取exe绝对路径(自身)
  • 原文地址:https://blog.csdn.net/m0_63501066/article/details/127464430