TCP/IP

本文适用于:Windows Server 2003、Windows Server 2003 R2、Windows Server 2003 SP1、Windows Server 2003 SP2

TCP/IP 协议体系结构

TCP/IP 协议映射到称为 DARPA 模型的四层概念模型,该模型以最初开发 TCP/IP 的美国政府机构命名。DARPA 模型的四个层是:应用程序、传输、互联网和网络接口。DARPA 模型中的每一层对应于七层开放系统互连 (OSI) 模型的一层或多层。

网络接口层

处理在网络介质上放置 TCP/IP 数据包以及从网络介质接收 TCP/IP 数据包。

TCP/IP 被设计为独立于网络访问方法、帧格式和介质。

通过这种方式,TCP/IP 可用于连接不同的网络类型。其中包括局域网 (LAN) 介质(如以太网和令牌环)和 WAN 技术(如 X.25 和帧中继)。独立于任何特定的网络介质允许 TCP/IP 适应异步传输模式 (ATM) 等新介质。

网络接口层包含 OSI 模型的数据链路和物理层。

TIPS:请注意,Internet 层不利用网络接口层中可能存在的排序和确认服务。假设网络接口层不可靠,通过会话建立以及数据包的排序和确认进行可靠通信是传输层的功能。

互联网层

互联网层处理寻址、打包和路由功能。互联网层的核心协议是IP、ARP、ICMP、IGMP。

  • 互联网协议 (IP) 是一种可路由协议,用于处理数据包的 IP 寻址、路由以及分段和重组。

  • 地址解析协议 (ARP) 处理将互联网层地址解析为网络接口层地址,例如硬件地址。

  • 互联网控制消息协议 (ICMP) 处理提供诊断功能和报告由于 IP 数据包传递失败而导致的错误。

  • 互联网组管理协议 (IGMP) 处理 IP 多播组成员身份的管理

互联网层类似于 OSI 模型的网络层。

传输层

传输层(也称为主机到主机传输层)负责为应用程序层提供会话和数据报通信服务。传输层的核心协议是传输控制协议 (TCP) 和用户数据报协议 (UDP)。

  • TCP 提供一对一面向连接的可靠通信服务。TCP 处理 TCP 连接的建立、发送数据包的排序和确认,以及传输过程中丢失的数据包的恢复。

  • UDP 提供一对一或一对多、无连接、不可靠的通信服务。当要传输的数据量较小(例如适合单个数据包的数据)、不希望建立 TCP 连接的开销或应用程序或上层协议提供可靠传递时,将使用 UDP。

TCP/IP 传输层包含 OSI 传输层的职责。

应用层

应用程序层允许应用程序访问其他层的服务,并定义应用程序用于交换数据的协议。

广为人知的应用层协议是用于交换用户信息的协议:

  • 超文本传输协议 (HTTP) 用于传输构成万维网网页的文件。

  • 文件传输协议 (FTP) 用于交互式文件传输。

  • 简单邮件传输协议 (SMTP) 用于邮件和附件的传输。

  • Telnet 是一种终端仿真协议,用于远程登录到网络主机。

此外,以下应用层协议有助于简化 TCP/IP 网络的使用和管理:

  • 域名系统 (DNS) 用于将主机名解析为 IP 地址。

  • 路由信息协议 (RIP) 是路由器用于在 IP 互联网络上交换路由信息的路由协议。

  • 简单网络管理协议 (SNMP) 在网络管理控制台和网络设备(路由器、网桥、智能集线器)之间用于收集和交换网络管理信息。

TCP/IP 应用程序的应用程序层接口示例包括 Windows 套接字和 NetBIOS。Windows Sockets 在 Windows Server 2003 下提供标准应用程序编程接口 (API)。NetBIOS 是用于访问协议服务(如会话、数据报和名称解析)的行业标准接口。

TCP/IP 应用程序层包含 OSI 会话层、表示层和应用程序层的职责。

TCP/IP 核心协议

安装在网络操作系统中的 TCP/IP 协议组件是一系列互连的协议,称为 TCP/IP 的核心协议。

TCP/IP 协议套件中的所有其他应用程序和其他协议都依赖于以下协议提供的基本服务:IP、ARP、ICMP、IGMP、TCP 和 UDP。

知识产权

IP 是一种无连接、不可靠的数据报协议,主要负责在主机之间寻址和路由数据包。无连接意味着在交换数据之前未建立会话。不可靠意味着不能保证交货。IP 始终“尽最大努力”尝试传递数据包。IP 数据包可能会丢失、不按顺序传递、重复或延迟。IP 不会尝试从这些类型的错误中恢复。确认传送的数据包和恢复丢失的数据包是更高层协议(如 TCP)的责任。IP 在 RFC 791 中定义。

IP 数据包由 IP 标头和 IP 有效负载组成。下表描述了 IP 标头中的关键字段。

IP 报头中的关键字段

IP 标头字段功能

源地址

IP 数据报的原始源的 IP 地址。

目的地地址

IP 数据报的最终目标的 IP 地址。

鉴定

用于标识特定 IP 数据报,并在发生分段时标识特定 IP 数据报的所有片段。

协议

通知目标主机上的 IP 是否将数据包传递到 TCP、UDP、ICMP 或其他协议。

校验和

用于验证 IP 报头的位级完整性的简单数学计算。

生存时间 (TTL)

指定在被路由器丢弃数据报之前允许传输的网段数。TTL 由发送主机设置,用于防止数据包在 IP 互联网络上无休止地循环。转发 IP 数据包时,路由器需要将 TTL 至少减少 1。

碎片化和重组

如果路由器收到的 IP 数据包对于数据包转发到的网络来说太大,IP 会将原始数据包分成适合下游网络的较小数据包。当数据包到达其最终目标时,目标主机上的 IP 会将片段重新组装成原始有效负载。此过程称为分段和重组。碎片可能发生在混合使用网络媒体(如以太网和令牌环)的环境中。

碎片和重组的工作方式如下:

  • 当源发送 IP 数据包时,它会在“标识”字段中放置一个唯一值。

  • 路由器接收 IP 数据包。IP 路由器注意到数据包要转发到的网络的最大传输单元 (MTU) 小于 IP 数据包的大小。

  • IP 将原始 IP 有效负载划分为适合下一个网络的片段。每个片段都使用其自己的 IP 标头发送,其中包含:

    • 标识属于一起的所有片段的原始标识字段。

    • 更多片段标志指示其他片段紧随其后。“更多片段”标志未设置在最后一个片段上,因为没有其他片段跟随它。

    • 片段偏移字段指示片段相对于原始 IP 有效负载的位置。

当远程主机上的 IP 接收到片段时,“标识”字段会将它们标识为属于一起。然后,使用片段偏移字段将片段重新组装到原始 IP 有效负载中。

ARP

在共享访问、基于广播的网络媒体(如以太网或令牌环)上发送 IP 数据包时,必须解析与转发 IP 地址对应的媒体访问控制 (MAC) 地址。ARP 使用 MAC 级广播将已知的转发或下一跃点 IP 地址解析为其 MAC 地址。ARP 在 RFC 826 中定义。

ICMP

互联网控制消息协议 (ICMP) 为无法传递的数据包提供故障排除功能和错误报告。例如,如果 IP 无法将数据包传递到目标主机,ICMP 将向源主机发送“目标不可达”消息。下表显示了最常见的 ICMP 消息。

常见 ICMP 消息

ICMP 消息功能

回显请求

用于检查与所需主机的 IP 连接的故障排除消息。ping 实用程序发送 ICMP 回显请求消息。

回声回复

对 ICMP 回显请求的响应。

重定向

由路由器发送,用于通知发送主机到目标 IP 地址的更好路由。

源淬火

由路由器发送,用于通知发送主机由于路由器拥塞而丢弃其 IP 数据报。然后,发送主机会降低其传输速率。源淬灭是一种选择性 ICMP 消息,通常不实现。

目的地无法到达

由路由器或目标主机发送,以通知发送主机无法传送数据报。

下表描述了最常见的 ICMP 目标无法访问的 ICMP 消息。

常见的 ICMP 目标无法访问消息

目标无法到达消息描述

主机无法访问

当找不到到目标 IP 地址的路由时由 IP 路由器发送。

协议无法访问

当 IP 标头中的协议字段无法与当前加载的 IP 客户端协议匹配时,由目标 IP 节点发送。

端口无法访问

当 UDP 标头中的目标端口无法与使用该端口的进程匹配时,由目标 IP 节点发送。

需要碎片和 DF 集

在必须发生分段时由 IP 路由器发送,但由于源节点在 IP 标头中设置了不分段 (DF) 标志,因此不允许发送。

源路由失败

当使用源路由信息(存储为源路由选项标头)传递 IP 数据包失败时,由 IP 路由器发送。

