摘要 本章更加详细地研究了传输控制协议/Internet 协议 (TCP/IP) 协议套件,分析了它的四个层和各层内使用的核心协议。网络管理员必须理解各层内的核心协议及其功能,才会懂得网络应用程序如何工作,数据如何从一个应用程序发送到另一个应用程序,以及如何解释网络捕获。本章还讨论了 Microsoft® Windows® 操作系统的网络应用程序使用的两种主要应用程序编程接口 (API) 及 API 的命名方案。 本页内容
本章目标读完本章后,您将能够:
TCP/IP 协议套件TCP/IP 协议套件映射到一个称为 DARPA 模型的四层概念模型 — DARPA 模型是根据最初开发 TCP/IP 的美国政府机构的名称命名的。DARPA 模型的四个层是:应用层、传输层、Internet 层和网络接口层。DARPA 模型中的各个层分别对应于七层 OSI 模型中的一层或多层。 图 2-1 描绘了 TCP/IP 协议套件的体系结构。 TCP/IP 协议套件在 Internet 层有两个协议集:
网络接口层网络接口层(又称网络访问层)向网络媒体发送 TCP/IP 数据包并从网络媒体接收 TCP/IP 数据包。TCP/IP 独立于网络访问方法、帧格式和媒体。因此,您可以使用 TCP/IP 来在采用 LAN 技术(例如以太网和 802.11 无线 LAN)和 WAN 技术(例如帧中继和异步传输模式 (ATM))的不同网络类型之间进行通信。通过让 TCP/IP 独立于任何特定的网络技术,可以使它能够适应新的技术。 DARPA 模型的网络接口层包括 OSI 模型的数据链路层和物理层。DARPA 模型的 Internet 层没有利用 OSI 模型的数据链路层中可以使用的排序服务和确认服务。Internet 层假定网络接口层不可靠,并假定传输层或应用层负责通过建立会话和进行数据包的排序及确认来确保可靠地进行通信。 Internet 层Internet 层的职责包括寻址、打包和路由功能。Internet 层与 OSI 模型的网络层类似。 IPv4 Internet 层的核心协议包括以下几种:
有关 IPv4 Internet 层的核心协议的详细信息,请参见本章下文中的“IPv4 Internet 层”。 IPv6 Internet 层的核心协议包括以下几种:
有关 IPv6 Internet 层的核心协议的详细信息,请参见本章下文中的“IPv6 Internet 层”。 传输层传输层(又称主机到主机传输层)为应用层提供会话和数据报通信服务。传输层承担 OSI 传输层的职责。传输层的核心协议是 TCP 和 UDP。 TCP 提供一对一的、面向连接的可靠通信服务。TCP 建立连接,对发送的数据包进行排序和确认,并恢复在传输过程中丢失的数据包。 与 TCP 不同,UDP 提供一对一或一对多的、无连接的不可靠通信服务。如果要传输的数据量很少(例如单个数据包可以容纳的数据),应用程序开发人员不希望产生与 TCP 连接有关的开销,或者应用程序或上层协议提供了可靠的传送,则使用 UDP。 TCP 和 UDP 在 IPv4 和 IPv6 Internet 层上都能够运行。 注意:Windows 的 Internet 协议 (TCP/IP) 组件包含的 TCP 和 UDP 协议的版本不同于 Microsoft TCP/IP 版本 6 组件所包含的版本。Microsoft TCP/IP 版本 6 组件中的版本在功能上相当于 Microsoft Windows NT® 4.0 操作系统中提供的那些版本,并且包含了所有的最新安全更新。不同的协议组件分别使用各自的 TCP 和 UDP 版本的结构叫做双堆栈体系结构。这种理想的体系结构被称为双 IP 层;在该体系结构中,可以在 IPv4 和 IPv6 上运行相同版本的 TCP 和 UDP(如图 2-1 所示)。Microsoft 正考虑在将来的 Windows 操作系统更新中为 TCP/IP 协议组件使用双 IP 层体系结构。 应用层应用层允许应用程序访问其他层的服务,它定义了应用程序用来交换数据的协议。应用层包含大量的协议,而且人们一直在开发新的协议。 人们最熟悉的那些应用层协议可以帮助用户交换信息:
此外,以下应用层协议可以帮助您使用和管理 TCP/IP 网络:
Windows 套接字和 NetBIOS 就是两个用于 TCP/IP 应用程序的应用层接口的示例。有关详细信息,请参见本章下文中的“应用程序编程接口”。 IPv4 Internet 层IPv4 Internet 层包含以下协议:
下面几节将更详细地介绍每一种协议。 ARP当 IP 通过共享访问、基于广播的网络技术(例如以太网或 802.11 无线 LAN)发送数据包时,协议必须能够解析与数据包要转发到的节点的 IPv4 地址(又称下一跃点 IPv4 地址)相对应的媒体访问控制 (MAC) 地址。正如 RFC 826 所定义的,ARP 使用 MAC 级广播将下一跃点 IPv4 地址解析为它们的相应 MAC 地址。 在转发数据包时,IPv4 基于目标 IPv4 地址和路由确定过程来决定下一跃点 IPv4 地址和接口。然后,IPv4 将 IPv4 数据包、下一跃点 IPv4 地址和下一跃点接口传递给 ARP。 如果数据包的下一跃点的 IPv4 地址与数据包目标的 IPv4 地址相同,则 ARP 执行到目标的直接传送。在直接传送中,ARP 必须将数据包目标的 IPv4 地址解析为它的 MAC 地址。 如果数据包的下一跃点的 IPv4 地址与数据包目标的 IPv4 地址不同,则 ARP 执行到路由器的间接传送。在间接传送中,ARP 必须将路由器的 IPv4 地址解析为它的 MAC 地址。 为将数据包的下一跃点的 IPv4 地址解析为它的 MAC 地址,ARP 使用共享访问网络技术(例如以太网或 802.11)上的广播工具来发送一个广播 ARP 请求帧。作为响应,发送方会收到一个 ARP 应答帧,其中包含与数据包的下一跃点的 IPv4 地址相对应的 MAC 地址。 ARP 缓存为最大限度地减少广播 ARP 请求帧的数量,许多 TCP/IP 协议实现都包含一个 ARP 缓存,它是一个记录了最近解析过的 IPv4 地址及其相应的 MAC 地址的表。在发送 ARP 请求帧之前,ARP 将首先检查此缓存。每个接口都有其自己的 ARP 缓存。 ARP 缓存可具有以下特性(具体取决于供应商实现):
要查看基于 Windows 的计算机上的 ARP 缓存,请在命令提示符下键入 arp -a。您还可以使用 Arp 工具来添加或删除静态 ARP 缓存条目。 ARP 过程在发送主机发送初始数据包或路由器转发数据包时,IPv4 会将 IPv4 数据包、下一跃点 IPv4 地址和下一跃点接口发送给 ARP。无论是执行直接传送还是间接传送,ARP 都执行下面的过程:
图 2-2 描绘了此过程。 Internet 协议版本 4 (IPv4)IPv4 是一个数据报协议,它主要负责在主机之间为数据包进行寻址和路由。IPv4 是无连接的,这意味着它在交换数据之前不建立连接;IPv4 也是不可靠的,这意味着它不能保证数据包的正确传送。IPv4 总是尽“最大努力”来尝试传送数据包。IPv4 数据包可能会丢失、错序发送、重复或延迟。IPv4 不会尝试从这些类型的错误进行恢复。更高层协议(例如 TCP 或某个应用协议)必须能够确认所传送的数据包并根据需要恢复丢失的数据包。IPv4 是在 RFC 791 中定义的。 IPv4 数据包由 IPv4 标头和 IPv4 有效负载组成。IPv4 有效负载又包含上层协议数据单元,例如 TCP 段或 UDP 消息。图 2-3 描绘了 IPv4 数据包的基本结构。 表 2-1 列出了 IPv4 标头中的主要字段并作了说明。
表 2-1 IPv4 标头中的主要字段 分段与重组如果路由器接收的 IPv4 数据包对于数据包在其上转发的网段来说过大,路由器上的 IPv4 就会将原始数据包分割为适合在转发网段上传输的较小数据包。数据包到达其最终目标后,目标主机上的 IPv4 就会将这些段重组为原始的有效负载。这一过程叫做分段与重组。在混合使用多种网络技术(例如以太网或令牌环)的环境中可能会发生分段。 分段与重组的具体过程如下:
远程主机接收到这些段后,它会使用“标识”字段来识别属于一个整体的段,并使用“段偏移量”字段来按照段的正确顺序重组这些段,以重新创建原始 IPv4 有效负载。 Internet 控制消息协议 (ICMP)ICMP(RFC 792 中对其进行了定义)报告无法传送的数据包的错误并帮助对这些错误进行疑难解答。例如,如果 IPv4 不能将数据包传送到目标主机,则路由器上的或目标主机上的 ICMP 会向发送主机发送一条“无法到达目标”消息。表 2-2 列出了最常见的 ICMP 消息并作了说明。
表 2-2 常见的 ICMP 消息 ICMP 包含一系列已定义的“无法到达目标”消息。表 2-3 列出了这些最常见的消息并作了说明。
表 2-3 常见的 ICMP 无法到达目标消息 ICMP 没有使 IPv4 成为一个可靠的协议。ICMP 试图报告错误并对特定的情况提供反馈。ICMP 消息是以未确认的 IPv4 数据包传送的,它们自己也不可靠。 Internet 组管理协议 (IGMP)路由器和主机使用 IGMP 管理子网上的 IPv4 多播组中的成员身份。IPv4 多播组(又称主机组)是一组主机,它们侦听发往特定的 IPv4 多播地址的 IPv4 通信量。给定子网上的 IPv4 多播通信量发往一个 MAC 地址,但是会有多台 IPv4 主机接收并处理该通信量。主机组成员侦听特定的 IPv4 多播地址并接收发送到该 IPv4 地址的所有数据包。 要让一台主机接收 IPv4 多播,应用程序必须告诉 IPv4 该主机将接收指定 IPv4 多播地址处的多播。然后,IPv4 将向本地连接的子网上的路由器发出通知,让它们接收向指定 IPv4 多播地址发送的多播。IGMP 是用于注册主机组成员身份信息的协议。 IGMP 消息采用以下形式:
为使 IPv4 多播跨越 IPv4 网络上的多个路由器进行传播,路由器使用多播路由协议来传达主机组信息。然后,每个支持多播转发的路由器可以确定如何转发 IPv4 多播通信量。 Windows Server 2003 和 Windows XP 支持 IGMP、IGMPv2 和 IGMPv3,RFC 1112、RFC 2236 和 RFC 3376 分别对这三种协议进行了定义。 IPv6 Internet 层IPv6 最终将取代 DARPA 模型中的 IPv4 Internet 层协议。IPv6 将按以下方式进行取代:
除非地址是协议所维护的有效负载或数据结构的一部分,否则软件开发人员无须更改传输层和应用层的协议就可以支持在 IPv6 Internet 层之上的操作。例如,软件开发人员必须更新 TCP 和 UDP 才能执行新的校验和计算,而且必须更新 RIP 才能发送和接收基于 IPv6 的路由信息。 IPv6 Internet 层包括以下协议:
下面几节将详细介绍这些协议。 IPv6像 IPv4 一样,IPv6 也是一个无连接的、不可靠的数据报协议,主要负责在主机之间为数据包进行寻址和路由。 RFC 2460 定义了 IPv6 数据包结构。IPv6 数据包由 IPv6 标头和 IPv6 有效负载组成。IPv6 有效负载包括零个或多个 IPv6 扩展标头和一个上层协议数据单元(例如 ICMPv6 消息、TCP 段或 UDP 消息)。图 2-4 描绘了 IPv6 数据包的基本结构。 表 2-4 列出了 IPv6 标头中的主要字段并作了说明。
表 2-4 IPv6 标头中的主要字段 IPv6 扩展标头IPv6 有效负载可以包含零个或多个扩展标头,扩展标头的长度可以改变。IPv6 标头中的“下一标头”字段表示下一个扩展标头。每个扩展标头都包含另外一个“下一标头”字段,表示下一个扩展标头。最后一个扩展标头表示上层协议数据单元中包含的上层协议(如果有),例如 TCP、UDP 或 ICMPv6。 IPv6 标头和扩展标头将取代现有的 IPv4 标头及其包括选项的能力。扩展标头的新格式允许对 IPv6 进行扩充以满足将来的需要和支持将来的功能。与 IPv4 标头中的选项不同,IPv6 扩展标头没有最大大小,因而可以扩展以容纳 IPv6 通信所需的所有扩展数据。 RFC 2460 定义了所有 IPv6 节点都必须支持的以下 IPv6 扩展标头:
典型的 IPv6 数据包不包含扩展标头。只有中间路由器或目标需要以某种特别方式处理数据包时,发送主机才添加一个或多个扩展标头。 IPv6 中的分段在 IPv4 中,如果路由器接收的 IPv4 数据包对于数据包转发到的网段来说过大,但允许对数据包进行分段,则路由器上的 IPv4 会把原始数据包分割为适合在转发网段上传输的较小数据包。在 IPv6 中,只有发送主机能够对数据包进行分段。如果 IPv6 数据包太大,IPv6 路由器会向发送主机发送一条“ICMPv6 数据包太大”消息并丢弃该数据包。 通过使用“段”扩展标头,发送主机可以对数据包进行分段,而目标主机可以对数据包进行重组。 Internet 控制消息协议 IPv6 版 (ICMPv6)同 IPv4 一样,IPv6 也不报告错误。不过,IPv6 使用的是 ICMP for IPv4 的更新版本。这一新版本叫做 ICMPv6,它执行常见的 ICMP for IPv4 功能 — 报告传送或转发中的错误并为疑难解答提供简单的回显服务。ICMPv6 协议还为 ND 和 MLD 消息提供消息结构。 表 2-5 列出了 RFC 2463 中定义的 ICMPv6 消息并作了说明。
表 2-5 常见的 ICMPv6 消息 ICMPv6 包含一系列已定义的“无法到达目标”消息。表 2-6 列出了这些最常见的消息并作了说明。
表 2-6 常见的 ICMPv6 无法到达目标消息 ICMPv6 没有使 IPv6 成为一个可靠的协议。ICMPv6 会尝试报告错误并会在特定的情况下提供反馈。ICMPv6 消息是以未确认的 IPv6 数据包传送的,它们自己也不可靠。 邻居发现 (ND)ND 是一组 ICMPv6 消息和过程,用于确定相邻节点间的关系。ND 取代了 IPv4 中使用的 ARP、ICMP 路由器发现和 ICMP 重定向,提供了更丰富的功能。 主机可以使用 ND 完成以下任务:
路由器可以使用 ND 完成以下任务:
节点(包括主机和路由器)可以使用 ND 完成以下任务:
表 2-7 列出了 RFC 2461 中描述的 ND 过程并作了说明。
表 2-7 IPv6 邻居发现过程 地址解析IPv6 地址解析包括交换“邻居请求”和“邻居公布”消息,从而将下一跃点 IPv6 地址解析为其对应的 MAC 地址。发送主机在适当的接口上发送一条多播“邻居请求”消息。“邻居请求”消息包括发送节点的 MAC 地址。 当目标节点接收到“邻居请求”消息后,将使用“邻居请求”消息中包含的源地址和 MAC 地址的条目更新其邻居缓存(相当于 ARP 缓存)。接着,目标节点向“邻居请求”消息的发送方发送一条包含它的 MAC 地址的单播“邻居公布”消息。 接收到来自目标的“邻居公布”后,发送主机根据其中包含的 MAC 地址使用目标节点条目来更新它的邻居缓存。此时,发送主机和邻居请求的目标就可以发送单播 IPv6 通信量了。 路由器发现主机通过路由器发现过程尝试发现本地子网上的路由器集合。除了配置默认路由器之外,IPv6 路由器发现还配置以下设置:
IPv6 路由器发现过程如下:
地址自动配置IPv6 的一个非常有用的特点是,它无须使用地址配置协议(例如动态主机配置协议 IPv6 版 (DHCPv6))就能够自动进行自我配置。默认情况下,IPv6 主机能够为每个接口配置一个在子网上使用的地址。通过使用路由器发现,主机还可以确定路由器的地址、其他地址和其他配置参数。“路由器公布”消息指示是否使用地址配置协议。RFC 2462 中对 IPv6 地址自动配置进行了定义。 多播侦听器发现 (MLD)MLD 是 IGMP 版本 2(用于 IPv4)的 IPv6 版本。MLD 是由路由器和节点交换的一组 ICMPv6 消息,供路由器用来为各个连接的接口发现有侦听节点的 IPv6 多播地址的集合。同 IGMPv2 一样,MLD 只能发现那些至少包含一个侦听器的多播地址,而不能发现各个多播地址的单个多播侦听器的列表。RFC 2710 中对 MLD 进行了定义。 与 IGMPv2 不同,MLD 使用 ICMPv6 消息而不是定义它自己的消息结构。MLD 消息有三种类型:
传输控制协议 (TCP)TCP 是一种可靠的、面向连接的传送服务。面向连接意味着主机必须首先建立连接才能进行数据交换。可靠性是通过为传输的每个段分配一个序列号获得的。TCP 对等方(两个节点)在接收数据时使用 TCP 进行通信和确认。TCP 段又称段,它是由 TCP 标头和 TCP 有效负载构成的协议数据单元 (PDU)。对于发送的每个包含数据的 TCP 段,接收主机必须返回确认 (ACK)。如果在计算出的时间内未收到 ACK,发送主机就会重新传输此 TCP 段。RFC 793 中对 TCP 进行了定义。 表 2-8 列出了 TCP 标头中的主要字段并作了说明。
表 2-8 TCP 标头中的主要字段 TCP 端口要使用 TCP,应用程序必须提供源和目标应用程序的 IP 地址和 TCP 端口号。端口提供了一个用于发送段的位置。每个端口由一个唯一的编号来标识。尽管某些 TCP 端口和 UDP 端口使用相同的编号,但这两种端口是截然不同且相互独立的。1024 以下的端口号是人们熟悉的端口,由 Internet 编号分配机构 (IANA) 分配。表 2-9 列出了人们熟悉的一些 TCP 端口。
表 2-9 人们熟悉的 TCP 端口 有关已分配的 TCP 端口的完整列表,请参见 http://www.iana.org/assignments/port-numbers。 TCP 三向握手TCP 连接是通过三向握手进行初始化的。三向握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:
TCP 使用类似的握手过程来结束连接。这可确保两个主机均能完成传输并确保所有的数据均得以接收。 用户数据报协议 (UDP)UDP 提供无连接的数据报服务,该服务对消息中传输的数据提供不可靠的、最大努力传送。这意味着它不保证数据报的到达,也不保证所传送数据包的顺序是否正确。UDP 不重新传输丢失的数据。UDP 消息又称消息,由 UDP 标头和 UDP 有效负载构成。RFC 768 中对 UDP 进行了定义。 如果应用程序不要求确认数据的接收,则它们使用 UDP,且通常每次只传输少量数据。NetBIOS 名称服务、NetBIOS 数据报服务和 SNMP 是使用 UDP 的服务和应用程序的实例。 表 2-10 列出了 UDP 标头中的主要字段并作了说明。
表 2-10 UDP 标头中的主要字段 UDP 端口要使用 UDP,应用程序必须提供源和目标应用程序的 IP 地址和 UDP 端口号。端口提供了用于发送消息的位置。每个端口由一个唯一的编号来标识。尽管某些 UDP 端口和 TCP 端口使用相同的编号,但这两种端口是截然不同且相互独立的。与 TCP 端口一样,1024 以下的 UDP 端口号是人们熟悉的、由 IANA 分配的端口。表 2-11 列出了一些人们熟悉的 UDP 端口。
表 2-11 人们熟悉的 UDP 端口 有关已分配的 UDP 端口的完整列表,请参见 http://www.iana.org/assignments/port-numbers。 数据包多路复用和多路分解发送主机发送 IPv4 或 IPv6 数据包时,它在数据包中包含了一些相应的信息,能够使数据包内的数据传送给目标处的正确应用程序。这种包含标识符以便数据能够传送到分层体系结构各层中的多个实体之一的功能,叫做多路复用。IP 数据包的多路复用信息包括标识网络上的节点和 IP 上层协议;对于 TCP 和 UDP,还包括标识与数据发往的应用程序相对应的端口。目标主机使用这些标识符来将数据多路分解到或逐层传送到正确的目标应用程序。IP 数据包还包含了目标主机用于发送响应的信息。 IP 包含多路复用信息,用于完成以下操作:
TCP 和 UDP 端口可以使用 0 到 65,535 之间的任意数字。客户端应用程序的端口号通常是在发生服务请求时动态分配的;IANA 为人们熟悉的服务器端应用程序预分配了端口号。http://www.iana.org/assignments/port-numbers 上列出了预分配的端口号的完整列表。 所有这些信息都用于提供多路复用信息,因此:
发送数据包后,将按照以下方式使用这些信息:
图 2-5 显示了一个目标 IP 地址为 131.107.89.223 的 IPv4 数据包内的 DNS 名称查询请求消息的示例,该数据包将被多路分解到 DNS 服务。 应用程序编程接口Windows 网络应用程序使用两种主要应用程序编程接口 (API) 来访问 Windows 中的 TCP/IP 服务:Windows 套接字和 NetBIOS。图 2-6 显示了这些 API 和使用它们时可能产生的数据流。 下面是 Windows 套接字 API 和 NetBIOS API 之间存在的一些体系结构差异:
Windows 套接字Windows 套接字是常用的、用于 Windows 中的网络应用程序的新式 API。Windows 附带的 TCP/IP 服务和工具都属于 Windows 套接字应用程序。Windows 套接字提供的服务允许应用程序使用特定的 IP 地址和端口,发起和接受到特定目标 IP 地址和端口的连接,发送和接收数据,以及关闭连接。 有三种类型的套接字:
套接字充当网络通信的终结点。应用程序可通过指定以下三项来创建一个流套接字或数据报套接字:主机的 IP 地址、服务类型(TCP 用于基于连接的服务,UDP 用于无连接的服务)和应用程序使用的端口。两个套接字(分别用于连接的一端)构成了一条双向通信路径。对于原始套接字,应用程序必须指定整个 IP 有效负载。 NetBIOSNetBIOS 是较旧的 API,它向 NetBIOS 应用程序提供名称管理、数据报和会话服务。使用 NetBIOS 接口 API 进行网络通信的应用程序可以在支持 NetBIOS 接口的任意协议实现上运行。“文件和打印机共享”与 Computer Browser 服务就属于使用 NetBIOS 的 Windows 应用程序和服务。 NetBIOS 还定义了一个在 OSI 会话层运行的协议。该层是由基础协议来实施的,例如 NetBIOS over TCP/IP (NetBT)(RFC 1001 和 1002 中对该协议进行了定义)。NetBIOS 名称服务使用 UDP 端口 137。NetBIOS 数据报服务使用 UDP 端口 138。NetBIOS 会话服务使用 TCP 端口 139。 Windows 中的 TCP/IP 命名方案尽管 IP 就是用来操作发送主机和目标主机的 32 位 (IPv4) 和 128 位 (IPv6) 地址的,但是计算机用户更擅长使用和记忆名称而非 IP 地址。如果将名称用作 IP 地址的别名,则必须有某些机制能够将名称分配给 IP 地址,能够确保它们的唯一性,并能够将名称解析为其 IP 地址。 Windows 的 TCP/IP 组件对主机名称(用于 Windows 套接字应用程序)与 NetBIOS 名称(用于 NetBIOS 应用程序)的分配及解析分别使用不同的机制。 主机名称主机名称是分配给 IP 节点的别名,它将 IP 节点标识为 TCP/IP 主机。主机名称的最大长度是 255 字符,可以包含字母和数字字符及“-”和“.”字符。可以为同一主机分配多个主机名称。 Windows 套接字应用程序(例如 Internet Explorer 和 Ping 工具)可以使用下面的两种值之一来引用目标:IP 地址或主机名称。当用户指定 IP 地址时,不需要进行名称解析。当用户指定主机名称时,主机名称必须解析为 IP 地址,然后才能开始与目标资源进行基于 IP 的通信。 主机名称可以采用各种不同的形式。最常用的两种形式是昵称和完全限定的域名 (FQDN)。昵称就是个人可以分配和使用的 IP 地址别名。FQDN 是一个结构化的名称(例如 www.microsoft.com),它遵循 DNS 中使用的 Internet 规范。 NetBIOS 名称NetBIOS 名称是一个 16 字节的名称,用于标识网络上的 NetBIOS 应用程序。NetBIOS 名称可以是一个唯一(排他的)名称,也可以是一个组(非排他)名称。当某个 NetBIOS 应用程序与特定计算机上的特定 NetBIOS 应用程序进行通信时,将使用唯一名称。当某个 NetBIOS 进程与多台计算机上的多个 NetBIOS 应用程序进行通信时,将使用组名称。 NetBIOS 名称标识 OSI 模型的会话层的应用程序。例如,NetBIOS 会话服务在 TCP 端口 139 上运行。因为所有的 NetBT 会话请求都定址到 TCP 目标端口 139,所以 NetBIOS 应用程序在建立 NetBIOS 会话时必须使用 NetBIOS 名称。 基于 Windows 的计算机上的“文件和打印共享服务器”服务就是一个使用 NetBIOS 名称的进程。当您的计算机启动时,该服务器服务根据您的计算机名称注册一个唯一的 NetBIOS 名称。该服务器服务使用的确切名称是包含 15 个字符的计算机名称再加上第 16 个字符 0x20。如果计算机名称不足 15 个字符,便使用空格将其扩充到 15 个字符的长度。其他网络服务也使用计算机名称来构造其 NetBIOS 名称,第 16 个字符通常用于标识各种服务。 当您试图通过指定计算机名称来建立到运行 Windows Server 2003 或 Windows XP 的计算机的文件共享连接时,您指定的文件服务器上的 Server 服务对应于一个特定的 NetBIOS 名称。例如,当您试图连接到名为 CORPSERVER 的计算机上时,对应于 Server 服务的 NetBIOS 名称是“CORPSERVER <20>”。(注意使用空格字符的填充。)必须先创建 TCP 连接,然后才能建立文件和打印共享连接。要创建 TCP 连接,必须将 NetBIOS 名称“CORPSERVER <20>”解析为 IPv4 地址。NetBIOS 名称解析是一个将 NetBIOS 名称映射到 IPv4 地址的过程。 本章小结本章主要包括以下内容:
本章术语表地址自动配置 – 自动在接口上配置 IPv6 地址的 IPv6 ND 过程。 地址解析 – 为下一跃点 IP 地址解析 MAC 地址的 IPv4(使用 ARP)或 IPv6(使用 ND)过程。 地址解析协议 (ARP) – 使用本地网络上的广播通信量将 IPv4 地址解析为其 MAC 地址的一种协议。 ARP – 参见“地址解析协议”。 ARP 缓存 – 各个接口的表,表中包含静态的或动态解析的 IPv4 地址及其对应的 MAC 地址。 ICMP – 参见“Internet 控制消息协议”。 ICMPv6 – Internet 控制消息协议 IPv6 版。 IGMP – 参见“Internet 组管理协议”。 Internet 控制消息协议 (ICMP) – IPv4 Internet 层中的用于报告错误和提供疑难解答工具的一种协议。 Internet 控制消息协议 IPv6 版 (ICMPv6) – IPv6 Internet 层中的一种协议,用于报告错误和提供疑难解答工具及主机 ND 与 MLD 消息。 Internet 组管理协议 (IGMP) – IPv4 Internet 层中的一种协议,用于管理子网上的多播组成员身份。 Internet 协议 (IP) – 用于 IPv4,是 IPv4 Internet 层中的一种可路由协议,可为 IPv4 数据包进行寻址、路由、分段和重组。还用于表示 IPv4 和 IPv6 协议集。 IP – 参见“Internet 协议”。 IPv4 – 在 Internet 和专用 Intranet 上广泛使用的 Internet 层。IP 的另一种叫法。 IPv6 – 新版本 Internet 层,它最终将取代 IPv4 Internet 层。 MLD – 参见“多播侦听器发现”。 多播侦听器发现 (MLD) – 由三个 ICMPv6 消息构成的集合,供主机和路由器用来管理子网上的多播组成员身份。 名称解析 – 将名称解析为地址的过程。 ND – 参见“邻居发现”。 邻居缓存 – 由每个 IPv6 节点维护的缓存,用于存储邻居的 IPv6 地址及其对应的 MAC 地址。邻居缓存相当于 IPv4 中的 ARP 缓存。 邻居发现 (ND) – 一组 ICMPv6 消息和过程,用于确定相邻节点间的关系。邻居发现取代了 IPv4 中使用的 ARP、ICMP 路由器发现和 ICMP 重定向消息。 网络基本输入/输出系统 (NetBIOS) – 一种用于用户应用程序的标准 API,用于管理 NetBIOS 名称和访问 NetBIOS 数据报服务与会话服务。 NetBIOS – 参见“网络基本输入/输出系统”。 路由器发现 – 一个“邻居发现”过程,主机通过该过程发现连接的子网上的本地路由器。 TCP – 参见“传输控制协议”。 传输控制协议 (TCP) – 一种运行于 IP 之上的、可靠的、面向连接的传输层协议。 UDP – 参见“用户数据报协议”。 用户数据报协议 (UDP) – 一种运行于 IP 之上的、不可靠的、无连接的传输层协议。 Windows 套接字 – Windows 应用程序用来使用 TCP/IP 传输数据的一种常用应用程序编程接口 (API)。 | 本文内容
|