系统管理指南:IP 服务

第 1 章 Oracle Solaris : TCP/IP 协议套件(概述)

本章介绍 Oracle Solaris : 如何实现 TCP/IP 网络协议套件。所提供的信息适用于对 TCP/IP 基本概念不熟悉的系统管理员和网络管理员。本书的其余部分假定您熟悉这些概念。

本章包含以下信息:

本发行版新增功能

从 Solaris 10 5/08 开始,不再提供移动 IP 功能。Solaris 10 OS 8/07 发行版和早期发行版中提供了移动 IP 功能。

TCP/IP 协议套件介绍

本节详细介绍了 TCP/IP 中包括的协议。虽然是一些概念性信息,但是您应该了解协议的名称,还应该了解每种协议的作用。

"TCP/IP" 是一组网络协议常用的首字母缩略词,这些协议组成了 Internet 协议套件。许多文章都使用术语 "Internet" 来描述协议套件和全局广域网。在本书中,"TCP/IP" 专指 Internet 协议套件。"Internet" 是指广域网以及管理 Internet 的机构。

要将 TCP/IP 网络与其他网络互连,必须为网络获取一个唯一的 IP 地址。编写此内容时,您可从 Internet 服务提供商 (Internet service provider, ISP) 获取此地址。

如果要将网络中的主机加入 Internet 域名系统 (Domain Name System, DNS),则必须获取并注册唯一的域名。InterNIC 通过一系列全球注册机构来协调域名注册。有关 DNS 的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

协议层和开放系统互连模型

大多数网络协议套件的结构都由一系列层组成,有时统称为协议栈。每一层都针对特定用途而设计,并且同时存在于发送系统和接收系统上。一个系统上的某个特定层发送或接收的对象与另一个系统上的对等进程发送或接收的对象完全相同。这些活动的发生与所考虑的层的上下层中的活动无关。实际上,系统上每一层的活动都独立于同一系统上的其他层,并且与其他系统上的同一层并行执行操作。

OSI 参考模型

大多数网络协议套件的结构都由多个层组成。国际标准化组织 (International Organization for Standardization, ISO) 设计了使用结构化层的开放系统互连 (Open Systems Interconnection, OSI) 参考模型。OSI 模型介绍了网络活动的七层结构。每个层都与一个或多个协议关联。对于协作网络间所有类型的数据传送,这些层执行的数据传送操作相同。

OSI 模型列出了从顶层(第 7 层)到底层(第 1 层)的协议层。下表显示了此模型。

表 1–1 开放系统互连参考模型

层编号 

层名称 

说明 

应用

由每个人均可使用的标准通信服务和应用程序组成。 

表示

确保将信息以系统可识别的形式传送到接收系统。 

会话

管理协作系统之间的连接和终止。 

传输

管理数据的传送,同时还确保收到的数据与传送的数据完全相同。 

网络

管理网络间的数据寻址和传送。 

数据链路

处理网络介质间的数据传送。 

物理

定义网络硬件的特征。 

OSI 模型定义了并不特定于任何网络协议套件的概念性操作。例如,OSI 网络协议套件可实现 OSI 模型的所有七个层。TCP/IP 使用 OSI 模型的一些层,并且还会组合其他层。其他网络协议(如 SNA)会添加第八层。

TCP/IP 协议体系结构模型

OSI 模型通过一系列协议描述了理想的网络通信。TCP/IP 并不直接对应于此模型。TCP/IP 或者将几个 OSI 层组合为一个层,或者根本不使用某些层。下表显示了 Oracle Solaris : 实现的 TCP/IP 层。该表列出了从最顶层(应用层)到最底层(物理网络层)的各层。

表 1–2 TCP/IP 协议栈

OSI 参考层编号 

等效的 OSI 层 

TCP/IP 层 

TCP/IP 协议示例 

5、6、7 

应用、会话、表示 

应用

NFS、NIS、DNS、LDAP、telnetftprloginrshrcp、RIP、RDISC、SNMP 等

传输  

传输

TCP、UDP、SCTP 

网络 

Internet

IPv4、IPv6、ARP、ICMP 

数据链路 

数据链路

PPP、IEEE 802.2 

物理 

物理网络

以太网 (IEEE 802.3)、令牌环、RS-232、FDDI 等等  

该表显示了 TCP/IP 协议层和 OSI 模型中的等效层。另外,还显示了可用于 TCP/IP 协议栈各级别的协议的示例。通信事务中涉及的每个系统都运行协议栈的唯一实现。

物理网络层

物理网络层指定要用于网络的硬件的特征。例如,物理网络层可指定通信介质的物理特征。TCP/IP 的物理层介绍了一些硬件标准,如作为以太网网络介质规范的 IEEE 802.3 以及作为标准管脚连接器规范的 RS-232。

