首页 百科知识 常用的网络协议分析

常用的网络协议分析

时间:2022-02-19 百科知识 版权反馈
【摘要】:1.2 常用的网络协议分析1.2.1 Sniffer工具简介1)概述Sniffer软件是NAI公司推出的功能强大的协议分析软件。Sniffer软件支持的协议丰富,例如IP、TCP、UDP、ICMP、ARP、FTP、PPPoE协议等,在Sniffer软件上能够进行快速解码分析。Sniffer软件的主要功能包括:捕获网络流量进行详细分析,利用专家分析系统诊断问题,实时监控网络活动,收集网络利用率和错误等。IP包中发送的ICMP信息主要用于涉及网络操作或错误操作的不可达信息。

1.2 常用的网络协议分析

1.2.1 Sniffer工具简介

1)概述

Sniffer软件是NAI公司推出的功能强大的协议分析软件。利用Sniffer Pro网络分析器的强大功能和特征,可以解决网络问题,分析常用的网络协议。Sniffer软件支持的协议丰富,例如IP、TCP、UDP、ICMP、ARP、FTP、PPPoE协议等,在Sniffer软件上能够进行快速解码分析。Sniffer Pro 4.6可以运行在各种Windows平台上,但该软件运行时占用计算机内存较多,这也是它的一个缺点。

Sniffer软件的主要功能包括:捕获网络流量进行详细分析,利用专家分析系统诊断问题,实时监控网络活动,收集网络利用率和错误等。

2)Sniffer工具使用

安装Sniffer软件后,在开始菜单中会出现Sniffer快捷方式,可以通过以下步骤进行启动:

“开始”→“程序”→“Sniffer pro”→“Sniffer”,打开如图1-5所示Settings对话框。

图1-5 “Settings”对话框

选择网络适配器后才能正常工作,如图1-5所示选定Intel网卡后单击“确定”按钮,进入Sniffer的启动界面,如图1-6所示。

图1-6 Sniffer启动后的界面

图1-7为在软件中捕获报文快捷键的位置。

图1-7 Sniffer工具栏介绍

报文捕获功能可以在报文捕获面板中进行,以下是捕获面板的功能图:图1-8显示的是处于开始状态下的面板。

图1-8 Sniffer捕获面板功能图

图1-9 定义捕获过滤图

打开“Capture”→“Define Filter”或“Display”→“Define Filter”如图1-9所示。过滤器可以根据物理地址或IP地址和协议选择进行组合筛选。

3)基本捕获条件

基本的捕获条件有两种:

(1)链路层捕获,按源MAC和目的MAC地址进行捕获(见图1-10),输入方式为十六进制连续输入,如:00E0FC123456。

(2)IP层捕获,按源IP和目的IP进行捕获(见图1-11)。输入方式为点间隔方式,如:10.107.1.1。如果选择IP层捕获条件则ARP等报文将被过滤。

图1-10 选择网卡MAC地址进行捕获

图1-11根据IP地址进行捕获

4)高级捕获条件

在“Advanced”选项卡中,可以编辑协议捕获条件,如图1-12所示。

图1-12 高级捕获条件编辑

在协议选择树中用户可以选择所需要捕获的协议条件,如果什么都不选,则表示忽略该条件,捕获所有协议。

在捕获帧长度条件下,用户可以捕获等于、小于或大于某个值的报文。

在错误帧是否捕获栏,用户可以选择当网络上有“如下”错误时是否捕获。

点击保存过滤规则条件按钮“Profiles”,可以将当前设置的过滤规则进行保存,在捕获主面板中,可以选择所保存的捕获条件。

5)任意捕获条件

在“Data Pattern”选项卡中,用户可以编辑任意捕获条件,如图1-13所示。

图1-13 任意捕获条件图

用这种方法可以实现复杂的报文过滤,但很多时候是得不偿失的,有时截获的报文本就不多,自行筛选效率会更高。

1.2.2 网络层ICMP/ICMPv6:信报控制协议

1)ICMP简介

ICMP/ICMPv6:信报控制协议(ICMP/ICMPv6:Internet Control Message Protocol)是IP组的一个完整部分。IP包中发送的ICMP信息主要用于涉及网络操作或错误操作的不可达信息。ICMP包发送是不可靠的,所以主机不能依靠接收ICMP包解决任何网络问题。其主要功能如下:

(1)通告网络错误

例如,主机或整个网络部分由于某些失败类型是不可达的。相对应的没有接收者的TCP或UDP包途径ICMP报告。

(2)通告网络拥塞

路由器缓存包太多时,由于传输速度无法达到它们的接收速度,将会生成ICMP源结束信息。针对发送者,这些信息将会导致传输速度降低。当然,ICMP源结束信息的生成也将引起更多的网络拥塞,所以使用起来较为保守。

(3)协助解决故障

ICMP支持Echo功能,即在两个主机之间一个往返路径上发送一个包。Ping是一种基于这种特性的通用网络管理工具,它将传输一系列的包,测量平均往返次数并计算消耗百分比

(4)通告超时

如果一个IP包的TTL域降低到零,路由器就会放弃包,此时会生成一个ICMP包通告这一事实。路由跟踪器是一个通过TTL小值发送包及监视ICMP超时通告转换网络路由器的工具。

ICMP在IPv6定义中重新修订。此外,在ICMPv6中,IPv4组成员协议(IGMP)的多点传送控制功能将重装成一体。

协议结构(见表1-2)。

表1-2 协议结构

图1-14 选取ICMP协议

Type———错误消息或信息消息。错误消息可能是不可获得目标文件、数据包太大、超时、参数问题等。可能的信息消息有:Echo Request、Echo Reply、Group Membership Query、Group Membership Report、Group Membership Reduction。

Code———每种消息类型具有多种不同代码。不可获得目标文件正是这样一个例子,即其中可能的消息是目标文件没有路由、禁止与目标文件的通信、非邻居、不可获得地址、不可获得端口等。具体细节请参照相关标准。

Checksum———计算校验和时,Checksum字段设置为0。

Identifier———帮助匹配Requests/Replies的标志符,值可能为0。

Sequence Number———帮助匹配Requests/Replies的序列号,值可能为0。

2)用Sniffer抓取ICMP数据包并分析

选Advanced项,设定捕获条件为IP协议簇中的ICMP协议,如图1-14所示。

点击“确定”按钮返回如图1-15所示界面。

图1-15 返回Sniffer软件主界面

点击“捕获”键,让Sniffer软件处于捕获进行状态。然后在计算机上的cmd程序下开始ping远程主机,如图1-16所示。

图1-16 从本机上ping远程主机(IP地址为202.102.11.141)

