MST

星途 面试题库

面试题:网络编程之非阻塞Socket协议选择基础

在非阻塞Socket编程中,TCP和UDP协议各自有什么特点,在哪些场景下会优先选择TCP,哪些场景下会优先选择UDP?
23.6万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

TCP特点

  1. 面向连接:在数据传输之前,需要通过三次握手建立连接,传输完成后通过四次挥手释放连接。这确保了通信双方的状态同步,提供了可靠的数据传输环境。
  2. 可靠传输:通过序列号、确认应答机制以及超时重传机制,保证数据无差错、不丢失、不重复且按序到达。
  3. 流量控制:利用窗口机制,接收方根据自身接收能力,向发送方通告自己的接收窗口大小,防止发送方发送数据过快导致接收方缓冲区溢出。
  4. 拥塞控制:当网络出现拥塞时,TCP会通过调整发送窗口大小等机制来降低发送速率,避免网络进一步拥塞。

UDP特点

  1. 无连接:发送数据前不需要建立连接,直接将数据封装成UDP数据包发送出去,减少了连接建立和释放的开销。
  2. 不可靠传输:不保证数据一定能到达接收方,也不保证数据的顺序和完整性。没有确认应答机制和重传机制。
  3. 面向报文:UDP对应用层交下来的报文,既不合并,也不拆分,而是保留报文的边界,直接封装成UDP数据包发送。
  4. 传输效率高:由于没有连接建立、流量控制、拥塞控制等机制,UDP的传输效率相对较高,适合对实时性要求高但对数据准确性要求相对较低的场景。

优先选择TCP的场景

  1. 文件传输:如FTP文件传输,文件的完整性至关重要,不能出现数据丢失或错误,TCP的可靠传输能保证文件准确无误地传输。
  2. 电子邮件:邮件内容包含重要信息,需要确保邮件完整地发送到收件人服务器,TCP协议能满足这一需求。
  3. 远程登录:像SSH远程登录,用户输入的命令和服务器返回的结果都必须准确无误,TCP的可靠特性保证了交互的正确性。

优先选择UDP的场景

  1. 实时视频流:如网络视频会议、在线直播等场景,对实时性要求极高,偶尔丢失一些数据包对视频观看体验影响不大,而TCP的重传机制可能会导致延迟增加,影响实时性,所以优先选择UDP。
  2. 实时音频流:如语音通话,更注重声音的实时传输,少量数据丢失可能只是造成短暂的声音卡顿,对整体通话影响较小,UDP的高传输效率能满足实时音频传输的需求。
  3. DNS查询:DNS查询通常数据量较小,且对响应速度要求较高,即使偶尔丢失查询请求,客户端可以重新发起查询,因此UDP适用于DNS查询场景。