在Internet如此风行的今日,一般人所谈论的几乎是在应用方面的范畴, 很少人会去注重到Internet网路核心中非常重要的一环— IP(Internet Protocol) 网际网路协定。因此我们非凡开辟此一专栏, 期望能让各位读者更进一步、从较技术的角度去了解Internet的世界
IP(Internet Protocol网 际 网 路 协 定 ), 是 在 Internet网 路 核 心 非 常 重 要 的 一 环 , 以 OSI而 言 , 它 是 位 於 网 路 资 料 联 结 层 (Data Link Layer)与 传 输 层 (Transport Layer)之 间 的 网 路 层 的 传 输 协 定 . 简 单 的 说 , 它 必 须 把 来 自 上 层 的 资 料 分 封 出 去 , 并 且 把 来 自 下 层 网 路 的 资 料 分 析 , 汇 总 , 然 後 在 往 上 层 的 传 输 层 丢 去 , 此 外 还 必 须 和 ICMP这 位 难 兄 难 弟 合 作 , 以 期 随 时 自 我 调 整 和 监 控 网 路 。
IP网 际 网 路 协 定 , 多 麽 酷 的 中 文 翻 译 , 顾 名 思 义 , 在 不 同 的 网 路 上 , 只 要 有 了 IP 这 层 通 讯 协 定 , 把 下 层 的 实 体 网 路 介 面 抽 象 化 , 我 们 就 「 出 运 」 啦 ! 它 到 底 是 怎 麽 一 回 事 呢 ? 下 面 我 们 举 出 它 摘 要 。
它 提 供 以 下 的 服 务 :
(1) 不 可 靠 , 非 联 结 性 的 传 输 。
(2) 绕 路 的 选 择 。
(3) 有 限 的 资 料 长 度 。
(4) 资 料 封 包 和 解 封 包 。
(5) 网 路 情 况 调 整 和 服 务 。
(6) 作 为 实 体 网 路 和 传 输 层 的 一 个 介 面 。
但 它 不 提 供 以 下 的 服 务 :
(1) 流 量 控 制 (只 提 供 一 简 易 的 做 法 )。
(2) 次 序 控 制 。
(3) 资 料 检 查 码 (仅 做 HEADER 的 检 查 码 )。
(4) 逾 时 重 送 。
(5) 资 料 重 覆 检 查 。
(6) 资 料 检 知 。
到 此 , 我 们 已 经 点 出 IP所 提 供 的 重 要 服 务 . 我 们 将 在 以 下 一 点 一 点 的 说 明 ; 而 它 不 提 供 的 服 务 (如 流 量 控 制 , 次 序 控 制 等 )它 的 上 层 TCP都 有 提 供 。 所 以 有 人 说 它 是 网 路 幕 後 无 名 英 雄 , 一 点 也 不 为 过 。 好 康 A 都 被 上 层 抢 走 了 , 剩 下 来 都 是 一 些 吃 力 不 讨 好 的 工 作 , 谁 叫 它 是 无 名 英 雄 呢 ? 不 过 在 网 路 世 界 就 是 如 此 , 各 层 之 间 相 互 合 作 , 各 司 其 职 , 没 有 谁 重 谁 轻 。
揭开IP的面纱
现 在 , 让 我 们 列 出 以 太 网 路 (Ethernet)的 框 架 ( 图 一 ) , IP的 封 包 格 式 ( 图 二 ) 和 OSI与 Internet( 图 叁 ) , 让 读 者 一 探 其 庐 山 真 面 目 。 ( 为 了 方 便 讨 论 , 我 们 假 设 IP是 架 在 Ethernet之 上 ) 。
如 果 我 们 以 Ethernet来 传 资 料 , 图 一 的 Ethernet框 架 资 料 栏 将 会 包 含 图 二 的 IP资 料 封 包 。 而 图 二 的 资 料 栏 位 将 会 包 含 上 层 图 叁 TCP/UDP的 封 包 ; 同 理 上 层 封 包 的 资 料 栏 将 会 包 含 上 上 层 的 整 个 封 包 , 而 网 路 就 是 这 样 一 层 一 层 的 运 作 , 封 包 绕 路 , 直 到 到 达 彼 岸 . 到 达 之 後 , 在 解 封 包 , 把 每 层 的 资 料 萃 取 出 来 , 例 如 IP会 决 定 把 其 资 料 栏 内 的 「 封 包 」 丢 给 TCP、 UDP或 ICMP, 然 後 各 层 在 各 忙 各 的 。 就 这 样 整 个 封 包 就 可 在 网 路 上 互 相 交 换 , 传 递 讯 息 了 。
在 解 释 完 封 包 之 後 , 让 我 们 回 头 看 看 图 一 、 图 二 各 栏 位 的 意 义 。
● 以 太 框 架 介 绍 :
前 导 (Preamble): 0与 1交 替 的 64位 元 所 组 成 , 收 方 同 步 用 。
(1)目 地 硬 体 地 址 (destination hardware address):接 收 端 的 实 体 位 址 , 共 48 bits. 所 谓 实 体 位 址 , 就 是 生 产 E t h e r n e t 介 面 的 硬 体 厂 商 向 IEEE所 购 买 的 一 组 连 续 地 址 . 厂 商 在 生 产 时 , 把 此 号 码 烧 入 即 可 . 这 样 一 来 全 世 界 各 家 不 同 的 以 太 网 路 卡 制 造 商 的 网 路 实 体 位 址 就 不 会 冲 突 了 .
(2)来 源 硬 体 地 址 (source hardware address):发 送 端 的 实 体 位 址 , 也 是 48 bits. 这 里 要 注 意 的 是 , 网 路 实 体 位 址 是 和 网 际 位 址 ( IP A D D R E S S ) 是 不 同 的 . 简 单 的 说 , 实 体 位 址 是 给 网 路 卡 用 的 , 网 际 位 址 是 给 IP 用 的 .
(3)框 架 型 态 (frame type): 16位 元 用 来 识 别 资 料 的 型 态 .
(4)框 架 资 料 (frame data): 上 层 传 来 的 资 料 必 须 介 於 368 bits(46 bytes)和 12000 bits(1500 bytes)之 间 . 换 句 话 说 IP 丢 给 e t h e r n e t 驱 动 程 式 的 封 包 不 可 大 於 1500个 byte. 在 这 里 我 们 即 点 出 了 为 什 麽 WINSOCKET的 MTU ( 最 大 传 输 单 位 ) 内 定 值 是 1500位 元 组 . 试 想 一 下 , 我 们 在 每 传 秒 10 mega位 元 的 以 太 网 路 上 我 们 每 次 只 能 丢 小 於 1500个 位 元 组 (12 K位 元 )的 封 包 给 Ethernet, 实 在 蛮 可 怜 的 . 当 然 这 在 高 速 网 路 中 也 是 不 适 用 的 .
(5)循 环 码 (Cyclic Redundancy Check, CRC): 用 以 侦 测 资 料 传 输 过 程 中 , 资 料 是 否 会 发 生 错 误 . 用 软 体 或 硬 体 去 实 作 均 可 .
简 单 吧 ! 经 由 以 太 网 路 卡 传 出 和 收 到 的 资 料 就 是 如 此 , 看 起 来 笨 笨 的 , 不 过 确 实 如 此 . 现 在 , 让 我 们 再 来 看 看 IP 的 资 料 格 式 .
(1)版 本 (Version): 4个 bit. 目 前 最 新 的 版 本 是 4, 1989年 5月 制 订 .
(2)标 头 长 (Internet Header Length): 4个 bit. 以 32个 位 元 为 单 位 . 如 果 无 IP选 项 的 话 , 它 的 值 为 5( 即 最 小 值 ) . 细 心 的 读 者 自 己 算 算 看 .
(3)服 务 型 态 (Service Type): 8个 bit. 传 给 路 由 器 或 闸 道 器 , 我 们 所 希 望 的 传 输 类 型 . 共 分 叁 种 1. D-低 延 迟 2. T-高 吞 吐 率 3. R-高 可 靠 性
(4)总 长 度 (Total Length): 16个 bit. 所 允 许 的 最 大 长 度 为 2^16-1=65535 (表 头 加 上 资 料 总 长 ).
(5)识 别 字 (Identification): 16个 bit. 资 料 分 割 後 , 当 成 识 别 码 用 .
(6)旗 标 (Flag): 3个 bit. 指 示 是 否 可 分 割 .
(7)分 段 差 距 值 (Fragment): 13个 bit. 资 料 被 分 段 後 , 此 分 段 在 原 资 料 流 的 位 址 .
(8)存 活 时 间 (Time to live): 8个 bit. 以 秒 为 单 位 , 表 示 IP预 测 此 封 包 可 在 网 路 上 的 存 活 时 间 . 闸 道 器 会 把 此 资 料 传 输 的 时 间 减 去 存 活 时 间 , 若 小 於 零 , 则 放 弃 此 封 包 .
(9)协 定 (Protocol): 8个 bit. 表 示 IP上 层 的 协 定 内 容 . 这 里 告 诉 了 IP软 体 , 我 们 的 资 料 应 丢 那 一 层 软 体 去 处 理 . 以 下 在 WINSOCK中 的 Protocol file都 可 找 到 .
ip 0 icmp 1 tcp 6 udp 17
(10)标 头 检 查 码 (Header Checksum): 16个 bit. 表 示 IP表 头 (HEADER)的 检 查 码 .
(11)来 源 IP地 址 (Source Address): 32 bit. 这 里 就 是 所 谓 的 IP ADDRESS
目 前 在 Internet中 , 网 路 共 分 五 级 . 如 下 表 图 四 :
A类 网 路 的 IP ADDRESS是 介 於 0.0.0.1至 128.0.0.0
B类 网 路 的 IP ADDRESS是 介 於 128.0.0.0至 192.0.0.0
C类 网 路 的 IP ADDRESS是 介 於 192.0.0.0至 224.0.0.0
D类 网 路 的 IP ADDRESS是 介 於 224.0.0.0至 240.0.0.0
E类 网 路 的 IP ADDRESS是 介 於 240.0.0.0至 255.255.255.254
#注 意 IP ADDRESS 255.255.255.255为 广 播 位 址 #
举 个 例 子 来 说 : 若 你 的 IP ADDRESS为 140.113.207.141的 话 , 那 在 就 是 B类 网 路 . 而 电 脑 即 以 2进 位 来 表 示 这 个 位 址 ,
因 140=10001100 113=01110001 207=11001111 141=10001101
所以140.113.207.141 = 10001100011100011100111110001101
就是 IP 和 IP 沟通的实际方式。
目 地 IP地 址 (Destination Address): 32 bits. 理 由 同 上 。
IP选 项 (Option): 可 有 可 无 . 这 里 大 多 是 用 在 资 料 段 的 除 错 或 测 试 。
补 足 长 度 (Padding): 长 度 不 定 . 它 会 填 充 IP表 头 (HEADER)使 得 表 头 能 被 32整 除 , 加 快 电 脑 处 理 。
资 料 (IP Data): 这 里 就 是 由 上 层 的 TCP / UDP资 料 填 充 , 或 同 层 的 ICMP。
IP所提供的服务
看 样 子 多 了 这 些 栏 位 , IP层 比 较 聪 明 , 事 实 上 在 网 路 的 哲 学 里 的 确 是 这 样 , 越 上 层 的 协 定 , 功 能 越 强 也 越 好 用 , 硬 体 也 越 抽 象 化 , 当 然 对 使 用 者 而 言 也 越 好 用 . 但 聪 明 归 聪 明 , 它 还 是 有 缺 点 的 . 其 中 的 不 可 靠 性 (unre