网络协议详解-UDP- -
B、UDP协议
UDP是User Datagram Protocol(用户数据报协议)的英文缩写。UDP只提供一种基本的、低延迟的被称为数据报的通讯。所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包。UDP协议经常用于路由表数据交换转发和系统信息、网络监控数据等的交换。UDP协没有TCP那样的三次握手并且基于数据报,因此UDP不基于连接,也没有TCP那样丰富的头信息以实现诸多功能。
UDP数据报的头只包含了类似于TCP中包含的UDP源端口、UDP目的端口号、两个字节的校验和域、两个字节的信息长度域(用来告诉接收端信息的大小,让接收端判断信息是否有效)。
由于UDP协议是如此简单,所以不要指望UDP连接会像TCP连接那样可靠,它一点都不可靠,UDP只负责尽力的转发数据包,但是却不会把错误的数据报重新发送,它会丢弃掉所有被破坏或者损坏的数据报,并且继续后面的传送,至于被丢弃的部分,发送端不知道,也不会被接收端要求重新发送;除此之外,UDP不具备把乱序到达的数据报重新排列的功能(因为没有TCP头中包含的TCP序列号),这样一来,UDP便是完全不可靠的,因为你根本就无法保证你收到的数据是完整的。但是,UDP协议的不可靠并不代表UDP是毫无用处的,恰恰相反,没有了和TCP一样的复杂头信息,各种设备处理UDP数据报的时间将会大大缩短,效率比TCP要高得多,你可以想象,你看13页书比看4页书需要用的时间谁会更多。由于UDP处理的这种高效性,UDP往往被用于那些数据报不断出现的应用,比如IP电话或者实时视频会议,也被用于在路由器之间传输路由表更新信息、传送网络管理和监控数据等,DNS也是使用UDP协议进行域名转换。
4、进程/应用层
应用层赋予应用程序访问其它层所提供服务的能力,并且规定应用程序使用何种协议进行数据交换。这一层包含了众多的服务协议,是跟终端用户最为接近的一层。这一层中包含的服务协议有:HTTP(Hypertext Transfer Protocol 超文本传输协议)、FTP(File Transfer Protocol 文件传输协议)、SMTP(The Simple Mail Transfer Protocol 简单邮件传输协议)、Telnet(一种终端仿真协议,常用于远程登录管理计算机)、DNS(Domain Name System 域名系统)、RIP(Routing Information Protocol 路由侦听协议)、SNMP(Simple Network Management Protocol 简单网络管理协议)等等。这其中有一个重要的服务协议就是NetBIOS,下面简单介绍。
NetBIOS是一个名称解析服务,准确的说,在微软的Windows TCP/IP体系中,它处于应用层和传输层的中间。它的作用就是把一个名称映射到对应的IP地址上。它广泛存在于各种局域网应用中,虽然是一个过时的协议(因为Windows 2000以后的版本使用域进行管理,Windows 2000域使用DNS进行名称解析,这一点不同于Windows NT 4中的域概念),但是应用范围还是很广。
一个NetBIOS名称一共有16字节。NetBIOS名称是一个唯一的名称或者是一个组名称,当一个NetBIOS进程和一个特定的计算机进行通讯的时候,就使用唯一的名称,如果这个NetBIOS进程和多个计算机进行通讯,那么就使用组名称。NetBIOS名称扮演会话层应用程序标识的角色,比如NetBIOS会话服务通过TCP 139端口进行。所有通过TCP/IP会话的NetBIOS都被定位到了TCP 139端口。下图将会告诉你服务器、转向器和信使服务关联的NetBIOS名称。
在图中,你很容易看到NetBIOS使用的各类端口的信息。
现在,在使用金山网镖过程中所可能用到的TCP/IP协议知识基本上介绍到了。如前面所说,这里没有详细讨论TCP/IP体系结构的细节,IP的细节也没有涉及,但是,通过对TCP/IP结构的简单叙述,应该可以让你有一个初步的认识,虽然可能并不完整。文中所用到的一些术语,能够尽量解释的我都解释了,但是另一些术语不可能在这里解释明白,因为需要牵涉到其他的学科内容,比如转发器这些等等就需要牵涉到一些通信方面的知识,你大可以不必深究。
本文参考了《TCP/IP Unleashed》,因为前导工作室翻译出来的这本书的翻译效果很不好,出现了多处术语错误,所以参考原文对一些部分进行重新翻译。如前言所说,本文只进行了提炼和翻译工作,加入了我的一些理解和我知道的一些相关知识,有些部分是完整的英文翻译有的是部分引用,读者若需要知道详细信息,还是应该查看英文原文,不要去看那些翻译文档,说实话有些翻译过来的文档根本不像一个学计算机的人翻译的,我这次接触的几个中文文档都有这个问题。翻译过来的文章是翻译者本人的理解,译者可能明白了,但是看译稿的人可能就会犯迷糊。我的翻译尽量避免这种情况,但是因为英语层次所限也会有些翻译不准确的时候,因此,我强烈推荐本文的读者们找到这些英文原版书籍进行阅读。
本文参考书目:
(1)Windows 2000 Server Resource Kit Online Books in MSDN Library January 2002;
(2)TCP/IP Unleashed,Tim Parker、Mark Sportack著;
(3)TCP/IP Illustrated Volume 1-Protocol, W. Richard. Stevens著;
(4)TCP/IP技术大全,即第二条所列书籍的中文版本,前导工作室翻译。