zoukankan      html  css  js  c++  java
  • 卷一第二十二章:UDP原理

    UDP

    UDP是无连接的传输协议,主要用于在相对可靠的网络上的传输传输,或用于对延迟敏感的应用等;


    (1)RFC768定义udp是为实现数据报(Dategram)模式的分组交换计算机网络通信而设计。UDP提供无连接的、不可靠的数据报服务。
    UDP是面向数据报的传输协议。由于没有流的记录能力,udo无法记录数据位于流的中的确切位置,因此不能像面向流的传输协议一样自动调整段的大小,而只能对应用程序进程的每个输出消息产生一个udp数据报。
    udp有以下特点:
    《1》udp是无连接的,传输数据前并不与对方建立连接;
    《2》udp不对收到的数据进行排序:在udp报文的首部中并没有关于数据顺序的信息(例如TCP的序列号seq),由于IP报文不一定按顺序到达,所以接收端无从排序;
    《3》udp对接收到的数据报不发送确认,发送端不知道数据是否被正确接收,也不会重发数据。
    《4》udp传送数据较TCP快速,系统开销也少;
    《5》udp缺乏拥塞控制机制,需要基于网络的机制来减少因失控和高速udp流量符合而导致的拥塞崩溃效应。换句话说,因为udp发送至不能检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低udp过大通信量的有效工具。



    (2)udp封装
    udp收到应用层提交的数据后,将其分段,并在每个分段前封装一个udp头部。最终的IP包是在udp头之前再添加IP头形成的。IP用协议号17标识udp

    UDP头部各字段如下:

    《1、2》源、目端口,16位。
    《3》长度length:也是16位,表明把偶偶udp头和数据在内的整个udp数据报的长度,单位为字节。
    《4》校验和checksum:16位的错误检查字段,基于部分IP头信息、udp头和载荷数据的内容计算得到,用于检测传输过程中出现的错误。





    (3)UDP和TCP的对比


    相对于tcp,udp段没有序列号、确认、超时重传和滑动窗口,其传输没有任何可靠性保证。
    当然它也有以下独特的优势:
    《1》实现简单,占用资源少;(例如无盘工作站使用udp的Bootip获取引导信息)
    《2》带宽浪费小,传输效率高。
    《3》延迟小;(不需要等待和确认、考虑窗口大小)

    总结:udp适用于不需要可靠传输的情形,例如高层协议或应用程序自己可以提供错误和流量控制功能,或错误重传没有意义时。另外,udp也适用于传输效率或延迟比较敏感的应用:比如NFS、SNMP、DNS、TFTP、DHCP、RIP和语音等;

  • 相关阅读:
    《剑指offer》第三十五题(复杂链表的复制)
    《剑指offer》第三十四题(二叉树中和为某一值的路径)
    分支限界法
    回溯法小实例
    BUFSIZ解析
    ofstream和ifstream详细用法
    回溯法——最大团问题(Maximum Clique Problem, MCP)
    位运算应用之二——大小写转换
    回溯法——n后问题
    回溯法——批处理作业调度
  • 原文地址:https://www.cnblogs.com/key-network/p/12462489.html
Copyright © 2011-2022 走看看