cs note
  • 首页
  • 广告业务
    • RTA
  • 操作系统
    • 1.计算机系统漫游
    • 2.硬件结构
    • 3.内存管理
    • 4.进程管理
    • 5.文件系统
    • 6.设备管理
    • 7.网络系统
  • 网络
    • 高并发短链接
    • 网络编程
    • 网络通信
    • 网络协议详解
    • 网络与io模型
    • 网络io
    • 握手分手问题
    • 压测到网络IO
    • nio
    • osi七层参考模型
    • select,poole,poll详解
    • websocket
  • mysql
    • 一、基础
      • 1.1执行过程
      • 1.2存储过程
    • 二、索引
      • mysql索引
      • mysql索引优化1
      • mysql索引优化2
      • mysql索引优化3
    • 三、事务
    • 四、锁
      • 4.1锁详解
    • 五、日志
  • redis
    • 一、常见数据结构
      • 1.1数据类型
      • 1.2特殊数据类型
    • 二、线程模型 *
    • 三、持久化
      • 3.2主从同步
    • 四、锁
      • 4.1实现锁
    • 五、淘汰策略 *
    • 六、缓存
      • 6.1缓存一致性问题
      • 6.2缓存策略
  • kafka
    • 消息幂等通用方案
    • kafka基础使用
    • kafka集群搭建
    • kafka问题精选
    • mq常见问题
    • mq常见问题及解决方案
    • rabbitmq
  • 算法
    • 每日一题202312
    • 每日一题202401
    • 每日一题202402
    • 每日一题202403
    • LeetCode热题
由 GitBook 提供支持
在本页
  1. 网络

osi七层参考模型

最后更新于1年前

osi七层模型

osi七层模型图,计算机网络的基石。

osi七层模型与tcp/ip四层模型关系

osi七层和tcp/ip四层的区别

常见协议或接口在哪一层

HTTP协议

HTTP是一个应用层协议,建立在TCP协议之上。 HTTP请求就是用来发送一段文本。关于这段文本如何组织,第一行写什么,第二行写什么,哪里加一个空行,就是HTTP协议所要规范的内容。

Socket接口

HTTP的客户端和服务器,是通过Socket进行连接的。 Socket是对osi模型第四层-传输层中的TCP/IP协议的封装。Socket本身不是协议,而是一个调用接口(API)。应用层不必了解TCP/IP协议细节,直接通过对Socket接口函数的调用完成数据在IP网络的传输。

Socket包含了网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。 因为有了Socket,客户端和服务端完全不需要了解底层细节,直接通过调用Socket来实现就可以了。 这也就是为什么服务器端可以获取到客户端的IP地址的原因,因为Socket中包含了远地主机的IP地址。(当然,通过代理服务器进行访问的除外,这种要依靠HTTP协议的X-Forwarded-For头来确认IP,不在本次的讨论范围中)

那为什么无法获取到客户端的MAC地址呢?很简单,因为Socket中无法取到MAC地址。

当打开一个URL时,究竟发生了什么

当我们在浏览器中打开一个链接后,osi各层到底发生了什么? 这里撇开DNS解析之类的东西,只探讨HTTP报文的发送

  1. 发送端 应用层数据其实只有那么几行文本,然后往下,每过一层,都要被加上首部/尾部。这个过程就像是一层一层的穿衣服。

  2. 数据流转 数据一般要经过交换机、路由器等网络设备,层层转发,这些设备所做的事情就像是: 脱掉一件或几件衣服,做一些修修补补,然后再重新穿回去。

  1. 接收端 WEB服务器所在的主机。将衣服一件一件全部脱掉 ,最后WEB服务器就取到了最初的应用层数据。

以L2交换机为例看一下,因为L2交换机会认别到帧这一层,记录/学习MAC地址,并将帧发送到目的地。

路由器。当一个LAN希望连接到另一个LAN时,就必须使用路由器设备了。当然,可以通过构建超大型的LAN,来避免使用路由器,但这时,交换机就需要管理大量的MAC地址,同时进行大量的广播通信,设备的负担就会相当大。路由器会进行路由选择,让数据达到下一跳。经过路由器后,为了能到达下一跳,数据链路层中的MAC地址就被篡改了