ICMP 不会使 IP 成为可靠的协议。ICMP 尝试报告错误并提供有关特定条件的反馈。ICMP 报文作为未确认的 IP 数据报传输,并且本身不可靠。ICMP 在 RFC 792 中定义。

IGMP

互联网组管理协议 (IGMP) 是管理网段上 IP 多播组中的主机成员身份的协议。IP 多播组(也称为主机组)是一组主机,用于侦听发往特定 IP 多播地址的 IP 流量。IP 组播流量发送到单个 MAC 地址,但由多个 IP 主机处理。特定主机侦听特定 IP 组播地址,并接收到该 IP 地址的所有数据包。

组播组成员是员工,路由器是领导,员工发送离开或者加入报文来申请加入或离开组播组,领导通过发送特定组查询或通用组查询报文了解各组播组成员在线情况,收到查询的员工通过report回复自己的状态。当某个组员工离开时,路由器会向其所在组发送特定组查询来确认此组是否还有别的员工在线,当查询超时未收到回复时,则在传发表中删除此组信息。领导为了掌控全局,还会周期性向所在网段内所有用户发送通用组查询,了解组成员在线七年概况,不同的用户响应不同。非组播用户不答复,组播用户在定时器超时时,如果所在组没有其他用户响应,则向路由器发送响应报文;否则,则抑制自己的报文

以下是 IP 多播的一些其他方面:

  • 主机组成员身份是动态的,主机可以随时加入和离开组。

  • 主机组可以是任意大小。

  • 主机组的成员可以跨多个网络跨越 IP 路由器。这种情况需要 IP 路由器上的 IP 多播支持,并且主机能够向本地路由器注册其组成员身份。主机注册是使用 IGMP 完成的。

  • 主机可以将流量发送到 IP 多播地址,而无需属于相应的主机组。

要使主机接收 IP 多播,应用程序必须通知 IP 它将在指定的 IP 多播地址接收多播。如果网络技术支持基于硬件的多播,则会告知网络接口传递特定 IP 多播地址的数据包。在以太网的情况下,网络适配器被编程为响应对应于指定 IP 组播地址的组播 MAC 地址。

主机支持以下级别之一的 IP 多播:

  • 级别 0:不支持发送或接收 IP 组播流量。

  • 级别 1:支持发送但不接收 IP 组播流量。

  • 级别 2:支持发送和接收 IP 组播流量。Windows Server 2003、Windows 2000、Microsoft Windows NT 3.5 及更高版本以及 TCP/IP 支持 2 级 IP 多播。

注册主机组信息的协议是 IGMP,支持级别 2 IP 多播的所有主机都需要该协议。IGMP 数据包使用 IP 标头发送。

IGMP 消息采用三种形式。

  • 主机成员资格报告。当主机加入主机组时,它会向所有主机 IP 多播地址 (224.0.0.1) 或指定的 IP 多播地址发送 IGMP 主机成员身份报告消息,通过引用 IP 多播地址声明其在特定主机组中的成员身份。主机还可以指定需要多播流量的特定源。

  • 主机成员身份查询。当路由器轮询网络以确保存在特定主机组的成员时,它会向所有主机 IP 组播地址发送 IGMP 主机成员身份查询消息。如果在多次轮询后未收到对轮询的响应,则路由器假定该网络在该组中没有成员身份,并停止将该组播组信息通告给其他路由器。

  • 集体休假。当主机不再有兴趣接收发送到特定 IP 组播地址的组播流量,并且发送了最后一条 IGMP 主机成员身份报告消息以响应 IGMP 主机成员身份查询时,它会向特定 IP 组播地址发送 IGMP 组保留消息。本地路由器验证发送 IGMP 组保留消息的主机是否是该子网上该组播地址的最后一个组成员。如果在多次轮询后未收到对轮询的响应,则路由器假定该子网在该组中没有成员身份,并停止将该组播组信息通告给其他路由器。

为了使 IP 多播跨越互联网络的路由器,路由器使用组播路由协议来传达主机组信息,以便支持组播转发的每个路由器都知道哪些网络包含哪些主机组的成员。IGMP 在 RFC 1112 和 2236 中定义。

