用户数据报协议UDP

来源:互联网 发布:斯凯网络 编辑:程序博客网 时间:2024/04/27 00:46

UserDatagram protocol 用户数据报 ,基于UDP的应用有很多,动态主机配置协议DHCP,域名系统DNS,简单网络管理协议SNMP

 

 

传输层  位于应用层和IP层之间

 

三个要求:
。提供比IP层质量更加高的服务

。识别应用层进程的机制,IP的范围是在整个网络中标志到某台计算机,无法提供该主机内应用的进程识别

。针对不同尺寸的应用层数据进行适当处理,对大数据进行划分,小数据进行整合

 

TCP/IP协议族提供了两个传输层协议 TCP UDP

 

考虑这样一个问题,当IP数据报被投递到“目的IP地址”所标识的设备后,必须使用适当的方案来标识数据传输的最终目的地,一个高级应用会有一个或多个进程,进程是系统调度的基本单位,每个进程有唯一的ID来标识,

理论上这里就可以直接采用进程当成数据的最终目的地,但是考虑这样的问题,进程都是动态的,每次主机关机,所有的进程都会发生改变,发送者无法得知接收方每个进程的状态,这时候如果发送方和接受方进行通话的话可以调剂下信息,但是考虑这样一种更为理想的方式,

来考虑特定的窗口就只处理特定的业务,TCP/IP将协议窗口作为应用层与传输层的接口,“端口号”是数据投递的最终目的地,端口号是一个2字节的整数,范围为0~65535(这么大够用了),这就引出了通信的五元组

-------------------------------------------《源IP地址 源端口号 协议 目的IP地址 目的端口号》===========================

TCP/UDP 端口号是独立的,TCP用的4000仍可以分配给UDP

基于UDP                DNS 53 SNMP 161

 

端口号是一个伟大的发明,很神奇的解决了应用标识的问题,端口号是一个抽象的访问点,和物理端口需要区分开来

 

 

UDP概述

UDP提供了应用程序之间传输数据的基本机制,同IP一样,UDP提供了不可靠的,无连接的数据交付服务,可靠性保障和通信效率的代价

udp报文


16比特的两个端口号,报文长度为头部加上数据的长度,最小为8字节(数数头部的大小)

 

校验和为可选的,该字段为0时,说明未进行校验,校验和字段提供了唯一保证UDP报文无差错的途径(IP对数据报中的数据部分并不计算校验和)

 

报文封装


 

上层应用数据——》UDP(添加UDP首部—》用户数据报)——》IP(用户数据报(添加头部)—》IP数据报)——》物理帧(网络接口层)——》比特流在网络中传递

(只有IP层的首部指明了源主机和目的主机的地址,只有UDP层指明了主机上的源端口和目的端口)

 

理论上,IP数据报的最大长度为65535字节,(16比特的报文长度,不能再大了),减点20字节的IP头部8字节的UDP头部,65507字节是UDP

绝大多数是现代的长度比这个最大值小,

协议标准只是给出了一个是现代的指导,在实际实现时可能存在差异

 

UDP校验和

 

udp校验和的范围包括udp头部还有数据区,这样只能保证目的端口地址正确,但是从通信五元的角度看,正确的目的地应该包括目的端口还有主机地址,问题来了,udp数据报并没有涉及到源和目的IP地址,那么为了解决这个问题就必须想方设法得到,这里引入一个12字节的伪首部,

 

 

udp伪首部逻辑上是udp首部的一部分,但实际上并不传递


 

源IP地址和目的IP地址对应的是发送UDP报文的IP

协议字段指明所使用的协议,UDP对应17

UDP长度 字段指明UDP数据报的长度(不包括伪首部)

为计算校验和,UDP层必须与IP层交互获取IP地址信息,利用这些信息生成伪首部

伪首部被附加在UDP报文首部和数据区之前。

 

UDP-Lite

对校验和字段的使用,UDP给出了两种方案,使用校验和或不使用校验和,如果使用,如果接受方检验校验和字段时发现错误,则整个用户数据报被丢弃。但是有些场景下并没与这么严格的要求,为此,2004/7,IETF推出了UDP-Lite(LightweightUser Datagram Protocol 轻量级用户数据报协议),敏感区和非敏感区两个区域,丢弃与否可以选择了。


区别,报文长度  -》 校验和覆盖   //IP数据报总长度减去首部长度即可获得UDP报文长度

 

“校验与覆盖”,体现UDP-Lite核心思想所在,从报文的第一个字节开始计算校验和时输入的字节数,“0表示所有的报文都被覆盖” “UDP首部必须被校验和覆盖”,——?这个字段的额取值必须为0或大于等于8的整数,1-7的数字是违法的,(明显嘛,必须覆盖8字节的首部)

 

服务器,一台主机可以运行多个服务器程序,多个主机可以运行一个服务器程序

 

原创粉丝点击