当前位置: 首页 > news >正文

socket套接字程序是什么

面试官好!Socket(套接字)程序 是基于 TCP/IP 协议族 实现网络中不同主机进程间通信的编程接口(API),是网络编程的核心技术。简单来说,Socket 就是进程间网络通信的 “端点” —— 两台主机的进程通过各自的 Socket 建立连接,实现数据的发送与接收。

Socket 的本质是操作系统提供的网络通信抽象层,屏蔽了底层复杂的 TCP/UDP 协议细节,让开发者无需关注数据包的封装、路由、传输等底层逻辑,只需调用 Socket API 即可实现跨主机通信。

Socket 的核心分类(按传输层协议划分)

根据底层依赖的传输层协议,Socket 主要分为 TCP SocketUDP Socket 两类,对应不同的通信场景:

类型 底层协议 核心特性 典型应用场景
TCP Socket TCP(传输控制协议) 1. 面向连接:通信前需通过 “三次握手” 建立连接;
2. 可靠传输:保证数据有序、不丢失、不重复;
3. 字节流传输:数据无边界,按流传输;
4. 拥塞控制 / 流量控制:适配网络状况,避免丢包
要求可靠通信的场景:HTTP/HTTPS 服务、文件传输(FTP)、邮件收发(SMTP)、数据库连接(MySQL)
UDP Socket UDP(用户数据报协议) 1. 无连接:通信前无需建立连接,直接发送数据报;
2. 不可靠传输:不保证数据到达,也不保证顺序;
3. 数据报传输:数据有边界,一次发送一个完整数据报;
4. 无拥塞控制:传输速度快,延迟低
对实时性要求高于可靠性的场景:视频直播、语音通话、DNS 查询、游戏数据传输

Socket 通信的核心流程(以 TCP Socket 为例)

TCP Socket 采用 “客户端 - 服务器(C/S)” 架构,通信流程是面试高频考点,核心步骤如下:

1、服务器端流程

创建 Socket → 绑定地址端口 → 监听连接 → 接受连接 → 读写数据 → 关闭连接

创建 Socket:调用 socket() 函数,创建一个 Socket 描述符,指定协议族(如 IPv4 AF_INET)、传输类型(如 TCP SOCK_STREAM)。

绑定地址端口:调用 bind() 函数,将 Socket 与本机的 IP 地址 + 端口号 绑定,客户端通过该地址端口找到服务器。

监听连接:调用 listen() 函数,将 Socket 转为监听状态,设置最大等待连接数(如 5),等待客户端连接。

接受连接:调用 accept() 函数,阻塞等待客户端连接;当有客户端连接时,返回一个新的 Socket 描述符,用于与该客户端通信(原监听 Socket 继续等待其他客户端)。

读写数据:通过 read()/recv() 读取客户端数据,通过 write()/send() 向客户端发送数据。

关闭连接:通信完成后,调用 close() 关闭 Socket 描述符,释放资源。

2、客户端流程

创建 Socket → 连接服务器 → 读写数据 → 关闭连接

创建 Socket:与服务器端相同,调用 socket() 创建 Socket 描述符。

连接服务器:调用 connect() 函数,指定服务器的 IP 地址 + 端口号,发起 TCP 三次握手,建立连接。

读写数据:与服务器端双向传输数据。

关闭连接:调用 close() 关闭 Socket,触发 TCP 四次挥手,断开连接。

3、核心特点

  • 服务器端一个监听 Socket 可接受多个客户端连接,每个客户端对应一个独立的通信 Socket。
  • 通信是全双工的:同一连接上,双方可同时发送和接收数据。

Socket 程序的实际应用场景

Socket 是所有网络应用的底层基础,任何需要跨主机通信的程序都离不开 Socket:

  1. 基础网络服务:Web 服务器(Nginx/Apache)、数据库(MySQL/Redis)、消息队列(Kafka/RabbitMQ),底层均通过 Socket 实现客户端与服务端的通信。
  2. 即时通信软件:微信、QQ 的消息传输,底层基于 TCP/UDP Socket 实现。
  3. 分布式系统:Kubernetes 集群节点间通信、微服务间的 RPC 调用(如 gRPC),本质是基于 Socket 的封装。
  4. 运维工具:SSH 远程登录、Ansible 批量管理,通过 Socket 实现主机间的命令传输和执行结果返回。

Socket 与 HTTP 的关系

很多人会混淆 Socket 和 HTTP,两者是不同层次的概念

  • Socket:属于 传输层 的通信接口,是实现网络通信的 “工具”,支持 TCP/UDP 协议。
  • HTTP:属于 应用层 协议,基于 TCP Socket 实现 —— HTTP 客户端和服务器通过 TCP Socket 建立连接,然后按照 HTTP 协议的格式(请求头、请求体、响应头、响应体)传输数据。

简单来说:HTTP 是 “通信规则”,Socket 是 “通信工具”,HTTP 依赖 Socket 实现数据传输

http://www.jsqmd.com/news/620014/

相关文章:

  • Kaggle电信用户流失预测实战:从数据清洗到模型调优,一份避坑指南
  • 【计算机基础】三步搞定机械硬盘升级固态硬盘的实战指南
  • 002、OpenClaw TTS 项目初探:架构概览与核心设计思想
  • Navigating MongoDB 5.0+ AVX CPU Requirements: Solutions for Unsupported Systems
  • 为多IP地址生成自签名证书的完整指南
  • 关于鸿蒙纯血连接Windows系统探讨
  • 收藏!写了五年useEffect,今年突然慌了|小白程序员必看的大模型学习指南
  • 使用Git-RSCLIP进行卫星图像变化检测
  • ES集群-提高分片恢复的速度
  • FlashAttention实战:如何在A100上实现3倍加速的Transformer训练(附代码)
  • 企业必看!私有化即时通讯的核心优势
  • 2026年200元内蓝牙耳机推荐:入耳降噪半入耳开放式怎么选?
  • Intellij怎么打jar包
  • 将盾CDN:备份与灾备建设的企业级实践
  • CSS如何监控样式表的加载状态_通过JS监听onload与onerror事件
  • 南开计算机复试C/C++编程能力测试怎么考?手把手教你用Code::Blocks/Dev-C++准备(附真题思路)
  • 机器人流程自动化(RPA)与AI结合,会取代哪些岗位?
  • 2026奇点大会闭门报告首度流出(仅限前500名开发者):AI原生移动端的LLM轻量化部署、实时推理压缩与端侧Agent编排全栈实践
  • 保姆级教程:用ROS 2 Humble + Python搞定CiA 402伺服电机的速度控制(附完整代码)
  • 将盾CDN:安全自动化响应的工作流设计
  • 小程序开发失败的常见原因有哪些?
  • 从金融交易到工业控制:NTP和PTP到底该怎么选?一张图看懂时间同步协议选型
  • 双膜储气柜的选择指南建议
  • 模糊综合评价法:如何量化那些“说不清”的复杂决策问题
  • AzurLaneAutoScript技术架构解析:游戏自动化脚本的模块化设计与计算机视觉实现
  • 别再手动点鼠标了!用Ansible批量管理Windows服务器,这10个运维场景我帮你整理好了
  • 收藏必备!小白程序员必看:Olmo Hybrid如何用混合架构超越纯Transformer模型,实现大模型性能飞跃!
  • ClearerVoice-Studio实操手册:WAV/AVI/MP4多格式输入与WAV标准输出规范
  • 基于STM32LXXX的数字电位器(CAT5171TBI-00GT3)驱动应用程序设计
  • 终极指南:如何高效使用ControlNet-v1-1_fp16_safetensors实现精准图像控制