由于本地主机上安装了Sniffer软件,所以本地主机和远程主机收发的数据包可以完整捕获,点击工具框中的“捕获查看”,打开如图1-17所示数据包。

图1-17 捕获的ICMP数据包

如图1-18所示默认的ping数据包为32个字节,分别用26个英文字母的ASCLL码表示出来。

图1-18 一个数据包共32个字节

封装了ICMP包头后的数据包如图1-19所示。用户可以发现ICMP包头共有8个字节。

图1-19 封装了ICMP包头的数据

1.2.3 IP协议简介

1)IP概述

一个IP数据报由首部和数据两部分组成(见图1-20)。

首部的前一部分是固定长度,共20字节,是所有IP数据报所必须具有的。

在首部的固定部分的后面是一些可选字段,其长度是可变的。

IP协议为面向无连接,不可靠的协议,只能做到尽量交付。

图1-20 IP数据报的组成

版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。

报头长度(Internet Header Length,IHL)字段:占4比特。它是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特(20字节)。此字段最大值为60字节。

服务类型(Type of Service,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。该4比特的服务类型中只能置其中1比特为1,也可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大的吞吐量,SNMP协议可能要求有最高的可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小的费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议,如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)则可以根据这些字段的值进行路由决策。

·总长度字段:占16比特,指明整个数据报的长度(以字节为单位)。最大长度为65 535字节。

·标志字段:占16比特。用来唯一地标志主机发送的每一份数据报。通常每发送一份报文,它的值会加1。

·标志位字段:占3比特。标志一份数据报是否要求分段。

·段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。

·生存期(Time to Live,TTL)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。

·协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2)、TCP(6)、UDP(17)等。

·头部校验和字段:占16比特。内容是根据IP头部计算得到的校验码。计算方法是:对头部中每个16比特进行二进制反码求和。与ICMP、IGMP、TCP、UDP不同,IP不会对头部后的数据进行校验。

·源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。

可选项字段:占32比特。用来定义一些任选项,如记录路径、时间戳等。这些选项很少被使用,同时也并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。

IP协议是TCP/IP协议簇中最为核心的协议。它提供不可靠、无连接的服务,即依赖其他层的协议进行差错控制。在局域网环境下,IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。

2)IP报头结构

选中IP报头后可以看到如图1-21所示的IP层的封装。

图1-21 20个字节的IP头

1.2.4 数据链路层协议

数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错与重发等。在该层中,数据的单位称为帧(Frame)。

数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

选中DLC选项可以打开如图1-22所示的数据头的封装状况。

1)MAC帧格式

帧中DLC头由三部分组成,分别为目的MAC、源MAC、类型/长度,总共14个字节。

2)MAC帧的头结构

在上述捕获的报文中,点击DLC,用户可以查看DLC头的组成。

图1-22 封装了14个字节的DLC头

经过ICMP、IP、DLC几次封装后,可以发现此数据包有用数据为32个字节,但经过几次封装后可达到最终的74个字节,有42个字节是没有用的数据,但又不能不要,导致以太网因为封装过多而效率不高。

1.2.5 DNS:域名系统(DNS:Domain Name Systems)

1)DNS概述

域名系统协议(DNS)是一种分布式网络目录服务,主要用来把主机名转换为IP网络地址,并控制因特网的电子邮件的发送。大多数因特网服务器依赖于DNS而工作,一旦DNS出错,就无法下载Web站点并且中止电子邮件的发送。

DNS有两个主要作用:

·详述域名语法和规范,以授予域名权限。基本语法是local.group.site;

·详述分布式计算机系统的实现,将域名转换成地址。

在DNS命名格式中,域名空间的授权以及域名与地址的转换采用的都是分层和分布式结构,一些授权的机构可以各自转换其权限以内的名称和IP地址。DNS的命名是为全球性的网络设备分配名称,由分布式名称服务器组实施。

理论上,DNS协议中的域名标准阐述了一种任意标签值的分布式抽象域名空间。任何组织都可以建立域名系统,为所有分布结构选择标签,但大多数DNS协议用户遵循用于因特网系统惯用的域名系统。常见的顶级域名是:com、edu、gov、net、org、biz,另外还有一些带有国家代码的顶级域名。

分布式DNS模式支持有效且可靠的名称与IP地址转换。多数名称可以在本地转换,合作式多站点服务器组能够解决较大网络的名称与IP地址的转换问题。单个机器的故障不会阻止DNS的正确操作,DNS是基本目标协议,并不受网络设备名限制。

2)协议结构

协议结构见表1-3。

表1-3 协议结构

表1-3中的代码或数字分别表示为:

·ID———用于连接查询和答复的16bit。

·Q———识别查询和答复消息的1位字段。

·Query———描述消息类型的4位字段:

(0)标准查询(由姓名到地址);

(1)逆向查询;

(2)服务状态请求。

·A———命令回答:1位字段。当设置为1时,识别由命令名称服务器作出的答复。

·T———切断:1位字段。当设置为1,表明消息已被切断。

·R———1位字段。由名称服务器设置为1,请求递归服务。

·V———1位字段。由名称服务器设置表示递归服务的实用性。

·B———3位字段。备用,必须设置为0。

·Rcode———响应代码,由名称服务器设置的4位字段用以识别查询状态。

·Question count———16位字段,用以定义问题部分的登录号。

·Answer count———16位字段,用以定义回答部分的资源记录号。

·Authority count———16位字段,用以定义命令部分名称服务器的资源记录号。

·Additional count———16位字段,用以定义附加记录部分的资源记录号。

3)DNS数据包抓获操作过程

定义“Define Filter”,选择“DNS(TCP)”项,如图1-23所示。

图1-23 基于TCP协议的DNS(TCP)

图1-24 基于UDP协议的DNS(UDP)

然后再选择“DNS(UDP)”项,如图1-24所示。

单击“确定”按钮完成设置,然后打开Sniffer捕获数据所,并同时去访问www.sohu.com,如图1-25所示。

图1-25 浏览器访问www.sohu.com网站

然后查看Sniffer软件的“捕获停止并查看”项已经点亮,如图1-26所示。

图1-26 正在捕获数据包过程

单击“捕获停止并查看”按钮,打开如图1-27所示的对话框,可以看到DNS封装头。

图1-27 捕获到的数据包

图1-28所选择部分,是我们访问的www.sohu.com网站所对应的十六进制代码。

图1-28 www.sohu.com网站所对应的十六进制代码

图1-29选择的DNS主机地址类型部分,所占字节为2字节。

图1-29 区域选择的类型占2个字节

图1-30中选择的Class所占2字节。

图1-30 Class占2个字节

