最新UDP基本原理.doc

上传人:1595****071 文档编号:33844155 上传时间:2022-08-12 格式:DOC 页数:21 大小:353KB
返回 下载 相关 举报
最新UDP基本原理.doc_第1页
第1页 / 共21页
最新UDP基本原理.doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《最新UDP基本原理.doc》由会员分享,可在线阅读,更多相关《最新UDP基本原理.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品资料UDP基本原理.传摘要:UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,UDP协议基本上是IP协议与上层协议的接口。本文中对UDP协议进行一下具体的讲述,在第一章中将介绍UDP的基本概念,UDP协议的端口,长度和效验及其计算等方面的问题;在第二章中介绍了UDP数据的封装与拆装以及它的应用。第一章 UDP基本原理1.1 UDP基本概念以及适用范围:1.1.1 UDP的基本概念UDP,即用户数据报协议(User Datagram Protocol)5。作为运输层协议,UDP使用端口号来完成进程到进程之间的通信,UDP在运输层提供非常有限的流控制机制,在

2、收到分组时没有流控制也没有确认。但是,UDP提供了某种程度的差错控制。如果UDP检测出在收到的分组有一个差错,它就悄悄的丢弃这个分组。UDP不负责为进程提供连接机制,它只从进程接收数据单元,并将他们不可靠的交付给接收端。数据单元必须足够小,能够装进到一个UDP分组中。所以,UDP提供的是无连接的、不可靠的运输服务。1.1.2 UDP的适用范围7 (1)UDP适用于需要简单的请求-响应通信,而较少考虑流控制和差错控制的进程; (2)UDP适用于具有内部流控制和差错控制机制的进程。例如,简单文件传送协议(TFTP)的进程就包括流控制和差错控制,它能够很容易的使用UDP; (3)对多播和广播来说,U

3、DP是个合适的运输协议。多播和广播能力已经嵌入在UDP软件中,但没有嵌入到TCP软件中; (4)UDP可用于进程管理,如SMTP;(5)UDP可用于某些路由选择更新协议,如路由选择信息协议RIP。1.1.3 UDP协议的建立以及使用的优点3协议是建立在IP协议之上的,从进程的缓冲区输出一个UDP数据报,把生成的UDP数据报直接封装在IP 数据报中进行传输,因此在传输层使用UDP协议时,发送端不需要发送缓冲区,图1所示:UDP数据报头区 UDP数据区IP报头区IP数据区 UDP数据报 IP数据报 图1尽管与IP协议类似,UDP提供的也是无连接的,不可靠的数据报传递服务,但是,有别于IP协议的是:

