CN_UDP协议

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CN_UDP协议相关的知识,希望对你有一定的参考价值。


文章目录

  • ​​UDP协议​​
  • ​​UDP概述​​
  • ​​UDP的首部格式​​
  • ​​UDP数据报封装入IP数据报​​
  • ​​UDP校验​​
  • ​​伪首部​​
  • ​​真首部​​
  • ​​UDP数据报处理​​
  • ​​例​​
  • ​​UDP vs TCP​​

UDP协议

UDP概述

  • UDP仅在IP的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测
  • 如果应用开发者选择UDP而非TCP,那么应用程序几乎直接与IP打交道
  • 主要因为UDP具有如下优点:
  • 1)UDP无须建立连接
  • 因此UDP不会引入建立连接的时延 试想如果DNS运行在TCP而非UDP上,那么DNS的速度会慢很多 HTTP使用TCP而非UDP,是因为对于基于文本数据的Wb网页来说,可靠性是至关重要的
  • 2)无连接状态
  • TCP需要在端系统中维护连接状态 此连接状态包括接收和发送缓存,拥塞控制参数和序号与确认号的参数 而UDP不维护连接状态,也不跟踪这些参数 因此,某些专用应用服务器使用UDP时,一般都能支持更多的活动客户机
  • 3)分组首部开销小
  • TCP有20B的首部开销,而UDP仅有8B的开销
  • 4)应用层能更好地控制要发送的数据和发送时间 UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率 某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而UDP正好满足这些应用的需求
  • UDP支持一对一,一对多,多对一和多对多的交互通信
  • UDP常用于一次性传输较少数据的网络应用,如DNS,SNMP等,因为对于这些应用,若采用TCP,则将为连接创建,维护和拆除带来不小的开销 UDP也常用于多媒体应用(如IP电话,实时视频会议,流媒体等),显然,可靠数据传输对这些应用来说并不是最重要的,但TCP的拥塞控制会导致数据出现较大的延迟,这是它们不可容忍的
  • UDP不保证可靠交付,
  • 但这并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层来完成 应用开发者可根据应用的需求来灵活设计自己的可靠性机制
  • UDP是面向报文的
  • 发送方UDP对应用层交下来的报文,在添加首部后就向下交付给IP层,一次发送一个报文,既不合并,也不拆分,而是保留这些报文的边界;接收方UDP对P层交上来UDP数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文
  • 因此报文不可分割,是UDP数据报处理的最小单位
  • 因此,应用程序必须选择合适大小的报文,
  • 若报文太长,UDP把它交给IP层后,可能会导致分片:
  • 若报文太短,UDP把它交给IP层后,会使P数据报的首部的相对长度太大,
  • 两者都会降低IP层的效率

UDP的首部格式

  • UDP数据报包含两部分:
  • 用户数据
  • UDP首部
  • UDP首部有8B,由4个字段组成,每个字段的长度都是2B:
  • 1)源端口
  • 源端口号 在需要对方回信时选用,不需要时可用全0.
  • 2)目的端口
  • 目的端口号 这在终点交付报文时必须使用到
  • 3)长度
  • UDP数据报的长度(包括首部(不包括伪首部,只含真首部的8B)和数据),其最小值是8(仅有首部)
  • 首部长度是没有必要的
  • UDP报文的首部长度总是8B
  • 4)校验和
  • 检测UDP数据报在传输中是否有错 有错就丢弃
  • 校验和可以校验伪首部 ,UDP报文,应用层数据
  • 该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0
  • 当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程
  • 如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于端口号的应用进程),那么就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方

UDP数据报封装入IP数据报

  • IP数据报
  • 首部
  • 数据(UDP数据报)
  • 首部