面试题答案
一键面试传输可靠性
- TCP:是面向连接的可靠传输协议。它通过序列号、确认应答、重传机制等确保数据能按序、无差错地到达接收方。例如在文件传输过程中,如果某个数据包丢失,TCP会自动重传该数据包,保证文件完整传输。
- UDP:是无连接的不可靠传输协议。它不保证数据一定能到达接收方,也不保证数据顺序。发送端只管将数据发送出去,不关心接收方是否成功接收。比如实时视频流传输,偶尔丢失几个数据包对整体观看体验影响不大,因为视频画面具有一定的连贯性。
连接状态
- TCP:在数据传输前,需要通过三次握手建立连接,传输完成后,通过四次挥手断开连接。这种机制确保了数据传输的稳定性和可靠性。例如,在建立HTTP连接时,浏览器和服务器之间会先进行TCP三次握手。
- UDP:无需建立连接和断开连接的过程,直接进行数据发送。这种特性使得UDP在一些对时间敏感的场景中表现出色,如实时游戏,玩家的操作指令需要快速发送,不需要先建立复杂的连接。
首部开销
- TCP:首部长度一般为20字节(不包含选项字段),首部包含源端口、目的端口、序列号、确认号、窗口大小等众多字段,以实现可靠传输和流量控制等功能。
- UDP:首部长度固定为8字节,仅包含源端口、目的端口、长度和校验和字段,开销小,传输效率高。
UDP常见应用场景
- 实时音视频通信:如视频会议、实时直播等场景。这类场景更注重数据传输的实时性,少量数据丢失不会对整体质量产生严重影响,例如抖音、快手等直播平台在视频流传输时部分使用UDP协议。
- 实时游戏:游戏中的玩家操作指令、位置信息等数据需要及时发送给服务器和其他玩家。UDP的低延迟和快速传输特性满足这一需求,如《王者荣耀》等在线游戏。
- DNS查询:DNS服务器对域名的解析响应需要快速返回结果。UDP协议开销小、传输快,适合这种简单快速的请求响应场景。