您现在的位置:e-works > 智造书屋 > 书籍列表 > 防火墙技术与应用 > 网络体系结构

第一章 防火墙在网络安全防护中的地位和作用

第一节 网络体系结构

    (4)网络接口层

    网络接口层有时又称数据链路层,一般负责处理通信介质的细节问题,如设备驱动程序、以太网(Ethernet)和令牌环网(Token Ring)。ARP和RARP负责IP地址和网络接口物理地址的转换工作。

    IP、TCP和UDP是必须了解的协议,下面进行简要介绍。

    (1)IP

    IPv4是一个面向数据的协议,设计用于分组交换网络(例如以太网),是一个尽最大努力完成交付的协议。这意味着它并不保证一台主机发送的IP数据包能够被目的主机接收到。此外,它并不能保证IP数据包被正确接收,一个数据包可能会被乱序接收或根本接收不到。这些问题由传输层协议解决,特别是TCP实现的几个机制保证了在IP之上的可靠数据传输。

    IP通过所谓的IP地址实现寻址,互联网中的每台主机都有一个IP地址,可以把它想象为一个地址,在这一地址下主机是可达的。通常,一个IP地址用点分十进制法表示——也就是4个十进制表示的字节用圆点分隔,例如,192.0.2.1。通过这个IP地址,网络中的其他主机可以联络这个主机。

    此外,IP实现了分片概念。由于不同类型的网络发送数据包有不同的最大数据量限制,可能需要将一个包分解成若干较小的包,这就是IP分片。而且由于接收端主机不得不将不同分片重新组装起来,因此需要IP重组。

    在TCP/IP的标准中,各种数据格式常常以32bit(4字节)为单位来描述。图1-3是IP数据包的完整格式。

  IP头部结构

图1-3 IP头部结构

    图1-4给出了一个数据包的简单表示法,即只画出IP首部最重要的两个字段:源IP地址和目的IP地址。数据包中的数据可以是传输层的TCP报文或UDP报文,也可以是ICMP报文等。

  数据报的简单表示法

图1-4 数据报的简单表示法

    (2)TCP

    TCP是面向连接的,通过所谓的数据流,在两个网络主机之间提供一个可复用的、可靠的通信信道。TCP保证数据从发送者到接收者可靠和有序地交付,而UDP不能保证这些属性。TCP从应用层接收字节流,把它们分成适当大小的片段,然后这些片段被交给网络层(通常为IP),对它们进行进一步的处理。TCP给每个报文一个序列号,通过检查序列号以确保没有报文丢失。运行在接收主机上的TCP,为所有已成功接收到的报文返回一个确认号。与序列号一起,这个确认号用于检查是否收到所有报文,如果需要,则可以对它们重新排序。如果在合理的时间范围内没有接收到确认,则发送主机上的定时器将产生一个超时,根据这一信息,如果有需要,则可以重传丢失报文。同时,TCP使用校验和来控制是否正确接收一个给定的报文。此外,TCP应用拥塞控制,实现高性能和避免网络链路拥塞。

    如上所述,TCP有些复杂,但与UDP相比它有很多优势。如果两台主机需要可靠的网络通信,则常使用TCP。例如,对于万维网使用的HTTP、电子邮件相关应用程序使用的SMTP和POP3/IMAP,以及数据传输使用的FTP,这是必要的。

    下面介绍TCP报文头,并解释如何建立TCP连接。图1-5显示了TCP头部结构。

  TCP头部结构

图1-5 TCP头部结构

    一开始,两个16位字段指定源和目的端口,在传输层中端口用于多路复用,通过网络端口,使不同的应用程序在一个IP地址上监听成为可能。例如,典型地,一个Web服务器监听TCP端口80,而一个SMTP服务器使用TCP端口25,通过复用,两个服务器“共享”主机IP地址。TCP头接下来的两个字段包含32位序号和确认号。序号有两个重要的作用,首先用于配置连接时设置初始序号,如果连接建立,有效载荷中的第一个数据字节就是序号。如果ACK标志被设置,则确认号指定发送者期望的下一个序号。

    6位的TCP标志用于提供有关当前TCP报文状态的信息。窗口大小字段用于指定发送者希望接收的从确认号开始的字节数。TCP头还包含一个校验和,用于在目的地检验到达的报文是否未被篡改。只有设置URG标志时,才使用紧急指针字段,它指定了从序号开始的偏移量,指明TCP有效载荷中从哪个点开始的数据应立即移交给应用层。TCP头还有其他可选字段,这里不再讨论。

    因为TCP在发送者和接收者之间建立了一个连接,它需要在通信刚开始时创建一个连接。这是通过TCP握手完成的,这个握手主要通过交换序号和确认号在两个主机之间同步状态,这些数字稍后用于确认目的主机是否正确收到给定的报文,以及用于重传和拥塞控制。TCP握手过程需要在发送者S和接收者R之间交换三个协议消息,如图1-6所示。