网络协议与分析.docx
《网络协议与分析.docx》由会员分享,可在线阅读,更多相关《网络协议与分析.docx(14页珍藏版)》请在冰豆网上搜索。
网络协议与分析
第三章网络协议与分析
一、项目提出
张先生在企业的网络中心工作,负责整个企业网络的管理和维护,作为网络管理员需要时刻了解企业网络流量情况,并对网络流量进行监控,以便及时发现并解决可能出现的网络问题。
最近有多位企业员工反映,近期访问外网的速度时快时慢,甚至不能访问外网,请求网络中心给予解决。
二、项目分析
从各位员工反映的上网情况来看,网速变慢是最近发生的事情,近期企业内部没有进行网络设备的调整,网络环境没有发生变化,网络应用也没有大的变化,这应该是网络中有异常流量造成的。
张先生经过调查发现,网络中存在以下网络故障现象:
①某部门的所有计算机配置相同,且处于同一个网段,唯独某一台计算机无法上网,而且网络、网络接口等都正常,该计算机重新启动后网络恢复正常,过一段时间后,网络又瘫痪了。
②网络中的计算机逐台掉线,最后导致全部计算机无法上网。
③某计算机上网时突然掉线,一会又恢复了,但恢复后上网一直很慢,而且在与局域网内的其他计算机共享文件时速度也变慢。
④网络中用户上不了网或者网速很慢。
张先生用网络监听工具SnifferPro来嗅探网络中的数据包,发现网络中存在大量的ARP数据包,而且计算机ARP缓存表中的网关MAC地址已被修改,导致网络变慢甚至无法上网,这就是典型的ARP欺骗攻击。
在计算机中利用“ARP–s网关IP网关MAC”命令静态设置正确的网关MAC地址,在网关(一般是路由器)中对局域网内的主机IP地址与其相应MAC地址也进行静态绑定,上网恢复正常。
三、计算机网络体系结构
(一)OSI参考模型
在计算机网络诞生之初,每个计算机厂商都有一套自己的网络体系结构,之间互不相容。
为此,国际标准化组织(ISO)在1979年建立了一个分委员会来专门研究一种用于开放系统互联的体系结构,即OSI。
“开放”这个词表示:
只要遵循OSI标准,一个系统可以和位于世界上任何地方的、也遵循OSI标准的其他任何系统进行连接。
这个分委员会提出了开放系统互联参考模型,即OSI参考模型(OSI/RM),它定义了异类系统互联的标准框架。
OSI/RM模型分为7层,从下往上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
计算机网络体系结构是计算机网络层次模型和各层协议的集合。
计算机网络体系结构是抽象的,而实现是具体的,是能够运行的一些硬件和软件,多采用层次结构。
划分层次的原则是:
①网中各结点都有相同的层次。
②不同结点的同等层具有相同的功能。
③同一结点内相邻层之间通过接口通信。
④每一层使用下层提供的服务,并向其上层提供服务。
⑤不同结点的同等层按照协议实现对等层之间的通信。
1、物理层。
这是整个OSI参考模型的最低层,它的任务就是提供网络的物理连接。
所以,物理层是建立在物理介质上的(而不是逻辑上的协议和会话),它提供的是机械和电气接口,其作用是使原始的数据比特(Bit)流能在物理媒体上传输。
2、数据链路层。
数据链路层分为介质访问控制(MAC)子层和逻辑链路控制(LLC)子层,在物理层提供比特流传输服务的基础上,传送以帧为单位的数据。
数据链路层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路改造成对网络层来说无差错的数据链路。
数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲区溢出及线路阻塞等问题。
3、网络层。
网络层负责由一个站到另一个站间的路径选择,它解决的是网络与网络之间,即网际的通信问题,而不是同一网段内部的事。
网络层的主要功能是提供路由,即选择到达目的主机的最佳路径,并沿该路径传送数据包(分组)。
此外,网络层还具有流量控制和拥塞控制的能力。
4、传输层。
传输层负责提供两站之间数据的传送。
当两个站已确定建立了联系后,传输层即负责监督,以确保数据能正确无误的传送,提供可靠的端到端数据传输。
5、会话层。
会话层主要负责控制每一站究竟什么时间可以传送与接收数据。
例如,如果有许多使用者同时进行传送与接收消息,此时会话层的任务就要去决定是要接收消息或是传送消息,才不会有“碰撞”的情况发生。
6、表示层。
表示层负责将数据转换成使用者可以看得懂的有意义的内容,包括格式转换、数据加密与解密、数据压缩与恢复等功能。
7、应用层。
应用层负责网络中应用程序与网络操作系统间的联系,包括建立与结束使用者之间的联系,监督并管理相互连接起来的应用系统以及系统所用的各种资源。
数据在网络中传送时,在发送方和接收方有一个封装和解封装的过程。
(二)TCP/IP参考模型
ARPAnet最初开发的网络协议使用在通信可靠性较差的通信子网中,且出现了不少问题,这就导致了新的网络协议TCP/IP的产生。
虽然TCP/IP协议不是OSI标准,但它是目前最流行的商业化的网络协议,并被公认为当前的工业标准或“事实上的标准”。
TCP/IP协议具有以下特点:
①开放的协议标准,独立于特定的计算机硬件和操作系统。
②独立于特定的网络硬件,可以运行在局域网、广域网中,更适用于互联网。
③统一的地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址。
④标准化的高层协议,可提供多种可靠的服务。
传输层实现应用进程间的端到端通信,主要包括两个协议:
TCP协议和UDP协议。
TCP协议是一种可靠的面向连接的协议,允许将一台主机的字节流无差错地传送到目的主机。
UDP协议是不可靠的无连接协议,不要求分组顺序到达目的地。
应用层的主要协议有:
域名系统(DNS)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、邮局协议(POP)、远程登录协议(TELNET)、文件传输协议(FTP)、网络文件协议(NFS)等。
四、以太网的帧格式
(一)Ethernet地址
为了标识以太网上的每台主机,需要给每台主机上的网络适配器(网卡)分配一个全球唯一的通信地址,即Ethernet地址,或称为网卡的物理地址、MAC地址。
IEEE负责为网络适配器制造厂商分配Ethernet地址块,各厂商为自己生产的每块网络适配器分配一个全球唯一的Ethernet地址。
Ethernet地址长度为48比特,共6个字节,如00-0D-88-47-58-2C,其中,前3个字节为IEEE分配给厂商的厂商代码(00-0D-88),后3个字节为厂商自己设置的网络适配器编号(47-58-2C)。
MAC广播地址为FF-FF-FF-FF-FF-FF。
如果MAC地址(二进制)的第8位是1,则表示该MAC地址是组播地址,如01-00-5E-37-55-4D。
(二)以太网的帧格式
以太网的帧是数据链路层的封装形式,网络层的数据包被加上帧头和帧尾成为可以被数据链路层识别的数据帧(成帧)。
虽然帧头和帧尾所用的字节数是固定不变的,但依被封装的数据包大小的不同,以太网的帧长度也在变化,其范围是64~1518字节(不算8字节的前导字)。
以太网的帧格式有多种,在每种格式的帧开始处都有64比特(8字节)的前导字符,其中前7个字节为前同步码(7个10101010),第8个字节为帧起始标志(10101011)。
下图所示为EthernetⅡ的帧格式(未包括前导字符)。
EthernetⅡ类型以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。
其中前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。
接下来的2个字节标识出以太网帧所携带的上层数据类型,如十六进制数0x0800代表IP协议数据,如十六进制数0x0806代表ARP协议数据等。
在不定长的数据字段后是4个字节的帧校验序列(FrameCheckSequence,FCS),采用32位CRC循环冗余校验,对从“目的MAC地址”字段到“数据”字段的数据进行校验。
五、网络层协议格式
网络层的协议主要有IP协议、ARP协议和ICMP协议。
(一)IP数据报格式
IP数据报分为两大部分:
报文头和数据区,其中报文头仅仅是正确传输高层(即传输层)数据而增加的控制信息,数据区包括高层需要传输的数据。
1、版本。
占4位,指IP协议版本号(一般是4,即IPv4),不同IP版本规定的数据格式不同。
2、报头长度。
占4位,指数据报报头的长度。
以32位(即4个字节)为单位,当报头中无可选项时,报头的基本长度为5(即20个字节)。
3、服务类型。
占8位,包括一个3位长度的优先级,4个标志位D(延迟)、T(吞吐量)、R(可靠性)和C(代价),另外一位未用。
4、总长度。
占16位,数据报的总长度,包括头部和数据,以字节为单位。
5、标识。
占16位,源主机赋予IP数据报的标识符,目的主机利用此标识判断此分片属于哪个数据报,以便重组。
当IP分组在网上传输时,可能要跨越多个网络,但每个网络都规定了一个帧最多携带的数据量(此限制称为最大传输单元MTU),当长度超过MTU时,就需要将数据分成若干个较小的部分(分片),然后独立发送。
目的主机收到分片后的数据报后,对分片再重新组装(重组)。
6、标志。
占3位,告诉目的主机该数据报是否已经分片,是否是最后的分片。
7、片偏移。
占13位,本片数据在初始IP数据报中的位置,以8字节为单位。
8、生存时间(TTL)。
占8位,设计一个计数器,当计数器值为0时,数据报被删除,避免循环发送。
9、协议类型。
占8位,指示数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程,如TCP(06)、UDP(17)、ICMP(01)等。
10、首部校验和。
占16位,只校验数据报的报头,不包括数据部分。
11、IP地址。
各占32位的源IP地址和目的IP地址分别表示数据报发送者和接收者的IP地址,在整个数据报传输过程中,此两字段的值一直保持不变。
12、可选字段(选项)。
主要用于控制和测试两大目的。
既然是选项,用户可以使用IP选项也可以不使用选项,但实现IP协议的设备必须能处理IP选项。
在使用选项的过程中,如果造成IP数据报的报头不是32位的整数倍,这时需要使用“填充”字段凑齐。
IP选项主要有以下3个选项:
①源路由。
指IP数据报穿越互联网所经过的路径是由源主机指定。
包括严格路由选项和松散路由选项。
严格路由选项规定IP数据报要经过路径上的每一个路由器,相邻的路由器之间不能有中间路由器,并经过的路由器的顺序不能改变。
松散路由选项给出数据报必须要经过的路由器列表,并且要求按照列表中的顺序前进,但是,在途中也允许经过其他的路由器。
②记录路由。
记录IP数据报从源主机到目的主机所经过的路径上各个路由器的IP地址,用于测试网络中路由器的路由配置是否正确。
③时间戳。
记录IP数据报经过每一个路由器时的时间(以ms为单位)。
(二)ARP数据报格式
利用ARP(AddressResolutionProtocol,地址解析协议)就可以由IP地址得知其物理地址(MAC地址)。
以太网协议规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目的主机的MAC地址。
而在TCP/IP协议中,网络层和传输层只关心目的主机的IP地址,这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到的上层IP协议提供的数据中,只包含目的主机的IP地址。
于是需要一种方法,根据目的主机的IP地址获得其MAC地址,这就是ARP协议要做的事情。
所谓地址解析(AddressResolution),就是主机在发送数据帧前将目的IP地址转换成目的主机的MAC地址的过程。
另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。
所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。
于是,此后发送主机发往目的主机的所有帧都将发往该路由器,通过它向外发送,这种情况称为ARP代理(ARPProxy)。
1、ARP的工作原理
在每台安装有TCP/IP协议的计算机中都有一个ARP缓存表,表中的IP地址与MAC地址是一一对应的。
下面以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例说明ARP的工作原理。
①当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目的主机IP地址。
②如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面,就可以发送了。
③如果在ARP缓存表中没有找到目的IP地址,主机A就会在网络上发送一个广播:
“我是192.168.1.5,我的MAC地址是00-aa-00-66-d8-13,请问IP地址为192.168.1.1的MAC地址是什么?
”
④网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:
“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。
⑤这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。
⑥主机A和B还同时都更新了自己的ARP缓存表(因为A在询问的时候把自己的IP和MAC地址一起告诉了B),下次A再向主机B或者B向A发送信息时,直接从各自的ARP缓存表里查找就可以了。
⑦ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(Windows系统这个时间为2min,而Cisco路由器的这个时间为5min)如果表中的某一行内容(IP地址与MAC地址的映射关系)没有被使用过,该行内容就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
2、ARP数据报格式
①硬件类型:
占2字节,定义ARP实现在何种类型的网络上,以太网的硬件类型值为0x0001。
②协议类型:
占2字节,定义使用ARP的协议类型,0x0800表示IPv4。
③硬件地址长度:
占1字节,以字节为单位定义物理地址的长度,以太网为6。
④协议地址长度:
占1字节,以字节为单位定义协议地址的长度,IPv4为4。
⑤操作类型:
占2字节,定义报文类型,1为ARP请求,2为ARP应答,3为RARP请求,4为RARP应答。
⑥发送方硬件地址:
发送方的MAC地址,占6字节。
⑦发送方协议地址:
发送方的IP地址,占4字节,RARP请求中不填此字段。
⑧目的硬件地址:
接收方的MAC地址,占6字节,ARP请求中不填此字段(待解析)。
⑨目的协议地址:
接收方的IP地址,占4字节。
ARP数据报的总长度为28字节。
(三)ICMP数据报格式
在任何网络体系结构中,控制功能是必不可少的。
网络层使用的控制协议是网际控制报文协议ICMP(InternetControlMessageProtocol)。
ICMP不仅用于传输控制报文,而且还用于传输差错报文。
实际上,ICMP报文是作为IP数据报的数据部分而传输的。
ICMP报文的格式如下图所示。
当ping一台主机想看它是否运行时,就会产生一条ICMP信息,目的主机将用它自己的ICMP信息对ping请求做出回应。
六、传输层协议格式
传输层的协议有TCP协议和UDP协议。
(一)TCP数据报格式
1、源端口号和目的端口号:
各占16位,标识发送端和接收端的应用进程。
这两个值加上IP首部中的源IP地址和目的IP地址,唯一地确定了一个连接。
1024以下的端口号被称为公认端口(Well-KnownPort),它们被保留用于一些标准的服务。
2、序号:
占32位,所发送的消息的第一字节的序号,用以标识从TCP发送端和TCP接收端发送的数据字节流。
3、确认号:
占32位,期望收到对方的下一个消息第一字节的序号。
为确认的一端所期望接收的下一个序号。
只有在“标识”字段中的ACK位设置为1时,此确认号才有效。
4、首部长度:
占4位,以32位为计算单位的TCP报文段首部的长度。
5、保留:
占6位,为将来的应用而保留,目前置为“0”。
6、标识:
占6位,有6个标识位(以下是设置为1时的意义,为0时相反):
①紧急位(URG):
紧急指针有效。
②确认位(ACK):
确认号有效。
③急迫位(PSH):
接收方收到数据后,立即送往应用程序。
④复位位(RST):
复位由于主机崩溃或其他原因而出现的错误的连接。
⑤同步位(SYN):
SYN=1,ACK=0表示连接请求消息,SYN=1,ACK=1表示同意建立连接消息。
⑥终止位(FIN):
表示数据已发送完毕,要求释放连接。
7、窗口大小:
占16位,滑动窗口协议中的窗口大小。
8、校验和:
占16位,对TCP报文段首部和TCP数据部分的校验。
9、紧急指针:
占16位,当前序号到紧急数据位置的偏移量。
10、选项:
用于提供一种增加额外设置的方法,如连接建立时,双方说明最大的负载能力。
11、填充:
当“选项”字段长度不足32位时,需要加以填充。
12、数据:
来自高层(即应用层)的协议数据。
(二)UDP数据报格式
1、源端口号和目的端口号:
标识发送端和接收端的应用进程。
2、报文长度:
包括UDP报头和数据在内的报文长度值,以字节为单位,最小为8。
3、校验和:
计算对象包括伪协议头、UDP报头和数据。
校验和为可选字段,如果该字段设置为0,则表示发送者没有为该UDP数据报提供校验和。
伪协议头主要包括了源IP地址、目的IP地址、协议类型等来自IP报头的字段和UDP报文长度,对其进行校验主要用于检验UDP数据报是否正确传送到了目的地。
七、三次握手机制
八、ARP欺骗攻击
(一)ARP欺骗攻击的原理
假设主机A曾经和主机B进行过通信,主机A就会在ARP缓存表中记录下主机B的IP地址和其对应的MAC地址。
一般地,ARP缓存表都有更新机制,当有主机通知其他主机其MAC地址更新时,会向其他主机发送ARP更新信息,以便这些主机及时更新其ARP缓存表。
每台主机在收到ARP数据包时都会更新自己的ARP缓存表。
ARP欺骗攻击的原理,就是通过发送欺骗性的ARP数据包,致使接收者收到欺骗性的ARP数据包后,更新其ARP缓存表,从而建立错误的IP地址与MAC地址的对应关系。
ARP欺骗主要分为两种:
一种是伪装成主机的欺骗;另一种是伪装成网关的欺骗。
伪装成主机的ARP欺骗主要是在局域网环境内实现的。
假设在同一个局域网中有A、B、C三台主机,它们的IP地址与MAC地址分别如下:
A的为192.168.1.1和AA-AA-AA-AA-AA-AA;B的为192.168.1.2和BB-BB-BB-BB-BB-BB;C的为192.168.1.3和CC-CC-CC-CC-CC-CC。
A想要与B进行直接的通信,而C想要窃取A所发给B的内容。
这时,C可以向A发送欺骗性的ARP数据包,声称B的MAC地址已经变为CC-CC-CC-CC-CC-CC。
这样在A的ARP缓存表中将建立IP地址192.168.1.2和MAC地址CC-CC-CC-CC-CC-CC的对应关系。
于是A发给B的所有内容将被交换机按照CC-CC-CC-CC-CC-CC的MAC地址发送至C的网卡。
C在收到并阅读了A发给B的内容之后,为了不被通信双方(A和B)发现,可以将数据内容再转发给B。
此时C需要将发送给B的数据包的源IP地址和源MAC地址改为A的,从而不引起B的怀疑。
当然,C也可以使用相同的手段对B进行ARP欺骗,让B认为C就是A。
这样,A、B之间的所有数据都经过了“中间人”C。
对于A、B而言,又很难发现C的存在。
这就是利用ARP欺骗实现的中间人攻击,如下图所示。
如果C发给中A的ARP欺骗数据包中,所包含B的MAC地址是伪造并且不存在的,则A机器更新后的ARP缓存表中,B的IP地址对应的MAC地址就是一个不存在的MAC地址,那么A将和B通信时所构造的数据帧中,目的MAC地址就是一般不存在的MAC地址,A、B之间的通信也就无法进行了,这也就是ARP病毒或ARP攻击能够使网络通信瘫痪和中断的原因。
ARP病毒主机或ARP攻击主机伪装成网关的欺骗行为,主要是针对局域网内部与外界通信的情况。
当局域网内的主机要与外网的主机通信时,需要先将数据包发送至网关,再传输至外网。
当主机A想要与外网的主机通信,它向外传输的数据包进行封装时,就要将数据帧中的目的MAC地址写成网关的MAC地址,这样数据包就先交给网关,再由网关转发到外网。
如果局域网内的主机C中了ARP病毒,C想截获A发出的消息内容,C就需要向A发送欺骗性的ARP包,声称网关的MAC地址改成了C的MAC地址了,这样A再给网关发送数据包时,数据包就转给了病毒主机C,病毒主机C获得了A的通信内容后,可以再将数据包转给真正的网关,最终也能实现A和外网的数据传输,但通信内容被C获取了。
如果病毒主机C不将数据包转发给真正的网关,则A就不能与外界通信了。
(二)ARP欺骗攻击的防范
上面提到了ARP欺骗对通信的安全造成的危害,不仅如此,它还可以造成局域网的内部混乱,让一些主机之间无法正常通信,让被欺骗的主机无法访问外网。
一些黑客工具不仅能够发送ARP欺骗数据包,还能够通过发送ARP恢复数据包来实现对网内计算机是否能上网的随意控制。
更具威胁性的是ARP病毒,现在的ARP欺骗病毒可以使局域网内出现经常性掉线、IP冲突等问题,还会伪造成网关使数据先流经病毒主机,实现了对局域网数据包的嗅探和过滤分析,并在过滤出的网页请求数据包中插入恶意代码。
如果收到该恶意代码的主机存在着相应的漏洞,那么该主机就会运行恶意代码中所包含的恶意程序,实现主机被控和信息泄密。
可以通过IDS或者Antiarp等查找ARP欺骗的工具检测网络内的ARP欺骗攻击,然后定位ARP病毒主机,清除ARP病毒来彻底解决网络内的ARP欺骗行为。
此外,还可以通过MAC地址与IP地址的双向绑定,使ARP欺骗不再发挥作用。
MAC地址与IP地址的双向绑定,是在内网的计算机中,将网关的IP地址和真正的MAC地址做静态绑定;同时在网关或者路由设备中,将内网的IP地址和真正的MAC地址也做静态绑定,这就可以实现网关和内网的计算机不再受ARP欺骗的影响了。
MAC地址与IP地址双向绑定方法防止ARP欺骗的配置过程如下。
首先,在内网的计算机上,把网关的IP地址和MAC地址做一次绑定,在Windows中绑定过程可使用arp命令:
arp–d*
arp–s网关IP网关MAC
“arp-d*”命令用于清空arp缓存表,“arp–s网关IP网关MAC”命令则是将网关IP地址与其相应的MAC地址进行静态绑定。
然后,在路由器或者网关上将内网计算机的IP地址和MAC地址也绑定一次。
九、网络监听
通常,一个网络接口只接收以下2种数据帧。
①帧的目的MAC地址与自己硬件地址(MAC地址)相匹配的数据帧。
②发向所有机器的广播数据帧。
网卡负责数据的收发,它接收传输来的数据帧,然后网卡内的程序查看数据帧的目的MAC地址,再根据网卡驱动程序设置的接收模式判断该不该接收。
如果接收则接收后通知CPU进行处理,否则就丢弃该数据帧,所以丢弃的数据帧直接被网卡截断,计算机根本不知道。
网卡通常有以下4种接收方式。
①广播方式:
接收网络中的广播信息。
②组播方式:
接收组播数据。
③直接方式:
只接收帧的目的MAC地址与自己的MAC地址相匹配的数据帧。
④混杂模式:
接收一切通过它的数据,而不管该数据是不是传给它的。
下图为一个简单的网络监听模式的拓扑图,机器A、B、C与集线器HUB连接,集线器HUB通过路由器访问外部网络。
早期的HUB是共享介质的工作方式,只要