原 始 套 接 字 输 入

原 始 套 接 字 输 入

就 原 始 套 接 字 的 输 入 我 们 必 须 首 先 回 答 的 问 题 是 , 内 核 把 哪 些 接 收 到 的 IP 数 据 报 传 递 到 原

始 套 接 字 ? 这 儿 遵 循 如 下 规 则 。

· 接 收 到 的 UDP 分 组 和 TCP 分 组 绝 不 传 递 到 任 何 原 始 套 接 字 。 如 果 一 个 进 程 想 要 读 取 含 有

UDP 分 组 或 TCP 分 组 的 IP 数 据 报 , 它 就 必 须 在 数 据 链 路 层 读 取 这 些 分 组 ( 第 29 章 ).

· 大 多 数 ICMP分 组 在 内 核 处 理 完 其 中 的 ICMP 消 息 后 传 递 到 原 始 套 接 字 。 源 自 Berkeley 的

实 现 把 不 是 回 射 请 求 、 时 间 戳 请 求 或 地 址 掩 码 请 求 ( 这 三 类 ICMP 消 息 全 由 内 核 处 理 ) 的

所 有 接 收 到 的 ICMP分 组 传 递 给 原 始 套 接 字 ( TCPv2 第 302 、 303 页 ) 。

· 所 有 IGMP 分 组 在 内 核 完 成 处 理 其 中 的 IGMP 消 息 后 传 递 到 原 始 套 接 字 。

· 内 核 不 认 识 其 协 议 字 段 的 所 有 ip 数 据 报 传 递 到 原 始 套 接 字 。 内 核 对 这 些 分 组 执 行 的 唯 一

处 理 是 针 对 某 些 首 部 字 段 的 最 小 验 证 : IP 版 本 、 IP v4 首 部 校 验 和 、 首 部 长 度 以 及 目 的

IP 地 址 〈 TCPv2 第 213 、 220 页 ) 。

· 如 果 某 个 数 据 报 以 片 段 形 式 到 达 , 那 么 在 它 的 所 有 片 段 均 到 达 且 重 组 出 该 数 据 报 之 前 ,

不 栲 递 任 何 片 段 分 组 到 原 始 套 接 字 。

当 内 核 有 一 个 需 传 递 到 原 始 套 接 字 的 IP 数 据 报 时 , 它 将 检 查 所 有 进 程 上 的 所 有 原 始 套 接 字 ,

以 寻 找 所 有 匹 配 的 套 接 字 。 每 个 匹 配 的 套 接 字 将 被 递 送 以 该 IP 数 据 报 的 一 个 副 本 。 内 核 对 每 个

原 始 套 接 字 均 执 行 如 下 3 个 测 试 , 只 有 这 3 个 测 试 结 果 均 为 真 , 内 核 才 把 接 收 到 的 数 据 报 递 送 到

这 个 套 接 字 。

· 如 果 创 建 这 个 原 始 套 接 字 时 指 定 了 非 0 的 协 议 参 数 ( SOCKET的 第 三 个 参 数 ) , 那 么 接 收 到

的 数 据 报 的 协 议 字 段 必 须 匹 配 该 值 , 否 则 该 数 据 报 不 递 送 到 这 个 套 接 字 。

· 如 果 这 个 原 始 套 接 字 己 由 bind 调 用 绑 定 了 某 个 本 地 IP 地 址 , 那 么 接 收 到 的 数 据 报 的 目 的

IP 地 址 必 须 匹 配 这 个 绑 定 地 址 , 否 则 该 数 据 报 不 递 送 到 这 个 套 接 字 。

· 如 果 这 个 原 始 套 接 字 己 由 connetct 调 用 指 定 了 某 个 外 地 IP 地 址 , 那 么 接 收 到 的 数 据 报 的

源 IP 地 址 必 须 匹 配 这 个 己 连 接 地 址 , 否 则 该 数 据 报 不 递 送 到 这 个 套 接 字 。

注 意 , 如 果 一 个 原 始 套 接 字 是 以 0值 协 议 参 数 创 建 的 , 而 且 既 未 对 它 调 用 过 bind , 也 未 对

它 调 用 过 connect那 么 该 套 接 字 将 接 收 可 由 内 核 传 递 到 原 始 套 接 字 的 每 个 原 始 数 据 报 的 一 个

副 本 。

无 论 何 时 往 一 个 原 始 Ipv 4 套 接 字 递 送 一 个 接 收 到 的 数 据 报 , 传 递 到 该 套 接 字 所 在 进 程 的 都

是 包 括 IP 首 部 在 内 的 完 整 数 据 报 。 然 而 对 于 原 始 IPv6 套 接 字 , 传 递 到 套 接 字 的 只 是 扣 除 了 IPv6

首 部 和 所 有 扩 展 首 部 的 净 荷 (payload)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值