TCP/IP、socket、http
区分与联系
- TCP/IP 是底层规则,规定数据如何传输;
- Socket 是操作 TCP/IP 的工具,让程序能实现通信;
- HTTPS 是上层应用,用 Socket 调用 TCP/IP 协议,实现安全的数据传输。
应用层:HTTPS(基于 HTTP + SSL/TLS)| | socket连接了应用层和传输层↓
传输层:TCP(可靠传输)↓
网络层:IP(路由和寻址)↓
网络接口层:物理网络传输(以上四层统称 TCP/IP 协议族)
- TCP/UDP 的连接:是传输层的通道,目的是为上层协议提供稳定的数据传输能力,一旦建立(TCP)或绑定(UDP),可长期复用。
- HTTP 的 “连接”:是应用层的交互逻辑,本质是 “请求 - 响应” 的序列,其复用依赖底层 TCP 连接的策略(短连接 / 长连接),但逻辑上每次请求仍是独立的交互单元。
TCP/UDP 负责 “铺路”,路一旦铺好可以反复走;HTTP 负责 “在路上运货”,运货的次数和方式(一次运一件还是多件)由 HTTP 协议自身规则决定。
特性 | UDP | TCP | HTTP |
---|---|---|---|
连接方式 | 无连接(发送数据前无需建立连接) | 面向连接(需三次握手建立连接) | 基于 TCP 的连接(依赖 TCP 握手) |
可靠性 | 不可靠(不保证数据送达、顺序或完整性) | 可靠(通过确认、重传、排序机制保证) | 依赖 TCP 实现可靠性(自身不处理) |
速度 | 快(无握手 / 确认开销,适用于实时场景) | 较慢(握手、确认等机制增加开销) | 速度受 TCP 影响,额外携带应用层头部 |
数据边界 | 保留数据边界:“原样传输,不拆不合并,严格按发送时的完整单元传输。”(不会出现 “一次收到 150 字节(前一个包裹的 100 + 后一个的 50)) | 不保留数据边界:“拆合自由,无视边界”(比如两次 500 字节的发送,可能合并成一个 1000 字节的 TCP 段发送) | 底层是无边界的 TCP 字节流,但 HTTP 自己定了 “分隔规则”,确保能正确拆分出每个请求 / 响应单元。 |