码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 传输层协议之UDP


    文章目录

    • UDP协议
      • 一、协议需要解决的根本问题
      • 二、UDP协议
        • 1、什么是UDP协议
        • 2、UDP数据报的格式
        • 3、UDP如何解决协议的根本问题?
        • 4、UDP缓冲区
          • I.接收缓冲区
          • II.发送缓冲区
      • 三、UDP如何实现可靠传输和速率控制
      • 四、基于UDP的应用层协议

    UDP协议

    一、协议需要解决的根本问题

    • 如何将报头和有效载荷分离
    • 将有效载荷交付给上层的哪一个协议

    二、UDP协议

    1、什么是UDP协议

    UDP协议,即用户数据报协议(User Datagram Protocol),它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

    UDP的特点包括:

    1. 无连接:只要知道对端的IP及端口号即可通信,没有TCP三次握手建立连接和四次挥手断开连接的消耗,因此比较高效。
    2. 不可靠:UDP只提供尽最大努力的交付,没有确认机制,并且在数据发生丢失时,也不会进行重传。
    3. 面向数据报:对于应用层交付的报文,UDP会直接将其存放到UDP报文的数据部分,在添加简单的报头后直接交付给下层的IP协议,而不会对应用层的报文进行拆分与合并的工作。
    4. 报头很短,只有8字节。
    5. UDP的socket能同时进行读和写,是全双工的。
    6. 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低,这对某些实时应用是很重要的。很多的实时应用(如:IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络出现拥塞时丢失一部分数据,但却不允许数据有太大的时延。UDP 协议正好适合这种要求。

    2、UDP数据报的格式

    img

    • 源端口号:数据报发送方的端口号
    • 目的端口号:数据报接收方的端口号
    • UDP长度:UDP数据报的长度,包括报头的长度和数据的长度,由于报头占据8字节,因此UDP长度最小为8字节;由于UDP长度最大是16位,因此UDP能传输的最大数据量是65535字节(2^16-1Byte)
    • UDP校验和:用来校验数据在传输过程中是否损坏,如果损坏则丢弃

    注:数据报的报头可以通过位段来定义

    3、UDP如何解决协议的根本问题?

    • 对于“将报头和有效载荷分离”:报头部分是前8个字节,因此可以通过UDP长度-报头长度(8字节)来分离出有效载荷部分。
    • 对于“将有效载荷交付给上层的哪一个协议”:由于应用层对应的端口号是确定的,因此可以通过目的端口号来确定交付给哪个上层应用。

    4、UDP缓冲区

    I.接收缓冲区

    UDP的接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致。

    如果缓冲区满了,再到达的UDP数据就会被丢弃。

    II.发送缓冲区

    UDP不存在发送缓冲区,只要有数据就会直接交给内核,然后再由内核转交网络层协议进行传输。

    三、UDP如何实现可靠传输和速率控制

    参考TCP协议,在应用层实现:确认应答、添加发送缓冲区用于超时重传、滑动窗口和拥塞控制。

    注:RUDP、RTP和UDT都是基于UDP实现的可靠数据传输协议。

    四、基于UDP的应用层协议

    DNS: 域名解析协议 53端口

    DHCP: 动态主机配置协议 68端口

    TFTP: 简单文件传输协议 69端口

    …

  • 相关阅读:
    Docker网络详细说明
    如何修改别人的神经网络,人工神经网络通过调整
    测试开发技术:Python测试框架Pytest的基础入门
    硬技能之上的软技巧(三)
    【Java数据结构】初步认识ArrayList与顺序表
    ClickHouse Keeper: Coordination without the drawbacks没有缺点的分布式协作系统
    Mybatis-Plus之连表查询
    轻松掌握视频制作技巧:批量分割长视频的详细步骤
    Docker从了解到部署应用的详细教程
    【juc】countdownlatch实现游戏进度
  • 原文地址:https://blog.csdn.net/Wyf_Fj/article/details/126300359
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号