详解通过 OSI 七层模型打开计算机网络大门

目录
  • 正文
  • 分层的体系结构
  • 协议的分层
  • OSI参考模型
    • 应用层
    • 表示层
    • 会话层
    • 传输层
    • 网络层
    • 链路层
    • 物理层

正文

最近为了准备面试,又再看了一遍 图解TCP/IP,发现很多知识点看了就忘,并没有形成一个系统知识,那么今天开始通过一系列的文章来系统总结一下计算机网络,在接下来的文章中会对重要的那几个模型进行讲解。

分层的体系结构

在开始组织关于因特网体系结构的想法之前,我们先看看一个人类社会与之类比的例子,实际上,在日常生活中我们一直都与复杂系统打交道。

想象一下有人请你描述比如航班系统的情况吧,你怎样用一个结构来描述这样一搞复杂的系统?

描述这种系统的一种方式是,描述当你乘某个航班时,你乣采取的一系列动作,你要购买机票,托运行李,去登机口,并最终登上这次航班。该飞机起飞,飞行到目的地。当飞机着落后,你从登机口离机并认领行李。如果这次行程不理想,你向票务机构投诉这次航班(当然你的努力并没有什么卵用)

这个时候我们已经能从这里看出与计算机网络的某些类似: 航空公司把你从源送到目的地;

观察上图,该图将航线功能划分为一些层次,提供了我们能够讨论航线旅行的框架。注意到每个层次与下面的层次结合在一起,实现了某些功能、服务。在票务层及以下,完成了一个人从航线柜台到航线柜台的转移。在行李层及一下,完成了人和行李从行李托运到行李认领的转移等等。 价值 利用分层的体系结构,我们可以讨论一个大而复杂系统的定义良好的特定部分。这种简化本身由于模块化而具有很高价值,这使某层所提供的服务易于改变,只要该层对其上面的层提供相同的服务,并且使用来自下面层次的相同服务,当某层的实现变化时,该系统的其余部分保持不变

协议的分层

ISO 在制定标准化 OSI 之前,对网络体系结构相关的问题进行了充分的讨论,最终提出了作为通信协议设计指标的 OSI 参考模型,这一模型将通信协议中必要的功能分成了七层。

在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务,上下层之间进行交互时所遵循的约定叫作 "接口",同一层之间的交互所遵循的约定叫作协议。

协议分层就如同前端开发中的模块化开发,它希望实现从第一层到第七层的所有模块,并将它们组合起来实现网络通信,分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统,因此可以构造一个扩展性和灵活性都较强的系统。

OSI参考模型

OSI 参考模型将这一个复杂的协议整理并分为了易于理解的七个分层

应用层

应用层位于 OSI 分层结构的第七层,它是网络应用程序及它们的应用层协议存留的地方。因特网的应用层包括许多协议,例如 HTTP,它提供了 Web 文档的骑牛和传送、SMTP ,它提供了电子邮件报文的传输和 FTP 它提供了两个端系统之间的文件传送。

在我们使用浏览器的时候,浏览器里输入 www.baidu.com 猪样友好的端系统名字转换为32比特的网络地址,也是借助于特定的应用层协议即域名系统 DNS 完成的。

应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组,我们把这种位于应用层的信息分组称为报文。

表示层

表示层位于 OSI 分层结构的第六层,它的主要作用是将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上一层能够处理的格式,因此它主要负责数据格式的转换。

具体来说就是将设备固有的数据格式转换为网络标准传输格式,不同设备对统一比较溜解释的结果可能会不同,它们会将接收不同表现形式的信息,如文字流、图像、声音进行转换,压缩,加密,或者打包。

会话层

会话层位于 OSI 分层结构的第五层,它的主要作用是负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输和相关管理。

传输层

传输层位于 OSI 分层结构的第四层,它在应用程序端点之间传送应用报文层报文,在因特网当中,有两种传输协议,它们分别是 TCPUDP,利用其中的人一个都能运输应用层报文。

TCP 向它的应用程序提供了面向链接的服务,这种服务包括了应用层报文想目的地确保传递和流量控制,即发送方/接收方速率匹配。TCP 也将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。

UDP 协议向它的应用程序提供无连接服务,这是一种不提供不必要服务的服务,没有可靠性,没有流量控制,也没有拥塞控制,传输层的分组也称为报文段。

网络层

网络层位于 OSI 分层结构的第三层,它负责将称为数据报的网络层分组从一台主机移动到另一台主机,也就是目的地址。

在一台源主机中的传输层协议 TCPUDP 向网络层递交传输层报文段和目的地址,就像你通过邮政服务寄信件时提供一个目的地址一样,网络层确定的是主机到主机,而传输层确定的是进程到进程之间。

目的地址可以是多个网络通过路由器连接而成的某一个地址,因此这一层主要负责寻址和路由选择。

链路层

链路层位于 OSI 分层结构的第二层,它主要负责的是物理层面上的互连、节点之间的通信传输。

它会将 0、1 序列划分为具有意义的数据帧传送给对端(数据帧的生成和接收),它只负责将数据运送给物理相连的六安段,并不负责直接发送到最终地址。

