zoukankan      html  css  js  c++  java
  • TCP/IP第四层协议之UDP

    toc

    UDP协议

    UDP是一个简单的面向数据报的传输层协议,进程的每次输出操作都会产生一个UDP数据报。UDP协议是造成IP分片的主要协议。
    UDP不提供可靠性,它只是将应用程序传下来的数据加上UDP首部通过IP层发送出去,并不保证它们能到达目的地。
    使用UDP协议传输时,程序员应该关心UDP数据报的长度,尽量避免过长(超过MTU)而导致IP数据报被分片,分片时会导致仅仅第一个IP分片会有UDP的首部,这会可能导致一些问题。
    当发送端不停的发送数据而接收端不接收时,溢出UDP输入队列的数据包将会被丢弃,并且发送端不会收到任何数据报被丢弃的通知信息

    UDP典型的应用场景

    • DNS查询---没有三次握手过程,速度快。可以多个DNS同时查询
    • 语音视频流---UDP支持广播和组播。对于语音视频流来说,可以存在丢包。
    • 物联网---维护UDP协议相比维护TCP协议来说,消耗的资源更少。UDP实时性更高。

    协议格式

    udp

    • 16位源端口号:发送进程端口号
    • 16位目标端口号:接收进程端口号
    • 16位UDP长度:包含UDP首部和数据在内的字节长度,最大为65535字节,最小为UDP首部的8字节。
    • 16位UDP校验和:同时覆盖UDP首部和数据的校验和,由发端计算和存储,并由收端进行验证。

    伪首部

    UDP数据报与TCP数据报都有一个12字节的伪首部(源IP与目的IP从IP首部中提取)

    通过伪首部的校验,UDP可以确定该数据报是不是发给本机的,通过伪首部协议字段,UDP可以确认有没有误传协议。





    原创不易,转载请注明出处,谢谢
  • 相关阅读:
    .NetMVC过滤器
    Vue-cli配置
    回顾2019年到今天
    八皇后问题
    约瑟夫环问题
    斐波那契函数列
    提高学习效率的方法
    感受爱阅读笔记
    Android IO流汇总
    Android的AsyncTask
  • 原文地址:https://www.cnblogs.com/Keeping-Fit/p/13994489.html
Copyright © 2011-2022 走看看