• 【计算机网络】运输层:用户数据报协议UDP


    UDP在IP数据报服务之上增加复用分用的功能,以及差错检测的功能(使用UDP的原因)

    (所以应用进程不可以跳过UDP直接交给IP层)

    UDP特点:

    (1)UDP无连接:发送数据之前不需要建立连接

    (2)UDP尽最大努力交付,不保证可靠交付

    (3)UDP面向报文

    发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。

    UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

    应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。

    接受方的UDP,对IP层交上来的UDP用户数据报,在去除首部后酒原封不动交付给上层的应用进程。

    也就是说,UDP一次交付一个完整的报文。

    因此,应用程序必须选择合适大小的报文。若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。报文太短,UDP交给IP层后,会使IP数据报的首部相对长度太大,降低IP的效率。

    (4)UDP没有拥塞控制

    网络出现拥塞不会使源主机的发送速率降低,对实时应用很重要。

    (5)UDP支持一对一、一对多、多对一、多对多的交互通信

    (6)UDP首部开销小,只有8个字节。

    UDP首部:

    源端口号、目的端口号

    长度:UDP用户数据报(包括首部和数据)

    检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃(简单地丢弃)

    检验和是可选的,如果不想计算检验和,检验和端就全为0。

    伪首部:不是UDP用户数据报或TCP报文段真正的首部,只是在计算检验和时,临时添加在UDP用户数据报或TCP报文段的前面,得到一个临时的UDP用户数据报或TCP报文段。伪首部既不向下传送也不向上递交,仅仅用于计算运输层的检验和。

     使用二进制反码求和再取反。

    使用UDP而不适用TCP的场景:

    【实时数据的传输】

    互联网传输实时数据的分组时,有可能会出现差错甚至丢失。如果利用TCP协议对这些出错或丢失的分组进行重传,那么时延就会大大增加。所以,宁可丢失少量分组,也不要等待太晚到达的分组。

    在连续的音频或视频数据流中,很少量分组的丢失对播放效果的影响并不大,因而是可以容忍的。

    如果不是实时数据,就可以使用TCP传输。

    【注重报文发送速度】

    当网络出现拥塞时,TCP的拥塞控制就会让TCP的发送方放慢报文段的发送。可能有的应用程序就不愿意放满报文段的发送速度。

     文件必须使用TCP传输。

     

     

  • 相关阅读:
    mybatis-plus的批量新增
    Go源码实现使用多线程并发下载大文件的功能
    重温C语言十一 ----数组
    Android Hook View的创建流程
    nRF24L01芯片驱动记录
    为 Go 开发配置Visual Studio Code
    [CG] 顶点动画贴图 (Vertex Animation Texture, VAT)
    SQL中的不加锁查询 with(nolock)
    【AI视野·今日NLP 自然语言处理论文速览 第五十六期】Tue, 17 Oct 2023
    十九、kafka消费者思考之partition leader切换会引起消费者Rebalance么?
  • 原文地址:https://blog.csdn.net/m0_52043808/article/details/127809561