IP版本:报文使用的IP版本号。值为4表示IP版本4,这是目前使用的最普遍的版本。值为6表示新的IP版本6,该版本开始得到更广泛的部署(并可能在未来主导IPv4)。
IP报头长度:32位字的头长度。典型的头长度为20字节的IPv4报文的值为5,即5个32位(4字节)字。回想一下,IPv4报头不是固定长度。它的最小长度为20字节(IP Header length值为5),但是当包含IP选项时,可能会指定最大长度为60字节(值为15,或0x0F)。
-
注意:从历史上看,由于路由和安全原因,可变长度的IPv4数据包头大小一直是个问题。值得注意的是IPv6有一个固定长度的报头大小为40字节,并且没有相应的报头长度字段。简化的IPv6固定长度报头旨在加速处理和解决与IPv4报头选项相关的许多安全问题。
服务类型(ToS):指定上层协议希望数据包在通过网络转发时如何被网络元素排队和处理(如果这样配置的话)。这通常被设置为0(0),但是可以被分配一个不同的值来指示另一个重要级别。
总长度:指定整个IP报文的长度,以字节为单位,包括数据和IP头。
标识:包含标识当前数据报的整数。此字段在重组分片数据报期间使用。
国旗:由一个3位字段组成,其中两个低阶(最低有效)位控制分片。没有使用高阶(第一个)位,必须设置为0。中间(第二次)DF位表示是否允许分片(0 =允许分片,1 =不允许分片)。低阶的(第三个)“More Fragments”(MF)位指定数据包是否为一系列分片包中的最后一个分片(除最后一个分片外的所有分片设置为1,告诉终端站哪个分片是最后一个分片)。
分段偏移:提供片段数据相对于原始数据报中起始数据的位置(偏移量),以字节为单位,这允许目的IP进程正确地重建原始数据报。
生存时间(TTL):指定数据包可能经过的最大链路数(也称为“跳数”)。每个处理数据包并将其转发到目的地的路由器都会减少一个计数器。当TTL值为0时,报文将被丢弃。这可以防止数据包无休止地循环,例如,在意外路由循环期间就会发生这种情况。
协议:IP处理完成后,哪个上层协议接收接收的报文。通常,这表示IP所携带的有效负载类型。例如,1表示IP报文为ICMP报文,6表示TCP报文段,17表示IP报文为UDP报文。
标题校验和:一个1' ' -compliment哈希,由发送方插入,并由每台路由器更新,它在将包转发到目的地时修改包(本质上意味着每台路由器,因为至少每跳的TTL值都会被修改)。报头校验和用于检测数据包在穿越网络时可能引入的错误。校验和无效的报文将被网络中的任何接收节点丢弃。
源地址:发送节点(IP报文的发起者)的唯一IP地址。
目的地址:指定接收节点的唯一IP地址(数据包的最终目标)。
IP选项:允许IP支持各种选项,如时间戳、记录路由和严格源路由。IP选项通常不被使用。
IP包携带的数据,包括任何额外的上层报头信息(例如,来自TCP或UDP),跟随这个IP报头。更详细地了解IP、TCP、UDP和ICMP的协议头包含在附录B“IP协议头”中。附录B还简短地讨论了如何对这些头值进行恶意操作,以及可能产生的安全影响。
注意:网络安全专家必须非常精通IP协议报头结构、选项、操作和操作。这些知识是理解和减轻对IP网络的潜在威胁所必需的。在第2章“IP网络的威胁模型”中回顾了威胁,在第2节中回顾了降低攻击风险的技术。许多优秀的参考文献非常详细地介绍了IP协议操作。一个很好的信息来源是TCP/IP图解,卷1.本及其他参考文献列于进一步的阅读这一章的结尾部分。
IP转发基于IP标头中的目标地址,路由器是执行IP网络中基于目标的转发的设备。IP选项也会影响路由。路由器是将下游的数据包转发到目标目的地的网络设备。它基于其通过与其他路由器的路由协议操作发现的直接连接的网络和网络的知识来实现其转发决策。路由器可以包括许多网络接口,该接口提供与其他网络实体的连接,包括路由器,主机,网络段等。在本节开始时所知,所有网络都具有两种数据包,数据包和控制数据包。您还了解到IP网络以共同的携带两种数据包管(换句话说,就是“带内”)。因此,路由器必须查看每一个进入接口的包,并决定它是什么类型的包——数据包还是控制包——并在此基础上对每个包应用适当的处理程序。理解路由器如何执行此操作的细节是分离和保护IP网络流量平面的关键概念。
数据报文属于客户,承载客户应用流量。控制报文属于网络,承载网络运行管理流量。各种路由器功能使用控制包来创建和维护有关网络和路由器接口状态的必要情报。IP路由协议为收集这种情报提供了框架。数据包由路由器利用控制数据包产生的智能和网络状态进行处理和转发。这两种功能必须由网络中的每一个路由器以协调的方式完成。即使IP网络携带所有带内包,区分网络传输的各种类型的包仍然是可能的,而且可能比以往任何时候都更为关键。
那么路由器如何决定它是什么样的数据包 - 基本上是数据包还是控制包?通常,通过查看IP标题中的目标地址,在开始该确定。也就是说,如果数据包的目标地址意味着终止路由器本身 - 网络上的每个设备都有其自己的至少一个IP地址 - 那么它很可能是一个控制分组。如果数据包的目标地址意味着将路由器的一个路由器的接口转发到外部目的地(从单个路由器的角度转发),则本地路由器将其视为数据平面分组(尽管它可能是控制另一个下游路由器的数据包。)为什么这一事项是路由器被优化为转发数据包。在正常情况下,控制数据包形成路由器处理的小百分比。路由器如何处理本章IP流量概念部分中的各种数据包类型。正如您所学习的那样,这些处理差异往往对网络安全性产生了深远的影响。第2章更详细地讨论了这些概念。
IP流量概念
您刚刚了解到IP无连接,并且该IP封装了以自包含可路由单元称为数据包的数据。每个数据包都包含一个IP报头,其包含在进行决策时由路由器使用的信息(例如源和目标地址)。您还显示IP如何在带内传输所有内容。控制和数据数据包到达公共接口,并由相同的路由器处理,但是对于显然的目的。最后,您了解到,以简化的方式,路由器根据其目标地址处理每个数据包。从任何单个路由器的角度来看,如果数据包具有路由器本身的目的地,则它很可能是一个控制数据包,如果目标是网络中的其他位置,则它被视为数据包并转发。当然,这是IP网络操作的一个非常简化的视图。完全了解IP流量平面分离和控制如何影响IP网络安全性需要更深入地调查网络和路由器操作。
见图1 - 5,单个路由器参与更大的网络环境,甚至是互联网。因此,单独的路由器本身可能是也可能不了解完整上下文(换句话说,数据包所属的IP流量平面)。从每个路由器的角度来看,在它处理任何单个包的时候,IP是什么交通类型它在看。这个概念交通飞机是逻辑上的,而不是物理上的。这个概念交通类型是真实的,也是本节的重点。
路由器实际上如何处理不同的包类型必须被完全理解。为什么路由器处理某些数据包的方式不同于其他数据包?这些差异对安全的影响是什么?这些概念需要更深入地理解三大类:传输、接收和异常包。
IP网络的角度
交通IP数据包
建立IP网络是为了在终端主机之间转发数据包。什么路由器,主要是把包在一个界面,查看IP报头中的目标字段,寻找一个与目的地网络路由表(由控制飞机!),和转发数据包适当的接口,包一个跳接近其最终目的地。
在传输数据包的情况下,目的地网络在某个地方从路由器。也就是说,IP地址由IP地址不拥有特定的路由器处理数据包,而不是在网络的其他地方。目的地可能在一个直接连接的子网(LAN)上,也可能在许多下行跃点之外。关键是数据包不是目的地到这个路由器,更准确地说,通过这个路由器。因此,当路由器看到一个传输包时,它做出的决定是将这个包转发到它的一个接口上。路由器通常使用专门的转发硬件和算法来尽可能快地完成这一转发功能。关于路由器转发架构的更多细节,请参见“一般IP路由器架构类型“本章的部分。
你应该注意到这里并没有明确或隐含的说明IP交通机这些传输数据包是。从单个路由器的角度来看,传输包可能是任何IP通信平面的,稍后您将看到这一点。考虑网络操作中心(NOC)中的SSH客户端与网络核心中的路由器之间的管理会话示例。管理会话包在到达目的路由器的路上要经过许多路由器。因此,它们是根据路径上的每个路由器传输的数据包,直到到达最后一个核心路由器。在最后一个路由器上,它们不再是传输包,而是收到或receive-adjacency包。(请参阅下一节。)然而,正如您将在不久的那样,从逻辑视角下可以清楚地清楚这些数据包是所有部分管理平面从交通飞机的角度来看。
Receive-Adjacency IP数据包
到达路由器并到达一个IP地址的IP包拥有由路由器本身作为最终目的地被调用receive-adjacency包。
注意:这个词收到包,或receive-adjacency包,来源于Cisco Express Forwarding (CEF)转发机制创建的邻接表所使用的术语。当CEF建立它的邻接表时,它将路由器拥有的接口(物理的和逻辑的)的IP地址列出为“receive”。某些文档中使用的另一个术语是“for-us”包。本节稍后将详细讨论CEF。
当路由器看到接收邻接包时,包的目的地址总是路由器自己拥有的东西。它可以是物理接口的IP地址,也可以是逻辑接口的IP地址,例如回送接口或隧道界面。这些数据包可能从直接连接的LAN上的主机到达,或者它们可以在遍历几个或许多上游路由器到达此最终路由器后到达。无论哪种方式,路由器所做的决定,当它看到接收邻接报文时,与传输数据包的那个非常不同。通过接收邻接数据包,路由器无法参与任何专业的转发硬件;路由器必须使用自己的本地CPU资源处理数据包本身。
注意:在文档中描述将数据包从正常的高速转发路径转移到路由器自己的CPU进行本地处理时,经常使用的术语是“是”平底船.例如,您可能读到某些类型的数据包是“对CPU进行了处理处理这本书中也会用到这个术语。
虽然看起来所有接收的数据包都是控制数据包,但事实并非如此。与传输包一样,许多类型的包可能属于接收类别。接收报文一般包括流量在控制,管理,服务刨.
要理解接收包最重要的概念是路由器必须区别对待传输包。通常,这意味着路由器使用不同的硬件和/或软件来处理这些包,而且处理速度几乎总是比传输包慢得多。如何接收和传输数据包处理交互影响路由器的整体性能,以及这对网络安全的影响,是IP流量平面分割和控制如此关键的主要原因之一。
例外IP和非IP报文
在前面的两个部分中,您了解了两种不同的流量类型:传输和接收。传输族中的流量包括路由器向某个最终目的地转发的数据包,通常使用一些高速转发机制。接收族中的流量包括路由器必须在本地自己处理的数据包。有趣的是,这两种流量类型并不能涵盖IP网络中的所有情况。路由器还可以看到另外两种流量类型,包括被称为“捕获所有”的组异常IP数据包,非ip数据包组。
例外IP报文是指路由器无法正常处理的具有某些异常特征的IP报文传输或接收。非IP包基本上就是不属于IP协议的包。这些通常被路由器自己用来构建和维护网络。为什么例外IP和非IP流量类型如此重要,是因为路由器处理这些数据包的方式与处理正常传输或接收数据包的方式不同。这些包很重要,因为每个包都有可能影响网络。他们可以移动数据,他们可以帮助建立路由表,他们可以控制路由器。这些都有潜在的安全隐患。几个例子将有助于说明这一点。
异常IP数据包
例外IP包的一个例子如下:一个IP包到达路由器后,被确定为一个传输包(换句话说,路由器希望将其向下转发)。IP头中的TTL值为1。因为路由器需要在转发包之前减小TTL字段,所以最终的值将为0。IP网络协议要求TTL = 0的数据包必须被丢弃。另外,还必须生成一个ICMP错误消息,并返回给报文的发送者,通知报文被丢弃。具体的ICMP错误消息是“传输超时”消息,或ICMP类型11,代码0。(有关ICMP错误消息的详细信息,请参见附录B。)这里的例外情况是由于路由器必须改变其正常的传输包处理,以丢弃过期的包,并生成并发送正确的ICMP消息回原始包的源。这个异常过程要求路由器花费额外的资源,否则它只需要转发数据包。