1.2.6 UDP协议简介

UDP是一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要与目标主机建立连接。数据被冠以源、目标端口号等UDP报头字段后直接发往目的主机。这时,每个数据段的可靠性依靠上层协议来保证。在传送数据较少、较小的情况下,UDP比TCP更加高效。

1)UDP头部结构分析

如图1-31所示为UDP头部结构(RFC 793、1323):

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31Bit

图1-31 UDP数据段格式

·源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标志源端和目标端的应用进程。

·长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。

·校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。与TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。

在使用UDP数据段时要注意以下问题:

·UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。

·虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点。

图1-32 基础UDP协议上面的应用层协议

·发送数据之前不需要建立连接。

·UDP的主机不需要维持复杂的连接状态表。

·UDP用户数据报只有8个字节的首部开销。

·网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。

2)UDP面向无连接不可靠的特点

需要注意的是,不同的应用层协议可能基于不同的传输层协议,如FTP、TELNET、SMTP协议基于可靠的TCP协议;TFTP、SNMP、RIP协议基于不可靠的UDP协议。

同时,有些应用层协议占用了两个不同的端口号,如FTP的20、21端口,SNMP的161、162端口。这些应用层协议在不同的端口提供不同的功能。如FTP的21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。再如,SNMP的161端口用于SNMP管理进程获取SNMP代理的数据,而162端口用于SNMP代理主动向SNMP管理进程发送数据(见图1-32)。

还有一些协议使用了传输层的不同协议提供的服务。如DNS协议同时使用了TCP 53端口和UDP 53端口。DNS协议在UDP的53端口提供域名解析服务,在TCP的53端口提供DNS区域文件传输服务。

3)用Sniffer捕获的UDP报头

图1-33为UDP报头结构(8字节)。

图1-33 UDP报头结构占8个字节

图1-34为IP报头结构(20字节)。

图1-34 占20个字节的IP报头

图1-35为DLC报头(14字节)。

图1-35 DLC报头占14个字节

从图1-35中我们可以看出几次封装后达到80字节。

1.2.7 HTTP数据包抓获

1)定义捕获规则

选择IP协议如图1-36所示。

单击“IP”前面的“+”号,打开“TCP”,然后勾选“DNS”和“HTTP”,如图1-37所示。

图1-36 选择IP协议

图1-37 选择TCP协议基础的HTTP协议

然后单击“确定”按钮完成设置。

2)捕获HTTP数据包

捕获的HTTP数据包如图1-38所示。

图1-38 捕获的HTTP数据包

HTTP服务器回应的数据如图1-39所示。

图1-39 HTTP服务器回应的数据

图1-40为HTTP传输的有效数据。

图1-40 HTTP有效数据

图1-41为整个Hypertext Transfer Protocol的内容,注意本图中ASCII码和字符的对应比较。

图1-41 基于HTTP协议的字符及ASCII码比较

1.2.8 FTP协议分析

文件传输协议(FTP)使主机间可以共享文件。FTP使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。控制连接使用类似TELNET协议在主机间交换命令和消息。

FTP的主要功能如下:

·提供文件的共享(计算机程序/数据);

·支持间接使用远程计算机;

·使用户不因各类主机文件存储器系统的差异而受影响;

·可靠且有效的传输数据。

FTP尽管可以直接被终端用户使用,但其应用主要还是通过程序来实现。FTP控制帧即指TELNET交换信息,包含TELNET命令和选项。然而,大多数FTP控制帧是简单的ASCII文本,可以分为FTP命令或FTP消息。FTP消息是对FTP命令的响应,它由带有解释文本的应答代码构成。

1)FTP协议结构

命令 描述

ABOR中断数据连接程序

ACCT <account> 系统特权账号

ALLO <bytes> 为服务器上的文件存储器分配字节

APPE <filename> 添加文件到服务器同名文件

CDUP <dir path> 改变服务器上的父目录

CWD <dir path> 改变服务器上的工作目录

DELE <filename> 删除服务器上的指定文件

HELP <command> 返回指定命令信息

LIST <name> 如果是文件名列出文件信息,如果是目录则列出文件列表

MODE <mode> 传输模式(S=流模式,B=块模式,C=压缩模式)

MKD <directory> 在服务器上建立指定目录

NLST <directory> 列出指定目录内容

PASS <password> 系统登录密码

PASV请求服务器等待数据连接

PORT <address> IP地址和两字节的端口ID

PWD显示当前工作目录

QUIT从FTP服务器上退出登录

REIN重新初始化登录状态连接

REST <offset> 由特定偏移量重启文件传递

RETR <filename> 从服务器上找回(复制)文件

RMD <directory> 在服务器上删除指定目录

RNFR <old path> 对旧路径重命名

RNTO <new path> 对新路径重命名

SITE <params> 由服务器提供的站点特殊参数

SMNT <pathname> 挂载指定文件结构

STAT <directory> 在当前程序或目录上返回信息

STOR <filename> 储存(复制)文件到服务器上

STRU <type> 数据结构(F=文件,R=记录,P=页面)

SYST返回服务器使用的操作系统

TYPE <data type> 数据类型(A=ASCII,E=EBCDIC,I=binary)

USER <username> 系统登录的用户名

2)标准FTP信息

响应代码 解释说明

110  新文件指示器上的重启标记

120  服务器准备就绪的时间(分钟数)

125  打开数据连接,开始传输

150  打开连接

200  成功

202  命令没有执行

211  系统状态回复

212  目录状态回复

213  文件状态回复

214  帮助信息回复

215  系统类型回复

220  服务就绪

221  退出网络

225  打开数据连接

226  结束数据连接

227  进入被动模式(IP地址、ID端口)

230  登录因特网

250  文件行为完成

257  路径名建立

331  要求密码

332  要求账号

350  文件行为暂停

421  服务关闭

425  无法打开数据连接

426  结束连接

450  文件不可用

451  遇到本地错误

452  磁盘空间不足

500  无效命令

501  错误参数

502  命令没有执行

503  错误指令序列

504  无效命令参数

530  未登录网络

532  存储文件需要账号

图1-42 定义捕获规则

550文件不可用

551不知道的页类型

552超过存储分配

553文件名不允许

3)捕获FTP数据包

定义捕获规则如图1-42所示,选择FTP协议,单击“确定”按钮完成设置。

用FTP访问远程的FTP服务器FTP://202.112.94.136,如图1-43所示。

图1-43 访问远程的FTP服务器

用Sniffer软件捕获访问过程,得到如图1-44所示的FTP数据包。

图1-44 FTP协议传输的数据及ASCII比较

1.2.9 TCP协议简介

