2.2 TCP/IP协议族
2.2.1 概述
互联网协议族(Internet Protocol Suite,IPS)是一个网络通信模型以及一整个网络传输协议家族,为互联网的基础通信架构。它常被称为TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)协议族,这是因为该协议家族的两个核心协议——TCP(传输控制协议)和IP(互联网络协议)为该家族中最早通过的标准。网络通信协议普遍采用分层的结构,当多个层次的协议共同工作时,其结构类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈。这些协议最早来源于美国国防部的ARPA网项目,因此也被称作DoD模型。这个协议族由互联网工程任务组负责维护。
TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收都加以标准化。它将软件通信过程抽象化为4个抽象层,采取协议堆栈的方式,分别实现不同的通信协议。协议族下的各种协议依其功能不同,被分别归属到这4个层次结构之中,常被视为简化的七层OSI(Open System Interconnection)模型。
2.2.2 OSI参考模型
OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),如图2-1所示。它是由国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的。其目的是为异构计算机互连提供共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考。这里所说的开放系统,实际上指的是遵循OSI参考模型和相关协议,能够实现互连的具有各种应用目的的计算机系统。它是网络技术的基础,也是分析、评判各种网络技术的依据。
图2-1 OSI参考模型
七层模型的组成
OSI参考模型由上至下分别为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。各层主要功能如下。
应用层:访问网络服务的接口。例如,为操作系统或网络应用程序提供访问网络服务的接口。常见的应用层协议有Telnet、FTP、HTTP、SNMP、DNS等。
表示层:提供数据格式转换服务。例如,加密与解密、图片解码和编码、数据的压缩和解压缩。常见应用有URL加密、口令加密、图片编解码。
会话层:建立端连接并提供访问验证和会话管理。
传输层:提供应用进程之间的逻辑通信。常见应用有TCP、UDP、进程、端口。
网络层:为数据在节点之间传输创建逻辑链路,并分组转发数据。例如,对子网间的数据分组进行路由选择。常见应用有路由器、多层交换机、防火墙、IP、IPX等。
数据链路层:在通信的实体间建立逻辑链路通信。例如,将数据分帧,并处理流控制、物理地址寻址等。常见应用设备有网卡、网桥、二层交换机等。
物理层:为数据端设备提供原始比特流传输的通路。例如,网络通信的传输介质。常见应用设备有网线、中继器、光纤等。
OSI协议的运行原理
在OSI七层模型中,节点之间进行数据通信时是在发送端,从高层到低层进行数据封装操作,每一层都在上层的数据上加入本层的数据头,然后传递给下层处理。因此,这个过程是数据逐层向下封装的过程,俗称“打包”过程。
在接收端则对数据进行相反操作,接收到的数据单元在每一层被去掉头部,根据需要传送给上一层处理,直到应用层解析后被用户看到内容,俗称“拆包”过程。
2.2.3 TCP/IP模型
TCP/IP是Internet的基本协议,由OSI七层模型中的网络层IP和传输层TCP组成。TCP/IP定义了电子设备如何连入互联网以及数据如何在它们之间传输的标准。
TCP/IP也是分层协议,它由下至上分别是物理层、数据链路层、网络层、传输层和应用层。
在网络层中,IP是TCP/IP的核心,也是网络层中的重要协议。以IPv4协议为例,IPv4的分组封装结构如表2-1所示,高一层的传输层的TCP和UDP服务在接收数据分组时,一般假设分组中的源地址是有效的。所以IP地址形成了许多服务的认证基础,这些服务相信数据分组是从一个有效的主机发送过来的。在IP确认信息中包含选项IP Source Routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些应用到TCP和UDP的服务来说,它使用的该选项的IP分组是从路径上的最后一个系统终端传递过来的,而不是来自它的真实地址。这就使许多依靠IP源地址做确认的服务被攻击,比如常见的IP地址欺骗攻击。
表2-1 IPv4的分组封装结构
传输层主要使用TCP(传输控制协议)和UDP(用户数据分组协议)这两个协议,其中,TCP提供可靠的面向连接的服务,而UDP提供不可靠的无连接服务。
TCP使用三次握手机制来建立一条连接:握手的第一个分组为SYN包;第二个分组为SYN/ACK包,表明它应答第一个SYN包,同时继续握手的过程;第三个分组仅仅是一个应答,表示为ACK包。该过程如图2-2所示。
图2-2 TCP建立连接过程
假设A为连接方,B为响应方,其间可能的威胁如下所示。
① 攻击者监听B发出的SYN/ACK分组。
② 攻击者向B发送RST包,接着发送SYN包,假冒A发起新的连接。
③ B响应新连接,并发送连接响应分组SYN/ACK。
④ 攻击者再假冒A向B发送ACK包。
这样,攻击者就达到了破坏连接的目的。如果此时攻击者再插入有害数据分组,则后果更严重。
TCP断开机制也是同样的道理,如图2-3所示。
同样,对于这个过程,攻击者可以在最后一次断开时不进行确认,导致被攻击者主机保持“半断开”状态,消耗其资源,影响其正常服务,严重的会导致服务停止,很多网站服务器和文件服务器经常遭到此类攻击。
UDP分组由于没有可靠性保证、顺序保证和流量控制字段等,因此可靠性较差。当然,因为UDP的控制选项较少,使其具有数据传输过程中时延小、数据传输效率高的优点,所以适用于可靠性要求不高的应用程序,或可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
图2-3 TCP断开连接的过程
基于UDP的通信很难在传输层建立起安全机制。同网络层安全机制相比,传输层安全机制的主要优点是它提供基于进程对进程的(而不是主机对主机的)安全服务。
应用层有很多日常传输数据时使用的协议,例如,HTTP、HTTPS、FTP、SMTP、Telnet、DNS、POP3等,这些协议在实际应用时要用到应用程序代理。
从用户角度来看,代理服务器相当于一台真正的服务器;而从服务器来看,代理服务器又是一台真正的客户机。当客户机需要使用服务器上的数据时,首先将数据请求发给代理服务器,代理服务器再根据这一请求向服务器索取数据,然后由代理服务器将数据传输给客户机。
由于外部系统和内部服务器之间没有直接的数据通道,外部的恶意侵害也就很难伤害到企业内部网络系统。代理服务对于应用层以下的数据透明。应用层代理服务器用于支持代理的应用层协议,例如,HTTP、HTTPS、FTP、SMTP、Telnet等。