MST

星途 面试题库

面试题:网络编程之TCP与UDP协议基础比较

请详细阐述TCP和UDP协议在传输可靠性、连接状态、首部开销方面的区别,并举例说明在哪些常见应用场景中会选择使用UDP协议而非TCP协议。
33.1万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

传输可靠性

  • TCP:是面向连接的可靠传输协议。它通过序列号、确认应答、重传机制等确保数据能按序、无差错地到达接收方。例如在文件传输过程中,如果某个数据包丢失,TCP会自动重传该数据包,保证文件完整传输。
  • UDP:是无连接的不可靠传输协议。它不保证数据一定能到达接收方,也不保证数据顺序。发送端只管将数据发送出去,不关心接收方是否成功接收。比如实时视频流传输,偶尔丢失几个数据包对整体观看体验影响不大,因为视频画面具有一定的连贯性。

连接状态

  • TCP:在数据传输前,需要通过三次握手建立连接,传输完成后,通过四次挥手断开连接。这种机制确保了数据传输的稳定性和可靠性。例如,在建立HTTP连接时,浏览器和服务器之间会先进行TCP三次握手。
  • UDP:无需建立连接和断开连接的过程,直接进行数据发送。这种特性使得UDP在一些对时间敏感的场景中表现出色,如实时游戏,玩家的操作指令需要快速发送,不需要先建立复杂的连接。

首部开销

  • TCP:首部长度一般为20字节(不包含选项字段),首部包含源端口、目的端口、序列号、确认号、窗口大小等众多字段,以实现可靠传输和流量控制等功能。
  • UDP:首部长度固定为8字节,仅包含源端口、目的端口、长度和校验和字段,开销小,传输效率高。

UDP常见应用场景

  • 实时音视频通信:如视频会议、实时直播等场景。这类场景更注重数据传输的实时性,少量数据丢失不会对整体质量产生严重影响,例如抖音、快手等直播平台在视频流传输时部分使用UDP协议。
  • 实时游戏:游戏中的玩家操作指令、位置信息等数据需要及时发送给服务器和其他玩家。UDP的低延迟和快速传输特性满足这一需求,如《王者荣耀》等在线游戏。
  • DNS查询:DNS服务器对域名的解析响应需要快速返回结果。UDP协议开销小、传输快,适合这种简单快速的请求响应场景。