深入分析:字节二面中TCP与UDP的本质区别及各自适用场景

图片

TCP与UDP的基本区别

  1. 连接导向性:UDP在进行数据传输前无需建立连接,而TCP则提供面向连接的服务,数据传输开始前必须建立连接,结束后需释放该连接。
  2. 可靠性:UDP不要求远端主机在接收数据后进行确认,因此不保证数据的完整性、顺序或不丢失。而TCP则保证数据可靠传输,通过三次握手建立连接,并在数据传输过程中实施确认、窗口控制、重传及拥塞控制机制,确保数据无误、不丢失且按序到达。
  3. 状态管理:TCP是有状态的,即它会记录消息的发送及接收状态,因此需要维护一个复杂的连接状态表。而UDP则为无状态服务,不关心消息发送后的状态。
  4. 传输效率:由于TCP在传输过程中涉及更多的连接、确认与重传机制,其传输效率相对较低,而UDP则高效得多。
  5. 传输方式:TCP是一种面向字节流的协议,而UDP则是面向数据报的协议。
  6. 首部开销:TCP的首部开销在20到60字节之间,而UDP的首部开销仅为8字节,明显更小。
  7. 广播与多播支持:TCP仅支持点对点通信,而UDP支持多种通信方式,包括一对一、一对多、多对一和多对多的通信形式。

为了更直观地展示这些区别,以下是总结的表格:

特性TCPUDP
是否面向连接
是否可靠
是否有状态
传输效率较慢较快
传输形式字节流数据报段
首部开销20 ~ 60 字节8 字节
是否提供广播/多播

选择TCP或UDP的场合

  • 使用UDP的场景:一般适合即时通信,如语音、视频和直播等。这些应用对数据传输的准确性要求不高,丢失一两帧对用户体验影响微乎其微。
  • 使用TCP的场景:适合对数据传输准确性要求极高的情况,例如文件传输、邮件发送和远程登录等。

HTTP协议是基于TCP还是UDP?

HTTP协议基于TCP协议,因此在发送HTTP请求之前,首先需要建立TCP连接,这一过程涉及三次握手。

运行在TCP与UDP之上的协议

基于TCP的协议

  1. HTTP协议:超文本传输协议,主要用于Web浏览器与Web服务器之间的通信。
  2. HTTPS协议:安全的超文本传输协议,采用SSL加密技术。
  3. FTP协议:文件传输协议,提供可靠的文件传输服务。
  4. SMTP协议:简单邮件传输协议,用于发送电子邮件。
  5. POP3/IMAP协议:负责邮件接收的协议。
  6. Telnet协议:远程登录协议,现多被SSH取代。
  7. SSH协议:安全外壳协议,为远程登录提供安全保障。

基于UDP的协议

  1. DHCP协议:动态主机配置协议,用于动态分配IP地址。
  2. DNS协议:域名系统,将人类可读的域名转换为机器可读的IP地址。