4、 1.UDP提供了端到端的通信机制 2.增加了对数据区的完整性校验 在网络通信中使用UDP协议的好处:在少量数据的传输时,使用UDP协议传输信息流,可以减少TCP连接的过程,提高工作效率。但是使用UDP协议还有很多不足:当使用UDP协议传输信息流时,用户应用程序必须负责解决数据报排序,差错确认等问题。在多媒体应用中,常用TCP支持数据传输,UDP支持音频/视频传输。 1.2 UDP特点及其其应用8(1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当UDP它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据

5、的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。 (2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。 (3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。 (4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。 (5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。 (6)UDP是面向报文的。发送方的UDP对应用程序交下

6、来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。 由于缺乏拥塞控制(congestion control),需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来减小这个潜在的问题。虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上

7、显示航空信息等等。UDP也用在路由信息协议RIP(Routing Information Protocol)5中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。UDP 只是在IP的数据服务之上增加了很少的一点功能,即端口的功能和差

8、错检验的功能。但是UDP不提供可靠性:他把应用程序封装后传给IP层,被IP层封装后发送出去,但是不保证他们到达目的地,但UDP在某些方面有其特殊的优点10:1.发送数据前不需要建立连接2UDP的主机不需要维持复杂的链接状态表3.UDP用户数据报只有8个字节的首部开销4.网络出现的拥塞不会使源主机的发送数据降低,这对某些实现应用是很重要的。1.3 UDP协议中涉及的的几个基本概念91.3.1 点到点通信点到点通信:是由网络互联层来实现的网络互联层只屏蔽了不同网络之间的差异,构建了一个逻辑上的通信网络,因此他只解决了数据通信问题。1.3.2 端到端通信端到端通信:IP协议在IP数据包的包头增添了I

9、P地址,根据IP地址,路由器可以一站一站的将数据包从源主机路由到目标主机,依靠IP地址,IP协议实现了点到点的通信如图2所示:,它是建立在点到点通信基础上的,他是比网络互联层通信更高一级的通信方式,完成应用程序(进程)之间的通信,端到端的通信是由传输层来实现的。路由器主机2路由器主机1网络1 网络2传输层端到端通信图2 端到端通信IP地址+端口 如图3所示:1789 800052100 8052100 801789 8000UDP/IPUDP/TCP QQ 腾讯公司 QQ Server Web Server Client IE浏览器C D A B 进程 进程 (服务器端 (客户机端应用程序)

10、应用程序)8000 80 (端口号) (端口号)1789 52100 用户数据报 服务器端 客户端 用户数据报图3IP地址+端口 对定义了端到端通信,例如(202.115.65.71,1500)和(202.115.64.37,80)1.3.3 UDP协议的作用2UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。1.3.

11、4 UDP协议的应用13既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。关于UDP协议的最早规范是RFC768,1980年发布。尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP协议的存在价值。因为相对

12、于可靠性来说,这些应用更加注重实际性能,所以为了获得更好的使用效果(例如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(例如,画面质量)。这就是UDP和TCP两种协议的权衡之处。根据不同的环境和特点,两种传输协议都将在今后的网络世界中发挥更加重要的作用。1.4 端口41.4.1 传输层端口 传输层端口的概念:为了识别传输层之上不同的网络通信程序(进程),传输层引入了端口的概念,在一台主机上,要进行网络通信的进程首先要向系统提出动态申请,由系统(操作系统内核)返回一个本地唯一的端口号,进程再通过系统调用把自己和这个特定的端口联系在一起,这个过程叫绑定。这样,每个要通信的进程都与一个端口号对应,

13、传输层就可以使用其报文中的端口号,把收到的数据传送到不同的应用程序,如图4所示 由以太网帧类型字段标识由IP数据报头中的上层协议字段标识由传输层报头中的端口字段标识以太网网络接口层IPRARPARPTCPUDPICMP应用程序应用程序应用程序应用程序 以太网图4在TCP/IP协议中,传输层使用的端口号用一个16位的二进制数表示,因此,在传输层如果使用TCP协议进行进程通信,则可用的端口号共有2的16次方个不同的端口。由于UDP也是传输层一个独立于TCP的协议,因此使用UDP协议时也有2的16个不同的端口1.4.2 UDP端口-最终目标的标识端口分类:1.是由因特网分配给一些常用的应用层程序固定

14、使用的熟知端口,其数值一般为01023;2.是临时端口,当写一种新的应用程序时,必须为他指派一个临时端口,否则其他的应用程序就无法和它进行交互。而实际上,机器通常从1024起分配动态(临时)端口。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 UDP的“端口号”完成的。例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP头插入目标端口号 53 。源端口号标识了请求域名服务的本地机的应用程序,同时

15、需要将所有由目的站生成的响应包都指定到源主机的这个端口上。1.4.3标准UDP端口:UDP数据包中,源端口字段可选,目标端口字段必须指定,接收主机发现IP协议字段为17,就将数据交给UDP协议处理,图5对端口号进行了描述:DUP端口号关键词描述53Domain域名服务器67Bootps引导协议服务器68Bootpc引导协议客户机69TFTP简单文件传输协议161SNMP简单网络管理协议162SNMP-TRAP简单网络管理协议陷阱图5两台要通信的主机,每一端要使用一个二元地址(IP地址,端口号)才可以完成他们之间的通信。UDP和TCP都使用了与应用层接口处的端口与上层的应用进程进行通信。图6说明

16、了端口在进程之间的通信中所起的作用NASPNASPNASPNASPIP复用IP复用UDP分用TCP分用UDP复用TCP复用端口端口端口端口端口端口端口端口 应用进程 应用进程 应用进程 应用进程应用层运输层 TCP报文段 用户数据报 TCP报文段 用户数据报网络层 IP数据报 IP数据报图6端口在进程之间的通信中所起的作用若没有端口,运输层就无法知道数据应当交付给应用层的哪一个进程,端口是用来表示应用层的进程,图7举例说明了端口的作用 IP=130.42.85.15IP=131.6.23.13端口1500 连接1端口25端口1501 连接2IP=128.36.1.22端口1500 连接3图7

17、与主机C的SMTP建立三个连接1.4.4 UDP熟知端口号13UDP使用的熟知端口 端口协议说 明7ECHO将收到的数据报回送到发送器9DISCARD丢弃任何收到的数据报11USERS活跃的用户13DAYTIME返回日期和时间53NAMESERVER域名服务67BOOTPS下载引导程序信息的服务器端口68BOOTPC下载引导程序信息的客户端口69TFTP简单文件传送协议111RPC远程过程调用123NTP网络时间协议161SNMP简单网络管理协议162SNMP简单网络管理协议 协议端口号的指定的两种方式:方式一:使用集中式管理机构。这个机构负责指派协议端口并发布这些指派。所有的软件在设计时都要

18、遵从这些指派的规定。这种方式又称为统一指派(UNIVERSAL ASSIGNMENT),这些被管理机构指定的端口指派也叫知名端口(WELL-KNOWN PORT)的指派。方式二:使用动态绑定(DYNAMIC BINDING)。当一个应用程序需要使用端口时,网络软件就指定一个端口。为了知道另一台机器上的当前端口号,就必须送出一个请求报文,然后目的主机进行回答,把正确的端口号送回来。TCP/IP采用一种混合方式对端口地址进行管理,对某些常用服务的端口进行指派,但为本地站点和应用程序留下了很大的端口取值范围。1.5插口地址12UDP需要两个标识符,IP地址和端口号。一个IP地址与一个端口号合起来就叫

19、做插口地址(SOCKER ADDRESS)。客户插口地址唯一地定义了客户进程,而服务器插口地址唯一地定义了服务器进程(见下图8)。插口地址202.114.200.254 5353202.114.200.254 图8要使用UPD的服务,需要一对插口地址:客户端插口地址和服务器端插口地址。至四种信息是IP首部和UDP首部的一部分。IP首部包括IP地址,UDP首部包括端口号。被封装在IP中的UDP数据报通过网络传输到目标主机的IP层后,由目标主机的UDP层根据目标端口号送到接收该数据的相应进程。1.6 用户数据报9用户数据报UDP(图F所示为UDP用户数据报的首部和伪首部)有两个字段:数据字段和首部

20、字段。首部字段很简单,只有8个字节,如图9所示,由4个字段组成,每个字段都是两个字节,各字段意义如下所述:源端口字段:源端口号,可选项。目的端口字段:目的端口号。长度字段:UDP用户数据报的长度。检验和字段:可选项。UDP源端口号(16位) UDP目标端口号(16位)UDP长度(16位) UDP校验(16位)数据区 0 15 16 31图9 UDP数据报最大UDP数据报长度: 1.理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特总长度字段所限制的2.取出20字节的IP首部8个字节的UDP首部UDP数据报中的用户数据的最长长度为65507字节3,但是,大多数实现所提供的长度比

21、这个最大值小主要原因:111.应用程序可能会受到其程序接口的限制。Socket API提供了一个可供应用程序调用的函数,以设置接受和发送缓存的长度,对于UDP socket,这个长度与应用程序可以读写的最大UDP数据报的长度有关,现在的大部分系统都默认提供了可读写大于8192字节的UDP数据报(使用这个默认值是因为8192是NFS读写用户数据数的默认值)。2.因为TCP/IP的内核实现,存在一些实现特性(或差错),使数据报长度小于65535字节. 字节 4 4 1 1 2 字节 12 2 2 2 2 首 部 数 据首部 数 据伪首部UDP用户数据段IP数据报图10 UDP用户数据报的首部和伪首

22、部在图10中伪首部并不是UDP的真正组成部分,他只是为了UDP在进行差错检查时可以把更多的信息包含进去而人为加上的其中伪头部的格式如图11所示 源 端IP地址(32位) 目标端IP地址(32位)填充域(8位,全0) 协议(8位,UDP值为17) UDP长度(16位) 0 7 8 15 16 31图11伪头部包含IP头部的一些字段,填充域全填0,目的是使伪头部为16位二进制数的整数倍,这是计算校验和时所需要的,UDP长度为UDP数据报的总长(当然不能包括虚构的伪头部)。源端在发送UDP数据报时,使用构造的UDP伪头部和UDP数据报计算出校验和(校验和计算方法与IP伪头部校验和的计算方法相同),然

23、后填入UDP头部。1.7 UDP校验和的计算81.7.1 校验和计算步骤1.构造该数据包的伪头部图120 协议(17) UDP长度目的IP地址图122.将UDP数据包的校验和字段设置为0 图13数据UDP校验和设置016位UDP长度16位目的端口号16位源端口号 图13 3.将UDP数据报连接在伪头部的后面,将UDP数据包的长度补足16位的整数倍 图14填充0UDP数据UDP包头UDP伪头部 图14 4.最后,将IP协议校验和计算方法对整个数据结构作校验和计算并填入UDP校验和字段 例题:图15(计算UDP检验和的例子)153.19.8.104171.3.14.11全0 17 151087 1

24、315 全0数据 数据 数据 数据数据 数据 数据 全0 10011001 00010011 1.53.19 00001000 01101000 8.10412字节伪首部 10101011 00000011 171.3 00001110 00001011 14.11 00000000 00010001 0和178字节UDP首部 00000000 00001111 15 00000100 00111111 1087 00000000 0000 1101 137字节数据 00000000 00001111 15 00000000 00000000 0(校验和) 01010100 01000101

25、数据01010011 01010100 数据填充 01001001 01001110 数据UDP校验和 01000111 00000000 数据和0(填充) 按二进制反码运算求和 10010110 11101011 和 求解果的反码 01101001 00010100 校验和图15注:UDP的检验和是可选的,而TCP的检验和是必须的如果传送的检验和为0,说明发送端没有计算检验和如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄的抛弃,不产生任何差错报文UDP检验和选项在默认条件下是打开的尽管UDP检验和是可选的,但是他们应该总是在用UDP数据报的长度在检验和的计算过

26、程中出现两次1.7.2校验值的作用8UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。许多链路层协议都提供错误检查,包括流行的以太网协议,也许想知道为什么UDP也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。1.8 UDP数据包13UDP数据包,是一种无连接的协议。在OSI模型中,在第四层传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议.UDP数据包格式如下图所示: 0 16 3116位目的端口号(必须)16位源端口号(可选)16位UDP长度16位UDP校验和(可选)数 据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