首先我们看一下UDP和TCP的特点:
UDP:无连接 、不可靠、面向数据报、没有发送缓冲区
TCP:面向连接、可靠、面向字节流、有发送缓冲区
1 无连接和面向连接
UDP:“无连接”
在网络中使用UDP协议时,只需要提供对端的IP地址和端口号PORT就可以与对端进行通信,并不需要和对端建立连接
TCP:“面向连接”“三次握手、四次挥手”
在网络中使用TCP协议时,不仅需要对端的IP地址和端口号PORT,还需要通过“三次握手”建立连接,“四次挥手”断开连接
什么是连接?以打电话来举个例子
2 不可靠和可靠
我们可以先看一下UDP和TCP协议的报头信息
UDP的报头中只有校验和,但是校验和只能检查报头信息是否出错不足以保证协议的可靠性。
TCP的报头中添加了很多字段来保证协议的可靠性,如:序号、确认序号、窗口大小
UDP:不可靠。UDP没有提供使数据可靠传输的机制
TCP:可靠。
(1)确认应答机制和超时重传机制;
可以通过序号和确认序号,提供确认应答机制和超时重传机制处理在传输过程中的丢包问题,同时可以保证数据的按序到达,并且能够达到去除重复数据的效果。
(2)流量控制机制:通过窗口大小显示自己接收缓冲区的大小,使对端在发送数据时控制速率,防止对端发送速率过大而自己的接收能力不足而导致的数据丢包。
(3)拥塞避免机制:避免发送效率过大而导致的网络拥塞,先发送少量数据探测网络状况。
同时TCP为提升自身性能,还提供了滑动窗口、快重传、延迟应答