![](https://csdnimg.cn/release/download_crawler_static/87699047/bg5.jpg)
前 面 讲 到 , 最 简 单 的 运 输 层 协 议 , 就 是 提 供 进 程 之 间 的 独 立 通 信 , 但 底
层 的 实 现 , 是 socket 之 间 的 独 立 通 信 。在网 络 层 中 , IP 地 址 是 一 个 主
机 逻 辑 地 址 , 而 在 运 输 层 中 , socket 是 一 个 进 程 的 逻 辑 地 址 ; 当 然 , 一
个 进 程 可 以 拥 有 多 个 socket。 应 用 进 程 可 以 通 过 监 听 socket, 来 获 取 这
个 socket 接 受 到 的 消 息 。
socket 并 不 是 一 个 实 实 在 在 的 东 西 , 而 是 运 输 层 抽 象 出 来 的 一 个 对 象 。
运 输 层 增 加 了 端 口 这 个 概 念 , 来 区 分 不 同 的 socket。 端 口 可 以 理 解 为 一
个 主 机 上 有 很 多 的 网 络 通 信 口 , 每 个 端 口 都 有 一 个 端 口 号 , 端 口 的 数 量
由 运 输 层 协 议 确 定 。 不 同 的 运 输 层 协 议 对 socket 有 不 同 的 定 义 方 式 。 在
UDP 协 议 中 , 使 用 目 标 IP+目 标 端 口 号 来 定 义 一 个 socket; 在 TCP 中 使 用
目 标 IP+目 标 端 口 号 +源 IP+源 端 口 号 来 定 义 一 个 socket。 我 们 只 需 要 在
运 输 层 报 文 的 头 部 附 加 上 这 些 信 息 , 目 标 主 机 就 会 知 道 我 们 要 发 送 给 哪
个 socket, 对 应 监 听 该 socket 的 进 程 就 可 获 得 信 息 。
运 输 层 协 议
运 输 层 的 协 议 就 是 大 名 鼎 鼎 的 TCP 和 UDP。 其 中 , UDP 是 最 精 简 的 运 输 层
协 议 , 只 实 现 了 进 程 间 的 通 信 ; 而 TCP 在 UDP 的 基 础 上 , 实 现 了 可 靠 传
输 、 流 量 控 制 、 拥 塞 控 制 、 面 向 连 接 等 等 特 性 , 同 时 也 更 加 复 杂 。 当 然
除 此 之 外 , 还 有 更 多 更 优 秀 的 运 输 层 协 议 , 但 目 前 广 为 使 用 的 , 就 是 TCP