本篇博客是笔者阅读《图解TCP/IP》所记录下的笔记,有兴趣的朋友可以去看一看这本书。

OSI七层参考模型

​ 本小节以电子邮件通信为例,分别来阐述OSI七层模型的每一层是如果进行通信处理的。

​ 假定用户 A要给用户B发一封电子邮件 “早上好!”,在用户A和用户B的通信过程中,网络是如何处理的呢,下面对应着OSI七层参考模型,从上至下来分析一下。

应用层

​ 用户A在主机A上新建一封电子邮件,指定收件人为主机B上的用户B,并输入邮件的内容 “早上好!”。

​ 接收和发送邮件的软件,从功能上可以分为两大类,一类是与通信无关的功能,例如:新建邮件,指定收件人,输入邮件内容为 “早上好”,这部分功能就是与通信无关的功能。而另一类就是与通信有关的功能,在用户点击 “发送” 按钮的那一刻,就开始进行了应用层协议的处理。

​ 该协议会在所要传输数据的前端附加一个 “首部” 标签,其中包含的信息有:邮件的内容 "早上好",收件人B(目标主机)。

因此,此处的 输入电子邮件内容后发送给目标地址 也就相当于应用层。

表示层

​ 表示层具有 “表示“,”演示“的意思,因此更关心 数据格式①的表现形式,此外应用软件的本身不同也会导致数据格式的表现形式截然不同, 例如用户A与用户B所使用的客户端软件(qq邮箱,网易邮箱,Google邮件)不同,或者用户A与用户B所使用的终端设备不同,就有可能会造成数据格式的不同。

​ 可以利用表示层来解决这类问题,通过表示层将数据从 “某个计算机特定的格式” 转换为 “统一的网络数据格式” ,在将 "统一的网络格式" 恢复为 "某个计算机的特定格式",从而进行数据的在网络中的准确传输,然后再进行相应的处理,如果未能按照特定格式编码进行转换,有可能在客户端收到的电子邮件中出现乱码的情况。

​ 因此,表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据交给下一层处理,将数据从主机的特有格式到网络标准的传输格式之间的相互转换就是表示层所做的事情

①数据格式:是数据保存在文件或记录中的编排格式,最典型的汉字的编码格式有GB2312 、BIG 、ISO8859-1等。

会话层

会话层主要是决定数据以何种方式建立连接。例如用户A向用户B发送5封邮件,此时用户A向用户B建立连接的方式有多种,1.可以每发送一封邮件建立一次连接,随后断开。 2.可以建立一次连接发送5封邮件。 3.可以同时建立5个连接,同时发送邮件。

​ 会话层也像应用层和表示层那样,在其收到的数据前端加上首部标识,其中包含在建立连接的方式,然后再转发给下一层。

传输层

​ 到此为止,我们通过例子说明了在应用层写入数据会经由表示层格式化编码,再由会话层标识以何种方式进行数据传输的大致过程,然而会话层并不具备传输数据的功能。真正负责在网络上传输具体数据是会话层以下的 “无名英雄”。

​ 主机A确保与主机B之间的通信并准备发送数据。这一过程叫做 ”建立连接“。有了这个通信连接就可以使主机 A发送电子邮件到达主机B,并有主机B处理程序获取最终数据。当传输结束后,则需要将连接断开,减少资源的浪费。

​ 如上,进行建立连接或断开连接的处理,在两个主机之间创建逻辑上的通信连接既是传输层的主要功能。此外,传输层为确保所传输的数据到达目标地址,会在通信两端的计算机进行确认,如果数据没有到达目标主机,或者因为网络波动的原因,数据有所缺失,他会负责重新发送。在传输层保证了数据的可靠传输

网络层

​ 然而,实际上将数据传输给对端的处理是由网络层来完成的,网络层负责将数据发送至最终的目的地址,这个地址是进行通信的网络中唯一指定的序号,也可以把他想象中我们日常生活中的手机号码,这要这个地址确定了,就可以在众多将计算机中选出该地址所对应的主机发送数据。

​ 在不同的网络体系结构下,网络层又是也不能保证数据的可达性。例如在TCP/IP 网络层的IP协议中,就不能保证数据一定会发送都对端地址。因此,数据传输过程中,会出现数据丢失,数据顺序混乱等问题,想这样没有可靠性的传输的网络层中,可以由传输层负责提供 “正确传输数据的处理 ”。TCP/IP中,网络层与传输层相互协作,从在最终保证了数据的可靠性、有序性传输。

数据链路层、物理层

​ 通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互联的设备上进行数据处理。

​ 物理层中,将数据的0,1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备通过地址进行传输,这种地址称之为MAC地址,也可以称之为硬件地址,或者物理地址。因此在这一层中,将包含MAC地址的首部附加到网络层转发过来的数据上,在将其发送到网络上。

​ 网络层与数据链路层都是基于目标地址将数据发送给接收端,但是网络层负责将整个数据发送给目标地址,而数据链路层则负责发送一个分段内的数据。

