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

计算机网络——网络模型

一、OSI七层模型

(1)客户端发送请求时 OSI 七层模型的运作流程

  1. 应用层(Application Layer)
    1. 用户通过浏览器输入URL(如https://example.com),根据协议类型(HTTP/HTTPS)确定使用何种应用层协议
    2. 生成HTTP请求报文:包含请求行(如GET /index.html HTTP/1.1)、请求头(Host、User-Agent等)、请求体(POST数据)
    3. 补充:DNS解析(将域名转为IP地址)也在此层完成(通过DNS协议)
  2. 表示层(Presentation Layer)
    1. 数据转换:对应用层数据进行格式化(如JSON转二进制)
    2. 加密:如果使用HTTPS,SSL/TLS协议会在表示层对数据进行加密(注:实际中SSL/TLS协议横跨会话层和传输层,OSI模型中的表示层更多是理论划分)
    3. 压缩:对数据进行压缩(如GZIP)
  3. 会话层(Session Layer)
    1. 管理会话生命周期(建立、维持、终止)
    2. 实际实现
      1. 在TCP/IP模型中,会话管理通常由传输层(TCP三次握手)和应用层(如HTTP Keep-Alive)共同完成
      2. 例如,TCP连接的建立(三次握手)属于传输层,但会话层在OSI中理论上负责逻辑会话管理
  4. 传输层(Transport Layer)
    1. 分段:将数据分割为更小的段(Segment),并为每个段编号(序列号)
    2. 端口标识:添加源端口(随机)和目标端口(HTTP:80,HTTPS:443)
    3. 协议选择:根据需求选择TCP(可靠传输)或UDP(快速传输)
    4. 补充:TCP的三次握手在此层完成,确保连接可靠性
  5. 网络层(Network Layer)
    1. 封装IP头:添加源IP(客户端IP)和目标IP(服务器IP),形成数据包(Packet)
    2. 路由选择:根据路由表确定下一跳路由器,通过IP协议进行寻址
  6. 数据链路层(Data Link Layer)
    1. ​​​​​​​封装帧:添加帧头(源MAC地址、目标MAC地址)和帧尾(CRC校验码),形成数据帧(Frame)
    2. MAC寻址:通过ARP协议将目标IP转换为目标MAC地址
    3. 差错检测:通过CRC校验确保数据完整性
  7. 物理层(Physical Layer)
    1. ​​​​​​​信号转换:将数据帧转换为比特流(0和1)
    2. 物理传输:通过网线、光纤、WiFi等介质将比特流发送到下一跳设备(如路由器)

(2)服务器接收请求时 OSI 七层模型的运作流程

  1. 物理层 → 数据链路层
    1. ​​​​​​​物理层:接收比特流,转换为数据帧
    2. 数据链路层
      1. 检查帧头中的目标MAC地址是否为本机
      2. 校验CRC,若错误则丢弃帧
      3. 剥离帧头和帧尾,将数据包上传至网络层
  2. 网络层
    1. ​​​​​​​检查IP头中的目标IP是否为本机
    2. 若IP匹配,剥离IP头,将数据段上传至传输层
    3. 若为路由器,则根据路由表转发数据包
  3. 传输层
    1. ​​​​​​​根据目标端口(如80或443)将数据段交给对应的应用进程(如Web服务器)
    2. 若为TCP协议,发送ACK确认,并重组数据段为完整数据
  4. 会话层 → 表示层 → 应用层
    1. ​​​​​​​会话层:维护会话状态(如保持TCP连接)
    2. 表示层:解密(HTTPS)、解压缩、数据格式转换
    3. 应用层
      1. 解析HTTP请求报文(如提取URL、请求头)
      2. 处理请求(如读取文件、查询数据库)
      3. 生成HTTP响应报文(状态行、响应头、响应体)

二、TCP/IP四层模型

OSI七层模型TCP/IP四层模型
应用层应用层
表示层应用层
会话层应用层
传输层传输层
网络层网络层
数据链路层网络接口层
物理层网络接口层

三、总结

  1. TCP/IP模型更实用,实际网络协议栈(如Linux)基于此实现
  2. 常见协议归属TCP(传输层)、IP(网络层)、HTTP(应用层)、DNS(应用层)
http://www.xdnf.cn/news/168.html

相关文章:

  • 高频面试题:Android MVP/MVVM/MVI这几种架构在实际生产中,各自的优缺点和适用场景是什么
  • Banana Pi BPI-RV2 RISC-V 路由器开发板发售, 全球首款RISC-V路由器
  • Docker设置环境变量
  • 并发设计模式实战系列(2):领导者/追随者模式
  • 基于Django实现农业生产可视化系统
  • 使用Python设置Excel单元格边框
  • 快手本地生活2024年GMV同增200%,“新线城市+AI”将成增长引擎
  • 【嵌入式八股11】STM32
  • (8)VTK C++开发示例 --- 交互式3D部件
  • 【Reading Notes】(8.3)Favorite Articles from 2025 March
  • “星睿O6” AI PC开发套件评测 - 部署PVE搭建All in One NAS服务器
  • STM32单片机入门学习——第40节: [11-5] 硬件SPI读写W25Q64
  • ASP.NET 中 OAuth 2.0/OpenID Connect 深度集成指南
  • Silverlight发展历程(微软2021年已经停止支持Silverlight 5)
  • 【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3核心文件yolo.py解读
  • Redis(二) - Redis命令详解
  • GPU 在机器学习中的应用优势:从技术特性到云端赋能
  • 银行卡风险画像在社交行业网络安全的应用
  • 如何使用 DeepSeek 帮助自己的工作?
  • 进阶版:RESTful API 在不同编程语言中的实现与实践
  • MCP认证难题破解
  • 搜广推校招面经七十八
  • 爬虫学习——Scrapy
  • LangChain4j-第一篇 |几分钟完成deepseek 在线集成
  • 三大等待和三大切换
  • Leetcode 2158. 每天绘制新区域的数量【Plus题】
  • MySQL:Join连接的原理
  • 54常用控件_QLCDNumber的属性
  • 支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成调试
  • 细节:如何制作高质量的VR全景图