理解UDP 和 TCP

UDP

UDP(User Datagram Protocol),⽤⼾数据包协议,是⼀个简单的⾯向数据报的通信协议,即对应

⽤层交下来的报⽂,不合并,不拆分,只是在其上⾯加上⾸部后就交给了下⾯的⽹络层

也就是说⽆论应⽤层交给 UDP 多⻓的报⽂,它统统发送,⼀次发送⼀个报⽂

⽽对接收⽅,接到后直接去除⾸部,交给上⾯的应⽤层就完成任务

UDP 报头包括4个字段,每个字段占⽤2个字节(即16个⼆进制位),标题短,开销⼩

特点如下:

UDP 不提供复杂的控制机制,利⽤ IP 提供⾯向⽆连接的通信服务

传输途中出现丢包,UDP 也不负责重发

当包的到达顺序出现乱序时,UDP没有纠正的功能。

并且它是将应⽤程序发来的数据在收到的那⼀刻,⽴即按照原样发送到⽹络上的⼀种机制。即使是

出现⽹络拥堵的情况,UDP 也⽆法进⾏流量控制等避免⽹络拥塞⾏为

TCP

TCP(Transmission Control Protocol),传输控制协议,是⼀种可靠、⾯向字节流的通信协议,把

上⾯应⽤层交下来的数据看成⽆结构的字节流来发送

可以想象成流⽔形式的,发送⽅TCP会将数据放⼊“蓄⽔池”(缓存区),等到可以发送的时候就发

送,不能发送就等着,TCP会根据当前⽹络的拥塞状态来确定每个报⽂段的⼤⼩TCP 报⽂⾸部有20个字节,额外开销⼤

特点如下:

TCP充分地实现了数据传输时各种控制功能,可以进⾏丢包时的重发控制,还可以对次序乱掉的分

包进⾏顺序控制。⽽这些在 UDP 中都没有

此外,TCP 作为⼀种⾯向有连接的协议,只有在确认通信对端存在时才会发送数据,从⽽可以控制

通信流量的浪费。

根据 TCP 的这些机制,在 IP 这种⽆连接的⽹络上也能够实现⾼可靠性的通信( 主要通过检验和、

序列号、确认应答、重发控制、连接管理以及窗⼝控制等机制实现)

两者区别如下表所⽰:

image-20251220192726949

TCP 是⾯向连接的协议,建⽴连接3次握⼿、断开连接四次挥⼿UDP是⾯向⽆连接,数据传输前

后不连接连接,发送端只负责将数据发送到⽹络,接收端从消息队列读取

TCP 提供可靠的服务,传输过程采⽤流量控制、编号与确认、计时器等⼿段确保数据⽆差错,不丢

失。UDP 则尽可能传递数据,但不保证传递交付给对⽅•

TCP ⾯向字节流,将应⽤层报⽂看成⼀串⽆结构的字节流,分解为多个TCP报⽂段传输后,在⽬的

站重新装配。UDP协议⾯向报⽂,不拆分应⽤层报⽂,只保留报⽂边界,⼀次发送⼀个报⽂,接收

⽅去除报⽂⾸部后,原封不动将报⽂交给上层应⽤

TCP 只能点对点全双⼯通信。UDP ⽀持⼀对⼀、⼀对多、多对⼀和多对多的交互通信