有连接和无连接是什么意思?
有连接: 通信之前,必须与对端建立一个连接通道,发送数据之前必须得到接收端的确认才能发送。 连接断开后就无法发送数据
无连接:不要求建立连接,发送端可以在任何时间自由发送数据,接收端也不知道自己何时从哪里接收数据,即使接收端不存在或者无法接受数据,发送方也可以将数据发送出去。
TCP通过校验和、重传控制、序号标识、滑动窗口、确认应答等特性来实现可靠传输
UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。
TCP 是面向字节流的。发送的时候发的是一个流,没头没尾。
IP 包可不是一个流,而是一个个的 IP 包。之所以变成了流,这也是 TCP 自己的状态维护做的事情。
UDP 继承了 IP 的特性,基于数据报的,一个一个地发,一个一个地收。
TCP 是可以有拥塞控制的。它意识到包丢弃了或者网络的环境不好了,就会根据情况调整自己的行为,看看是不是发快了,要不要发慢点。
UDP 无法进行拥塞控制,应用让我发,我就发,管它洪水滔天。
TCP 其实是一个有状态服务,通俗地讲就是有脑子的,里面精确地记着发送了没有,接收到没有,发送到哪个了,应该接收哪个了,错一点儿都不行。
而UDP 则是无状态服务。通俗地说是没脑子的,天真无邪的,发出去就发出去了。
UDP首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。
UDP比较适合实时性要求较为严格的应用场景,比如游戏、聊天、直播等,可结合其他可靠机制降低丢包率,谷歌的QUIC可以提供几乎等同于TCP连接的可靠性,但延迟大大减少