技术合作计划(TCP

TCP 是一种可靠的、面向连接的交付服务。数据分段传输。面向连接意味着必须先建立连接,然后主机才能交换数据。通过为传输的每个段分配序列号来实现可靠性。确认用于验证是否已收到数据。对于发送的每个分段,接收主机必须在指定的时间段内返回接收字节的确认 (ACK)。如果未收到 ACK,则会重新传输数据。TCP 在 RFC 793 中定义。

TCP 使用字节流通信,其中 TCP 段中的数据被视为没有记录或字段边界的字节序列。下表描述了 TCP 标头中的关键字段。

TCP 标头中的关键字段

功能

源端口

发送主机的 TCP 端口。

目标端口

目标主机的 TCP 端口。

序列号

TCP 段中数据的第一个字节的序列号。

确认编号

发送方希望接下来从连接的另一端接收的字节的序列号。

发送此 TCP 段以存储传入段的主机上 TCP 缓冲区的当前大小。

TCP 校验和

验证 TCP 标头和 TCP 数据的位级完整性。

TCP端口

TCP 端口提供用于传送 TCP 段的特定位置。低于 1024 的端口号是众所周知的端口,由互联网号码分配机构 (IANA) 分配。下表列出了一些众所周知的 TCP 端口。

众所周知的 TCP 端口

TCP 端口号描述

20

FTP(数据通道)

21

FTP(控制通道)

23

远程登录

80

用于万维网的 HTTP

139

网络BIOS 会话服务

TCP/IP 应用程序接口

为了使应用程序以标准方式访问核心 TCP/IP 协议提供的服务,Windows Server 2003 等网络操作系统提供了行业标准的应用程序编程接口 (API)。API 是由应用程序代码以编程方式调用以执行网络功能的函数和命令集。例如,连接到网站的 Web 浏览器应用程序需要访问 TCP 的连接建立服务。

下图显示了两个常见的 TCP/IP API,Windows 套接字和 NetBIOS,以及它们与核心协议的关系。

用于 TCP/IP 的 API

 

windows套接字接口

Windows Sockets API 是 Windows Server 2003 下的标准 API,用于使用 TCP 和 UDP 的应用程序。写入 Windows Sockets API 的应用程序在许多版本的 TCP/IP 上运行。TCP/IP 实用程序和 SNMP 服务是写入 Windows 套接字接口的应用程序示例。

Windows 套接字提供的服务允许应用程序绑定到主机上的特定端口和 IP 地址、启动和接受连接、发送和接收数据以及关闭连接。有两种类型的套接字:

  • 流套接字使用 TCP 提供双向、可靠、有序且不重复的数据流。

  • 数据报套接字使用 UDP 提供单向或双向数据流。

套接字由主机上的协议和地址定义。地址的格式特定于每个协议。在 TCP/IP 中,地址是 IP 地址和端口的组合。两个套接字(连接两端各一个)形成双向通信路径。

为了进行通信,应用程序指定协议、目标主机的 IP 地址和目标应用程序的端口。连接应用程序后,可以发送和接收信息。

网络简介接口

NetBIOS 允许应用程序通过网络进行通信。NetBIOS 定义了两个实体:会话级接口和会话管理和数据传输协议。

NetBIOS 接口是用户应用程序向底层网络协议软件提交网络输入/输出 (I/O) 和控制指令的标准 API。使用 NetBIOS 接口 API 进行网络通信的应用程序可以在支持 NetBIOS 接口的任何协议软件上运行。

NetBIOS 还定义了一个在会话/传输级别运行的协议。这是由底层协议软件(如NetBIOS FramesProtocol NBFP——NetBEUI或NetBIOS over TCP/IP(NetBT)的一个组件)实现的,该软件执行适应NetBIOS接口命令集所需的网络I / O。基于 TCP/IP 的 NetBIOS 在 RFC 1001 和 1002 中定义。默认情况下启用 NetBT,但 Windows Server 2003 允许您为不包含基于 NetBIOS 的网络客户端或应用程序的环境禁用 NetBT。

NetBIOS 为 NetBIOS 名称管理、NetBIOS 数据报和 NetBIOS 会话提供命令和支持。

 

网络 BIOS 名称管理

NetBIOS 名称管理服务提供以下功能:

  • 名称注册和发布。当 TCP/IP 主机初始化时,它通过将 NetBIOS 名称注册请求广播或定向到 NetBIOS 名称服务器(如 WINS 服务器)来注册其 NetBIOS 名称。如果另一台主机注册了相同的 NetBIOS 名称,则该主机或 NetBIOS 名称服务器将以否定名称注册响应进行响应。因此,启动主机会收到初始化错误。当主机上的工作站服务停止时,当其他人尝试使用该名称时,主机将停止广播负名称注册响应,并将名称释放发送到 NetBIOS 名称服务器。据说 NetBIOS 名称已发布并可供另一台主机使用。

  • 名称解析。当一个 NetBIOS 应用程序想要与另一个 NetBIOS 应用程序通信时,必须解析 NetBIOS 应用程序的 IP 地址。NetBT 通过在本地网络上广播 NetBIOS 名称查询或将 NetBIOS 名称查询发送到 NetBIOS 名称服务器来执行此功能。

NetBIOS 名称服务使用 UDP 端口 137。

网络BIOS 数据报

NetBIOS 数据报服务提供无连接、无序和不可靠的数据报。数据报可以定向到特定的NetBIOS名称或广播到一组名称。传递是不可靠的,因为只有登录到网络的用户才能收到消息。数据报服务可以启动和接收广播消息和定向消息。NetBIOS 数据报服务使用 UDP 端口 138。

网络BIOS 会话

NetBIOS 会话服务提供面向连接、按顺序排列且可靠的 NetBIOS 消息的传递。NetBIOS 会话使用 TCP 连接并提供会话建立、保持连接和终止。NetBIOS 会话服务允许使用 TCP 端口 139 在两个方向上并发数据传输。

IPv4 寻址

对于 IP 版本 4,每个 TCP/IP 主机都由一个逻辑 IP 地址标识。IP 地址是网络层地址,不依赖于数据链路层地址(例如网络适配器的 MAC 地址)。使用 TCP/IP 进行通信的每个主机和网络组件都需要唯一的 IP 地址,可以手动分配,也可以使用动态主机配置协议 (DHCP) 进行分配。

IP 地址标识系统上的系统位置,就像街道地址标识城市街区上的房屋一样。正如街道地址必须标识唯一的住所一样,IP 地址对于互联网络必须是全局唯一的,并且具有统一的格式。

每个 IP 地址都包含一个网络 ID 和一个主机 ID。

  • 网络 ID(也称为网络地址)标识位于由 IP 路由器绑定的同一物理网络上的系统。同一物理网络上的所有系统必须具有相同的网络 ID。网络 ID 对于互联网络必须是唯一的。

  • 主机 ID(也称为主机地址)标识网络中的工作站、服务器、路由器或其他 TCP/IP 主机。主机地址对于网络 ID 必须是唯一的。

IPv4 地址语法

IP 地址由 32 位组成。标准做法是将 IPv4 地址的 32 位划分为四个称为八位字节的 2 位字段,而不是使用二进制表示法 (Base32) 一次表示 4 位。每个八位字节都转换为 8–10 之间的十进制数(以 0 为基数),并用句点(点)分隔。这种格式称为点分十进制表示法。下表提供了二进制和点分十进制格式的 IP 地址示例。

二进制和点分十进制格式的 IP 地址

二进制格式点分十进制表示法

11000000 10101000 00000011 00011000

192.168.3.24

例如,4的 IPv11000000101010000000001100011000 地址为:

  • 分为 8 位块:11000000 10101000 00000011 00011000。

  • 每个块转换为十进制:192 168 3 24

  • 相邻的八位字节由句点分隔:192.168.3.24。

表示法 w.x.y.z 用于指代通用 IP 地址,如下图所示。

IP地址

IPv4 地址的类型

互联网标准定义了以下类型的 IPv4 地址:

  • 单播。分配给位于网络上特定子网上的单个网络接口,用于一对一通信。

  • 多播。分配给位于网络上各个子网上的一个或多个网络接口,用于一对多通信。

  • 广播。分配给位于网络上子网上的所有网络接口,用于子网上的每个人之间的通信。

以下各节详细介绍了这些类型的地址。

IPv4 单播地址

IPv4 单播地址标识接口在网络上的位置,其方式与街道地址标识城市街区上的房屋的方式相同。正如街道地址必须标识唯一的住宅一样,IPv4 单播地址对于网络必须是全局唯一的,并且具有统一的格式。

每个 IPv4 单播地址都包含一个网络 ID 和一个主机 ID。

  • 网络 ID(也称为网络地址)是 IPv4 单播地址的固定部分,用于标识位于与 IPv4 路由器边界相同的物理或逻辑网段上的接口集。TCP/IP 网络上的网段也称为子网。同一物理或逻辑子网上的所有系统必须使用相同的网络 ID,并且该网络 ID 对于整个 TCP/IP 网络必须是唯一的。

  • 主机 ID(也称为主机地址)是 IPv4 单播地址的可变部分,用于标识子网上网络节点的接口。主机 ID 对于网络 ID 必须是唯一的。

如果网络 ID 对于 TCP/IP 网络是唯一的,并且主机 ID 对于网络 ID 是唯一的,则由网络 ID 和主机 ID 组成的整个 IPv4 单播地址对于整个 TCP/IP 网络都是唯一的。

IPv4 组播地址

IPv4 组播地址用于单数据包一对多传送。在启用了 IPv4 组播的 Intranet 上,寻址到 IPv4 组播地址的 IPv4 数据包由路由器转发到有主机侦听发送到 IPv4 组播地址的流量的子网。IPv4 组播为多种类型的通信提供高效的一对多传送服务。

IPv4 组播地址由 D 类因特网地址类定义:224.0.0.0/4。IPv4 组播地址的范围从 224.0.0.0 到 239.255.255.255。4.224.0.0/0 地址前缀(24.224.0.0 到 0.224.0.0)的 IPv255 组播地址保留用于本地子网组播流量。

IPv4 广播地址

IPv4 使用一组广播地址在子网传送服务上提供一对所有人。发送到 IPv4 广播地址的数据包由子网上的所有接口处理。以下是不同类型的 IPv4 广播地址:

  • 网络广播。通过将类地址前缀的所有主机位设置为 1 而形成。类网络 ID 131.107.0.0/16 的网络广播地址示例为 131.107.255.255。网络广播用于将数据包发送到有类网络的所有接口。IPv4 路由器不转发网络广播数据包。

  • 子网广播。通过将无类别地址前缀的所有主机位设置为 1 而形成。无类别网络 ID 131.107.26.0/24 的网络广播地址示例为 131.107.26.255。子网广播用于将数据包发送到无类别网络的所有主机。IPv4 路由器不转发子网广播数据包。对于类地址前缀,没有子网广播地址,只有网络广播地址。对于无类别地址前缀,没有网络广播地址,只有子网广播地址。

  • 全子网定向广播。通过将所有原始有类网络 ID 主机位设置为 1 作为无类别地址前缀而形成。将寻址到全子网定向广播的数据包定义为到达基于子网类的网络 ID 的所有子网上的所有主机。子网网络 ID 131.107.26.0/24 的全子网定向广播地址示例是 131.107.255.255。全子网定向广播是原始有类网络 ID 的网络广播地址。IPv4 路由器可以转发所有子网定向广播数据包,但是 RFC 1812 中不推荐使用全子网定向广播地址。

  • 有限播出。通过将 IPv32 地址的所有 4 位设置为 1 (255.255.255.255) 而形成。当本地网络 ID 未知时,受限广播地址用于本地子网上的一对一传送。IPv4 节点通常仅在自动配置过程(如引导协议 (BOOTP) 或 DHCP)期间使用有限的广播地址。例如,对于 DHCP,DHCP 客户端必须对发送的所有流量使用有限的广播地址,直到 DHCP 服务器确认使用了提供的 IPv4 地址配置。IPv4 路由器不转发有限的广播数据包。

互联网地址类

互联网社区最初定义了地址类,以适应不同类型的地址和不同大小的网络。地址类定义哪些位用于网络 ID,哪些位用于主机 ID。它还定义了可能的网络数和每个网络的主机数。在五个地址类别中,为 IPv4 单播地址定义了 A、B 和 C 类地址。D类地址定义为IPv4组播地址,E类地址定义为实验用途。

A类

A 类网络 ID 分配给具有大量主机的网络。A 类地址中的高阶位始终设置为零,这使得所有 A 类网络和地址的地址前缀为 0.0.0.0/1(或 0.0.0.0、128.0.0.0)。接下来的七位(完成第一个八位字节)用于枚举 A 类网络 ID。因此,A 类网络 ID 的地址前缀具有 8 位前缀长度(/8 或 255.0.0.0)。其余 24 位(最后三个八位字节)用于主机 ID。地址前缀 0.0.0.0/0(或 0.0.0.0、0.0.0.0)是保留的网络 ID,127.0.0.0/8(或 127.0.0.0、255.0.0.0)是为环回地址保留的。在总共 128 个可能的 A 类网络中,有 126 个网络,每个网络有 16,777,214 个主机。

注意

  • 保留全零和全一主机 ID

  • 枚举给定网络 ID 的主机 ID 时,将保留主机 ID 中的所有位设置为 0(全零主机 ID)和主机 ID 中的所有位设置为 1(全主机 ID)的两个主机 ID,不能分配给网络节点接口。因此,在上述计算中,A 类主机 ID 有 24 位,可能的主机 ID 总数为 16,777,216 (224)。减去两个预留主机 ID 时,可用主机 ID 总数为 16,777,214。

下图说明了 A 类地址的结构。

A 类地址的结构

B类

B 类网络 ID 分配给大中型网络。B 类地址中的两个高阶位始终设置为 10,这使得所有 B 类网络和地址的地址前缀为 128.0.0.0/2(或 128.0.0.0、192.0.0.0)。接下来的 14 位(完成前两个八位组)用于枚举 B 类网络 ID。因此,B 类网络 ID 的地址前缀具有 16 位前缀长度(/16 或 255.255.0.0)。其余 16 位(最后两个八位字节)用于主机 ID。使用 14 位表示 B 类网络 ID,16 位表示主机 ID,这允许 16,384 个网络和每个网络 65,534 个主机。

下图说明了 B 类地址的结构。

B 类地址的结构

C类

C类地址被分配给小型网络。C 类地址中的三个高阶位始终设置为 110,这使得所有 C 类网络和地址的地址前缀为 192.0.0.0/3(或 192.0.0.0、224.0.0.0)。接下来的 21 位(完成前三个八位组)用于枚举 C 类网络 ID。因此,C 类网络 ID 的地址前缀具有 24 位前缀长度(/24 或 255.255.255.0)。其余 8 位(最后一个八位字节)用于主机 ID。使用 21 位表示 C 类网络 ID,8 位表示主机 ID,这允许 2,097,152 个网络和每个网络 254 个主机。

下图说明了 C 类地址的结构。

C 类地址的结构

D类

D 类地址保留用于 IPv4 组播地址。D类地址中的四个高阶位始终设置为1110,这使得所有D类地址的地址前缀为224.0.0.0/4(或224.0.0.0,240.0.0.0)。

E 类

E 类地址保留用于实验用途。E 类地址中的高阶位设置为 1111,这使得所有 E 类地址的地址前缀为 240.0.0.0/4(或 240.0.0.0、240.0.0.0)

下表汇总了可用于 IPv4 单播地址的因特网地址类 A、B 和 C。

因特网地址类摘要

w 的值网络 ID 部分主机 ID 部分网络标识每个网络的主机 ID

一个

1-126

w

X.Y.Z

126

16,777,214

B

128-191

W.X

Y.Z

16,384

65,534

C

192-223

W.x.Y

z

2,097,152

254

 

公共和专用地址

如果要直接(路由)连接到互联网,则必须使用公共地址。如果要间接(代理或转换)连接到 Internet,可以使用公用或专用地址。如果您的内网未以任何方式连接到互联网,则可以使用所需的任何单播 IPv4 地址。但是,应使用专用地址,以避免在内部网最终连接到 Internet 时重新编号网络。

公共地址

公共地址由 ICANN 分配,由历史上分配的基于类别的网络 ID 或最近基于 CIDR 的地址前缀组成,这些前缀保证在互联网上具有全局唯一性。对于基于 CIDR 的地址前缀,w(第一个八位字节)的值在 1 到 126 和 128 到 223 的范围内,“专用地址”中描述的专用地址前缀除外。

分配公共地址后,路由将添加到 Internet 的路由器,以便发送到与分配的公共地址前缀匹配的地址的流量可以到达分配的组织。例如,当以网络 ID 和前缀长度的形式为组织分配地址前缀时,该地址前缀也作为路由存在于 Internet 的路由器中。发往分配地址前缀内地址的 IPv4 数据包将路由到正确的目标。

私人地址

每个 IPv4 接口都需要一个对 IPv4 网络全局唯一的 IPv4 地址。在互联网的情况下,连接到互联网的子网上的每个 IPv4 接口都需要一个对互联网全局唯一的 IPv4 地址。随着互联网的发展,连接到互联网的组织需要为其内部网上的每个接口提供一个公共地址。这一要求对可用的公共地址池提出了巨大的需求。

在分析组织的寻址需求时,互联网的设计者指出,对于许多组织来说,组织内部网上的大多数主机不需要直接连接到互联网。那些确实需要一组特定的 Internet 服务(如 Web 访问和电子邮件)的主机通常通过应用程序层网关(如代理服务器和电子邮件服务器)访问 Internet 服务。结果是,大多数组织只需要直接连接到 Internet 的节点(如代理、服务器、路由器、防火墙和转换器)的少量公共地址。

对于组织内不需要直接访问 Internet 的主机,需要不与已分配的公共地址重复的 IPv4 地址。为了解决这个寻址问题,互联网设计人员保留了一部分IPv4地址空间,并将这个空间命名为专用地址空间。专用地址空间中的 IPv4 地址永远不会分配为公用地址。专用地址空间中的 IPv4 地址称为专用地址。由于公用地址空间和专用地址空间不重叠,因此专用地址永远不会重复公用地址。

RFC 1918 中指定的专用地址空间由以下地址前缀定义:

  • 10.0.0.0/8 (10.0.0.0, 255.0.0.0)

    允许以下范围的有效 IPv4 单播地址:10.0.0.1 到 10.255.255.254。10.0.0.0/8 地址前缀有 24 个主机位,可用于专用组织内的任何寻址方案。

  • 172.16.0.0/12 (172.16.0.0, 255.240.0.0)

    允许以下范围的有效 IPv4 单播地址:172.16.0.1 到 172.31.255.254。172.16.0.0/12 地址前缀有 20 个主机位,可用于专用组织内的任何寻址方案。

  • 192.168.0.0/16 (192.168.0.0, 255.255.0.0)

    允许以下范围的有效 IPv4 单播地址:192.168.0.1 到 192.168.255.254。192.168.0.0/16 地址前缀有 16 个主机位,可用于专用组织内的任何寻址方案。

由于 ICANN 绝不会将专用地址空间中的 IPv4 地址分配给连接到互联网的组织,因此互联网路由器中永远不会有专用地址前缀的路由。您无法通过互联网连接到专用地址。因此,具有专用地址的主机必须将其 Internet 流量请求发送到具有有效公共地址的应用程序层网关(如代理服务器),或者通过将专用地址转换为有效公共地址的网络地址转换器 (NAT)。

非法地址

不需要互联网连接的私有组织内部网可以选择他们想要的任何地址方案,甚至可以使用 ICANN 分配的公共地址前缀。如果该组织后来决定连接到互联网,其当前的地址方案可能包括 ICANN 已分配给其他组织的地址。这些地址与 ICANN 分配的现有公共地址冲突,称为非法地址。从非法地址到互联网位置的连接是不可能的,因为互联网的路由器将发往 ICANN 分配的地址前缀的流量发送给分配的组织,而不是发送到使用非法地址的组织。

例如,专用组织选择对其 Intranet 使用 206.73.118.0/24 地址前缀。公共地址前缀 206.73.118.0/24 已由 ICANN 分配给微软公司,互联网路由器上存在路由,用于将 4.206.73.118/0 上 IPv24 地址的所有数据包发送到微软路由器。只要私人组织不连接到互联网,就没有问题,因为两个地址前缀在不同的IPv4网络上;因此,它们对于每个单独的网络都是唯一的。如果专用组织稍后直接连接到 Internet 并继续使用 206.73.118.0/24 地址前缀,则发往与 206.73.118.0/24 地址前缀匹配的位置的任何 Internet 响应流量都将发送到 Microsoft 路由器,而不是专用组织的路由器。

自动专用 IP 寻址

运行 Windows Server 2003 和 Windows XP 的计算机上配置为自动获取未成功联系动态主机配置协议 (DHCP) 服务器的 IPv4 地址配置的接口使用其备用配置,如“备用配置”选项卡上指定的那样。

如果在“备用配置”选项卡上选择了“自动专用 IP 地址”选项,并且找不到 DHCP 服务器,则 Windows TCP/IP 将使用自动专用 IP 寻址 (APIPA)。Windows TCP/IP 从 4.169.254.0/0 地址前缀中随机选择一个 IPv16 地址,并分配子网掩码 255.255.0.0。此地址前缀已由 ICANN 保留,无法在互联网上访问。APIPA允许单子网小型办公室/家庭办公室(SOHO)网络使用TCP / IP,而无需静态配置或DHCP服务器的管理。APIPA 不配置默认网关。因此,只能使用本地子网流量。

特殊 IPv4 地址

以下是特殊的 IPv4 地址:

  • 0.0.0.0

    它被称为未指定的 IPv4 地址,用于指示缺少地址。仅当 IPv4 节点未配置 IPv4 地址配置并尝试通过配置协议(如动态主机配置协议 (DHCP))获取地址时,未指定的地址仅用作源地址。

  • 127.0.0.1

    它被称为 IPv4 环路地址,分配给内部环路接口,使节点能够向自身发送数据包。

单播 IPv4 寻址准则

将网络 ID 分配给组织的子网时,请使用以下准则:

  • 网络 ID 在 IPv4 网络上必须是唯一的。

    如果网络 ID 用于子网,其中有可从互联网直接访问的主机,则必须使用 ICANN 或互联网服务提供商分配的公有 IPv4 地址前缀。如果网络 ID 用于无法通过 Internet 直接访问的子网,请使用合法公共地址前缀或专用 Intranet 上唯一的专用地址前缀。

  • 网络 ID 不能以数字 0 或 127 开头。

    第一个八位字节的这两个值都是保留的,不能用于 IPv4 单播地址。

将主机 ID 分配给 IPv4 子网上节点的接口时,请使用以下准则:

  • 主机 ID 在子网上必须是唯一的。

  • 不能使用全零或全一主机 ID。

为给定地址前缀定义有效 IPv4 单播地址的范围时,请使用以下标准做法:

  • 对于范围中的第一个 IPv4 单播地址,请将地址中的所有主机位设置为 0,但低位除外,该位设置为 1。

  • 对于范围内的最后一个 IPv4 单播地址,请将地址中的所有主机位设置为 1,但低位除外,该位设置为 0。

例如,要表示地址前缀 192.168.16.0/20 的地址范围:

  • 该范围内的第一个 IPv4 单播地址是 11000000 10101000 0001000000000001(主机位为粗体)或 192.168.16.1。

  • 该范围内的最后一个 IPv4 单播地址是 11000000 10101000 0001111111111110(主机位为粗体)或 192.168.31.254。

名称解析

虽然 IP 设计为与源主机和目标主机的 32 位 IP 地址一起使用,但计算机用户在使用和记住名称方面比 IP 地址要好得多。

当名称用作 IP 地址的别名时,必须存在一种机制将该名称分配给适当的 IP 节点,以确保其唯一性和对其 IP 地址的解析。

在本节中,将讨论用于分配和解析主机名(由 Windows 套接字应用程序使用)和 NetBIOS 名称(由 NetBIOS 应用程序使用)的机制。

主机名解析

主机名是分配给 IP 节点的别名,用于将其标识为 TCP/IP 主机。主机名最多可以包含 255 个字符,并且可以包含字母和数字字符以及“-”和“.”字符。可以将多个主机名分配给同一主机。对于基于 Windows Server 2003 的计算机,主机名不必与 Windows Server 2003 计算机名称匹配。

Windows 套接字应用程序(如 Microsoft Internet Explorer)可以使用以下两个值之一连接到目标:IP 地址或主机名。指定 IP 地址时,不需要名称解析。指定主机名后,必须先将主机名解析为 IP 地址,然后才能开始与所需资源进行基于 IP 的通信。

主机名通常采用域名的形式,其结构遵循互联网约定。名称解析和域名的工作方式相同,无论它们用于 IPv4 还是 IPv6 地址。

域名

为了满足各种组织对可扩展、可自定义命名方案的需求,InterNIC 创建并维护了一个称为域名系统 (DNS) 的分层命名空间。DNS 命名方案类似于磁盘上文件的目录结构。通常,从根目录到子目录跟踪文件路径,直到其最终位置和文件名。但是,主机名从其最终位置追溯到其父域,直到根。主机的唯一名称(表示其在层次结构中的位置)是其完全限定域名 (FQDN)。具有二级域和子域的顶级域命名空间如下图所示。

域名系统

互联网顶级域名

域名意义

.com

商业组织

edu

教育机构

gov

政府机构

mil

军事组

net

主要网络支持中心

org

上述组织以外的组织

int

国际组织

<country/region code>

每个国家/地区(地理方案)

  • 顶级域下方的二级域表示顶级域中的特定组织。InterNIC负责维护和确保互联网上二级域名的唯一性。

  • 子域位于二级域之下。各个组织负责创建和维护子域。

例如,对于 FQDN websrv.wcoast.reskit.com

  • 尾随句点 (.) 表示这是一个 FQDN,其名称相对于域命名空间的根。FQDN 通常不需要尾随句点,如果缺少尾随句点,则假定存在尾随句点。

  • com 是顶级域,表示商业组织。

  • reskit是二级域名,表示资源工具包公司。

  • wcoast是 reskit.com 的子域,表示资源工具包公司的西海岸部门。

  • websrv 是西海岸分部 Web 服务器的名称。

域名不区分大小写。

未连接到互联网的组织可以实现他们想要的任何顶级和二级域名。但是,典型的实现遵循 InterNIC 规范,因此最终参与互联网不需要重命名过程。

使用主机文件解析主机名

将主机名解析为 IP 地址的一种常见方法是使用包含 IP 地址到主机名映射的本地存储的数据库文件。在大多数 UNIX 系统上,此文件是 /etc/hosts。在 Windows Server 2003 系统上,它是 %systemroot%\System32\Drivers\Etc 目录中的主机文件。

以下是主机文件内容的示例:

复制

Table of IP addresses and host names
127.0.0.1    localhost
131.107.34.1    router
172.30.45.121    server1.central.reskit.com s1

在主机文件中:

  • 可以将多个主机名分配给同一 IP 地址。请注意,IP 地址为 172.30.45.121 的服务器可以通过其 FQDN (server1.central.reskit.com) 或昵称 (s1) 来引用。这允许此计算机上的用户使用昵称 s1 引用此服务器,而不是键入整个 FQDN。

  • 条目可以区分大小写,具体取决于平台。UNIX 计算机的主机文件中的条目区分大小写。Windows Server 2003、Windows XP 和基于 Windows 2000 的计算机的主机文件中的条目不区分大小写。

对于运行 Windows Server 2003、Windows XP 和 Windows 2000 的计算机,主机文件中的条目将加载到 DNS 客户端解析程序缓存中。解析主机名时,始终检查 DNS 客户端解析程序缓存。

使用 Hosts 文件的优点是它可以为用户自定义。用户可以创建他们想要的任何条目,包括经常访问的资源的易于记忆的昵称。但是,主机文件的单独维护不能很好地扩展到存储大量 FQDN 映射。

使用 DNS 服务器的主机名解析

为了使主机名解析可扩展且可集中管理,FQDN 的 IP 地址映射存储在 DNS 服务器上。若要使主机能够查询 DNS 服务器,请启用称为 DNS 解析程序的组件,并使用 DNS 服务器的 IP 地址进行配置。DNS 解析器是大多数网络操作系统(包括 Windows Server 2003)随附的 TCP/IP 协议栈的内置组件。

当 Windows 套接字应用程序被指定为 FQDN 作为目标位置时,该应用程序将调用 Windows 套接字函数以将名称解析为 IP 地址。请求将传递到 TCP/IP 协议中的 DNS 解析程序组件。DNS 解析程序将 FQDN 请求打包为 DNS 名称查询数据包,并将其发送到 DNS 服务器。

DNS 是一个分布式命名系统。每个 DNS 服务器不是在每个 DNS 服务器上存储整个命名空间的所有记录,而是仅存储命名空间特定部分的记录。DNS 服务器对于与存储在该 DNS 服务器上的记录对应的命名空间部分具有权威性。在互联网的情况下,数百个DNS服务器存储互联网命名空间的各个部分。为了便于任何 DNS 服务器解析任何有效域名,DNS 服务器还配置了指向其他 DNS 服务器的指针记录。

以下过程概述了当主机上的 DNS 解析程序组件向 DNS 服务器发送 DNS 查询时发生的情况。此过程如下图所示,并进行了简化,以便您可以基本了解 DNS 解析过程。

  1. DNS 客户端的 DNS 解析程序组件格式化包含 FQDN 的 DNS 名称查询请求消息,并将其发送到配置的 DNS 服务器。

  2. DNS 服务器根据本地存储的地址记录检查 DNS 名称查询请求消息中的 FQDN。如果找到记录,则与请求的 FQDN 对应的 IP 地址将发送回客户端。

  3. 如果未找到 FQDN,DNS 服务器会将请求转发到 FQDN 的权威 DNS 服务器。

  4. 权威 DNS 服务器将包含解析的 IP 地址的回复返回到原始 DNS 服务器。

  5. 原始 DNS 服务器将 IP 地址映射信息发送到客户端。

使用 DNS 服务器解析 FQDN

 

为了获取对 FQDN 具有权威性的服务器的 IP 地址,Internet 上的 DNS 服务器会经历查询多个 DNS 服务器的迭代过程,直到找到权威服务器。有关 DNS 名称解析过程的详细信息,请参阅 DNS 技术参考

将本地数据库文件与 DNS 合并

TCP/IP 实现(包括 Windows Server 2003)允许同时使用本地数据库文件和 DNS 服务器来解析主机名。当用户在基于 Windows 套接字的 TCP/IP 应用程序中指定主机名时:

  • TCP/IP 检查 DNS 客户端解析程序缓存(加载了来自主机文件和其他以前解析的主机名的条目)以查找匹配的名称。如果在本地数据库文件中找不到匹配的名称,则该主机名将打包为 DNS 名称查询请求消息,并发送到配置的 DNS 服务器。

组合方法允许用户拥有用于解析个性化昵称的本地数据库文件,并使用全局分布式 DNS 数据库解析 FQDN。

网络 BIOS 名称解析

NetBIOS 名称解析是成功将 NetBIOS 名称映射到 IP 地址的过程。NetBIOS 名称是一个 16 字节的地址,用于标识网络上的 NetBIOS 资源。NetBIOS 名称是唯一(独占)或组(非独占)名称。当 NetBIOS 进程与特定计算机上的特定进程通信时,将使用唯一的名称。当 NetBIOS 进程与多台计算机上的多个进程通信时,将使用组名。

NetBIOS 名称充当会话层应用程序标识符。例如,NetBIOS 会话服务通过 TCP 端口 139 运行。所有 NetBT 会话请求都发送到 TCP 目标端口 139。在标识要与之建立 NetBIOS 会话的 NetBIOS 应用程序时,将使用 NetBIOS 名称。

使用 NetBIOS 名称的进程的一个示例是基于 Windows Server 2003 的计算机上的 Microsoft 网络文件和打印机共享组件(服务器服务)。启动计算机时,服务器服务会根据计算机的名称注册唯一的 NetBIOS 名称。服务器服务使用的确切名称是 15 个字符的计算机名称加上第 0 个字符的 20x15。如果计算机名称的长度不是 15 个字符,则填充最多 <> 个字符的空格。其他网络服务(如工作站或信使服务)也使用计算机名称来构建其 NetBIOS 名称。第 <> 个字符用于唯一标识每个服务。

注意

  • 这里提到的Messenger服务不是Windows Messenger。Windows Messenger是Windows Server 2003中包含的Microsoft应用程序,允许实时消息传递和协作。

您指定的文件服务器上的服务器服务对应于特定的 NetBIOS 名称。例如,当您尝试连接到名为 CORPSERVER 的计算机时,与服务器服务对应的 NetBIOS 名称是“CORPSERVER <20>”(请注意使用空格字符的填充)。在建立文件和打印共享连接之前,必须创建 TCP 连接。为了建立TCP连接,NetBIOS名称“CORPSERVER <20>”必须解析为IP地址。

若要查看在 Windows Server 2003 计算机上运行的 NetBIOS 进程注册的 NetBIOS 名称,请在 Windows Server 2003 命令提示符处键入 nbtstat -n

网络 BIOS 节点类型

NetBIOS 名称解析为 IP 地址的确切机制取决于节点配置的 NetBIOS 节点类型。RFC 1001 定义了下表中列出的 NetBIOS 节点类型。

使用 DNS 服务器的主机名解析

为了使主机名解析可扩展且可集中管理,FQDN 的 IP 地址映射存储在 DNS 服务器上。若要使主机能够查询 DNS 服务器,请启用称为 DNS 解析程序的组件,并使用 DNS 服务器的 IP 地址进行配置。DNS 解析器是大多数网络操作系统(包括 Windows Server 2003)随附的 TCP/IP 协议栈的内置组件。

当 Windows 套接字应用程序被指定为 FQDN 作为目标位置时,该应用程序将调用 Windows 套接字函数以将名称解析为 IP 地址。请求将传递到 TCP/IP 协议中的 DNS 解析程序组件。DNS 解析程序将 FQDN 请求打包为 DNS 名称查询数据包,并将其发送到 DNS 服务器。

DNS 是一个分布式命名系统。每个 DNS 服务器不是在每个 DNS 服务器上存储整个命名空间的所有记录,而是仅存储命名空间特定部分的记录。DNS 服务器对于与存储在该 DNS 服务器上的记录对应的命名空间部分具有权威性。在互联网的情况下,数百个DNS服务器存储互联网命名空间的各个部分。为了便于任何 DNS 服务器解析任何有效域名,DNS 服务器还配置了指向其他 DNS 服务器的指针记录。

以下过程概述了当主机上的 DNS 解析程序组件向 DNS 服务器发送 DNS 查询时发生的情况。此过程如下图所示,并进行了简化,以便您可以基本了解 DNS 解析过程。

  1. DNS 客户端的 DNS 解析程序组件格式化包含 FQDN 的 DNS 名称查询请求消息,并将其发送到配置的 DNS 服务器。

  2. DNS 服务器根据本地存储的地址记录检查 DNS 名称查询请求消息中的 FQDN。如果找到记录,则与请求的 FQDN 对应的 IP 地址将发送回客户端。

  3. 如果未找到 FQDN,DNS 服务器会将请求转发到 FQDN 的权威 DNS 服务器。

  4. 权威 DNS 服务器将包含解析的 IP 地址的回复返回到原始 DNS 服务器。

  5. 原始 DNS 服务器将 IP 地址映射信息发送到客户端。

使用 DNS 服务器解析 FQDN

为了获取对 FQDN 具有权威性的服务器的 IP 地址,Internet 上的 DNS 服务器会经历查询多个 DNS 服务器的迭代过程,直到找到权威服务器。有关 DNS 名称解析过程的详细信息,请参阅 DNS 技术参考

将本地数据库文件与 DNS 合并

TCP/IP 实现(包括 Windows Server 2003)允许同时使用本地数据库文件和 DNS 服务器来解析主机名。当用户在基于 Windows 套接字的 TCP/IP 应用程序中指定主机名时:

  • TCP/IP 检查 DNS 客户端解析程序缓存(加载了来自主机文件和其他以前解析的主机名的条目)以查找匹配的名称。如果在本地数据库文件中找不到匹配的名称,则该主机名将打包为 DNS 名称查询请求消息,并发送到配置的 DNS 服务器。

组合方法允许用户拥有用于解析个性化昵称的本地数据库文件,并使用全局分布式 DNS 数据库解析 FQDN。

网络 BIOS 名称解析

NetBIOS 名称解析是成功将 NetBIOS 名称映射到 IP 地址的过程。NetBIOS 名称是一个 16 字节的地址,用于标识网络上的 NetBIOS 资源。NetBIOS 名称是唯一(独占)或组(非独占)名称。当 NetBIOS 进程与特定计算机上的特定进程通信时,将使用唯一的名称。当 NetBIOS 进程与多台计算机上的多个进程通信时,将使用组名。

NetBIOS 名称充当会话层应用程序标识符。例如,NetBIOS 会话服务通过 TCP 端口 139 运行。所有 NetBT 会话请求都发送到 TCP 目标端口 139。在标识要与之建立 NetBIOS 会话的 NetBIOS 应用程序时,将使用 NetBIOS 名称。

使用 NetBIOS 名称的进程的一个示例是基于 Windows Server 2003 的计算机上的 Microsoft 网络文件和打印机共享组件(服务器服务)。启动计算机时,服务器服务会根据计算机的名称注册唯一的 NetBIOS 名称。服务器服务使用的确切名称是 15 个字符的计算机名称加上第 0 个字符的 20x15。如果计算机名称的长度不是 15 个字符,则填充最多 <> 个字符的空格。其他网络服务(如工作站或信使服务)也使用计算机名称来构建其 NetBIOS 名称。第 <> 个字符用于唯一标识每个服务。

注意

  • 这里提到的Messenger服务不是Windows Messenger。Windows Messenger是Windows Server 2003中包含的Microsoft应用程序,允许实时消息传递和协作。

您指定的文件服务器上的服务器服务对应于特定的 NetBIOS 名称。例如,当您尝试连接到名为 CORPSERVER 的计算机时,与服务器服务对应的 NetBIOS 名称是“CORPSERVER <20>”(请注意使用空格字符的填充)。在建立文件和打印共享连接之前,必须创建 TCP 连接。为了建立TCP连接,NetBIOS名称“CORPSERVER <20>”必须解析为IP地址。

若要查看在 Windows Server 2003 计算机上运行的 NetBIOS 进程注册的 NetBIOS 名称,请在 Windows Server 2003 命令提示符处键入 nbtstat -n

网络 BIOS 节点类型

NetBIOS 名称解析为 IP 地址的确切机制取决于节点配置的 NetBIOS 节点类型。RFC 1001 定义了下表中列出的 NetBIOS 节点类型。

网络 BIOS 节点类型

节点类型描述

B 节点(广播)

B 节点使用广播的 NetBIOS 名称查询进行名称注册和解析。B节点有两个主要问题:(1)在大型互联网络中,广播会增加网络负载,(2)路由器通常不转发广播,因此只能解析本地网络上的NetBIOS名称。

P 节点(对等节点)

P节点使用NetBIOS名称服务器(NBNS),如Windows Internet Name Service(WINS)来解析NetBIOS名称。P 节点不使用广播;相反,它直接查询名称服务器。P节点最重要的问题是所有计算机都必须配置NBNS的IP地址,如果NBNS关闭,计算机甚至无法在本地网络上进行通信。

M 节点(混合)

M 节点是 B 节点和 P 节点的组合。默认情况下,M 节点充当 B 节点。如果它无法通过广播解析名称,则使用 P 节点的 NBNS。

H 节点(混合)

H 节点是 P 节点和 B 节点的组合。默认情况下,H 节点用作 P 节点。如果它无法通过 NetBIOS 名称服务器解析名称,它将使用广播来解析该名称。

启用 NetBT 后,基于 Windows Server 2003 的计算机默认为 B 节点,在为 WINS 服务器配置时变为 H 节点。Windows Server 2003 还使用名为 Lmhosts 的本地数据库文件来解析远程 NetBIOS 名称。

IPv4 路由

将主机名或 NetBIOS 名称解析为 IP 地址后,发送主机必须将 IP 数据包发送到解析的 IP 地址。路由是基于目标 IP 地址转发数据包的过程。路由涉及 TCP/IP 主机和 IP 路由器。路由器是将数据包从一个网络转发到另一个网络的设备。路由器通常也称为网关。发送主机和路由器都需要确定数据包的转发方式。

为了做出这些决定,IP 层会查询存储在内存中的路由表。默认情况下,路由表条目在 TCP/IP 初始化时创建,其他条目由系统管理员手动添加或通过与路由器通信自动添加。

直接和间接交付

IP 数据包根据最终目标是否位于直连网络上,使用两种类型的传递中的至少一种。这两种类型的交付称为直接交付和间接交付。

  • 当 IP 节点(发送节点或 IP 路由器)将数据包转发到直连网络上的最终目标时,将发生直接传递。IP 节点将 IP 数据包封装为网络接口层(例如以太网或令牌环)的帧格式,该帧格式寻址到目标的 MAC 地址。

  • 当 IP 节点(发送节点或 IP 路由器)将数据包转发到中间节点(IP 路由器)时,会发生间接传递,因为最终目标不在直连网络上。IP 节点以帧格式封装 IP 数据包,用于网络接口层(例如以太网或令牌环),该帧格式寻址到 IP 路由器的 MAC 地址。

IP 路由是直接和间接交付的组合。

在下图中,当向节点 B 发送数据包时,节点 A 执行直接传递。将数据包发送到节点 C 时,节点 A 执行到路由器 1 的间接传递,路由器 1 执行到路由器 2 的间接传递,然后路由器 2 执行到节点 C 的直接传递。

直接和间接交付

IP 路由表

路由表存在于所有 IP 节点上。路由表存储有关 IP 网络以及如何(直接或间接)访问它们的信息。由于所有 IP 节点都执行某种形式的 IP 路由,因此路由表并非 IP 路由器独有。加载 TCP/IP 协议的任何节点都有一个路由表。根据节点的配置,有一系列默认条目,其他条目可以通过TCP/IP实用程序手动输入,也可以通过与路由器交互动态输入。

转发 IP 数据包时,路由表用于确定:

  • 下一跃点 IP 地址。对于直接传送,下一跃点 IP 地址是 IP 数据包中的目标 IP 地址。对于间接传送,下一跃点 IP 地址是路由器的 IP 地址。

  • 下一跃点接口。下一跃点接口标识用于将数据包转发到其目标或下一个路由器的物理或逻辑接口,例如网络适配器。

IP 路由表条目类型

IP 路由表中的条目包含以下信息:

  • 网络 ID。与路由对应的网络 ID 或目标。网络 ID 可以标识特定子网、汇总路由或主机路由的 IP 地址。在 Windows Server 2003 IP 路由表中,这是“网络目标”列。

  • 网络掩码。用于将目标 IP 地址与网络 ID 匹配的掩码。在 Windows Server 2003 IP 路由表中,这是网络掩码列。

  • 下一跳。下一跃点的 IP 地址。在 Windows Server 2003 IP 路由表中,这是“网关”列。

  • 接口。指示使用哪个网络接口转发 IP 数据包。

  • 度量。用于指示路线成本的数字,以便可以选择通往同一目的地的可能多条路线中的最佳路线。该指标的常见用途是指示网络 ID 的跃点数(跨越的路由器)。

路由表中的条目可用于存储以下类型的路由:

  • 直接连接的网络 ID。直接附加的网络 ID 的路由。对于直连网络,下一跃点字段可以为空,也可以包含该网络上接口的 IP 地址。

  • 远程网络 ID。网络 ID 的路由,这些 ID 不直接连接,但可在其他路由器上使用。对于远程网络,下一跃点字段是本地路由器的 IP 地址。

  • 主机路由。到特定 IP 地址的路由。主机路由允许基于每个 IP 地址进行路由。对于主机路由,网络 ID 是指定主机的 IP 地址,网络掩码为 255.255.255.255。

  • 默认路由。默认路由设计为在找不到更具体的网络 ID 或主机路由时使用。默认路由网络 ID 为 0.0.0.0,网络掩码为 0.0.0.0。

路线确定流程

为了确定使用哪个路由表条目来查找下一跃点地址和接口,IP 使用以下过程:

  • 对于路由表中的每个条目,IP 在目标 IP 地址和网络掩码之间执行按位逻辑 AND 运算。它将结果与匹配项的网络 ID 进行比较。

  • 将编译匹配路由的列表。选择匹配时间最长的路由(与目标 IP 地址匹配的位数最多的路由)。最长匹配路由是到目标 IP 地址的最直接路由。如果找到多个匹配条目(例如,到同一网络 ID 的多个路由),路由器将使用最低指标来选择最佳路由。如果多个条目具有最长的匹配和最低的衡量指标,路由器会将其中一个指定为路由表条目。对于 Windows Server 2003 TCP/IP,所选路由对应于与网络绑定顺序中第一个接口关联的路由。

路由确定过程的最终结果是路由表中的单个路由生成下一跃点 IP 地址和接口。如果路由确定过程无法找到路由,IP 表示路由错误。对于发送主机,IP 路由错误消息将发送到上层协议,例如 TCP 或 UDP。对于路由器,ICMP 目标不可达 - 主机不可达消息将发送到发送主机。

Windows Server 2003 的路由表

下表显示了基于 Windows Server 2003 的主机(不是路由器)的默认路由表。主机具有单个网络适配器,IP 地址为 157.60.27.90,子网掩码为 255.255.240.0,默认网关为 157.60.16.1。

Windows Server 2003 路由表

网络目标网络掩码网关接口度量目的

0.0.0.0

0.0.0.0

157.60.16.1

157.60.27.90

1

默认路由

127.0.0.0

255.0.0.0

127.0.0.1

127.0.0.1

1

环回网络

157.60.16.0

255.255.240.0

157.60.27.90

157.60.27.90

1

直连网络

157.60.27.90

255.255.255.255

127.0.0.1

127.0.0.1

1

本地主机

157.60.255.255

255.255.255.255

157.60.27.90

157.60.27.90

1

网络广播

224.0.0.0

240.0.0.0

157.60.27.90

157.60.27.90

1

组 播

255.255.255.255

255.255.255.255

157.60.27.90

157.60.27.90

1

限量播出

默认路由

与默认网关配置对应的条目是网络目标 0.0.0.0,网络掩码(网络掩码)为 0.0.0.0。使用 0.0.0.0 进行逻辑 AND 运算的任何目标 IP 地址都会导致 0.0.0.0。因此,对于任何 IP 地址,默认路由都会生成匹配项。如果由于找不到更好的路由而选择了默认路由,则 IP 数据包将使用“接口”列中分配了 IP 地址的接口转发到“网关”列中的 IP 地址(默认网关 157.60.16.1)。

环回网络

环回网络条目旨在采用 127.x.y.z 格式的任何 IP 地址,并将其转发到 127.0.0.1 的特殊环回地址。

直连网络

本地网络条目对应于直接连接的网络。发往直连网络的 IP 数据包不会转发到路由器,而是直接发送到目的地。请注意,“网关”和“接口”列与节点的 IP 地址匹配。这表示数据包是从与节点的 IP 地址对应的网络适配器发送的。

本地主机

本地主机条目是与主机 IP 地址对应的主机路由(网络掩码为 255.255.255.255)。发送到主机 IP 地址的所有 IP 数据包都将转发到环路地址。

网络广播

网络广播条目是与所有子网定向广播地址(B 类网络 ID 为 255.255.255.255 的所有子网)对应的主机路由(网络掩码为 157.60.0.0)。寻址到所有子网定向广播的数据包从与节点的 IP 地址对应的网络适配器发送。

组 播

组播地址路由用于从与节点的 IP 地址对应的网络适配器发送任何组播 IP 数据包。

限量播出

受限广播地址是主机路由(网络掩码为 255.255.255.255)。寻址到有限广播的数据包从与节点的 IP 地址对应的网络适配器发送。

查看 IP 路由表

若要在基于 Windows Server 2003 的计算机上查看 IP 路由表,请在 Windows Server 2003 命令提示符处键入路由打印

从路由表中的路由确定下一跃点 IP 地址和接口时:

  • 如果网关地址与接口地址相同,则下一跃点 IP 地址设置为 IP 数据包的目标 IP 地址。

  • 如果网关地址与接口地址不同,则下一跃点 IP 地址设置为网关地址。

例如,当流量发送到 157.60.16.48 时,最具体的匹配路由是直连网络的路由 (157.60.16.0/20)。下一跃点 IP 地址设置为目标 IP 地址 (157.60.16.48),接口是已分配 IP 地址 157.60.27.90 的网络适配器。

将流量发送到 192.168.0.79 时,最具体的匹配路由是默认路由 (0.0.0.0/0)。下一跃点 IP 地址设置为网关地址 (157.60.16.1),接口是已分配 IP 地址 157.60.27.90 的网络适配器。

路由表条目的维护

为了在 IP 互联网络中的路由器之间有效地进行 IP 路由,必须使用远程网络 ID 或默认路由配置路由器。在大型 IP 互联网络上,网络管理员面临的挑战之一是如何维护其 IP 路由器上的路由表,以便 IP 流量以最佳路径传输并具有容错能力。

有两种方法可以在 IP 路由器上维护路由表条目。

手动

静态 IP 路由器具有除非网络管理员手动更改否则不会更改的路由表。

静态路由依赖于路由表的手动管理。静态路由器不会发现远程网络 ID,必须手动配置。静态路由器不具有容错能力。如果静态路由器出现故障,相邻路由器不会检测到故障并通知其他路由器。

自动

动态 IP 路由器具有路由表,这些路由表根据与其他路由器的路由信息交换而自动更改。

动态路由使用路由协议(如路由信息协议 (RIP) 和开放最短路径优先 (OSPF),通过路由器之间交换路由信息来动态更新路由表。远程网络 ID 由动态路由器发现并自动输入到路由表中。动态路由器具有容错能力。如果动态路由器出现故障,则相邻路由器会检测到故障,并将更改的路由信息发送到互联网络中的其他路由器。

物理地址解析

根据目标 IP 地址和路由确定过程,IP 确定下一跳 IP 地址和接口。然后,IP 将 IP 数据包、下一跃点 IP 地址和接口发送到 ARP。

如果下一跃点 IP 地址与目标 IP 地址相同,则 ARP 将执行直接传送。在直接交付中,必须解析与目标 IP 地址对应的 MAC 地址。

如果下一跃点 IP 地址与目标 IP 地址不同,则 ARP 将执行间接传输。下一跃点 IP 地址是当前 IP 节点和最终目标之间的路由器的 IP 地址。在间接传递中,必须解析与路由器的 IP 地址对应的 MAC 地址。

为了将下一跃点 IP 地址解析为其 MAC 地址,ARP 使用共享访问网络媒体(如以太网或令牌环)上的广播流量来发送广播的 ARP 请求帧。包含与请求的下一跃点 IP 地址对应的 MAC 地址的 ARP 回复将发送回 ARP 请求的发送方。

ARP 缓存

为了将广播的 ARP 请求帧数保持在最低限度,许多 TCP/IP 协议栈都包含一个 ARP 缓存,该缓存是最近解析的 IP 地址及其相应 MAC 地址的表。TCP/IP 在发送 ARP 请求帧之前检查 ARP 缓存。每个接口都有自己的 ARP 缓存。

根据供应商的实现,ARP 缓存可以具有以下特性:

  • ARP 缓存条目可以是动态的(基于 ARP 回复)或静态的。静态 ARP 条目是永久性的,可以使用 TCP/IP 实用程序(如 Windows Server 2003 提供的 ARP 工具)手动添加。静态 ARP 缓存条目用于阻止对常用本地 IP 地址(如路由器和服务器)的 ARP 请求。静态 ARP 条目的问题在于,当网络接口设备更改时,必须手动更新它们。

  • 动态 ARP 缓存条目具有与之关联的超时值,用于在指定时间段后删除缓存中的条目。Windows Server 2003 TCP/IP 的动态 ARP 高速缓存条目在被删除之前最长时间为 10 分钟。

若要在基于 Windows Server 2003 的计算机上查看 ARP 缓存,请在 Windows Server 2003 命令提示符处键入 arp -a

ARP 流程

IP 向 ARP 发送 IP 数据包、下一跃点 IP 地址和下一跃点接口。无论是执行直接或间接交付,ARP 都会执行以下过程,如下图所示。

ARP 流程

  1. 根据下一跃点地址和接口,ARP 会查询相应的 ARP 缓存以获取下一跃点 IP 地址的条目。如果找到条目,ARP 将跳到步骤 6。

  2. 如果未找到条目,ARP 将构建一个 ARP 请求帧,其中包含发送 ARP 请求的接口的 MAC 地址、发送 ARP 请求的接口的 IP 地址以及下一跃点 IP 地址。然后,ARP 使用适当的接口广播 ARP 请求。

  3. 所有主机都接收广播帧并处理 ARP 请求。如果接收主机的 IP 地址与请求的 IP 地址(下一跃点 IP 地址)匹配,则其 ARP 缓存将使用 ARP 请求发送方的地址映射进行更新。

  4. 如果接收主机的 IP 地址与请求的 IP 地址不匹配,则会以静默方式丢弃 ARP 请求。

  5. 接收主机制定包含请求的 MAC 地址的 ARP 回复,并将其直接发送给 ARP 请求的发送方。

  6. 当 ARP 请求的发送方收到 ARP 回复时,它会使用地址映射更新其 ARP 缓存。

  7. ARP 请求主机和 ARP 回复主机在其 ARP 缓存中具有彼此的地址映射。

  8. ARP 通过将 IP 数据包寻址到解析的 MAC 地址,将 IP 数据包发送到下一跃点节点。

端到端交付

IP 数据包传递中涉及的所有节点的 IP 路由进程包括发送主机、中间路由器和目标主机。

发送主机上的 IP

当主机发送数据包时,数据包从上层协议(TCP、UDP 或 ICMP)传输到 IP,然后发送主机上的 IP 执行以下操作:

  1. 将生存时间 (TTL) 值设置为默认值或应用程序指定的值。

  2. 检查其路由表,查找到目标 IP 地址的最佳路由。

    如果未找到路由,IP 将向上层协议(TCP、UDP 或 ICMP)发送路由错误消息。

  3. 根据最具体的匹配路由确定下一跃点 IP 地址和接口。

  4. 将数据包、下一跃点 IP 地址和下一跃点接口发送到地址解析协议 (ARP),然后 ARP 将下一跃点 IP 地址解析为其媒体访问控制 (MAC) 地址并转发数据包。

路由器上的 IP

当路由器收到数据包时,数据包将传递到 IP,路由器上的 IP 执行以下操作:

  1. 验证 IP 标头校验和。

    如果 IP 标头校验和失败,则会丢弃 IP 数据包,而不会通知用户。这称为静默丢弃。

  2. 验证 IP 数据包中的目标 IP 地址是否与分配给路由器接口的 IP 地址相对应。

    如果是这样,路由器将作为目标主机处理 IP 数据包(请参阅以下“目标主机上的 IP”部分中的步骤 3)。

  3. 如果目标 IP 地址不是路由器,IP 将递减生存时间 (TTL)。

    如果 TTL 为 0,路由器将丢弃数据包并向发送方发送 ICMP 时间已过期 – TTL 在传输中过期消息。

  4. 如果 TTL 为 1 或更大,IP 将更新 TTL 字段并计算新的 IP 标头校验和。

  5. IP 检查其路由表,以查找到 IP 数据包中目标 IP 地址的最佳路由。

    如果未找到路由,路由器将丢弃数据包,并向发送方发送 ICMP 目标不可达 – 主机不可达消息。

  6. 根据找到的最佳路由,IP 确定下一跃点 IP 地址和接口。

  7. IP 将数据包、下一跃点 IP 地址和接口发送到 ARP,然后 ARP 将数据包转发到相应的 MAC 地址。

整个过程在源主机和目标主机之间的路径中的每个路由器上重复。

目标主机上的 IP

当目标主机收到数据包时,该数据包将向上传递到 IP,目标主机上的 IP 执行以下操作:

  1. 验证 IP 标头校验和。

    如果 IP 标头校验和失败,则会以静默方式丢弃 IP 数据包。

  2. 验证 IP 数据包中的目标 IP 地址是否与分配给主机的 IP 地址相对应。

    如果未将目标 IP 地址分配给主机,则会以静默方式丢弃 IP 数据包。

  3. 根据 IP 协议字段将不带 IP 标头的 IP 数据包传递到相应的上层协议。

    如果协议不存在,ICMP 会将“目标不可达 - 协议不可达”消息发送回发送方。

  4. 对于 TCP 和 UDP 数据包,IP 会检查目标端口并处理 TCP 段或 UDP 标头。

    如果不存在 UDP 端口号的应用程序,ICMP 会将“目标不可达 - 端口不可达”消息发送回发件人。如果不存在 TCP 端口号的应用程序,TCP 会将连接重置段发送回发送方。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值