UDP 和 TCP 两种协议简介

201 阅读2分钟

UDP

发送数据前不用进行连接,数据可能出现丢包,

支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

高效,适用实时直播场景

TCP

发送数据前需要进行三次握手连接,关闭连接需要四次挥手

三次握手,是客户端给服务端发 SYN,请求连接,服务端回复客户端 SYN + ACK(acknowladge) 确认连接,客户端收到 ACK 再回复给 服务端 ACK(acknowladge)此时连接成功,即可发送数据

四次挥手,是客户端发给服务端 FIN,请求关闭连接,服务端收到后发送 ACK 表示准备关闭(因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A),服务端关闭后发送 FIN 给客户端,表示已关闭,客户端收到FIN 也关闭连接

TCP 数据保证完整性

滑动窗口解决了数据的丢包、顺序不对和流量控制问题

发送端窗口,接受端窗口,发送端窗口包含已发送但未收到应答的数据和可以发送但是还未发送的数据,发送端窗口数据大小由接收端窗口剩余大小决定,接收方会把当前接收窗口的剩余大小写入应答报文,发送端收到应答后根据该值和当前网络拥塞情况设置发送窗口的大小,所以发送窗口的大小是不断变化的,帮助 TCP 实现了流量控制

Zero 窗口

发送报文时,对端零窗口,发送端会停止发送数据,并启动 persistent timer,该定时器定时发送请求给对端,让对端告知窗口大小,重试超过一定次数,TCP 可能断开连接

拥塞处理 实现了对流量的控制,保证在全天候环境下最优的传递数据

四个算法:慢开始,拥塞避免,快速重传,快速恢复