两个对等运输实体在通信时传送的数据单位叫做运输协议数据单元(Transport Protocol Data Unit,TPDU)。

TCP传送的数据单位协议是TCP报文段(Segment)。

UDP传送的数据单位协议是UDP报文或用户数据报。

TCP协议是面向字节的。TCP将所要传送的报文作为是字节组成的数据流,并使每一个字节对应于一个序号。

在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。

TCP的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加1,因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。

TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。

在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。

发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。

发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。

TCP每发送一个报文段,就对该报文段设置一次计时器。只要计时器设置的重传时间到后但还没有收到确认信息,就要重传该报文段。

1)TCP报头结构(见图1-45)

图1-45 TCP报头结构

·源端口和目的端口字段———各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。

·序号字段———占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

·确认号字段———占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

·数据偏移———占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit(4字节为计算单位)。

·保留字段———占6bit,保留为以后使用,但目前应置为0。

·紧急比特URG———当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

·确认比特ACK———只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。

·推送比特PSH(PuSH)———接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

·复位比特RST(ReSeT)———当RST=1时,表明TC连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

·同步比特SYN———同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。

·终止比特FIN(FINal)———用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

·窗口字段———占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

·检验和———占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

图1-46 三次握手建立连接过程

·紧急指针字段———占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

2)TCP三次“握手”与四次“挥手”(1)TCP建立连接的三次握手过程

TCP会话是通过三次握手来初始化。三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接。三次握手的过程可以简述如下:

·源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值。

·目标主机发回信息确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。

·源主机再返回一个数据段,同样带有递增的发送序号和确认序号。

至此为止,TCP会话的三次握手完成。接下来,源主机和目标主机可以互相收发数据。整个过程可用图1-46表示。

首先分析建立“握手”第一个过程包的结构,第一次握手SYN为1,开始建立请求连接(见图1-47)。

图1-47 第一次握手

第二次握手SYN为1,开始建立请求连接,需要对方计算机进行确认,对方计算机确认返回的数据包,回应ACK为1给予答复,则可以连接,如图1-48所示。

图1-48 第二次握手

第三次握手源计算机确认后才能最后连接,ACK值为1(见图1-49)。

图1-49 第三次握手

(2)TCP建立连接四次挥手(见图1-50)。

图1-50 TCP四次挥手过程图

第一次挥手交互过程的数据报结构如图1-51所示,ACK为1,FIN为1。

图1-51 第一次挥手

第二次挥手,目标主机在得到第一次挥手的FIN=1请求后发送ACK=1进行确认,如图1-52所示。

图1-52 第二次挥手

第三次挥手,在确认信息发出后,发送一个FIN=1的包,与源主机断开,此时状态ACK为1,RESET为1,如图1-53所示。

图1-53 第三次挥手

第四次挥手,源主机返回一条ACK=1的信息,这样一次完整的TCP会话就结束了,如图1-54所示。

图1-54 第四次挥手

1.2.10 ARP协议

在一个局域网内部,所有的设备通信是需要MAC地址的。ARP欺骗实验证明,如果IP地址不变,而目标的MAC字段被修改,数据是不能到达目标的。那么,MAC地址和IP地址的关系又是怎么样的呢?

1)ARP协议简介

ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层与硬件接口联系,同时对上层提供服务。

IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,若一个主机要与另一个主机进行直接通信,则必须要知道目标主机的MAC地址。但该目标MAC地址是如何获得的呢?它是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为硬件地址(MAC地址),以保证通信的顺利进行。

2)ARP和RARP报头结构

ARP和RARP使用相同的报头结构,如图1-55所示。

图1-55 ARP与RARP的报头结构

·硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;

·协议类型字段:指明了发送方提供的高层协议类型,IP为0800(十六进制);

·硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;

·操作类型字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

·发送方的硬件地址(0~3字节):源主机硬件地址的前3个字节;

·发送方的硬件地址(4~5字节):源主机硬件地址的后3个字节;

·发送方IP(0~1字节):源主机硬件地址的前2个字节;

·发送方IP(2~3字节):源主机硬件地址的后2个字节;

·目的硬件地址(0~1字节):目的主机硬件地址的前2个字节;

·目的硬件地址(2~5字节):目的主机硬件地址的后4个字节;

·目的IP(0~3字节):目的主机的IP地址。

3)ARP的工作原理

当主机A与主机B通信时,当A,B刚开机时,ARP缓存表是空的。主机A和主机B通信过程实质是数据封装和解封装的过程。如果只分析数据链路层和网络层。在主机A中,作为一个数据的源,它在发送数据时,数据被封装到网络层,需要添加一个IP报头,里面有源和目标IP地址字段,源的IP和目标的IP都可知,那么其是可以顺利封装的,但是封装好的包交给数据链路层,进行再一次封装时,问题发生了,因为在数据链路层,需要封装成帧,那么在帧的头部有源MAC和目标MAC字段,源MAC是其自身,因此没有实际的地址。

其实在封装之前,PC将会查看自己的ARP缓存表(我们可以通过手工查看start—run—cmd—arp-a)。如果缓存表中存在目标主机的MAC和IP信息,那么就可以顺利的成帧。如果没有的话,那么它将经历一次ARP的解析过程。它发出一个Arp broadcast request(一个广播请求,请求对方的MAC地址)。这个ARP请求数据里面有一个问题:“喂,我是192.168.12.1(主机A),我的MAC地址是A!!192.168.12.2(主机B),你的MAC地址是多少?”这个时候,该网段中所有的主机都能收到该广播,只有IP地址是192.168.12.2(主机B)的主机会响应(response)。源主机A收到这个ARP响应数据包后,将得到的目的主机B的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机A一直没有收到ARP响应数据包,表示ARP查询失败。同时接收主机B会把A的IP地址和MAC地址的对应关系记录下来,放入ARP缓存中。通过了这个过程,A和B都有了对方的IP和MAC的对应关系了,那么第二层,第三层的封装就可以顺利地完成。

可以想象,如果在主机A发出广播后,收到了来自主机B的回应请求,同时,又有一个第三者通过某种方式监听到了A—B的对话,并截获了B回应给A的arp response。其可以把这个回应中的MAC地址字段该成另一个MAC地址,再把修改过的帧交给A。

ARP其实还有好几种。

代理ARP。比如一台路由器连接了两个以太网。当其中一个网络中的主机A要和另一个网络中的主机B通信,它首先要使用ARP解析B的MAC地址,当这个广播信息到达路由器接口时,路由器把该数解封装到第三层抽取网络层地址时,发现目标主机位于自己直连的另一个网络中,它将代替(默认情况下,CISCO路由器代理ARP功能是打开的)主机B向A发送一个arp response(这个过程,其实和上面所说到的ARP欺骗很相似),以自己接口的MAC地址和IP地址发出这个回应数据。那么A收到之后,将会把该信息加入ARP缓存中去,同时把数据封装成帧交给路由器接口。代理ARP有时候会引起协议冲突问题。

