TCP与UDP的区别?
- TCP是面向连接的,UDP是无连接的;
什么是无连接?
- TCP是可靠的,UDP是不可靠的
什么是不可靠
- TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多;
- TCP是面向字节流的,UDP是面向报文的
什么意思
- TCP有拥塞控制机制,UDP没有。网络出现的拥塞不会使源主机的发送速率降低,这对某些实时应用很重要的,比如媒体通信,游戏;
- TCP首部开销(20字节)比UDP首部开销(8字节)要大
- UDP的主机不需要维持复杂的连接状态表
什么时候选TCP,什么时候选UDP
对某些实时性要求比较高的情况,选择UDP,比如游戏,媒体通信,实时视频流(直播),即使出现传输错误也可以容忍;其它大部分情况下,HTTP都是用TCP,因为要求传输的内容可靠,不出现丢失
HTTP可以使用UDP吗
HTTP不可以使用UDP,HTTP需要基于可靠的传输协议,而UDP不可靠
注:http 3.0 使用udp实现 https://zh.wikipedia.org/wiki/HTTP/3
TCP如何保证传输的可靠性
- 数据包校验
- 对失序数据包重新排序(TCP报文具有序列号)
- 丢弃重复数据
- 应答机制:接收方收到数据后,会发送一个确认(通常延迟几分之一秒)
- 超时重发:发送方发出数据之后,启动一个定时器,超时未收到接收方的确认,则重新发送这个数据
- 流量控制:确保接收端能够接收到发送发的数据并且不会发生缓冲区的溢出
评论