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