一、TCP/IP协议(传输控制协议)
1. 核心特性
- 面向连接:通信前需通过"三次握手"建立连接,结束时通过"四次挥手"断开。
- 可靠传输:通过确认应答(ACK)、超时重传、流量控制(滑动窗口)、拥塞控制(慢启动、拥塞避免)确保数据不丢失、不重复、按序到达。
- 全双工通信:支持双向数据传输。
- 字节流传输:数据被看作无结构的字节流,需应用层处理消息边界。
2. 协议栈层级
graph LR
A[应用层 HTTP/FTP] --> B[传输层 TCP]
B --> C[网络层 IP]
C --> D[链路层 Ethernet]
3. 典型应用场景
- 网页浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP)、数据库连接等需要高可靠性的场景。
4. 关键参数
- 端口号(21/22/80等)、序列号(Seq)、确认号(Ack)、窗口大小(Window Size)。
二、UDP/IP协议(用户数据报协议)
1. 核心特性
- 无连接:无需建立连接,直接发送数据包。
- 不可靠传输:不保证数据到达、不保证顺序、无重传机制。
- 高效性:头部仅8字节(TCP至少20字节),无连接管理开销。
- 支持广播/多播:可同时向多个主机发送数据。
2. 与TCP对比
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接 | 无连接 |
可靠性 | 可靠 | 不可靠 |
传输效率 | 较低(约60-70%) | 高(接近100%) |
适用场景 | 网页、文件传输 | 视频流、DNS查询 |
3. 典型应用场景
- 实时视频/音频(Zoom、抖音)、DNS查询、在线游戏(王者荣耀)、物联网传感器数据。
三、HTTP协议(超文本传输协议)
1. 核心特性
- 无状态:服务器不记录客户端状态(依赖Cookie/Session弥补)。
- 明文传输:请求/响应头和数据均未加密。
- 基于TCP:默认端口80,需先建立TCP连接。
- 请求-响应模型:客户端发起请求,服务器返回响应。
2. 工作流程
sequenceDiagram
Client->>Server: GET /index.html HTTP/1.1
Server->>Client: HTTP/1.1 200 OK + 网页数据
3. 版本演进
- HTTP/1.1:持久连接(Keep-Alive)、管道化(Pipelining)。
- HTTP/2:二进制分帧、多路复用、头部压缩。
- HTTP/3:基于QUIC(UDP实现),解决队头阻塞。
四、HTTPS协议(安全超文本传输协议)
1. 核心改进
- 加密传输:通过SSL/TLS加密数据,防窃听、篡改。
- 身份认证:CA证书验证服务器身份,防中间人攻击。
- 默认端口443,兼容HTTP协议。
2. TLS握手流程
sequenceDiagram
Client->>Server: ClientHello(支持加密套件)
Server->>Client: ServerHello(选定加密套件)+ 证书
Client->>Server: 预主密钥(用证书公钥加密)
Server->>Client: 切换加密通信
3. 加密技术
- 对称加密(AES):加密通信内容。
- 非对称加密(RSA/ECC):交换对称密钥。
- 哈希算法(SHA-256):验证数据完整性。
五、协议对比总结
协议 | 传输层 | 可靠性 | 加密性 | 典型应用 |
---|---|---|---|---|
TCP/IP | TCP | 可靠 | 无 | 网页、邮件、SSH |
UDP/IP | UDP | 不可靠 | 无 | 直播、游戏、VoIP |
HTTP | TCP | 可靠 | 无 | 普通网页浏览 |
HTTPS | TCP | 可靠 | 有 | 支付、登录等安全场景 |
六、iOS开发中的实际应用
-
TCP使用场景:
- 即时通讯消息收发(如微信文字消息)。
- 需要可靠传输的API请求(如银行交易)。
-
UDP使用场景:
- 音视频通话(集成声网SDK)。
- 实时游戏状态同步(如王者荣耀位置同步)。
-
HTTPS强制要求:
- App Transport Security (ATS) 要求iOS应用默认使用HTTPS。
- 例外域名需在
Info.plist
中配置NSExceptionDomains
。
通过理解这些协议的特性,开发者可以更合理地选择网络方案(如直播用UDP+QUIC,支付用HTTPS+TCP),并优化App的网络性能与安全性。