计算机网络学习笔记(5) - 运输层 - UDP


一、UDP - 尽力而为的服务

“尽力而为”一定程度上等于“不可靠”,UDP(User Datagram Protocol,用户数据报协议)提供这种尽力而为、不可靠的传输服务,传输的报文可能丢失、乱序,在实践中主要用于实时流媒体和一些事务性应用,通常DNS就是使用UDP的。UDP有以下特点:

  • 提供复用、解复用和少量的差错检测功能。首先需要明确,运输层协议最低限度必须提供一种复用、解复用服务,以便在网络层与正确的应用进程间传递数据。UDP就是做了这种最少的工作,仅仅在IP之上增加了供复用、解复用和少量的差错检测功能外,几乎没有对IP增加别的东西。
  • 无连接的服务。使用UDP时,在报文发送之前,发送方和接收方实体间并没有进行握手,即是无连接的。

二、UDP存在的理由

既然UDP是不可靠的服务,而且存在可以提供可靠服务的传输协议,例如TCP,那么UDP还有什么存在的理由呢?原因如下:

  • 对于发送数据的应用层控制更加精细。即使用UDP时,只要进程将数据传递给UDP,UDP就会将数据打包并立即将其传递给网络层。而反观TCP,TCP的拥塞控制机制则可能使交付时间延长太多。一些应用通常只要求最小的发送速率,不希望过分地延迟,并能容忍一些数据丢失,这便是UDP的用武之地。
  • 无须建立连接。相较于TCP在传输之前需要进行三次握手,UDP不需要任何准备即可进行数据传输,这在一定程度上表明UDP有着更低的传输时延。
  • 无连接状态。相较于TCP必须维护连接状态,UDP无需维护连接状态。因此对某些特定应用来说,服务器可以支持更多的用户。
  • 分组首部开销小。UDP仅有8字节开销,而TCP都有20字节的首部开销。

可以看出,UDP适合使用在一些可以容忍少量分组丢失的应用中,例如视频会议、流式媒体传输等。有意思的是,不可靠的服务在某些场景中可能会优于可靠的服务,这也提醒我们对于事物的认知应该是多维度的,“因地制宜”!此外,使用UDP的应用是可能实现可靠传输服务的,例如谷歌的QUIC协议。

三、UDP检验和

UDP检验和提供了差错检测功能。检验和用于确定UDP报文段从源到目的地移动过程时,其中的比特是否发生了改变。检验和计算方式较为简单,不在此描述,但需要注意的是

  • UDP检验和不通过则数据一定发生了错误,而即使通过校验数据也不一定是对的,被称为“残存错误”。
  • UDP提供差错检测,不进行差错恢复。UDP的某些实现仅丢弃受损的报文段,有的实现则是将受损报文交给应用进程并发出警告。

本文为个人学习笔记,如有错漏之处,敬请指正!

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值