深入浅出OSI七层参考的更多相关文章

  1. (转载)OSI七层参考模型和TCP/IP四层参考模型

    Mallory   网络模型概念浅析 网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型. #只是一种设计==模型# Open System Interconnect的缩写,意为开放式系统互 ...

  2. Linux--网络基础(概念+协议的了解+OSI七层模型,TCP/IP五层协议,网络数据传输流程)

    网络的发展 网络的发展有下面几个阶段: 独立模式:计算机最开始是以单机模式被广泛使用的.每一台计算机都是独立的,之间不能够进行数据共享与通信 网络互联: 计算机之间可以链接在一起,完成数据共享,计算机 ...

  3. 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型

    提纲.png 一.七层?四层? OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图使各种 ...

  4. OSI七层协议模型、TCP/IP四层模型

    OSI七层协议模型 TCP/IP四层模型 首先我们梳理一下每层模型的职责: 链路层:对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据: 网络层:定义IP地址,确认主机所在的网络位置,并通过I ...

  5. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  6. 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)

    以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型    下四层是为数据传输服务的,物理层是真正的传输数 ...

  7. OSI七层与TCP/IP五层网络架构详解

      引用自:http://www.2cto.com/net/201310/252965.html   OSI和TCP/IP是很基础但又非常重要的网络基础知识,理解得透彻对运维工程师来说非常有帮助.今天 ...

  8. 1-2 ISO/OSI七层模型简介

    相关名词解释: ISO:国际标准化组织 OSI:开放系统互联模型 IOS:苹果操作系统, 但是在计算机网络中,IOS是互联网操作系统,是思科公司为其网络设备开发的操作维护系统 <1>OSI ...

  9. osi七层模型和两主机传输过程:

    osi七层模型和两主机传输过程: http://www.zhihu.com/question/24002080/answer/31817536  注:笔记部分可能参考其他作者内容的一个记录,仅为加深自 ...

  10. OSI七层模型基础知识及各层常见应用

       OSI Open Source Initiative(简称OSI,有译作开放源代码促进会.开放原始码组织)是一个旨在推动开源软件发展的非盈利组织.OSI参考模型(OSI/RM)的全称是开放系统互 ...

随机推荐

  1. 第四章:Django表单

    一.HTML表单概述 Django开发的是动态Web服务,而非单纯提供静态页面.动态服务的本质在于和用户进行互动,接收用户的输入,根据输入的不同,返回不同的内容给用户.返回数据是我们服务器后端做的,而 ...

  2. Educational Codeforces Round 106 (Rated for Div. 2)

    就ac了2题... A题一开始题意模模糊糊的似懂非懂,然后自己按样例推出了题意,简单题很容易ac了.还是自己的英语水平太菜了.... B题根据0和1的位置关系能看出来,因为0不能在1后面, 所以有00 ...

  3. TDengine的数据建模?库、表、超级表是什么?怎么用?

    ​欢迎来到物联网的数据世界 在典型的物联网场景中,一般有多种不同类型的采集设备,采集多种不同的物理量,同一种采集设备类型,往往有多个设备分布在不同的地点,系统需对各种采集的数据汇总,进行计算和分析对于 ...

  4. 手把手教你使用LabVIEW OpenCV dnn实现图像分类(含源码)

    @ 目录 前言 一.什么是图像分类? 1.图像分类的概念 2.MobileNet简介 二.使用python实现图像分类(py_to_py_ssd_mobilenet.py) 1.获取预训练模型 2.使 ...

  5. python续集

    上集回顾 数据类型内置方法简介 所有的数据类型基本上都自带了一些操作以及通过点的方式调用自带的方法 整型相关操作 类型转换 int() 十进制转其他进制 bin() oct() hex() 其他进制转 ...

  6. 基于QT和C++实现的翻金币游戏

    基于QT和C++的翻金币游戏 声明: QT翻金币项目可以说是每个新学QT的同学都会去写的一个项目,网上的源码也很多,我也是最近刚开始学QT,所以也参考了很多前辈的代码自己重新敲了一遍代码. 游戏介绍: ...

  7. 构造器与this、package、import关键字的使用

    构造器一.构造器的作用: 1.创建对象 2.初始化对象的信息 二.说明: 1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器 2.定义构造器的格式:权限修饰符 类名(形参列表){} ...

  8. golang中的init初始化函数

    0.1.索引 https://waterflow.link/articles/1666090530880 1.概念 1.1.源文件里的代码执行顺序 init 函数是用于初始化应用程序状态的函数. 它不 ...

  9. 【SSM】学习笔记(二)——SpringMVC入门

    原视频链接:https://www.bilibili.com/video/BV1Fi4y1S7ix/?p=43&spm_id_from=pageDriver&vd_source=8ae ...

  10. 【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互

    引言 在第一章博客中,我们讲了Arduino对Esp32的一个环境配置,以及了解到了常用的一个总线通讯协议,其中有SPI,IIC,UART等,今天我为大家带来UART串口通讯和c#串口进行通讯的一个案 ...