数据链路层

数据链路层标识包的网络协议类型,在此实例中为 TCP/IP。数据链路层还提供了错误控制和“成帧”。数据链路层协议的示例包括以太网 IEEE 802.2 成帧和点对点协议 (Point-to-Point Protocol, PPP) 成帧。

Internet 层

Internet 层也称为网络层 IP 层,可为网络接受和传送包。该层包括功能强大的 Internet 协议 (Internet Protocol, IP)、地址解析协议 (Address Resolution Protocol, ARP) 和 Internet 控制消息协议 (Internet Control Message Protocol, ICMP)。

IP 协议

IP 协议及其关联的路由协议可能是整个 TCP/IP 套件中最重要的部分。IP 负责以下操作:

Oracle Solaris : 同时支持 IPv4 和 IPv6 寻址格式,这两种格式都在本书中进行了介绍。为避免对 Internet 协议进行寻址时出现混淆,请使用以下约定之一:

ARP 协议

从概念上讲,地址解析协议 (Address Resolution Protocol, ARP) 位于数据链路层和 Internet 层之间。ARP 通过将以太网地址(长度为 48 位)映射到已知的 IP 地址(长度为 32 位),协助 IP 将数据报定向到相应的接收系统。

ICMP 协议

Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 可检测并报告网络错误情况。ICMP 将报告以下情况:

第 8 章介绍了有关将 ICMP 用于错误检测的 Oracle Solaris : 命令的更多信息。

传输层

TCP/IP 传输层通过交换数据接收的确认信息并重新传送丢失的包,可确保包按顺序到达且不会出现错误。这种通信类型称为端对端。此级别的传输层协议栈包括传输控制协议 (Transmission Control Protocol, TCP)、用户数据报协议 (User Datagram Protocol, UDP) 以及流控制传输协议 (Stream Control Transmission Protocol, SCTP)。TCP 和 SCTP 可提供可靠的端对端服务。UDP 则会提供不可靠的数据报服务。

TCP 协议

使用 TCP,应用程序可以像通过实际线路连接一样进行相互通信。TCP 发送数据的形式类似于逐个字符进行传送,而不是以独立的包进行发送。这种传输由以下各项组成:

TCP 会向传送的数据中附加一个头。此头包含许多参数,可帮助发送系统上的进程连接到接收系统上的对等进程。

TCP 通过在发送主机和接收主机之间建立端对端连接,确认包是否已到达其目的地。因此,TCP 被视为一种“可靠的、面向连接的”协议。

SCTP 协议

SCTP 是一种可靠的、面向连接的传输层协议,它为应用程序提供的服务与 TCP 提供的服务相同。此外,SCTP 还可以支持在具有多个地址或多宿主系统之间建立连接。发送系统和接收系统之间的 SCTP 连接称为关联。关联中的数据组织成多个块。由于 SCTP 支持多宿主,因此,某些应用程序(尤其是电信行业使用的应用程序)需要通过 SCTP 而不是 TCP 运行。

UDP 协议

UDP 可提供数据报传送服务,并且不会检验接收主机和发送主机之间的连接。由于 UDP 不需要建立和验证连接,因此,发送少量数据的应用程序可使用 UDP。

应用层

应用层定义了任何用户均可使用的标准 Internet 服务和网络应用程序。这些服务与传输层协同工作以发送和接收数据。存在多种应用层协议。以下列表显示了应用层协议的示例:

标准 TCP/IP 服务

UNIX "r" 命令

使用 UNIX "r" 命令,用户可以在其本地计算机上发出将在远程主机上运行的命令。这些命令包括:

有关使用这些命令的说明,请参见 rcp(1)rlogin(1)rsh(1) 手册页。

名称服务

Oracle Solaris : 可提供下列名称服务:

目录服务

Oracle Solaris : 支持 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)与 Sun 开放网络环境 (Sun Open Net Environment, Sun ONE) Directory Server 和其他 LDAP 目录服务器一起使用。名称服务和目录服务之间的区别在于功能范围不同。目录服务不仅提供与名称服务相同的功能,而且还提供其他功能。请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

文件服务

NFS 应用层协议可为 Oracle Solaris : 提供文件服务。有关 NFS 服务的完整信息,请参见《系统管理指南:网络服务》

网络管理

使用简单网络管理协议 (Simple Network Management Protocol, SNMP),可以查看网络的布局和关键计算机的状态。使用 SNMP,还可以通过基于图形用户界面 (graphical user interface, GUI) 的软件获取复杂的网络统计信息。许多公司都提供了实现 SNMP 的网络管理软件包。