无故ARP,顾名思义,就是无缘无故发送ARP请求。那么发出这样一个请求有什么好处呢?可以刷新ARP缓存,可以检测冲突。

4)RARP的工作原理

(1)发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址。

(2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。

(3)如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。

(4)如果不存在,RARP服务器对此不做任何的响应。

(5)源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通信;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

5)解码详解

了解了ARP和RARP协议的报头结构和工作原理后,可使用科来网络分析系统抓取ARP包,分析其详细解码,如图1-56所示。

图1-56 科来网络分析系统中ARP请求包详细解码

图1-56显示了一个ARP的请求包的解码,以下是详细说明:

·硬件类型:1,表示硬件借口类型为以太网类型。

·协议类型:0x0800,表示发送方提供的高层协议类型是IP。

·硬件地址长度:表示硬件地址长度为6字节=48位。

·协议地址长度:表示IP地址长度为4字节=32位。

·操作类型:1,表示ARP请求。

·源物理地址:00:14:85:CA:F5:22。

·源IP地址:192.168.0.92。

·目标物理地址:00:00:00:00:00:00。

·目标IP地址:192.168.0.208。

ARP回应包和RARP的包类似,不再重复说明。

6)Anti ARP Sniffer防ARP Sniffer

抵御利用ARP技术冲突合法用户的IP,软件完全具备以下功能:①实时防御ARP Sniffer,发现可疑常重写ARP表;②防御攻击者利用ARP技术冲突用户IP地址;③修改本地MAC地址,无须重启操作系统。

在局域网中,这是通过ARP协议来完成的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量,使网络阻塞,所以网络管理员应深入理解ARP协议。

在每台安装有TCP/IP协议的电脑里通常都有一个ARP缓存表,表中的IP地址与MAC地址是一一对应的,ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,则就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

7)查看ARP缓存表

ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp-a”就可以查看ARP缓存表中的内容了,如图1-57所示。

图1-57 本机的ARP缓存表的内容

用“arp-d”命令可以删除ARP缓存表中某一行的内容;用“arp-s”可以手动在ARP表中指定IP地址与MAC地址的对应。

1.2.11 RDP:可靠数据协议(RDP:Reliable Data Protocol)

1)概述

RDP是一种面向连接的传输协议,其主要设计是用来为主机监控应用程序的下载/上传以及远程调试支持数据的有效成批传输。RDP尝试只提供那些必需的服务器,以达到操作有效、尺度小的效果。其主要功能如下:

·RDP将在每个传输连接端口提供一个全双工通信信道;

·RDP将尝试可靠发送所有的用户信息,一旦发送失败,将及时向用户报告错误,其扩展IP数据包服务使之包括可靠发送;

·RDP将尝试发现并删除所有损坏的和多重复制的字段,它将在每字段头使用核对和及序列号实现这一过程;

·RDP将会随意地提供字段序列发送,一旦建立连接,字段序列发送必须要被声明;

·RDP将会响应确认字段的非顺序接收,释放发送端的资源。

与TCP相比,RDP支持更为简单的函数集。RDP的流控制、缓冲以及连接管理模式等都是相当简单的。对于一个协议,设置的目标就是让它能够既简单又有效地执行并能适合一系列的应用程序。

RDP函数集也可能是子集,从而进一步减小特殊执行的大小。例如,一台向其他主机请求下载的目标处理器可能执行一个RDP模块以支持默认的开放式函数和单连接,这个模块也可能不选择非顺序响应确认。

2)协议结构

RDP第二版协议头结构如下(见表1-4):

表1-4 RDP第二版协议头结构

Control flags———8个控制位划分如下:

·SYN:SYN位表示当前为同步段;

·ACK:ACK位表示协议头有效的承认序号;

·EACK:EACK位表示当前为扩展承认字段;

·RST:RST位表示该数据包为复位字段;

·NUL:NUL位表示该数据包为空字段;

·0:表示该字段的值必须设置为0;

·Ver No.:版本号,当前版本号为2;

·Header length:RDP协议头长度。

Source Port———源地址,识别通信发生的过程。网络访问协议头中,源地址和目标地址的端口标志符的结合完全限定了连接并形成连接标志符。由此RDP可用于区分两台主机间的多连接。

Destination Port———目标地址,识别通信中的目标过程。

Data Length———该字段中的数据长度(八位),该数据长度不包括RDP协议头。

Sequence Number———该字段的序列号。

Acknowledgement Number———如果ACK位设置在协议头部,这就是字段序列号,即该字段发送端最后正确按序列接收的顺序。一旦连接成功,就应该发送该字段。

Checksum———检验和确保完整性。

Variable Header Area———用于传输SYN和EACK字段的参数。

传输层安全协议的目的是为了保护传输层的安全,并在传输层上提供实现保密、认证和完整性的方法。

1.2.12 SSL:安全套接字层协议

SSL(Secure Socket Layer)是由Netscape设计的一种开放协议,它指定了一种在应用程序协议(例如HTTP、TELNET、NNTP、FTP)和TCP/IP之间提供数据安全性分层的机制。它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。SSL的主要目的是在两个通信应用程序之间提供私密性和可靠性,这个过程通过三个元素来完成:

(1)握手协议

该协议负责协商被用于客户机和服务器之间会话的加密参数。当一个SSL客户机和服务器第一次开始通信时,它们在一个协议版本上达成一致,选择加密算法,选择相互认证,并使用公钥技术来生成共享密钥。

(2)记录协议

该协议用于交换应用层数据。应用程序消息被分割成可管理的数据块,还可以压缩,并应用一个MAC(消息认证代码);然后结果被加密并传输。接收方接收数据并对它解密,校验MAC,解压缩并重新组合它,并把结果提交给应用程序协议。

(3)警告协议

该协议用于指示在什么时候发生了错误或两个主机之间的会话在什么时候终止。

以下是一个使用WEB客户机和服务器的范例。WEB客户机通过连接到一个支持SSL的服务器,启动一次SSL会话。支持SSL的典型WEB服务器在一个与标准HTTP请求(默认为端口80)不同的端口(默认为443)上接收SSL连接请求。当客户机连接到该端口上时,它将启动一次建立SSL会话的握手。当握手完成之后,通信内容被加密,并且执行消息完整性检查,直到SSL会话过期。SSL创建一个会话,在此期间,握手必须只发生过一次。

