返回 Java / Kotlin
Java / Kotlin
5 分钟阅读

Android面试常被问的网络协议问题

网络协议,真的懂吗?

  • HTTP、HTTPS、1.0、1.1、2.0、gRPC、WebSockets、三次握手四次挥手,这些内容有什么区别吗?

🧩 一、先看总体分类

类别内容说明
传输层协议(TCP/UDP)TCP(三次握手、四次挥手)控制数据如何可靠传输
应用层协议HTTP / HTTPS / gRPC / WebSocket定义“数据内容”怎么组织与交互
HTTP版本演进HTTP/1.0 → HTTP/1.1 → HTTP/2.0不断优化性能与并发效率
安全层协议HTTPS (HTTP + TLS)在 HTTP 之上加密通信内容

🌐 二、HTTP 与 HTTPS

项目HTTPHTTPS
协议层应用层应用层 + 安全层(TLS/SSL)
端口80443
是否加密❌ 明文传输✅ 加密传输(TLS)
安全性易被窃听、篡改防中间人攻击、数据加密
典型使用内网接口、本地调试网站、APP正式环境

🚦 三、HTTP 各版本区别

版本核心改进问题解决
HTTP/1.0每个请求都要新建 TCP 连接连接开销大
HTTP/1.1默认开启 长连接 (Keep-Alive)、支持 管道化减少连接数,但仍有 队头阻塞
HTTP/2.0二进制帧、多路复用、头部压缩、服务器推送高并发、高效传输
HTTP/3.0(了解一下)基于 QUIC (UDP),无队头阻塞更快、更稳定(如 YouTube、Chrome)

🔗 四、gRPC 与 WebSocket

协议基于特点适用场景
gRPCHTTP/2使用 Protocol Buffers(高效序列化),支持双向流、强类型接口微服务通信、后端对后端
WebSocketTCP(通过 HTTP 握手)长连接、全双工通信实时聊天、在线游戏、股票行情推送等

简单理解:

  • HTTP 是「请求-响应」模型(一次问一次答)。
  • WebSocket 是「持续对话」模型(双方可随时发消息)。
  • gRPC 则是「高性能 RPC 调用」,常用于服务之间的通信。

⚙️ 五、TCP 三次握手 & 四次挥手(传输层)

这部分是 HTTP、gRPC、WebSocket 等应用协议运行的“地基”。

🔸 三次握手(建立连接)

步骤发起方接收方作用
1️⃣ SYN接收方客户端请求建立连接
2️⃣ SYN + ACK服务端同意连接
3️⃣ ACK客户端确认,连接建立完成

👉 确保双方都有发送、接收能力。


🔸 四次挥手(断开连接)

步骤发起方接收方作用
1️⃣ FIN客户端请求断开连接
2️⃣ ACK服务端确认(但可能还有数据没发完)
3️⃣ FIN服务端准备关闭
4️⃣ ACK客户端确认关闭,连接彻底断开

🧠 六、总结图(逻辑关系)

TCP(负责可靠传输)
│
├── HTTP (基于TCP的请求/响应协议)
│    ├── HTTP/1.0(短连接)
│    ├── HTTP/1.1(长连接)
│    ├── HTTP/2(多路复用)
│    └── HTTPS(加密版本)
│
├── gRPC(基于HTTP/2的高效RPC框架)
└── WebSocket(基于TCP的全双工通信)

✅ 小结一句话版

名称所属层核心功能
TCP传输层可靠数据传输(三次握手四次挥手)
HTTP应用层请求-响应的超文本传输
HTTPSHTTP + TLS安全的HTTP
HTTP/1.0~2.0协议版本演进提升性能与并发
gRPC应用层(HTTP/2)高性能RPC框架
WebSocket应用层(基于TCP)实时全双工通信