目录
TCP和UDP的区别
我们大多数人的回答是,TCP是面向连接的,UDP是面向无连接的。
那么什么是面向连接,什么是面向无连接?,再互通之前,面向连接的协议会先建立连接,例如:TCP会三次握手, 而UDP不会。
所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
例如:TCP提供可靠交付
- 无差错
- 不丢失
- 不重复
- 按序到达
而UDP更像,前面那讲提到过的,IP包,不保证不丢失,不保证按顺序到达
再比如,TCP面向字节流,发送没头没尾,IP包是一个一个的包,UDP继承了IP的特性,基于数据报,一个一个发,一个一个收
还有TCP是有拥塞控制的,可以根据情况调整自己的行为,看看是不是发快了,要不要发慢一点,UDP就不会,应用让我发,我就发,管它能不能接收
所以也可以说,TCP其实是有一个有状态服务,通俗的讲就是有脑子的,错一点都不行,而UDP是无状态服务,没有脑子,像发啥就发出去了
我们可以这样比喻,如果 MAC 层定义了本地局域网的传输行为,IP 层定义了整个网络端到端的传输行为,这两层基本定义了这样的基因:网络传输是以包为单位的,二层叫帧,网络层叫包,传输层叫段。我们笼统地称为包。包单独传输,自行选路,在不同的设备封装解封装,不保证到达。基于这个基因,生下来的孩子 UDP 完全继承了这些特性,几乎没有自己的思想。
UDP
特点:
- 沟通简单,没有大量的数据结构,处理逻辑,包头字段
- 可以传多个数据,也可以接收多个数据
- 不知道什么时候该进行发包的拥塞控制,无论网络丢包成啥样了,它该怎么发还怎么发
使用场景
第一,