1)SSL握手步骤

步骤1:SSL客户机连接到SSL服务器,并要求服务器验证其自身的身份。

步骤2:服务器通过发送它的数字证书证明其身份。该交换还可以包括整个证书链,直到某个根证书权威机构(CA)。通过检查有效日期并确认证书包含有可信任CA的数字签名,来验证证书。

步骤3:服务器发出一个请求,对客户端的证书进行验证。但是,因为缺乏公钥体系结构,目前的大多数服务器不进行客户端认证。

步骤4:协商用于加密的消息加密算法和用于完整性检查的哈希函数。通常由客户机提供它支持的所有算法列表,然后由服务器选择功能最强大的加密算法。

步骤5:客户机和服务器通过下列步骤生成会话密钥:

(1)客户机生成一个随机数,并使用服务器的公钥(从服务器的证书中获得)对它加密,并发送到服务器上。

(2)服务器用更加随机的数据(客户机的密钥可用时则使用客户机密钥;否则以明文方式发送数据)响应。

(3)使用哈希函数,从随机数据生成密钥。

2)SSL协议的三个基本属性

SSL协议的优点是它提供了连接安全,具有三个基本属性:

(1)连接是私有的。在初始握手定义了一个密钥之后,将使用加密算法。对于数据加密使用了对称加密(例如DES和RC4)。

(2)可以使用非对称加密或公钥加密(例如RSA和DSS)来验证对等实体的身份。

(3)连接是可靠的。消息传输时使用一个密钥的MAC,包括了消息完整性检查。其中使用了安全哈希函数(例如SHA和MD5)来进行MAC计算。对于SSL的接受程度仅仅限于HTTP内。它在其他协议中已被表明可以使用,但还没有被广泛应用。

IETF正在定义一种新的协议,叫做“传输层安全(Transport Layer Security,TLS)”,它建立在Netscape所提出的SSL 3.0协议规范基础上。对于用于传输层安全性的标准协议,整个行业都在朝着TLS的方向发展。但是,在TLS和SSL 3.0之间存在着显著的差别(主要是因为它们所支持的加密算法不同),这样,TLS 1.0和SSL 3.0不能互操作。

3)SSH(安全外壳协议)

SSH是一种在不安全网络上用于安全远程登录和其他安全网络服务的协议。它提供了对安全远程登录、安全文件传输和安全TCP/IP与X-Window系统通信量进行转发的支持。它可以自动加密、认证并压缩所传输的数据。正在进行的定义SSH协议的工作确保SSH协议可以提供强健的安全性,防止密码分析和协议攻击,可以在没有全球密钥管理或证书基础设施的情况下工作得非常好,并且在可用时可以使用自己已有的证书基础设施(例如DNSSEC和X.509)。

SSH协议由三个主要组件组成:

(1)传输层协议,它提供服务器认证、保密性和完整性,并具有安全的转发保密性。有时,它还可能提供压缩功能。

(2)用户认证协议,它负责从服务器对客户机的身份认证。

(3)连接协议,它将加密通道多路复用组成几个逻辑通道。

SSH传输层是一种安全的低层传输协议。它提供了强健的加密、加密主机认证和完整性保护。SSH中的认证是基于主机的,这种协议不执行用户认证,可以在SSH的上层为用户认证设计一种高级协议。

这种协议被设计成简单而灵活,以允许参数协商并最小化来回传输的次数。密钥交互方法、公钥算法、对称加密算法、消息认证算法以及哈希算法等都需要协商。

数据完整性是通过在每个包中包括一个消息认证代码(MAC)来保护的,这个MAC是根据一个共享密钥、包序列号和包的内容计算得到的。

在UNIX、Windows和Macintosh系统上都可以找到SSH实现。它是一种为用户广为接受的协议,使用众所周知的建立良好的加密、完整性和公钥算法。

4)SOCKS协议

“套接字安全性”(Socket Security,SOCKS)是一种基于传输层的网络代理协议。它设计用于在TCP和UDP领域为客户机/服务器应用程序提供一个框架,以方便而安全的使用网络防火墙的服务。

SOCKS最初是由David和Michelle Koblas开发的,其代码在Internet上可以免费下载。从那以后经历了几次主要的修改,但该软件仍然可以免费下载。SOCKS版本4为基于TCP的客户机/服务器应用程序(包括TELNET、FTP,以及流行的信息发现协议如HTTP、WAIS和Gopher)提供了不安全的防火墙传输。SOCKS版本5在RFC1928中定义,它扩展了SOCKS版本4,包括了UDP;扩展了其框架,包括了对通用健壮的认证方案的提供;并扩展了寻址方案,包括了域名和IPv6地址。

当前存在一种提议,就是创建一种机制,通过防火墙来管理IP多点传送的入口和出口。这是通过对已有的SOCKS版本5协议定义扩展来完成的,它为单点传送TCP和UDP流量的用户级认证防火墙传输提供了一个框架。但是,因为SOCKS版本5中当前的UDP支持存在着可升级性问题以及其他缺陷(必须解决之后才能实现多点传送),这些扩展分两部分定义。

(1)基本级别UDP扩展

(2)多点传送UDP扩展

SOCKS是通过在应用程序中用特殊版本替代标准网络系统调用来工作的(这也是为什么SOCKS有时候也叫做应用程序级代理的原因)。这些新的系统调用在已知端口上(通常为1080/TCP)打开到一个SOCKS代理服务器(由用户在应用程序中配置,或在系统配置文件中指定)的连接。如果连接请求成功,则客户机进入一个使用认证方法的协商,用选定的方法认证,然后发送一个中继请求。SOCKS服务器评价该请求,并建立适当的连接或拒绝。当建立了与SOCKS服务器的连接之后,客户机应用程序把用户想要连接的机器名和端口号发送给服务器。由SOCKS服务器实际连接远程主机,然后透明地在客户机和远程主机之间来回移动数据。用户甚至都不知道SOCKS服务器位于该循环中。

使用SOCKS的困难在于,人们必须用SOCKS版本替代网络系统调用(这个过程通常称为对应用程序SOCKS化———SOCKS-ification或SOCKS-ifying)。幸运的是,大多数常用的网络应用程序(例如TELENT、FTP、finger和whois)都已经被SOCKS化,现在许多厂商把SOCKS支持包括在商业应用程序中。

1.2.13 TALI:传送适配层协议(TALI:Transport Adapter Layer Interface)

传送适配层(TALI)是一种信号网关接口,用来提供电路交换网络(SCN)与IP网络间的交互作用。网关是信号信息的中心,它不仅提供网络与网络间的信号传输,同时它也提供了其他功能如协议翻译、安全放映、信息路由选择以及在网络双方访问智能网络服务器。

