• 计算机网络-传输层:UDP协议


    目录

    一、概述

    二、UDP协议

    1.协议格式

    2.协议特性

    2.1无连接

    2.2不可靠

    2.3面向数据报

    3.编程影响


    一、概述

    传输层:负责两端之间的数据传输;TCP&UDP协议

    二、UDP协议

    1.协议格式

    16位源端端口&16位对端端口:

            描述通信两端(谁发送的,谁处理)

    16位数据报长度:

            描述报文长度(包含头部在内),限制udp报文必须小于64k;

            sendto发送数据时,能够发送的最大数据大小(64k-8);

    16位校验和:

            用于校验接收到的数据是否与对方发送的数据一致:

            校验方法:二进制反码求和算法

            1)发送方将报文组织完毕后,将校验和字段置为0;

            2)从第0字节开始(包含头部),对每个字节进行取反,然后求和;

            3)若求和过程中,数据大小超过16位,则截断,将高位与低16位继续求和;

            4)最终得到2字节的校验和数据,然后填充到校验和字段中,发送数据;

            5)接收方收到数据,同样对数据进行二进制反码求和,最终得到结果0;

            若收到的数据与发送的数据不一致,则udp会将该数据丢弃。

    2.协议特性

    协议特性:无连接,不可靠,面向数据报

    2.1无连接

            通信的时候,不需要建立连接,只要知道对方地址就可以发送数据。

    2.2不可靠

            不保证数据能够安全到达对端;也不保证数据有序到达对端。

    2.3面向数据报

            无连接,不可靠,有固定最大长度限制的传输方式,必须小于64k。

    3.编程影响

            1.udp不保证数据安全到达对端,可能存在丢包问题。

            2.udp不保证数据有序到达对端。

            所以需要程序员在应用层进行丢包检测以及丢包重传,以及鲍旭管理;

            3.udp面向数据报有固定最大长度限制64k(数据长度64k-8)。

            所以sendto发送数据时,需要注意给予的数据不能太大,太大则需要分包,分包则需要进行包序管理。

            4.udp要求数据整条交付,不能交付半条或多条。

            所以程序员recvfrom接收数据的时候,缓冲区需要足够大,以保证能够获取一条完整数据;

  • 相关阅读:
    .NET周刊【1月第2期 2024-01-21】
    CANN算子:利用迭代器高效实现Tensor数据切割分块处理
    算法练习5——多数元素
    刷题记录:牛客NC19115选择颜色
    自学网络安全的三个必经阶段(含路线图)
    SpringBoot中如何实现业务校验,这种方式才叫优雅!
    Python自动化测试详解
    三分钟了解MySQL慢查询
    前端项目(仿美团)面试要点
    Java使用Redis实现分页功能
  • 原文地址:https://blog.csdn.net/m0_63020222/article/details/127657982