跳到主要内容

TCP与UDP对比分析

在计算机网络中,传输层协议是实现设备之间通信的关键。核心协议为TCP与UDP;

为什么TCP会选择三次握手四次挥手

  • 连接(三次握手)
    • 第一次握手(SYN): 客户端发送一个SYN(同步序列编号)报文给服务器,表示请求建立连接,并且指定初始序列号(Sequence Number)。

    • 第二次握手(SYN-ACK): 服务器收到SYN报文后,发送一个SYN-ACK报文作为响应。这个报文不仅确认了客户端的SYN(ACK),还包括服务器自己的SYN(同步序列编号),告诉客户端服务器也准备好了,并指定自己的初始序列号。

    • 第三次握手(ACK): 客户端收到服务器的SYN-ACK后,发送一个ACK(确认)报文,确认收到服务器的SYN报文。至此,连接建立完成,客户端和服务器可以开始传输数据。

即服务端与客户端,各自都需要发送“请求连接”与“确认连接”两个信息。

  • 断开(四次挥手)

    • 第一次挥手(FIN): 客户端发送一个FIN(Finish)报文,表示不再发送数据,但仍可接收数据。

    • 第二次挥手(ACK): 服务器收到FIN报文后,发送一个ACK报文,确认收到客户端的FIN请求。此时连接处于半关闭状态,客户端不再发送数据,但服务器可以继续发送数据。

    • 第三次挥手(FIN): 服务器发送一个FIN报文,表示服务器也不再发送数据了。

    • 第四次挥手(ACK): 客户端收到服务器的FIN报文后,发送一个ACK报文,确认收到。至此,连接完全关闭。

从全局来看,这儿依然是各自发生“断开”与“确认断开”两个信息。但是这儿有所不同;

不同点

  • 由于TCP是可靠连接,从底层来看是有延迟的,即当客户端发送“中断”,服务端接收到时,服务端可能仍有未发生的信息,此时,服务端不能立即发送“中断”,但可以确认“接收中断”;

一下内容为知识点

1. TCP 协议

1.1 TCP 是什么?

TCP 是一种面向连接的传输层协议,意味着在传输数据之前,必须先在发送方和接收方之间建立连接。这一过程通常被称为“三次握手”。

1.2 主要特点

  • 可靠性:TCP 通过确认机制、序列号、数据重传以及流量控制等机制,确保数据包能够准确无误地到达接收方,即使在网络不稳定的情况下,也能处理丢包问题。
  • 流量控制:TCP 实现了对网络带宽的有效利用,通过滑动窗口机制,控制数据的发送速率,防止网络拥塞。
  • 连接管理:TCP 使用三次握手建立连接,并通过四次挥手来安全地关闭连接,确保所有数据在连接关闭前传输完毕。

1.3 适用场景

TCP 适用于需要高可靠性、数据完整性且对传输延迟要求不高的场景,如:

  • 网页浏览(HTTP/HTTPS)
  • 文件传输(FTP)
  • 电子邮件(SMTP)

2. UDP 协议

2.1 UDP 是什么?

UDP 是一种面向无连接的传输层协议,与 TCP 不同,它在发送数据之前无需建立连接,发送数据时也不会等待接收方的确认。

2.2 主要特点

  • 简单高效:由于没有连接管理、确认机制等复杂的操作,UDP 更加轻量,开销较小,效率高。
  • 低延迟:因为没有数据重传和流量控制机制,UDP 传输的延迟比 TCP 更低,非常适合实时应用。
  • 不可靠传输:UDP 不保证数据包的顺序性和可靠性,发送的数据包可能丢失、重复或乱序。

2.3 适用场景

UDP 适用于对传输效率要求高且能够容忍数据丢失的场景,如:

  • 视频直播(实时性要求高)
  • 在线游戏(低延迟)
  • 语音通话(VoIP)

3. TCP 与 UDP 的对比

特性TCPUDP
连接性面向连接(需建立连接)无连接(无需建立连接)
可靠性可靠传输(确认、重传、序列号等机制)不可靠传输(无确认机制)
流量控制有(滑动窗口、拥塞控制)无流量控制机制
数据顺序保证顺序无序传输
开销较大(头部开销和机制开销)较小(头部开销小)
延迟较高(数据确认、重传机制引入的延迟)较低(无确认和重传机制)
适用场景文件传输、电子邮件、网页浏览等视频直播、在线游戏、语音通话等

4. 如何选择合适的协议?

  • 优先考虑可靠性和数据完整性:如果应用场景需要确保数据完整传输且不容忍数据丢失,TCP 是首选。例如,在电子邮件和文件传输等场景中,丢失任何数据都是不可接受的。
  • 优先考虑传输效率和实时性:如果应用场景对延迟敏感且可以容忍少量数据丢失,UDP 是更好的选择。例如,在视频流、在线游戏和语音通话中,及时性比数据完整性更为重要。