路由协议

路由信息协议 (Routing Information Protocol, RIP) 和路由器搜索 (Router Discovery, RDISC) 服务器协议是 TCP/IP 网络可用的两种路由协议。有关 Oracle Solaris 10 可用的路由协议的完整列表,请参阅表 5–1表 5–2

TCP/IP 协议如何处理数据通信

当用户发出使用 TCP/IP 应用层协议的命令时,即会启动一系列事件。用户命令或消息通过本地系统上的 TCP/IP 协议栈进行传递,然后,通过网络介质传递到远程系统上的协议。发送主机的每一层上的协议都会向原始数据添加信息。

发送主机的每一层上的协议还会与接收主机上的对等协议进行交互。图 1–1 显示了这种交互。

数据封装和 TCP/IP 协议栈

包是指通过网络传输的基本信息单元。基本的包由头(包含发送系统和接收系统的地址)和正文或有效负荷(包含要传送的数据)组成。当包经由 TCP/IP 协议栈时,每一层上的协议都会在基本头中添加或删除字段。当发送系统上的协议向包头中添加数据时,此过程即被称为数据封装。此外,每一层对于已更改的包都有不同的称呼,如下图中所示。

图 1–1 包如何经由 TCP/IP 栈

图中显示了包如何经由 TCP/IP 栈从发送主机到达接收主机。

本节概述了包的生命周期。发出命令或发送消息时,生命周期即会开始。接收系统上的相应应用程序收到包时,生命周期即会完成。

应用层:通信的起源

当一个系统上的用户发送消息或发出必须访问远程系统的命令时,即会开始包的历史记录。应用协议会设置包的格式,以便相应的传输层协议(TCP 或 UDP)可以对包进行处理。

假定用户发出 rlogin 命令以登录到远程系统,如图 1–1 中所示。rlogin 命令会使用 TCP 传输层协议。TCP 希望以包含命令信息的字节流的形式接收数据。因此,rlogin 可将此数据作为 TCP 流进行发送。

传输层:数据封装开始的位置

当数据到达传输层时,该层上的协议即会开始数据封装过程。传输层会将应用程序数据封装到传输协议数据单元中。

传输层协议可在发送应用程序和接收应用程序(以传输端口号区分)之间创建虚拟数据流。端口号可标识端口,端口是内存中接收或发送数据的专用位置。此外,传输协议层可能还会提供其他服务,如可靠的、按顺序的数据传送。最终结果取决于是 TCP、SCTP 还是 UDP 处理信息。

TCP 段

TCP 通常称为“面向连接的”协议,这是因为 TCP 可确保将数据成功传送到接收主机。图 1–1 说明了 TCP 协议如何接收来自 rlogin 命令的流。然后,TCP 将从应用层收到的数据分成多个段,再向每个段中附加一个头。

段头包含发送端口和接收端口、段排序信息以及称为校验和的一个数据字段。两台主机上的 TCP 协议都会使用校验和数据来确定数据传送是否出现错误。

建立 TCP 连接

TCP 使用段来确定接收系统是否准备好接收数据。当用于发送的 TCP 需要建立连接时,TCP 会将一个称为 SYN 的段发送到接收主机上的 TCP 协议。用于接收的 TCP 将返回一个称为 ACK 的段以确认是否成功收到段。用于发送的 TCP 会发送另一个 ACK 段,然后继续发送数据。这种控制信息的交换称为三次握手

UDP 包

UDP 是一种“无连接”协议。与 TCP 不同,UDP 不会检查数据是否已到达接收主机。相反,UDP 会将从应用层收到的消息的格式设置为 UDP 包。UDP 会向每个包中附加一个头。此头包含发送端口和接收端口、包含包长度的字段以及校验和。

发送 UDP 进程会尝试将包发送到接收主机上的对等 UDP 进程。应用层将确定接收 UDP 进程是否会确认包的接收。UDP 不需要任何接收通知。UDP 不使用三次握手。

Internet 层:准备传送包的位置

传输协议 TCP、UDP 和 SCTP 会将其段和包向下传递到 Internet 层,IP 协议将在该位置处理这些段和包。IP 通过将这些段和包的格式设置为多个称为 IP 数据报的单元,准备对其进行传送。然后,IP 会确定数据报的 IP 地址,以便将其高效地传送到接收主机。

IP 数据报

IP 除了向段或包的头中附加由 TCP 或 UDP 添加的信息之外,还会附加 IP 数据包头。IP 数据包头中的信息包括发送主机和接收主机的 IP 地址、数据报长度以及数据报排序顺序。如果数据报超过网络包允许的字节大小而必须进行分段,则会提供此信息。

