几种TCP 连接中出现RST 的情况( 比较详细) 收藏人:hh3755 2013-07-02 | 阅:4725 转:16 | 来源 | 分享 几种TCP 连接中出现RST 的情况 17 人 收 藏 此 文 章 , 我 要 收 藏 发 表 于 1 个 月 前 (2013-05-04 11:40) , 已 有 314 次 阅 读 ,共 0 个 评 论 目 录 : [ - ] 1 端 口 未 打 开 2 请 求 超 时 3 提 前 关 闭 4 在 一 个 已 关 闭 的 socket上 收 到 数 据 总 结 参 考 文 献 : 应 该 没 有 人 会 质 疑 , 现 在 是 一 个 网 络 时 代 了 。 应 该 不 少 程 序 员 在 编 程 中 需 要 考 虑 多 机 、局域网 、广域网 的 各种问题。 所以网 络 知识也是 避免不 了 学习的 。 而且笔者一 直觉得 TCP/IP 网 络 知识在 一 个 程 序 员 知识体系中 必需 占有 一 席之地的 。 在 TCP 协议中 RST 表 示复位, 用来异常的 关 闭 连接, 在 TCP 的 设计中 它是 不 可或缺的 。 发 送 RST 包关 闭 连接时 , 不 必等缓冲区的 包都发 出去, 直接就丢弃缓存区的 包发送 RST 包。 而接收 端 收 到 RST 包后, 也不 必发 送 ACK 包来确认。 其实在 网 络 编 程 过程 中 , 各种 RST 错误其实是 比较难排查和找到 原因的 。 下面我 列出几种会 出现 RST 的 情况。 1 端 口未打开 服 务 器 程 序 端 口 未 打 开 而 客 户 端 来 连 接 。 这 种 情 况 是 最 为 常 见 和 好 理 解 的 一 种 了 。 去 telnet 一 个 未 打 开 的 TCP 的 端 口 可 能 会 出 现 这 种 错 误 。 这 个 和 操 作 系 统 的 实 现 有 关 。在 某 些 情 况 下 , 操 作 系 统 也 会 完 全 不 理 会 这 些 发 到 未 打 开 端 口 请 求 。 比 如 在 下 面 这 种 情 况 下 , 主 机 241 向 主 机 114 发 送 一 个 SYN 请 求 , 表 示 想 要 连 接 主机 114 的 40000 端 口 , 但 是 主 机 114 上 根 本 没 有 打 开 40000 这 个 端 口 , 于 是 就 向主 机 241 发 送 了 一 个 RST。 这 种 情 况 很 常 见 。 特 别 是 服...