深度剖析WinPcap之(二)——网络分析与嗅探的基础知识(3)

来源:互联网 发布:淘宝网无法购物 编辑:程序博客网 时间:2024/06/05 19:09

本文转自http://eslxf.blog.51cto.com/918801/201356

 

1.3      网络分析与嗅探是如何工作的?

本节主要提供嗅探如何发生的简要基础,并给出关于网络和协议如何工作的背景信息。当然还有许多其它优秀的资源可以用,比如Richard Stevens“TCP/IP详解,1–3.”就是其中之一。

1.3.1  以太网简介Explaining Ethernet

以太网是用来使计算机能够通信的最常用的协议标准。一个协议就像说一个特定的语言。以太网基于共享媒体的原则构建,在局域网段内所有的计算机共享相同的网络流量。
它就是众所周知的一个广播协议,因为在同网段内将发送数据到所有的其它计算机上。这信息被分成易管理的数据块,称之为数据包,而且每个数据有一个头包含目的计算机与源计算机的地址。即使该信息发送到一个网段上所有的计算机,也只有与目标地址匹配的计算机会产生回应。网络上的其它所有计算机仍然可收到该数据包,但是如果不是它们想接收的就丢弃数据包,除非一台计算机上正在运行一个嗅探器。
当运行一个嗅探器的时候,数据包捕获驱动器把计算机NIC设置为混杂模式。这意味着,嗅探的计算机能在该网段上见到所有的网络流量,而不管数据包发送给谁。通常计算机运行在非混杂模式,只能监听指派给自己的信息。然而,当一个NIC在混杂模式下时,就能见到它全部邻居的会话。
以太网网址,也就是媒体访问控制(MAC)地址与硬件地址。因为许多计算机可能共享一个以太网段,每个一定要有唯一的一个标识符并硬件编码到 NIC之上。一个MAC地址是一个48位的数,也被规定为12个十六进制的数。该数值被分为两部分,第一部分的24位标识以太网卡的厂商,第二部分的24位由厂商分配的一个序列号组成。Windows NT, Windows 2000, Windows XP与 Windows 2003 操作系统中都可在命令行下输入ipconfig /all查看MAC地址MAC地址将会列在“Physical Address”字段中。

1.3.2  理解开放系统互联(OSI)模型

国际标准组织(ISO)在80年代早期开发的开放系统互联(OSI)模型,描述了网络协议和组件在一起如何工作。OSI把网络功能分为七层,每个层表现一群相关的规格、功能和活动(见图2-4)。虽然是很复杂,但这些术语被广泛地用在网络、系统和开发社区中。
2-3显示了OSI模型的七层。
clip_image002
图2-3 OSI模型的七层.

