MST

星途 面试题库

面试题:网络编程中Socket的常见类型有哪些及各自特点

在网络编程里,Socket起着关键作用。请阐述Socket常见的类型,并说明每种类型在数据传输等方面的特点。
12.9万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

1. 流式套接字(SOCK_STREAM)

  • 数据传输特点:提供面向连接、可靠的字节流服务。数据按顺序、无差错地发送和接收,通过TCP协议实现。发送方发送的数据在接收方会以相同的顺序、完整地被接收。例如,在文件传输场景中,确保文件的所有字节都准确无误地到达接收端。
  • 应用场景:常用于对数据准确性和顺序要求极高的场景,如HTTP协议的应用(网页浏览)、FTP(文件传输协议)等。

2. 数据报套接字(SOCK_DGRAM)

  • 数据传输特点:提供无连接的、不可靠的数据报服务。数据以独立的数据报形式发送,不保证数据按顺序到达,也不保证数据一定能到达接收方。每个数据报都带有源地址和目的地址,就像寄信一样,可能会丢失或乱序。例如,在实时视频流传输中,如果少量数据丢失,只要不影响整体观看体验,仍可接受。
  • 应用场景:适用于对实时性要求较高,但能容忍部分数据丢失的场景,如视频会议、实时游戏等。

3. 原始套接字(SOCK_RAW)

  • 数据传输特点:允许直接访问网络层和传输层协议,可自行构造IP包或其他协议包。用户可以对数据包进行更底层的操作,例如修改IP头部信息等。不过这种操作需要较高的权限,且使用不当可能导致网络问题。
  • 应用场景:常用于网络协议开发、网络测试、网络安全工具开发等,例如开发自定义的网络协议或者进行网络抓包分析等工作。