# TCP和UDP

都是处于传输层的协议,TCPUPD的目的都是为了给用户提供一端到另一端的信息传输。只不过在实现上不同。

# TCP

使用TCP协议进行通信,需要先建立连接。
TCP建立连接需要三次握手,断开连接需要四次挥手
MDN 介绍 (opens new window)

# 三次握手的原因?

需要客户端和服务端都判断双方具有正常的发送和接收信息的能力

  • 第一次:服务端知道,客户端能发
  • 第二次:客户端知道,服服务端能收能发
  • 第三次:服务端知道,客户端能收

# 挥手多一次的原因?

服务端多了一步把发送任务任务完成的步骤,因为可能还有没完成的任务

  • 第一次:客户端告诉服务端,我不会给你发消息了
  • 第二次:服务端告诉客户端,我知道了,你等我通知,我活干完了告诉你
  • 第三次:服务端告诉客户端,我都干完了
  • 第四次:客户端告诉服务端,好的,我关闭了。服务端收到后也关闭

# UDP

使用UDP协议进行通信,不需要建立连接,因此UDP不需要进行握手。
因此不保证:数据是否丢失、数据的顺序、数据是否重复。
http3.0是基于UDP实现的
MDN 介绍 (opens new window)

# TCP和UDP的区别

  • 数据传输方式
    • TCP基于连接
    • UDP基于无连接
  • 对系统资源的需求
    • TCP较多
    • UDP少 <!-- + 信息传输的模式
    • TCP数据报模式
    • UDP流模式 -->
  • 数据的准确性
    • TCP保证数据正确性
    • UDP可能丢包
  • 数据的顺序
    • TCP保证数据顺序
    • UDP不保证