zoukankan      html  css  js  c++  java
  • UDP协议解析 以及和TCP协议的区别

    UDP(User Data Protocol)是传输层的用户数据报协议,有复用和分用以及差错检测的功能。  

      1) 多路复用(针对发送主机):从不同套接字收集数据块,并为每个数据块封装上首部信息,生成报文段,传递到网络层

      2) 多路分解(针对接收主机):将报文段中的数据交付到正确的套接字

    UDP协议主要特点:

      1.UDP是无连接的,发送数据之前不需要建立连接(结束之后自然也不用释放连接),减少了开销和发送数据的时延

      2.UDP使用尽最大努力交付,即不保证可靠交付,不需要维持复杂的连接状态表

      3.UDP是面向报文的,对应用层交下来的报文,添加首部后直接向下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来 UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。

    UDP协议优势:

      1.UDP没有拥塞控制,网络出现的拥塞不会使源主机的发送速率降低,在允许网络发生拥塞时丢失一些数据并且维持较低的时延时,UDP符合这种要求

      2.UDP支持一对一,一对多,多对一和多对多的交互通信

      3.UDP的首部开销小,只有8个字节,比TCP的20个字节首部要短

    UDP的首部格式:

    用户数据报UDP有两个字段:数据字段和首部字段。

    首部字段由四个字段组成,每个字段的长度都是两个字节,以下:

      (1)源端口       源端口号,在需要对方回信时选用,不需要时可以全0

      (2)目的端口    目的端口号,在终点交付报文时必须使用到

      (3)长度           UDP用户数据报的长度,最小值为8(仅有首部字段)

      (4)校验和        检测UDP用户数据报在传输中是否有错误,有错就丢弃

    UDP传输数据过程:

      当数据层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交到最后的终点。

      如果接收方UDP发现收到的报文中的目的端口号不正确,就会丢弃报文,并由ICMP(控制报文协议)发送“端口不可达”差错报文给发送方

    UDP协议应用场景:

      要发送的内容少,一个数据包就能发送全部内容。

      即时通信(聊天对数据准确性和丢包要求比较低,但速度必须快),在线视频( 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。

    UDP协议与TCP协议的区别:

      1.TCP协议是有连接的,开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的

      2.TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到

      3.TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率

      4.TCP是一对一的连接,而UDP则可以支持一对一,一对多,多对多,一对多的通信

      5.TCP协议首部资源消耗多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节

      6.TCP面向的是字节流的服务,UDP面向的是报文的服务

  • 相关阅读:
    Python3网络学习案例三:编写web server
    struct.pack()和struct.unpack() 详解(转载)
    Python3网络学习案例二:traceroute详解
    Redis 配置
    vue之this.$route.params和this.$route.query的区别
    解决bugs: mybatisPlus 分页不能生效
    解决bug :"status":400,"error":"Bad Request","message":"Required request body is missing:
    vue,ElementUI中Switch 开关,switch 打开时的值为数字,该如何设置
    解决bug:vue项目中点击修改按钮,不能显示要修改的分类名字
    The 'Access-Control-Allow-Origin' header contains multiple values'*, *', but only one is allowed.
  • 原文地址:https://www.cnblogs.com/jiezai/p/11370495.html
Copyright © 2011-2022 走看看