MST

星途 面试题库

面试题:网络编程之Socket编程基础与TCP/IP协议关系

请简述Socket编程中,TCP Socket和UDP Socket在使用上的主要区别,并且说明它们与TCP/IP协议栈中传输层协议的对应关系。
17.6万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

TCP Socket和UDP Socket在使用上的主要区别:

  1. 连接性
    • TCP Socket:基于连接,在通信前需通过三次握手建立可靠连接,通信结束后通过四次挥手断开连接。例如HTTP协议使用TCP Socket,浏览器与服务器建立连接后才能传输网页数据。
    • UDP Socket:无连接,发送数据前无需建立连接,直接将数据报发送出去,像DNS查询通常使用UDP Socket,客户端直接向DNS服务器发送查询请求。
  2. 可靠性
    • TCP Socket:可靠传输,通过序列号、确认应答、重传机制保证数据按序、无差错到达。比如文件传输使用TCP Socket,确保文件完整无误。
    • UDP Socket:不可靠传输,不保证数据一定到达、不保证顺序、可能丢包,如实时视频流传输,偶尔丢包不影响整体观看体验,使用UDP可减少延迟。
  3. 传输效率
    • TCP Socket:因连接建立、确认机制等开销,效率相对较低,适用于对数据准确性要求高,对实时性要求不高场景。
    • UDP Socket:无需连接建立等开销,传输效率高,适用于对实时性要求高,对数据准确性要求相对较低场景。
  4. 数据边界
    • TCP Socket:面向流,无明确数据边界,接收端需自行处理数据分包、合并。
    • UDP Socket:面向数据报,有明确数据边界,一次发送一个数据报,接收端一次接收一个完整数据报。

与TCP/IP协议栈中传输层协议的对应关系:

  • TCP Socket:对应TCP/IP协议栈传输层的TCP协议,基于TCP协议实现可靠的字节流传输。
  • UDP Socket:对应TCP/IP协议栈传输层的UDP协议,基于UDP协议实现不可靠的数据报传输。