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

Socket

本质:“接口”

Socket 在程序中的表现:

  • 是一种操作系统底层的“网络通信能力”

  • FastAPI、Flask、Django、Nginx 都是在底层使用 socket 才能“监听端口”、“响应请求”

理解描述:
        操作系统给应用层的进程提供了 Socket 接口,你就能用它来连接其他服务器的端口,发送和接收信息

流程解析:

---------------------------------------------------------------------------------------------------------------------------------

你的程序(如 curl、浏览器)  
      ↓  
[ 应用层 - HTTP/HTTPS ]  
→ 构造请求数据包(如 GET /)  
      ↓  
[ 传输层 - TCP/UDP  → Socket 创建 & 连接 ]  
→ 创建 socket / 建立连接 / 拆分为 TCP 段  
      ↓  
[ 网络层 - IP 协议 ]  
→ 加上目标 IP 地址(google.com => 142.250.xxx.xxx)  
      ↓  
[ 数据链路层 - MAC + ARP ]  
→ 加上 MAC 地址 / 通过网关找到下一跳  
      ↓  
[ 物理层 - 电信号 / 无线信号 ]  
→ 通过网卡传到交换机 / 路由器  
      ↓  
== 经过若干网关和运营商路由节点(BGP 路由) ==  
      ↓  
== 客户端发出的网络包抵达目标服务器 ==  
      ↓  
[ 物理层 - 电信号 ]  
→ 信号从网线进入服务器网卡,转换为数字信号  
      ↓  
[ 数据链路层 - MAC帧 ]  
→ 校验帧完整性,识别是否是本机 MAC 地址(是则继续)  
      ↓  
[ 网络层 - IP 协议 ]  
→ 解析目标 IP 地址,确认是发给本机的包,丢弃 IP 头  
      ↓  
[ 传输层 - TCP ]  
→ 根据端口号交给 socket / TCP 重组数据段(拼接/去重)  
      ↓  
[ 会话层 / 表示层(可选)]  
→ 若使用 HTTPS,进行加密解密 / 会话管理  
      ↓  
[ 应用层 - HTTP/HTTPS ]  
→ 解析 HTTP 请求,如:  
  GET /index.html HTTP/1.1  
  Host: www.xxx.com  
  Cookie: ...  
      ↓  
[ Web 服务框架(如 Nginx / Flask / Node.js)]  
→ 根据 URL 路由、Header、参数等逻辑处理请求  
      ↓  
[ 生成响应数据(HTML/JSON/状态码)]  
→ 准备发回客户端  
      ↓  
== 进入封装流程,逐层返回 ==

---------------------------------------------------------------------------------------------------------------------------------


文章转载自:
http://chaplaincy.zzgtdz.cn
http://antagonist.zzgtdz.cn
http://apopetalous.zzgtdz.cn
http://admittance.zzgtdz.cn
http://bowery.zzgtdz.cn
http://candescent.zzgtdz.cn
http://boreal.zzgtdz.cn
http://aforesaid.zzgtdz.cn
http://bayrut.zzgtdz.cn
http://anlage.zzgtdz.cn
http://andy.zzgtdz.cn
http://carshops.zzgtdz.cn
http://burmese.zzgtdz.cn
http://caporegime.zzgtdz.cn
http://aquamarine.zzgtdz.cn
http://bhikshu.zzgtdz.cn
http://camail.zzgtdz.cn
http://bach.zzgtdz.cn
http://calabash.zzgtdz.cn
http://allocable.zzgtdz.cn
http://calque.zzgtdz.cn
http://bluenose.zzgtdz.cn
http://benedictive.zzgtdz.cn
http://antiketogenesis.zzgtdz.cn
http://administrators.zzgtdz.cn
http://apperceive.zzgtdz.cn
http://auxetic.zzgtdz.cn
http://borecole.zzgtdz.cn
http://blacketeer.zzgtdz.cn
http://candock.zzgtdz.cn
http://www.dtcms.com/a/149544.html

相关文章:

  • 【STL】unordered_map
  • 【速写】多LoRA并行衍生的一些思考
  • Nginx:前后端分离配置(静态资源+反向代理)
  • navicat导入sql文件 所有问题解决方法集合
  • ios开发中xxx.debug.dylib not found
  • day21 | 26暑期实习
  • windows server2019 内网离线安装mysql5.7方式;windows server2019安装软件提示丢失msvcp100.dll问题处理
  • char32_t、char16_t、wchar_t 用于 c++ 语言里存储 unicode 编码的字符,给出它们的具体定义
  • Linux系统编程 day9 SIGCHLD and 线程
  • uniapp开发2--uniapp中的条件编译总结
  • 【HarmonyOS】ArKUI框架
  • 基于贝叶斯优化的Transformer多输入单输出回归预测模型Bayes-Transformer【MATLAB】
  • HarmonyOS Next 编译之如何使用多目标产物不同包名应用
  • 字符串全排列(Java版本自己用)
  • 随机数算法原理以及模拟实现
  • 如何高效的进行生产管理?
  • UnityDots学习(四)
  • 使用java实现设计图中多个设备的自动布线,根据如下要求生成详细设计方案文档
  • 前沿分享|技术雷达202504月刊精华
  • LINUX网络基础 [六] - HTTPS协议
  • Gboard安卓版手势输入与多语言支持全面评测【输入顺滑】
  • Redis—内存淘汰策略
  • 09.传输层协议 ——— TCP协议
  • 在 NVIDIA Orin (JetPack 6.0) 上安装 PyTorch 2.4 + Torchvision 0.19
  • App爬虫工具篇-mitmproxy
  • GpuGeek:以弹性算力与全栈服务赋能产业智能升级
  • 关于团结引擎打包、或者项目出错并且崩溃
  • Linux中查询进程服务,通过端口方式关闭
  • MySQL中根据binlog日志进行恢复
  • TCP三次握手与四次挥手面试回答版本