网络基础 : OSI参考模型
Overview
OSI规范的作用之一就是帮助在不同的主机之间传输数据。
OSI模型包含7层,它们分为两组。
上面3层指定了终端中的应用程序如何彼此通信以及如何与用户交流;
下面4层指定了如何进行端到端的数据传输。
上三层对联网和网络地址一无所知,那是下面4层的职责。
下面4层定义了数据是如何通过物理电缆、交换机和路由器进行传输的,它们还定义了如何重建从发送方主机到目标主机的应用程序的数据流。
下面的网络设备都运行在OSI模型的全部7层上:
NMS(Network Management Station, 网络管理工作站);
Web 和应用程序服务器;
网关(非默认网关);
网络主机
各层功能示例:
应用层
OSI模型的应用层是用户与计算机交流的场所。仅当需要访问网络时,这一层才会发挥作用。比如IE,当访问本地的html文件时,是不需要访问应用层的。只有试图通过http获取html文档,或使用FTP来下载文件时IE才会去访问应用层。实际上,应用层让应用程序能够将信息沿协议栈向下传输,从而充当了应用程序和下一层之间的接口。换句话说,IE并不位于应用层中,而是在需要处理远程资源时才与应用层协议交互。
应用层还负责确定目标通信方的可用性,并判断是否有足够的资源进行想要的通信。
这些任务很重要,因为计算机应用程序需要的不仅仅是桌面资源。通常,它们将结合使用多个网络应用程序的通信组件,这样的典型事例包括文件传输、电子邮件、远程访问、网络管理活动以及信息查找。
应用层是实际应用程序之间的接口,这很重要。比如MS Word等应用程序并不位于应用层中,而是与应用层协议交互。
表示层
表示层因其用途而得名,它向应用层提供数据,并负责数据转换和代码格式。
(数据传输过程中使用的是传输格式,到达计算机后被转换为应用程序能够识别的格式)
从本质上说,该层是一个转换器,提供编码和转换功能。一种成功的数据传输方法,是将数据转换为标准格式再进行传输。计算机被配置成能够接受这种通用格式的数据,然后将其转换为本机格式以便读取(例如,从EDCDIC转换为ASCII)。通过提供转换服务,表示层能够确保从一个系统的应用层传输而来的数据可以被另一个系统的应用层读取。
OSI制定了相关的协议标准,这些标准定义了如何格式化标准数据。诸如数据压缩、解压缩、加密和解密等任务都与表示层有关。有些表示层标准还涉及多媒体操作。
会话层
会话层负责在表示层实体之间建立、管理、终止会话,还对设备或节点之间的对话进行控制。它协调和组织系统之间的通信,为此提供了3种不同的模式:单工、半双工和全双工。总之,会话层的基本功能是将不同应用程序的数据分离。
传输层
传输层将数据进行分段并重组为数据流。位于传输层的服务将来自上层应用的数据进行分段和重组,并将它们合并到同一个数据流中。它们提供了端到端的数据传输服务,并可以在互联网络上的发送主机和目标主机之间建立逻辑连接。
如果您熟悉 TCP和UDP,就知道它们都运行在传输层。TCP是一种可靠的服务,而UPD是不可靠的。这意味着应用程序开发人员有更多的选择,因为使用TCP/UDP协议时,他们可以在这两种协议之间做出选择。
传输层负责提供如下机制:对上层应用程序进行多路复用、建立会话以及拆除虚电路。它还提供透明的数据传输,从而对高层隐藏网络的差异。
面向连接(可靠)的传输层协议
流量控制
数据完整性由传输层确保,这是通过流量控制以及允许应用程序请求在系统之间进行可靠的数据传输实现的。流量控制可以避免数据发送方导致的数据接收方缓冲区溢出问题。可靠的数据传输在系统之间使用面向连接的通信会话,而涉及的协议可以实现下面的目标:
收到数据后,向发送方进行确认;
重传所有未得到确认的数据段;
数据段到底目的地后,按正确的顺序排列它们;
确保数据流量不超过处理能力,以避免拥塞、过载和数据丢失。
(流量控制旨在提供一种机制,让接收方能够控制发送方发送的数据量。)
面向连接的通信
在可靠的传输操作中,要传输数据的设备建立一个到远程设备的面向连接的通信会话。传输设备首先与其对等系统建立面向连接的会话,这称为呼叫建立或三次握手,然后传输数据。传输完毕后,将进行呼叫终止,以拆除虚电路。
上图描述了发送系统和接收系统之间进行的典型的可靠会话。由图可知,两台主机的应用程序都首先要通知各自的操作系统去建立一条连接。两个操作系统通过网络发送消息,确认传输得到了批准其双方已经准备就绪。这种必不可少的同步完成后,便建立了连接,接下来就可以传输数据了。
建立连接期间,两台主机定期地检查对方,通过协议软件进行通信,确保一切进展顺利且正确地收到了数据。对三次握手的总结如下:
第一个是 “连接协定”数据段,用于请求同步。
接下来的数据段确认请求,并在主机之间确定连接参数。这些数据段也请求同步接收方的排序,以建立双向连接。
最后一个数据段也是用来进行确认的,它通知目标主机连接协定已被接受且连接已建立。此时就可以开始传输数据了。
在面向连接的可靠数据传输中,数据报到达接收主机的顺序与发送顺序完全相同;如果顺序被打乱,传输将失败。如果在传输过程中,有任何数据段丢失、重复或受损,传输也将失败。
如果传输服务具有以下特征,就表明它是面向连接(可靠)的:
建立虚电路(三次握手);
使用排序技术;
使用确认;
使用流量控制。
窗口技术
在理想情况下,数据传输快捷而高效。但是,如果传输方每发送完一个数据段后都必须等待确认,传输速度将变得缓慢。从发送方传输数据段到处理完毕来自接收方的确认之间有一段时间,发送方可以利用这段时间传输更多的数据。在收到确认之前,传输方可以发送的数据段数量(以字节为单位)称为窗口。
窗口用于控制未确认的数据段数量。
窗口的大小控制了一方传输给另一方的信息量。当然,窗口的大小是可调的,如果未收到所有应确认的字节,接收方将缩小窗口以改善通信会话。
确认
可靠的数据传输依靠功能完整的数据链路,从而确保机器之间发送的数据流的完整性。它确保数据不会重复或丢失,这是通过肯定确认和重传实现的,这种方法要求接收方在收到数据后向发送方发送一条确认消息。发送方记录每个以字节为单位度量的数据段,将其发送后等待确认,而暂不发送下一段数据。发送数据段后,发送方启动定时器,如果定时器到期后仍未收到接收方的确认,就重传该数据段。
网络层
网络层管理设备编址、跟踪设备在网络中的位置并确定最佳的数据传输路径,这意味着网络层必须在位于不同网络中的设备之间传输数据流。路由器位于网络层,在互联网络中提供路由选择服务。
路由的具体过程为:在其接口上收到分组后,路由器首先检查分组的目标IP地址。如果分组的目的地不是当前路由器,路由器将在路由选择表中查找目标网络地址。选择出站接口后,路由器将分组发送到该接口,或者将分组封装成帧后在本地网络中传输。如果在路由选择表中找不到目标网络对应的条目,路由器将丢弃分组。
在网络层使用的分组有两种:数据和路由更新。
数据分组:用于在互联网络中传输用户数据。用于支持用户数据的协议称为路由协议。
路由更新分组:包含与有关互联网络中所有路由器连接的网络的更新信息,用于将这些信息告知邻接路由器。发送路由更新分组的协议称为路由选择协议,一些常见的路由选择协议包括 RIP、RIPv2、EIGRP和OSPF。路由更新分组用于帮助每台路由器建立和维护路由选择表。
下图是一个路由选择表:
路由器使用的路由选择表包含如下信息:
网络地址: 随协议而异的网络地址。对于每种路由协议,路由器都必须为其维护一个路由选择表,因为每种路由协议都以不同的编址方案(如 IP、 IPv6 和 IPX)跟踪网络。
接口:前往特定网络时,将为分组选择的出站接口。
度量值:到远程网络的距离。不同的路由选择协议使用不同的方式计算这种距离。有些路由选择协议(具体地说是 RIP)使用跳数(分组前往远程网络时穿越的路由器数量),而有些路由选择协议使用带宽、线路延迟甚至滴嗒数。
下图说明了路由器在互联网络中扮演的角色。
对于路由器,您必须牢记如下要点:
默认情况下,路由器不转发任何广播分组和组播分组;
路由器根据网络层报头中的逻辑地址确定将分组转发到下一跳路由器;
路由器可以使用管理员创建的访问控制列表控制可进出接口的分组类型,以提高安全性。
必要时,路由器可以在同一个接口提供第2层桥接功能和路由功能。
第3层设备(这里指的是路由器)在虚拟LAN(VLAN)之间提供连接。
路由器可以为特定类型的网络数据流提供QoS(Quality of Service,服务质量)。
数据链路层
数据链路层提供数据的物理传输,并处理错误通知、网络拓扑和流量控制。这意味着数据链路层将使用硬件地址确保报文被传输到LAN中的正确设备,还将把来自网络层的报文转换为比特,供物理层传输。
数据链路层将报文封装成数据帧,并添加定制的报头,其中包含目标硬件地址和源的硬件地址。这些添加的信息位于原始报文周围,形成“小容器”。
下图显示了数据链路层以及以太网和IEEE规范:
路由器运行在网络层,根本不关心主机位于什么地方,而只关心网络(包括远程网络)位于什么地方以及前往这些网络(包括远程网络)的最佳路径!路由器只关心网络,这是好事!对本地网络中每台设备进行唯一标识的工作由数据链路层负责。
数据链路层使用硬件地址,让主机能够给本地网络中的其他主机发送分组以及穿越路由器发送分组。每当在路由器之间传输分组时,分组都将被使用数据链路层控制信息封装成帧,但接收路由器会将这些信息剥离,只保留完整的原始分组。在每一跳都将重复这种将分组封装成帧的过程,知道分组最终到达正确的接收主机。在整个传输过程中,分组本身从未被修改过,而只是被必要的控制信息封装,以便能够通过不同的介质进行传输,这一点至关重要。
IEEE以太网数据链路层包含两个子层:
介质访问控制(MAC)子层(802.3)
它定义了如何通过介质传输分组。它采用“先到先服务”的访问方式,带宽由大家共享,因此称为竟用介质访问(contention media access)。这个子层定义了物理地址和逻辑拓扑。什么是逻辑拓扑呢?它指的是信号在物理拓扑中的测试路径。在这个子层,还可以使用线路控制、错误通知(不纠错)、顺序传递帧以及可选的流量控制。
逻辑链路控制(LLC)子层(802.2)
它负责识别网络层协议并对其进行封装。LLC报头告诉数据链路层收到帧后如何对分组进行处理。其工作原理类似于:收到帧后,主机查看LLC报头以确定要将分组交给谁--如网络层的IP协议。LLC还可以提供流量控制以及控制比特排序。
交换机和网桥都工作在数据链路层,它们根据硬件(MAC)地址过滤网络。下面我们将进行详细的介绍。
工作在数据链路层的交换机和网桥
第2层交换被认为是基于硬件的桥接,因为它使用称为ASIC(Application-specific Integrated Circuit,专用集成电路)的特殊硬件。因此不仅速度高,而且延迟非常低(延迟指的是从帧进入端口到离开端口之间的时间)。
网桥和交换机读取通过网络传输的每个帧,然后这些第二层设备将源硬件地址加入过滤表中,以跟踪帧是从哪个端口收到的。这些记录在网桥或交换机过滤表中的信息将帮助确定发送设备的位置。
虽然第二层设备和第三层设备都需要了解网络,但它们关心的重点截然不同。第三层设备(路由器)需要确定网络的位置,而第二层设备(交换机和网桥)需要确定设备的位置。因此,网络之于路由器犹如设备之于交换机和网桥,而提供了互联网络地图的路由选择表之于路由器犹如提供了设备地图的过滤表之于交换机和网桥。
建立过滤表后,第二层设备将只把帧转发到目标硬件地址所属的网段:如果目标设备与发送设备位于同一个网段,第二层设备将禁止帧进入其他网段;如果目标设备位于另一个网段,帧将只传输到该网段。这称为透明桥接。
交换机接口收到帧后,如果在过滤表中找不到其目标硬件地址,交换机将把帧转发到所有网段。如果有未知设备对这种转发操作作出应答,交换机将更新其过滤表中有个该设备位置的信息。然而,如果帧的目标地址为广播地址,交换机将默认把所有广播转发给与之相连的所有网段。
接收广播的所有设备都位于同一个广播域中,这就是:第二层设备传播第二层广播风暴,这会极大的降低网络性能。要阻止广播风暴在互联网络中传播,唯一的办法是使用第三层设备--路由器。
在互联网络中,使用交换机而不是集线器的最大好处是,每个交换机端口都属于不同的冲突域,而集线器形成一个大型的冲突域。然而,即便使用了交换机,默认仍不能分割广播域。交换机和网桥都没有这样的功能,相反它们转发所有的广播。
相对于以集线器为中心的实现来说,LAN交换的另一个优点是,与交换机相连的每个网段中的每台设备都能同时传输(至少在每个交换机端口只连接一台主机,而没有连接集线器的情况下是这样的)。在使用集线器时,每个网段不能有多台设备同时通信。
物理层
物理层有两项功能:发送和接收比特。比特的取值只能为0或1。物理层直接与各种通信介质交流。不同类型的介质以不同方式表示比特值,有些使用音调,有些使用状态切换--从高电平变成低电平以及从低电平变成高电平。对于每种类型的介质,都需要特定的协议,这些协议描述了正确的比特模式、如何将数据编码成介质信号以及物理介质连接头的各种特征。
物理层定义了要在终端系统之间激活、维护和断开物理链路,而需要满足的电气、机械、规程和功能需求,还让你能够确定DIE(Data Terminal Equipment,数据终端设备)和DCE(Data Communication Equipment,数据通信设备)之间的接口。DCE通常位于服务提供商处,而DTE是与之相连的设备。通常情况下,DTE通过调制解调器或CSU/DSU(Channel Service Unit/Data Service Unit,信道服务单元/数据服务单元)使用可用的服务。
OSI以标准的形式定义了物理层接头盒各种物理拓扑,让不同的系统能够彼此通信。
工作在物理层的集线器
集线器实际上是一种多端口转发器。转发器接收数字信号,进行放大或重建,然后通过所有活动端口将其转发出去,而不查看信号表示的数据。这意味着与集线器相连的所有设备都属于同一个冲突域,也属于同一个广播域。
与转发器一样,集线器也不查看进入的数据流,而只是将其转发到物理介质的其他部分。与集线器相连的所有设备都必须侦听,看看是否有其他设备在传输数据。使用集线器组建的是星型物理网络,其中集线器位于网络中央,电缆从集线器出发向各个方向延伸。
网络基础 : OSI参考模型的更多相关文章
- 网络基础——OSI参考模型
一.OSI/ISO/IOS傻傻分不清楚 ISO 国际标准化组织(International Organization for Standardization)简称ISO,是一个全球性的非政府组织,是国 ...
- 网络基础 ----------- osi 与 一些协议
1.了解 OSI ISO IOS ISO(全称:International Organization for Standardization) 国际标准化组织, 成立于1947年2月23日,制定全世界 ...
- 网络基础---OSI 模型与TCP/IP
一.网络的演进: 1.简单的联接:1960's ------------ 1970's Host Network 六十至七十年代,网络的概念主要是主机架构的低速串行联接,提供应用程序执行.远程打 ...
- 网络基础 01_OSI网际互联
1 通信概述 网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的. 通信是人与人之间通过某种媒体进行的信息交流与传递. 网络通信是通过网络将各个孤立的设备进 ...
- OSI参考模型---网络基础篇(1)
什么是网络 网络就是将分布在不同地理位置,具有独立功能的终端(一切联网的设备都叫终端:例如电脑,手机,智能家电等等联网的设备),通过通信线路(双绞线.光纤.电话线等等)和通信设备(例如:交换机.路由器 ...
- 软件开发架构、网络基础知识、osi七层模型
一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...
- 计算机网络基础之OSI参考模型
计算机网络基础之OSI参考模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.OSI参考模型 OSI是Open System Interconnection的缩写,意为开放式系 ...
- OSI参考模型对网络排错的指导
问题 当我们遇到网络故障的时候,比如连不上网.打开浏览器无法正常访问等问题的时候,我们应该怎么排查呢? 我们首先想到的是物理层,因为在OSI参考模型中物理层是在最低端.最基础. 物理层排查 主要查看连 ...
- 【Linux网络基础】网络拓扑、OSI层次模型、TCP/IP协议簇
一.前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工作来说这些并不是重点,因此,我不可能从最基础的网络知识开始讲起.本节内容更多是从一个梳理和 ...
随机推荐
- Android+jsp +html 文件上传案例 已测试 成功通过
我文件上传一直是广大读者一个问题 今天就把成功案例写下 javaweb 网页前段 <%@ page language="java" import="java.uti ...
- Android内存清理
直接上图吧! 获取文件大小 ,清理文件工具类 public class DataCleanManager { public static String getTotalCacheSize(Contex ...
- 软件工程(QLGY2015)博客点评总结
目录 第一次作业(2015.5.9) 第二次作业(2015.5.21) 第三次作业(2015.6.11) 2015上半年软工助教总结 第一次作业(2015.5.9) 存在主要问题 1)书写这种练习博客 ...
- New Year's resolution for 2016
A New Year's resolution is a traditional for me to celebrate a new beginning. For the past year, I h ...
- Mac下配置Apache服务
这篇文章主要是针对Mac用户,第一次搭建本地开发环境的同学,已经搭建过的同学可以忽略. Mac自带的Apache还是XAMPP? That is a question. 其实自带的apache也够用了 ...
- 干货!表达式树解析"框架"(2)
最新设计请移步 轻量级表达式树解析框架Faller http://www.cnblogs.com/blqw/p/Faller.html 为了过个好年,我还是赶快把这篇完成了吧 声明 本文内容需要有一定 ...
- I/O重定向的原理和实现
在Unix系统中,每个进程都有STDIN.STDOUT和STDERR这3种标准I/O,它们是程序最通用的输入输出方式.几乎所有语言都有相应的标准I/O函数,比如,C语言可以通过scanf从终端输入字符 ...
- Android EditText悬浮在输入法之上
Android EditText悬浮在输入法之上 使用 android:windowSoftInputMode="adjustResize" 会让界面整体被顶上去,很多时候我们不需 ...
- salesforce 零基础学习(四十九)自定义列表分页之使用Pagination实现分页效果 ※※※
上篇内容为Pagination基类的封装,此篇接上篇内容描述如何调用Pagination基类. 首先先创建一个sObject,起名Company info,此object字段信息如下: 为了国际化考虑 ...
- html中定义标签字母的大小写
定义和用法: text-transform 属性控制文本的大小写. 值和属性: 值 描述 none 默认.定义带有小写字母和大写字母的标准的文本. capitalize 文本中的每个单词以大写字母开头 ...