UDP协议:TCP协议和UDP协议的优势和劣势?

UDP 协议

UDP 协议,目标是在传输层提供直接发送报文(Datagram)的能力 Datagram 是数据传输的最小单位,UDP协议不会帮助拆分数据它的目标只有一个就是帮助发送报文

为什么不直接使用IP协议?裸发数据

这是因为传输层协议在承接上方应用层的调用,需要提供应用到应用通信——因此需要附上端口。每个端口代表不同的应用。传输下层的IP协议承接传输层的调用,将数据从主机传输到主机。IP层不能区分应用,哪怕在IP协议上进行简单的封装,也需要一个协议,

UDP 的封包格式

UDP 的设计目标是在运行用户直接发送报文的情况下,最大限度的简化应用。

UDP协议:TCP协议和UDP协议的优势和劣势?_第1张图片
可以看到,UDP的报文非常简化

  • Source Port 源端口号。因为UDP的协议(不需要ACK)因为这个字段可以省略。但对于防火墙,代理,Source Port 很重要需要用这个字段过滤和路由
  • DestinationPort 目标端口号
  • Length消息长度
  • Checksum 校验和,作用检查封包是否出错
  • Data octes 一个字节一个字节的数据

Checksum 校验机制

思考:我们把数据分成一个一个byte ,然后将所有byte相加,在将结果取反

比如4个byte:a,b,c,d 那么一种最简单的检验和就是:

Checksum = (a+b+c+d)^oxff

如果发送方用上述方式计算出Checksum,并将a,b,c,d和Checksum
一起发送给接收方,接收方就可以用同样的算法在计算一遍,这样就可以确定数据有没有发生损坏。

当然Checksum只适用于少量的变化,如果数据发生较大的变化,校验和可能发生碰撞。

UDP与TCP 的区别

目的差异

TCP:核心目标是提供可靠的网络传输,

而UDP的目标是在提供报文交换能力基础之上尽可能简化轻装上阵

可靠差异

TCP 的核心是要保证可靠性提供更好的服务。TC会有握手过程,需要建立连接保证双方同时在线。而且TCP有时间窗口持续收集无序的数据。直到这一批数据都可以合理的排序组成连续结果。

UDP 并不具备以上这些特性,它直管发送数据封包,而且UDP不需要ACK,这意味着发送成功与否UDP不管。

连接VS 无连接

TCP 是一个面向连接的协议,传输数据必须先建立连接

UDP 是一个无连接协议,数据随时发送,只提供发送封包的能力

流控技术

TCP 使用了流控技术来确保发送方不会因为一次发送过多的数据包,而是接收方不堪重负,TCP在发送缓冲区中储存数据,并在接收缓冲区中接收数据,当应用程序准备就绪,它将从接收缓冲区读取数据。

UDP 没有类似的能力

传输速度

UDP 协议简化,封包小,没有连接,可靠性检查,UDP更快。

场景差异

TCP 每个数据封包都需要确认,天然不适合高速数据传输场景,比如:观看视频,游戏,如果网络游戏用TCP ,每个封包都需要确认,可能会造成延迟,再比如,视频传输天生就允许一定的丢包率,这种操作,只需要一个简单的请求/返回,不需要建立连接用UDP就够了。

传输文件,如果考虑到无损的到达可以使用TCP,希望传输够快就要UDP,

HTTP 协议,如果考虑请求/返回的可靠性用TCP比较合适。
HTTP3.0 想要把网络优化到极致,就用UDP作为底层技术,然后在UDP的基础上解决可靠性。

TCP 场景

  • 远程控制
  • 邮件
  • 点对点传输

UDP

  • 网络游戏

  • 视频传输

  • DNS

  • 直播

  • 模糊地带

  • HTTP

  • 文件传输

UDP 不提供可靠性,不代表我么不能解决可靠性,UDP的核心价值是灵活,轻量,传输速度快,但是在这个基础上,还可以实现连接,实现会话,实现可靠。

你可能感兴趣的:(计算机网络,网络,UDP,TCP)