深入浅出OSI七层参考
本篇博客是笔者阅读《图解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七层参考的更多相关文章
- (转载)OSI七层参考模型和TCP/IP四层参考模型
Mallory 网络模型概念浅析 网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型. #只是一种设计==模型# Open System Interconnect的缩写,意为开放式系统互 ...
- Linux--网络基础(概念+协议的了解+OSI七层模型,TCP/IP五层协议,网络数据传输流程)
网络的发展 网络的发展有下面几个阶段: 独立模式:计算机最开始是以单机模式被广泛使用的.每一台计算机都是独立的,之间不能够进行数据共享与通信 网络互联: 计算机之间可以链接在一起,完成数据共享,计算机 ...
- 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型
提纲.png 一.七层?四层? OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图使各种 ...
- OSI七层协议模型、TCP/IP四层模型
OSI七层协议模型 TCP/IP四层模型 首先我们梳理一下每层模型的职责: 链路层:对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据: 网络层:定义IP地址,确认主机所在的网络位置,并通过I ...
- OSI七层模型详解 TCP/IP协议
总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...
- 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)
以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型 下四层是为数据传输服务的,物理层是真正的传输数 ...
- OSI七层与TCP/IP五层网络架构详解
引用自:http://www.2cto.com/net/201310/252965.html OSI和TCP/IP是很基础但又非常重要的网络基础知识,理解得透彻对运维工程师来说非常有帮助.今天 ...
- 1-2 ISO/OSI七层模型简介
相关名词解释: ISO:国际标准化组织 OSI:开放系统互联模型 IOS:苹果操作系统, 但是在计算机网络中,IOS是互联网操作系统,是思科公司为其网络设备开发的操作维护系统 <1>OSI ...
- osi七层模型和两主机传输过程:
osi七层模型和两主机传输过程: http://www.zhihu.com/question/24002080/answer/31817536 注:笔记部分可能参考其他作者内容的一个记录,仅为加深自 ...
- OSI七层模型基础知识及各层常见应用
OSI Open Source Initiative(简称OSI,有译作开放源代码促进会.开放原始码组织)是一个旨在推动开源软件发展的非盈利组织.OSI参考模型(OSI/RM)的全称是开放系统互 ...
随机推荐
- CentOS无法识别NTFS格式U盘完美解决方案
问题描述:CentOS上无法识别NTFS格式的U盘 解决方案: # 进入yum目录 cd /etc/yum.repos.d # 下载阿里的epel wget http://mirrors.aliyun ...
- 14. Fluentd输出插件:out_forward用法详解
out_forward是一个带缓存的输出插件,用于向其他节点转发日志事件,并支持转发节点之间的负载均衡和自动故障切换. out_forward支持至多一次和至少一次传输模式,默认为至多一次. out_ ...
- 项目的依赖包(node_modules)删除
快速删除依赖包一共分为三部 1.打开命令行(管理员身份),执行 npm i -g npkill 2.cd 进入到想删除的项目中,执行 npkill 3.执行完成会进入到npkill页面,等待搜索完成, ...
- 【前端必会】不知道webpack插件? webpack插件源码分析BannerPlugin
背景 不知道webpack插件是怎么回事,除了官方的文档外,还有一个很直观的方式,就是看源码. 看源码是一个挖宝的行动,也是一次冒险,我们可以找一些代码量不是很大的源码 比如webpack插件,我们就 ...
- IC入门课第五课作业:完善 Microblog 前端(1、显示发布者的名字;2、增加新UI、3、关注其他学员的 canister)
上周完成了 IC 入门课程第五课的作业 现将答案贴出,欢迎同学们参考,禁止抄袭作业哦 课程作业 (完善 microblog 前端) 1. 显示消息的发布者名字 a. 给 Message 增加 auth ...
- 动态代理(JDK、CGLIB)
JDK-Proxy(动态代理): 特点:要求被代理的对象必须接口 缺点:如果一个对象没有任何接口实现,则不能使用JDK动态代理 1.创建一个Animal 提供一个方法 2.创建一个cat类.实现Ain ...
- 树莓派Zero 2 W(ubuntu-22.04)通过.NET6和libusb操作USB读写
有这个想法的初衷 喜欢电子和DIY硬件的朋友对稚晖君应该都不陌生,他定期都会分享一些自己做的好玩的硬件,他之前做了一个ElectronBot桌面机器人我就很感兴趣,所以就自己也做了一个. 起初我只是自 ...
- Nginx通用优化示例
user nginx; worker_processes auto; #worket_cpu_affinity auto; error_log /var/log/nginx/error.log war ...
- 使用python获取window注册表值的方法
提供regfullpath的方法,可以自行封装个regpath的函数import loggingimport pywintypes import win32apiimport win32con def ...
- 齐博x1内容页中下一页上一页的标签
在模板中分别插入如下代码即可 前一页 {:fun('content@prev',$info,20)} 后一页 {:fun('content@next',$info,20)} 复制 其中20代表取标题多 ...