返回

计算机网络面试(五)之:传输层及常见面试题

Android

计算机网络的传输层负责在发送方和接收方之间可靠且有效地传输数据。它还提供机制来建立和管理会话。在本文中,我们将深入探讨传输层,重点关注无连接的 UDP 协议和面向连接的 TCP 协议。我们还将介绍常见的传输层面试题,帮助您为技术面试做好准备。

无连接传输:UDP

UDP(用户数据协议)是一种无连接的传输协议,这意味着它不会在发送方和接收方之间建立或维护会话。它使用尽力而为(unreliable)的传输服务,即不保证数据包的按序传输或无差错传输。

UDP 的特点:

  • 无连接
  • 尽力而为的传输服务
  • 数据包头开销小
  • 支持多路复用和多路复用
  • 适合对速度和实时性要求较高的应用,如流媒体和网络游戏

面向连接的传输:TCP

TCP(传输控制协议)是一种面向连接的传输协议,这意味着它在发送方和接收方之间建立一个会话,并在传输数据之前进行握手过程。它使用可靠的传输服务,即确保数据包按序、无差错地传输。

TCP 的特点:

  • 面向连接
  • 可靠的传输服务
  • 提供流量控制和拥塞控制机制
  • 数据包头开销较大
  • 适合对可靠性和数据完整性要求较高的应用,如文件传输和电子邮件

三次握手

三次握手是建立 TCP 会话所必需的一系列步骤。它确保在开始数据传输之前,发送方和接收方都已准备好。

  1. 客户端发送 SYN(同步)数据包: 客户端向服务器发送一个 SYN 数据包,其中包含一个随机选择的序列号。
  2. 服务器发送 SYN-ACK(同步确认)数据包: 服务器收到 SYN 数据包后,发送一个 SYN-ACK 数据包,其中包含自己的随机选择的序列号以及对客户端序列号的确认号。
  3. 客户端发送 ACK(确认)数据包: 客户端收到 SYN-ACK 数据包后,发送一个 ACK 数据包,其中包含对服务器序列号的确认号。

四次挥手

四次挥手是关闭 TCP 会话所必需的一系列步骤。它确保发送方和接收方都已完成数据传输并准备好关闭连接。

  1. 客户端发送 FIN(结束)数据包: 客户端向服务器发送一个 FIN 数据包,表示它已完成数据传输并准备关闭连接。
  2. 服务器发送 ACK(确认)数据包: 服务器收到 FIN 数据包后,发送一个 ACK 数据包,表示已收到 FIN 数据包。
  3. 服务器发送 FIN(结束)数据包: 服务器完成自己的数据传输后,发送一个 FIN 数据包,表示它也准备关闭连接。
  4. 客户端发送 ACK(确认)数据包: 客户端收到 FIN 数据包后,发送一个 ACK 数据包,表示已收到 FIN 数据包,并关闭连接。

常见传输层面试题

1. 解释 UDP 和 TCP 之间的区别。

2. 为什么我们需要三次握手而不是两次握手来建立 TCP 会话?

3. TCP 四次挥手的过程。

4. 什么是多路复用和多路复用?

5. 解释 TCP 的流量控制机制。

6. 举例说明使用 UDP 和 TCP 的实际应用场景。

7. 如果 TCP 是面向连接的,为什么它使用无连接的 UDP 作为底层协议?

8. 解释拥塞控制如何在 TCP 中工作的。

9. 不同的 TCP 状态(例如,ESTABLISHED、CLOSE_WAIT)。

10. 解疑 TCP 头部的结构和字段。