项目3网络协议与分析项目1双机互连对等网络的组建3.1项目提出张先生在企业的网络中心工作,负责整个企业网络的管理和维护,作为网络管理员需要时刻了解企业网络流量情况,并对网络流量进行监控,以便及时发现并解决可能出现的网络问题。最近有多位企业员工反映,近期访问外网的速度时快时慢,甚至不能访问外网,请求网络中心给予解决。3.2项目分析从各位员工反映的上网情况来看,网速变慢是最近发生的事情,近期企业内部没有进行网络设备的调整,网络环境没有发生变化,网络应用也没有大的变化,这应该是网络中有异常流量造成的。张先生经过调查发现,网络中存在以下网络故障现象。①某部门的所有计算机配置相同,且处于同一个网段,唯独某一台计算机无法上网,而且网络、网络接口等都正常,该计算机重新启动后网络恢复正常,过一段时间后,网络又瘫痪了。②网络中的计算机逐台掉线,最后导致全部计算机无法上网。③某计算机上网时突然掉线,一会又恢复了,但恢复后上网一直很慢,而且在与局域网内的其他计算机共享文件时速度也变慢。④网络中用户上不了网或者网速很慢。张先生用网络监听工具SnifferPro来嗅探网络中的数据包,发现网络中存在大量的ARP数据包,而且计算机ARP缓存表中的网关MAC地址已被修改,导致网络变慢甚至无法上网,这就是典型的ARP欺骗攻击。在计算机中利用“ARP–s网关IP网关MAC”命令静态设置正确的网关MAC地址,在网关(一般是路由器)中对局域网内的主机IP地址与其相应MAC地址也进行静态绑定,上网恢复正常。3.3相关知识点3.3.1计算机网络体系结构1.OSI参考模型在计算机网络诞生之初,每个计算机厂商都有一套自己的网络体系结构,之间互不相容。为此,国际标准化组织(ISO)在1979年建立了一个分委员会来专门研究一种用于开放系统互联的体系结构,即OSI。“开放”这个词表示:只要遵循OSI标准,一个系统可以和位于世界上任何地方的、也遵循OSI标准的其他任何系统进行连接。这个分委员会提出了开放系统互联参考模型,即OSI参考模型(OSI/RM),它定义了异类系统互联的标准框架。OSI/RM模型分为7层,从下往上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如图3-1所示。计算机网络体系结构是计算机网络层次模型和各层协议的集合。计算机网络体系结构是抽象的,而实现是具体的,是能够运行的一些硬件和软件,多采用层次结构。划分层次的原则是:①网中各结点都有相同的层次。②不同结点的同等层具有相同的功能。③同一结点内相邻层之间通过接口通信。④每一层使用下层提供的服务,并向其上层提供服务。⑤不同结点的同等层按照协议实现对等层之间的通信。①物理层。这是整个OSI参考模型的最低层,它的任务就是提供网络的物理连接。所以,物理层是建立在物理介质上的(而不是逻辑上的协议和会话),它提供的是机械和电气接口,其作用是使原始的数据比特(Bit)流能在物理媒体上传输。②数据链路层。数据链路层分为介质访问控制(MAC)子层和逻辑链路控制(LLC)子层,在物理层提供比特流传输服务的基础上,传送以帧为单位的数据。数据链路层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路改造成对网络层来说无差错的数据链路。数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲区溢出及线路阻塞等问题。③网络层。网络层负责由一个站到另一个站间的路径选择,它解决的是网络与网络之间,即网际的通信问题,而不是同一网段内部的事。网络层的主要功能是提供路由,即选择到达目的主机的最佳路径,并沿该路径传送数据包(分组)。此外,网络层还具有流量控制和拥塞控制的能力。④传输层。传输层负责提供两站之间数据的传送。当两个站已确定建立了联系后,传输层即负责监督,以确保数据能正确无误的传送,提供可靠的端到端数据传输。⑤会话层。会话层主要负责控制每一站究竟什么时间可以传送与接收数据。例如,如果有许多使用者同时进行传送与接收消息,此时会话层的任务就要去决定是要接收消息或是传送消息,才不会有“碰撞”的情况发生。⑥表示层。表示层负责将数据转换成使用者可以看得懂的有意义的内容,包括格式转换、数据加密与解密、数据压缩与恢复等功能。⑦应用层。应用层负责网络中应用程序与网络操作系统间的联系,包括建立与结束使用者之间的联系,监督并管理相互连接起来的应用系统以及系统所用的各种资源。数据在网络中传送时,在发送方和接收方有一个封装和解封装的过程,如图3-2所示2.TCP/IP参考模型ARPAnet最初开发的网络协议使用在通信可靠性较差的通信子网中,且出现了不少问题,这就导致了新的网络协议TCP/IP的产生。虽然TCP/IP协议不是OSI标准,但它是目前最流行的商业化的网络协议,并被公认为当前的工业标准或“事实上的标准”。TCP/IP协议具有以下特点:①开放的协议标准,独立于特定的计算机硬件和操作系统。②独立于特定的网络硬件,可以运行在局域网、广域网中,更适用于互联网。③统一的地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址。④标准化的高层协议,可提供多种可靠的服务。传输层实现应用进程间的端到端通信,主要包括两个协议:TCP协议和UDP协议。TCP协议是一种可靠的面向连接的协议,允许将一台主机的字节流无差错地传送到目的主机。UDP协议是不可靠的无连接协议,不要求分组顺序到达目的地。应用层的主要协议有:域名系统(DNS)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、邮局协议(POP)、远程登录协议(TELNET)、文件传输协议(FTP)、网络文件协议(NFS)等。3.3.2以太网的帧格式1.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。2.以太网的帧格式以太网的帧是数据链路层的封装形式,网络层的数据包被加上帧头和帧尾成为可以被数据链路层识别的数据帧(成帧)。虽然帧头和帧尾所用的字节数是固定不变的,但依被封装的数据包大小的不同,以太网的帧长度也在变化,其范围是64~1518字节(不算8字节的前导字)。以太网的帧格式有多种,在每种格式的帧开始处都有64比特(8字节)的前导字符,其中前7个字节为前同步码(7个10101010),第8个字节为帧起始标志(10101011)。图3-3所示为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地址”字段到“数据”字段的数据进行校验。3.3.3网络层协议格式网络层的协议主要有IP协议、ARP协议和ICMP协议。1.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为单位)。2.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地