TALI协议提供了基于TCP/IP的TCAP、ISUP及MTP信息传送,并支持SS7信号网络及IP网络内部的应用程序间的可靠通信。

此版本的TALI提供了三种SS7信号传输方式,并提供了基于TCP/IP的MTP、SCCP/TCAP、及ISUP的功能性。

其协议结构为(见表1-5):

表1-5 TALI协议结构

SYNC———4字节;在ASCII中,必须是(54 41 4C49)TALI。

OpCode———操作代码,如下所示:

帧类型

该Socket测试中的测试服务

允许该Socket Allo中的服务信息

禁止该Socket Proh中的服务信息

禁止服务信息Ack Proa

监控该Socket Moni中的Socket信息

监控Socket信息Ack Mona

SCCP服务信息SCCP

ISUP服务信息ISOT

MTP3服务信息MTP3

MTP原始MTPP

SCCP原始SCPP

Routing Key Registration Rkrg

Routing Key De-Registration Rkdr

特殊服务信息SPCL

Length———帧长。如果信息包含一个服务或监控Socket信息,那么帧长非0。

1.2.14 会话层RPC

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

1)会话层RPC:远程过程调用协议RPC

RPC:远程过程调用协议(RPC:Remote Procedure Call protocol)

远程过程调用(RPC)是一种从远程计算机程序上请求一个服务器,而不需要了解上层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,使得通信程序之间能传输信息数据。在ISO网络通信模式中RPC跨越了传输层和应用层。RPC使得生成应用程序包括分布式复用程序更加容易。

RPC使用的是客户机/服务器模式。请求程序就是一个客户机,而服务程序就是一个服务器。首先,调用过程发送一个调用信息到服务过程,然后等待应答信息。调用过程包括过程参数,应答信息包括过程结果。在服务器端,过程保持睡眠状态到调用信息的到达。当一个调用信息到达,服务器获得过程参数,计算结果,发送应答信息,然后等待下一个调用信息。最后,调用过程接收应答信息,获得过程结果,然后调用执行继续进行。

目前,有多种RPC模式和执行。最初由Sun微系统提出RFC。IETF ONC宪章重新修

订了Sun版本,使得ONC RPC协议成为IETF标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算环境(DCE)。

2)协议结构

远程过程调用(RPC)信息协议由两个不同结构组成:调用信息和答复信息。信息流程如图1-58所示:

图1-58 RPC信息流程

RPC调用信息:每条远程过程调用信息包括以下无符号整数字段,以独立识别远程过程:

·程序号(Program number)

·程序版本号(Program version number)

·过程号(Procedure number)

RPC调用信息主体形式如下:

RPC答复信息。RPC协议的答复信息的改变取决于网络服务器对调用信息是接收还是拒绝。答复信息请求包括区别以下情形的各种信息:

·RPC成功执行调用信息

·RPC支持的最低和最高版本号

·远程程序不可用

·远程程序所支持的最低和最高版本号

·请求的过程号不存在

1.2.15 DHCP:动态主机配置协议(DHCP:Dynamic Host Configuration Protocol)

动态主机配置协议(DHCP)是一种使网络管理员能够中心管理和自动分配IP网络地址的通信协议。IP网络中,每台连接Internet的设备都需要分配唯一的IP地址。当计算机接入到网络的不同位置时,DHCP使网络管理员能从中心监控和分配计算机的IP地址并自动发送其新的IP地址。

DHCP使IP地址可以租用。租用时间是不定的,主要取决于用户在某地连接Internet需要多久,这对于教育和其他用户频繁改变的环境是很实用的。通过租期,DHCP能够自动地重新配置网络,这样,网络可支持的计算机可以比IP地址要多。

DHCP支持计算机的静态地址,其中包括永久性IP地址的Web服务器。

DHCP是对网络IP管理协议BOOTP的扩展。目前两种配置管理协议都得到了普遍使用,其中DHCP更为先进。一般的操作系统包括Windows NT/2000,都装有DHCP服务器。每个DHCP或BOOTP客户机是一个程序裝在每台计算机中,用作此机的IP配置操作。

1)协议结构(见表1-6)

表1-6 DHCP协议结构

1.2.16 NetBIOS协议详解及网上邻居工作原理

NetBIOS(网络基本输入/输出系统)最初由IBM、Sytek作为API开发,使用户软件能使用局域网的资源。自从诞生,NetBIOS成为许多其他网络应用程序的基础。严格意义上,NetBIOS是接入网络服务的接口标准。

NetBIOS原来是为IBM局域网设计的,是通过特定硬件来和网络操作系统连接的软件层。NetBIOS经扩展,允许程序使用NetBIOS接口来操作IBM令牌环结构。NetBIOS已被公认为工业标准,通常参照NetBIOS-compatible LANs。

它提供给网络程序一套方法,相互通信及传输数据。基本上,NetBIOS允许程序和网络会话,它的目的是把程序和任何类型的硬件属性分开。它也使软件开发员可以免除以下负担:开发网络错误修复,低层信息寻址和路由。使用NetBIOS接口,可以为软件开发员做许多工作。

NetBIOS使程序和局域网操作能力之间的接口标准化。有它们,可以将程序细化到为OSI模型的哪一层所写,使程序能移植到其他网络上。在NetBIOS局域网环境下,计算机通过名字被系统知道。网络中每台计算机都有通过不同方法编制的永久性名称。这些名称将在下面做进一步讨论。

通过使用NetBIOS的数据报或广播方式,在NetBIOS局域网上的PC机建立会话彼此联络。会话允许更多的信息被传送,探测错误和纠正。通信是在一对一的基础上的,数据报或广播方式允许一台计算机和多台其他的计算机同时通信,但信息大小受限。使用数据报或广播方式没有探测错误和纠正,然而,数据报通信可以不必建立一个会话。

在这种环境下所有的通信以一种称为“网络控制块”的格式提交给NetBIOS。内存中这些块的分配依赖于用户程序。这些“网络控制块”分配到域中,分别为输入/输出保留。

在当今的环境中,NetBIOS是使用很普遍的协议。以太网,令牌环网,IBM PC网都支持NetBIOS。在它原始版本中,它仅作为程序和网络适配器的接口。从那以后,传输类功能加入NetBIOS,使它功能日益增多。

在NetBIOS里,面向连接(TCP)和无连接(UDP)通信均支持。它支持广播和复播,支持三个分开的服务:命名,会话,数据报。

1)NetBIOS名称

