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

计算机网络——网络模型

一、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(应用层)

相关文章:

  • JAVA设计模式:注解+模板+接口
  • 极狐GitLab 注册限制如何设置?
  • 23种设计模式-创建型模式之建造者模式(Java版本)
  • 极狐GitLab 外部授权控制机制是怎样的?
  • PHP腾讯云人脸核身获取NONCE ticket
  • pytorch基本操作2
  • 十、数据库day02--SQL语句01
  • Python Logger用法和说明
  • 【重学Android】1.关于@Composer注解的一点知识笔记
  • UI自动化测试介绍及入门
  • go 语言切片 深入理解实例
  • Python作业4 文本词云统计,生成词云
  • Android 音频架构全解析:从 AudioTrack 到 AudioFlinger
  • 支付APP如何做好网络安全防护?从技术到用户管理的全链路安全策略
  • Mac mini 安装mysql数据库以及出现的一些问题的解决方案
  • 趣味编程之操作系统趣谈
  • VR拍摄要点与技巧有哪些?有哪些最佳实践?
  • Java面试中问单例模式如何回答
  • 理解.NET Core中的配置Configuration
  • MySQL:Join连接的原理
  • 直播中抢镜“甲亢哥”的翁东华卸任了!此前任文和友小龙虾公司董事
  • 民建吉林省委提案:当前生育政策集中鼓励多孩生育,应该转变思路
  • 我们的免疫系统,是世界上最好的“医生”
  • 外交部:中企在中韩暂定水域建立渔业养殖设施不违反中韩有关协定
  • 中方决定对在涉港问题上表现恶劣的美国国会议员等实施制裁
  • 王东杰:重审康有为的“大同世界”