物理层

物理层位于 OSI 分层结构的第一层,虽然链路层的任务是将整个帧从一个网络元素移动到临近的网络元素,而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点,在这层中的协议仍然是链路相关的,并且进一步与该链路(双绞铜线、单模光纤)的实际传输媒体相关。

它实际上就是将数据的 0、1 转换成电信号或者光信号,通过光纤、双绞线甚至是无线电波等介质传输到指定的地址以达到数据传输。

参考文献

  • 书籍: 图解TCP/IP;
  • 书籍: 计算机网络原书第七版;

以上就是详解通过 OSI 七层模型打开计算机网络大门的详细内容,更多关于OSI 七层模型计算机网络的资料请关注我们其它相关文章!

(0)

相关推荐

  • 详细讲解计算机网络——应用层

    目录 应用层协议 一.DNS 1.DNS 是什么 2.域名结构 3.域名服务器 4.DNS 解析流程 5.DNS 服务器查询方式 (1)迭代查询 (2)递归查询 6.DNS 缓存机制 7.DNS 使用 UDP 还是 TCP 区域传送(主.辅 DNS 服务器通信)时使用 TCP 域名解析时使用 UDP 二.万维网 1.万维网概述 (1)超媒体与超文本 (2)万维网的工作方式 (3)万维网必须解决的问题 2.超文本传送协议 HTTP (1)HTTP 的操作过程 (2)请求一个万维网文档所需的时间 3

  • 计算机网络日常练习题,每天进步一点点

    目录 1.HTTP是一种( ). 2.集线器是工作在 ( ) 的设备 3.在OSI七层模型中,网络层的主要功能是 4.192.168.1.0/24使用掩码255.255.255.240划分子网,其可用子网数为( ),每个子网内可用主机地址数为( ) 5.DDN和ISDN都属于数据通信网,它们的中文名称分别是( ). 6.在一个CSMA/CD的局域网上(不是802.3),一个数据帧最大长度是1518字节,其中的 头部.效验和等其他附加的长度为18字节,请问我们在这个网络上,传输100字节,1000

  • 计算机网络编程MQTT协议基础原理详解

    目录 什么是 MQTT 协议 MQTT 基础 发布 - 订阅模式 可拓展性 消息过滤 基于主题的过滤 基于内容的过滤 基于类型的过滤 MQTT 与消息队列的区别 MQTT 重要概念 MQTT client MQTT broker MQTT Connection 消息报文 CONNECT CONNACK 消息类型 发布 订阅 确认消息 退订 确认退订 聊聊 Topic 通配符 单级通配符 多级通配符 之前有位读者给我留言说想要了解一下什么是 MQTT 协议,顺便还把我夸了一把,有点不好意思啦. 那

  • 计算机网络传输协议TCP三次握手与四次挥手原理

    目录 TCP三次握手四次挥手 服务器状态转换 客户端状态转换 TCP状态转换图 TCP中常见的面试题 为什么是三次握手,不是一次或者两次 为什么是三次握手,四次挥手 如果已经建立了连接,但是客户端突然出现故障了怎么办? 为什么会有TIME_WAIT状态 我们来想一想,为什么TIME_WAIT的时间是2MSL 解决TIME_WAIT状态引起的bind失败的方法 TCP三次握手四次挥手 我们之前在 传输层协议TCP与UDP中详细介绍了UDP协议和TCP协议格式以及他们各自的特点,我们知道TCP协议是

  • 图文分析详解计算机网络TCP与UDP两者区别及原理

    目录 1.概念 2.从是否面向连接来看 2.1.UDP 2.2.TCP 3.从连接对象个数来看 3.1.UDP 3.2.TCP 4.从对应用报文的处理来看 4.1.UDP 4.2.TCP 发送方: 接收方: 5.从向其上层提供传输服务来看 5.1.UDP 5.2.TCP 6.从首部格式来看 6.1.UDP 6.2.TCP 7.总结 1.概念 UDP和TCP 在使用TCP/IP 体系结构的网络通信中,这两个协议的使用频率仅次于网际层的IP协议.TCP/IP 体系结构应用层中的某些协议需要使用运输层

  • 详解通过 OSI 七层模型打开计算机网络大门

    目录 正文 分层的体系结构 协议的分层 OSI参考模型 应用层 表示层 会话层 传输层 网络层 链路层 物理层 正文 最近为了准备面试,又再看了一遍 图解TCP/IP,发现很多知识点看了就忘,并没有形成一个系统知识,那么今天开始通过一系列的文章来系统总结一下计算机网络,在接下来的文章中会对重要的那几个模型进行讲解. 分层的体系结构 在开始组织关于因特网体系结构的想法之前,我们先看看一个人类社会与之类比的例子,实际上,在日常生活中我们一直都与复杂系统打交道. 想象一下有人请你描述比如航班系统的情况

  • 详解Layer弹出层样式

    前言:学习layer弹出框,之前项目是用bootstrap模态框,后来改用layer弹出框,在文章的后面,我会分享项目的一些代码(我自己写的). layer至今仍作为layui的代表作,她的受众广泛并非偶然,而是这五年多的坚持,不断完善和维护.不断建设和提升社区服务,使得猿们纷纷自发传播,乃至于成为今天的Layui最强劲的源动力.目前,layer已成为国内最多人使用的web弹层组件,GitHub自然Stars3000+,官网累计下载量达30w+,大概有20万Web平台正在使用layer. 具体请

  • 详解Python在七牛云平台的应用(一)

    七牛云七牛云是国内领先的企业级云服务商.专注于以数据为核心的云计算业务,围绕富媒体场景推出了对象存储.融合CDN.容器云.大数据.深度学习平台等产品,并提供一站式视频云解决方案,同时打造简单,可信赖的解决方案平台,帮助企业快速上云,创造更大的商业价值. 以上是官网介绍. (一)在这里介绍一下Python怎么通过官方提供的库对自己空间进行操作 首先需要注册一个七牛的账号,并创建一个Bucket,另外还需要在个人面板中的密匙中得到AK和SK.之后就能通过七牛的SDK对自己的空间进行操作了. 本文对上

  • 详解JVM的分代模型

    前言 上篇文章我们一起对jvm的内存模型有了比较清晰的认识,小伙伴们可以参考JVM内存模型不再是秘密这篇文章做一个复习. 本篇文章我们将针对jvm堆内存的分代模型做一个详细的解析,和大家一起轻松理解jvm的分代模型. 相信看过其他文章的小伙伴们可能都知道,jvm的分代模型包括:年轻代.老年代.永久代. 那么它们分别代表着什么角色呢?我们先来看一段代码 public class Main { public static void main(String[] args) { while (true)

  • 详解vue-cli项目在IE浏览器打开报错解决方法

    首先要知道VUE官网已表明仅支持IE8以上版本(不包括IE8),css弹性布局flex各浏览器支持如下: 假如项目用到弹性布局,则项目仅支持IE10以上版本. 另外兼容其他低版本的,请另寻它法. 网上说的本人试了都是没用的,下面是亲自试验的解决方法. 1. 问题 :ie浏览器打开vue2.0项目空白,控制台报错 vuex requires a Promise polyfill in this browser; 解决方法: 安装babel-polyfill npm install babel-po

  • 详解Java中的线程模型与线程调度

    JAVA线程模型 线程的实现主要有3种方式: 使用内核线程实现(1:1) 使用用户线程实现(1:N) 使用用户线程加轻量级进程实现(N:M) 使用内核线程实现(Kernel-Level Thread, KLT)(1:1) 内核线程就是直接由操作系统内核支持的线程,这种线程由内核来完成线程的切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上. 程序一般不会直接去使用内核,而是去使用线程的一种高级接口--轻量级进程(Light Weight Process,LWP),轻量级

  • 详解docker容器的层的概念

    今天我们看看容器的层的概念. 上一节中,我们知道了,容器是一个进程,在这个进程的基础上,添加了下面3个部分: 1.启动Linux Namespace的配置实现与物理机的隔离. 2.设置Cgroups参数限制容器的资源. 3.生成系统文件目录,也就是rootfs文件,也叫镜像文件 这里需要备注的是:rootfs只是容器需要使用的基本文件的组合,并不包括操作系统内核,容器的操作系统内核依旧是使用宿主机的内核.当然,rootfs的存在,并不是没有意义,它的存在,使得容器拥有了一个最主要的性能:一致性.

  • 详解JVM系列之内存模型

    1. 内存模型和运行时数据区 这一章学习java虚拟机内存模型(Java Virtual machine menory model),可以这样理解,jvm运行时数据库是一种规范,而JVM内存模型是对改规范的实现 java虚拟机重点存储数据的是堆和方法区,所以本章节也重点从这两个方面进行比较详细描述.堆和方法区是内存共享的,而java虚拟机栈.Native方法栈.程序计数器是线程私有的 2.思维导图和图例 一个是非堆区(方法区),方法区也一般被称之为"永久代".另外一个是堆区,分为you

  • 详解Vue3的七种组件通信方式

    目录 写在前面 举一个栗子 Props方式 emit方式 v-model方式 refs方式 provide/inject方式 事件总线 状态管理工具 写在前面 本篇文章是全部采用的<script setup>这种组合式API写法,相对于选项式来说,组合式API这种写法更加自由,具体可以参考Vue文档对两种方式的描述. 本篇文章将介绍如下七种组件通信方式: props emit v-model refs provide/inject eventBus vuex/pinia(状态管理工具) 开始搞

  • MyBatis详解如何实现Dao层接口

    目录 传统开发方式 编写UserDao接口 编写UserDaompl实现 传统测试方法 代理开发方法 代理开发方式介绍 编写UserMapper接口 测试代理方法 传统开发方式 编写UserDao接口 public interface UserMapper { public List<User> findAll() throws IOException; } 编写UserDaompl实现 public class UserMapperImp implements UserMapper { @O

随机推荐