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 中定义。