数据链路层:成帧位置

数据链路层协议(如 PPP)会将 IP 数据报的格式设置为。这些协议将附加第三个头和一个脚注,以便对数据报执行“成帧”操作。帧标题包括循环冗余码校验 (cyclic redundancy check, CRC) 字段,用于检查帧经由网络介质时是否出现错误。然后,数据链路层会将帧传递到物理层。

物理网络层:帧的发送和接收位置

发送主机上的物理网络层会接收帧,并且将 IP 地址转换为适合网络介质的硬件地址。然后,物理网络层会通过网络介质将帧向外发送。

接收主机如何处理包

当包到达接收主机时,包便会按照其发送顺序的相反顺序经由 TCP/IP 协议栈。图 1–1 说明了此路径。此外,接收主机上的每种协议还会删除头信息,该信息通过发送主机上的对等协议附加到包中。将会发生以下过程:

  1. 物理网络层接收帧格式的包。物理网络层会计算包的 CRC,然后将帧发送到数据链路层。

  2. 数据链路层检验帧的 CRC 是否正确,然后删除帧标题和 CRC。最后,数据链路层将帧发送到 Internet 层。

  3. Internet 层读取头中的信息以识别传输。然后,Internet 层将确定包是否为分段包。如果分段进行传输,则 IP 会将分段重新汇编成原始数据报。然后,IP 将删除 IP 数据包头并将数据报传递到传输层协议。

  4. 传输层(TCP、SCTP 和 UDP)读取头以确定必须接收数据的应用层协议。然后,TCP、SCTP 或 UDP 将删除其相关的头。TCP、SCTP 或 UDP 将消息或流发送到接收应用程序。

  5. 应用层接收消息。然后,应用层将执行发送主机所请求的操作。

TCP/IP 内部跟踪支持

TCP/IP 通过在 RST 包终止连接时记录 TCP 通信来提供内部跟踪支持。传送或接收 RST 包时,所传送的 10 个包中的信息将与连接信息一起记录。

有关 TCP/IP 和 Internet 的更多参考信息

有关 TCP/IP 和 Internet 的信息随处可见。如果您需要了解本文中没有涉及到的特定信息,或许可以在以下所列出的参考资料中找到感兴趣的内容。

有关 TCP/IP 的计算机书籍

您可以从当地图书馆或计算机书店借到或买到多种有关 TCP/IP 和 Internet 的书籍。以下两本书被视为 TCP/IP 方面的经典著作:

与 TCP/IP 和联网相关的 Web 站点

Internet 拥有大量致力于 TCP/IP 协议及其管理的 Web 站点和用户组。许多制造商(包括 Oracle Corporation)都为一般 TCP/IP 信息提供了基于 Web 的资源。以下是有关 TCP/IP 信息和一般系统管理信息的一些有用的 Web 资源。此表列出了相关的 Web 站点并说明这些站点提供的网络信息。

Web 站点 

说明 

Internet 工程任务组 (Internet Engineering Task Force, IETF) Web 站点

IETF 是负责 Internet 体系结构和管理的机构。IETF Web 站点包含有关该组织的各种活动的信息,另外还包括指向 IETF 主要出版物的链接。  

Oracle Corporation 的 BigAdmin 门户

BigAdmin 提供有关管理 Sun 计算机的信息。此站点提供了常见问题解答、资源、讨论、指向文档的链接以及其他与 Oracle Solaris 10 管理(包括联网)相关的材料。 

互联网信息文档和标准与 Internet 草案

Internet 工程任务组 (Internet Engineering Task Force, IETF) 工作组发布了称为互联网信息文档和标准 (Requests for Comment, RFC) 的标准文档。正在开发的标准会在 Internet 草案中发布。Internet 体系结构委员会 (Internet Architecture Board, IAB) 必须批准所有 RFC 之后,才能将其放入公共域中。通常,RFC 和 Internet 草案面向开发者和其他高级技术读者。但是,许多涉及 TCP/IP 主题的 RFC 都包含适用于系统管理员的重要信息。本书中多处引用了这些 RFC。

通常,仅供参考 (For Your Information, FYI) 文档显示为 RFC 的子集。FYI 包含的信息并不涉及 Internet 标准。FYI 包含更具一般性的 Internet 信息。例如,FYI 文档包括一个书目,其中列出了介绍性的 TCP/IP 书籍和论文。FYI 文档提供了与 Internet 相关的软件工具的详尽纲要。最后,FYI 文档还提供了 Internet 和通用网络术语词汇表。

在本指南以及 Oracle Solaris : System Administrator Collection 中的其他书籍中,都存在对相关 RFC 的引用。