NetBIOS名称用来在网络上鉴别资源。程序用这些名称开始和结束会话。你能用多个程序配置一台单独的机器,每个程序都有独特的NetBIOS名称。每台支持应用的PC机也有用户定义或通过内部方法获得的NetBIOS站名。

NetBIOS能包含至多16个阿尔法数字字母。在整个资源路由网络里,字母的组合必须独特。在一台使用NetBIOS的PC机在网络上能完全工作起来之前,PC必须先登记NetBIOS名称。

一台机器开机,机器在做什么呢?

当客户端A活跃时,客户端A广播它的名称。当它成功广播自己,并没有其他人和它重名,客户端就登记成功。登记过程如下:

(1)在登录上,客户端A在所有地方广播它自己和它的NetBIOS信息6到10次。确保其他网络成员收到信息。如果有机器没有收到,那该机的网上邻居里这个客户端A就隐身了。

(2)如果有另一客户端B已用此名,另一客户端B发布它自己的广播,包括它正在使用的名字。请求登录的客户端A停止所有登记的企图。

(3)如无其他客户端反对登记,请求登录的客户端A完成登记过程。如果有可用的名称服务器,那么名称服务器会在它的数据库里记录一次,某机的名称是A,IP地址是XXX.XXX.XXX.XXX

(4)当A机正常关机时,重新广播释放刚才注册的这个名字,同一网段上的计算机收到后把这个名字在网上邻居里注销。如果是非正常关机,如果网上有Wins服务器的话,客户机非正常关机一定时间以后,Wins也会注销这个名字。

在机器数量较多的网络里,广播包是很容易出问题的,这就是网上邻居常常找不到人的原因之一,并且广播不能穿过路由,所以不同子网的机器在网上邻居里是看不见的。如果有Wins服务器存在而且节点类型不是B,那还稍好一点,不广播了。

即使有些机器没有收到注册请求,也就是网上邻居里看不看见没什么大关系,只要A不恰好和B同名,如果有WINS服务那就更好了,你和他同名也没关系,WINS会更新纪录或拒绝A登记这个名字。当用户试图和A机进行基于NetBios的通信,比如传只文件什么的,那首先会查询NetBios名字,如果找到就开始通信。

在NetBIOS环境中有两类名称:独特的和集合的。独特的名称必须在网络中独特。集合的名称不必在网络中独特,所有同名过程属于同一集合。每个NetBIOS节点包含一张该节点当前使用名称的表。

NetBIOS命名允许16个字母用在NetBIOS名称中。而微软只允许15个字母用在NetBIOS名称中,第十六个为NetBIOS后缀。NetBIOS后缀用在Microsoft Networking软件中,区别安装的功能,登记的设备和服务。

注意:SMB和NBT(在TCP/IP上的NetBIOS)紧密的工作在一起,且都使用137,138,139端口。137端口是NetBIOS名称UDP,138端口是NetBIOS数据报UDP,139端口是NetBIOS会话TCP。

为了快速浏览一台服务器上登记的NetBIOS名称和服务,用以下命令:

·nbstat-a[ipaddress]

·nbstat-a[host]

2)NetBIOS会话

NetBIOS会话服务提供给用户程序一种面向连接、可靠的、完全双重的信息服务。NetBIOS要求一个是客户端程序,一个是服务器端程序。NetBIOS会话的建立需要双方预定的合作。一个程序必须先发出listen命令,其他程序才可以发出call命令。listen命令参考在它的NetBIOS名称表中的名称(或Windows服务器中的),也参考用于作为会话另一端的远端程序的名称。如果聆听者不在聆听,call命令将不会成功。如果call成功,各程序将接到会话ID,以作为会话建立的确认。

Send和receive命令操作传输数据。在会话最后,各程序将执行挂起命令。没有为会话服务的实际流控制,因为假定局域网足够快,能够传输需要的数据。

数据报可以发送到特定的地点,或组中所有成员,或广播到整个局域网。与其他数据服务相比,NetBIOS数据报是无连接,非可靠的。Send_Datagram命令需要调用者设定目的名。如果目的名是组名,组中每个成员都收到数据。Receive_Datagram命令的调用者必须确定它接收数据的本地名。除了实际数据外,Receive_Datagram也返回发送者的名称。如果NetBIOS收到数据,但却没有Receive_Datagram命令在等待,数据将被丢弃。

Send_Broadcast_Datagram命令发送信息给本地网上每个NetBIOS系统。当NetBIOS节点收到广播数据,发布Receive_Broadcast_Datagram命令的每个进程都收到数据。如果当广播数据被收到时,没有这些命令在运行,数据将被丢弃。

NetBIOS使应用程序能和另一个设备建立会话,使网络转发器和处理协议处理收到、发送到另一台机器的请求。NetBIOS实际上不操作数据。NetBIOS定义规定了用来到达这些服务的协议的网络接口,而非协议本身。历史上,NetBIOS曾与叫做NetBEUI的协议(网络扩展用户接口)捆绑。接口和协议的结合有时引起混淆,但它们是不同的。

网络协议为定位、连接到网络上特定的服务提供至少一种方法。这通常由将节点和服务名转化为网络地址(名称解析)完成。在连接用TCP/IP建立前,NetBIOS服务名必须解析成IP地址。大多数NetBIOS的TCP/IP实现,用广播或LMHOSTS文件完成名称地址的解析。在Microsoft环境中,用户最可能使用叫做WINS的NetBIOS名称服务器。

3)NetBEUI解释

NetBEUI是网络操作系统使用的NetBIOS协议的加强版本。它规范了在NetBIOS中未标准化的传输帧,还加了额外的功能。传输层驱动器经常被Microsoft LAN Manager(微软局域网操作器)使用。NetBEUI执行OSI LLC 2协议。NetBEUI是原始的PC网络协议和IBM为LanManager(局域网操作器)服务器设计的接口。本协议稍后被微软采用作为它们的网络产品的标准。它规定了高层软件通过NetBIOS帧协议发送、接收信息的方法。本协议运行在标准IEEE802.2数据链协议层上。

4)NetBIOS范围

NetBIOS范围ID为建立在TCP/IP(叫做NBT)模块上的NetBIOS提供额外的命名服务。NetBIOS范围ID的主要目的是隔离单个网络上的NetBIOS通信和那些有相同NetBIOS范围ID的节点。NetBIOS范围ID是附加在NetBIOS名称上的字符串。两个主机上的NetBIOS范围ID必须匹配,否则两主机无法通信。NetBIOS范围ID允许计算机使用相同的计算机名,不同的范围ID。范围ID是NetBIOS名称的一部分,使名称唯一。NETBIOS是不可路由的服务,如果要实现不同网段的主机名服务,需要设置WINS来解析

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