v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} st1/:*{behavior:url(#ieooui) }
在下面的各小节中分别简要描述了OSI模型的七个层。

1.3.2.1       第一层 物理层

<!--[if !vml]--><!--[endif]-->OSI模型的第一层为物理层,该层规范了传输数据比特的传输媒体(如网线)的电气与机械特性它包括发送与接收载体上的数据流,无论载体使用电的(网线)、光的(光纤)、无线的、红外的、或激光(无限)的信号。物理层的规范包括:
Ø         电压变化
Ø         The timing of voltage changes
Ø         数据率
Ø         最大传输距离
Ø         连接传输媒体的物理连接器(插头)
Ø         网络的拓扑与部署
许多复杂的问题在物理层讨论,包括数字的与模拟的信号,基带与宽带信号,无论数据同步或异步传输,与信号如何被分配到信道上(多路复用)。
物理层上的设备有NIC上的收发器、中继器、basic hubs与连接器等。物理层的数据由01的比特组成,其通过光脉冲或电压变化脉冲的状态(通常on代表1off代表0)表示。这些比特位如何安排与管理,是OSI模型第二层数据链路层的功能。

1.3.2.2  第二层:数据链路层

OSI模型的第二层为数据链路层,该层负责维护两台电脑之间的数据链接,典型的叫法为主机或节点。它也定义与管理接收与发送的数据包中比特的顺序。
帧包含通过一个有组织的方式所安排的数据,其提供一个顺序与一致的方法在媒体间发送数据比特。如果没有这样的控制,数据将会以随机大小与配置发送,这样的数据在另一端(接收端)是无法解码的。
数据链路层管理物理地址与数据包的同步。也对物理层的流量控制与错误提示负责。流量控制是管理发送与接收数据的时间,以至于不超过物理连接的容量(速度、内存等等)。
既然物理层只负责物理的搬运数据到或离开网络媒体,数据链路层也接收与管理与数据包物理递送相关的错误信息。
该层所涉及的网络设备有两层交换机与网桥。一个两层交换机通过只发送数据到与目标计算机相关的端口来降低网络拥塞,而不是发送到交换机的所有端口。网桥提供一种方式把网络划分为两部分并过滤流量,通过建立一个定义哪台计算机在网桥的哪一边的表,基于它们的MAC地址。
数据链路层分为两个子层:逻辑链接控制(LLC)子层与MAC子层。1.3.2.2.1     MAC子层
MAC子层提供对访问传输媒体的控制。它负责把数据包从一个NIC移动到另一个,在一个共享传送媒体诸如以太网线或光纤线之间。物理地址是MAC子层的地址。每一个NIC有一个唯一的MAC地址(也叫物理地址),其标识网络上特定的NIC
一个NICMAC地址通常烧录到一个只读内存(ROM)芯片中。每一个网卡的制造商提供一个唯一的MAC地址集,所以从理论上说,每个被制造的NIC
有唯一的MAC地址。为了避免混乱,MAC地址被永久的烧录到NIC的内存中。
注意 在以太网的NIC中,物理或MAC地址(也叫硬件地址)被表示为12个十六进制的数字,每两个一组用:分隔开(比如12:3A:4D:66:3A:1C)。开始的三组为制造商
编号,后三组代表该制造商制造的唯一NIC的编号。
一些方法使用MAC,用来分配网络访问的计算机,防止它们在同一时间传输并导致数据冲突。通常的MAC方法包括以太网所使用的载波监听多点接入/冲突检测(CSMA/CD)方法,AppleTalk网络使用的载波监听多点接入/冲突避免(CSMA/CA)方法,令牌环网与光纤分布式数据接口(FDDI)网络使用的令牌传递。
1.3.2.2.2  逻辑链接控制(LLC)子层
LLC子层为数据链路层提供逻辑;这样它控制数据链路层的同步、流量控制与错误检查功能。
该层管理面向连接的传输,然而,该层也能提供非连接的服务。非连接的操作众所周知的ILLC,而IILLC既能操作非连接的操作也能与操纵面向连接的操作。
面向连接的通信,每一个LLC帧发送都被确认。LLC子层在接收结束时跟上它接收的LLC帧(也叫作协议数据单元,PDU)。因此,如果它检测到一个帧在传输时丢失了,它能够给发送的计算机发送一个请求 重新开始该传输,从没有到达的PDU开始。
LLC子层位于MAC子层的上面,在上层与在MAC子层的协议(如以太网、令牌环等等)之间扮演着一个联络人的角色。

1.3.2.3  第三层:网络层

接下来的一层为网络层,在这儿数据包被顺序化,同时赋予逻辑地址。逻辑地址不是永久的,是通过软件赋予的地址。TCP/IP协议在互联网上使用的IP地址,就是逻辑地址的使用实例。
网络层也负责在点或节点之间创建一个虚拟链路(比如,一个逻辑连接,不是一个物理连接)。一个节点是一个具有MAC地址的设备,典型的包含计算机、打印机或路由器。
这一层也负责路由,三层交换机,与推进(forwarding)数据包。路由是指从一个网络或子网推进数据包到另外一个。如果没有路由器,计算机只能与同一网段中的计算机通信。路由对互联网是一个关键,同时是网络层的最重要的责任。
最后网络层提供另外的流量控制与差错控制层。与前面提及的一样,从这儿开始实现OSI模型架构的基本方法与软件密切关联而不再是硬件。
在该层操作的设备是路由器与三层交换机。

1.3.2.4  第四层:运输层

OSI模型的第四层为运输层,负责从一个节点传输数据到另一个节点。它在节点间提供透明的数据传输,并管理端到端的流量控制、错误检测与错误恢复。
传输层协议在不同计算机的特定端口之间发起联系,并设置虚拟的链路。每个主机的传输协议确认 应用程序发送的数据是被授权访问该网络与两个端点都准备好开始数据传输了。当该同步完成之后 ,数据被发送。当数据正在被传送时,每个主机上的传输协议监控数据流并监视传输错误。如果传输检测到错误,传输协议提供错误恢复。
对网络通信而言,传输层提供的功能非常重要。正像数据链路层提供的底层可靠性与面向连接或非连接的通信,传输层作了同样的事情,只不过是在更高的层次上。
面向连接的传输控制协议(TCP) 与面向非连接的用户数据包协议(UDP),这两种最常见的协议都属于传输层。
传输层也管理端口的逻辑地址。一台计算机上可能同时运行几个网络应用程序。决定所接收的数据属于哪个应用程序的机制就是端口的功能。
最后,传输层处理域名解析,诸如DNS就时处理该问题的一种方法。

1.3.2.5 第五层:会话层

在传输层建立一个虚拟连接后,在两个不同计算机上的进程之间建立一个通信会话。会话层(第五层)负责建立、监视与终止会话,使用传输层建立的虚拟链路。
会话层也负责给数据包添加协议头信息,指明一个消息的起点与终点。一旦该头信息添加到数据包上,会话层在发送者会话层与接收着会话层之间执行同步。利用ACK帮助协调会话层的数据传输。
会话层的另一个重要功能是控制在一个会话中的通信是否采用全双工或半双工通讯方式。
传输层在两台机器之间建立一个连接,而会话层在两个进程之间建立一个连接。一个应用程序可同时运行多个进程来完成应用的工作。
传输层在两台机器之间建立连接后,会话层在一台计算机上的一个进程与另一台计算机上的一个进程之间设立连接。

1.3.2.6       第六层:表示层

数据传输是表示层(第六层)的基本活动。当数据从发送者到接收者时,它在表示层上转换(比如,发送者的应用程序把数据向下传送到表示层,在那儿数据转换为一种通用格式)。当数据在另一端接收时,表示层把它从通用格式转回到应用程序使用的格式。协议转换在此处发生。
表示层也是网关服务操作的地方。网关是使用不同平台或应用的网络之间的连接点。网关通常通过软件实现。软件重定向器也在该层操作。
这儿也是数据压缩发生的地方,其最小化网络媒体所需传送到接收器的比特数量。数据加密与解密也在表示层进行。

1.3.2.7          第七层:应用层

应用层是用户应用程序与网络交互的位置。不要把网络模型与应用程序本身混淆了。应用程序的进程是在一个用户应用程序中开始的。接着进程所创建的数据被递交给网络软件的应用层。
在该层所发生的所有事情都是特定于应用的。
OSI模型是通用的,可被用来解释所有的网络协议。为此目的,各种协议簇经常被映射到OSI模型上。对OSI模型深入的理解可帮助网络分析、比较与问题解答。然而,重要的是记住并不是所有的协议都能很好的映射到OSI模型上的(比如TCP/IP被设计为映射到美国国防部(DoD)模型)
TCP/IP协议簇在OSI模型之前就已经开发了。因此TCP/IP协议簇的层次无法与OSI模型准确的对应。TCP/IP协议簇由5层组成:物理层、数据链路层、网络层、运输层和应用层。前四层与OSI模型的前四层对应,提供物理标准、网络接口、网际互连、以及传输功能。然而OSI模型的最高三层在TCP/IP中则用叫做应用层的来表示。

原创粉丝点击