1、保证可靠性的机制
- 校验和(在传输过程中存在噪声影响,检查报文比特位是否被异常修改)
- 序列号(按序到达)
- 确认应答机制(ACK)
- 超时重传机制(发送方一定时间内没有收到ACK,判定为超时,此时要重发报文)
- 连接管理机制(三次握手、四次挥手)
- 流量控制(控制每次所能发送的数据量,避免对方接收缓冲区数据溢出)
- 拥塞控制(网络发生拥堵的时候,为缓解网络压力,先停止发送数据,随后逐步提升发送速度)
2、提高传输效率的机制
- 滑动窗口(根据对方接收缓冲区的剩余空间大小,一次发送大量数据)
- 快速重传(滑动窗口的一种异常情况:连续三次收到相同确认序号的报文)
- 捎带应答(在给对方回复ACK的同时,也可以携带数据或者其他标志位信息)
- 延迟应答(收到报文以后不立马给对方发送ACK,延迟一定时间再发送)
3、TCP vs UDP
尽管TCP是可靠连接,但是TCP并非处处都优于UDP,这需要根据实际需求而定。比如以直播为例,直播内容上传至服务端,观众在看直播的时候其实就是从服务端获取视频帧。
UDP | 因为没有什么复杂的机制,网络异常的话,少发点报文咯,这就是我们平时偶尔卡顿的原因 |
TCP | 一旦出现网络异常,由于TCP存在超时重发、拥塞控制等各种保证可靠性的机制,始终就会卡在某个报文上 |
我们看直播注重的是实时性,使用TCP的话,体验就很差了。
- TCP用于可靠传输的情况, 应用于文件传输,重要状态更新等场景
- UDP用于对高速传输和实时性要求较高的通信领域,例如视频传输。