0 总览
OSI参考模型是一个协议族,虽然分层了,但是本质上还是协议。也就是说每层都是在协调各方,约定完成某件事情方法、步骤、格式。
因此可以说某某某协议是那一层的,但不能说是那个物理设备是那一层的。但是可以说是某设备工作在那一层。
物理层和数据链路层是协调不同的物理设备之间如何工作。
网络层和传输层则是位于内核,协调主机和进程之间如何工作。
会话层、表示层、应用层都是位于用户态的,因此TCP/IP模型将这三层合并为一层,因为处于内核态的协议可以通过在源码上写死,大家都使用一样的。但是处于用户态的协议大家可以随意的实现,实现复用的可能性小。
1 第一层 物理层
主要工作:协商数据在硬件层面的传输格式,就是说如何表示0和1
物理层的作用是实现相连计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。
“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。
简单的说,物理层确保原始的数据可在各种物理媒体上传输。
例如,物理层要考虑用多大的电压代表”1“ 或 ”0“,接收方如何识别出发送方所发送的比特。确定连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。
注意:网络传输所用的物理设备不是物理层。因为他们不是协议。例如使用光缆还是铜绞线。但是规定双方如何识别0,1以及需要多少根线,是物理层的任务。
集线器:集线器只对信号进行整形、放大后再重发。采用广播方式发送。也就是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节。
因为他并不去解析这些数据,因此是工作在物理层的。
2 第二层 数据链路层
主要工作:协商直接相连的两台设备在硬件上如何传输数据,共用硬件的时候如何传输。数据如何封装,每一段起始如何表示,并提供了校验信息。
两个主机之间的数据传输,总是在一段一段的链路上面传送的,也就是说,在两个相邻结点之间(主机与路由器之间 或者 两个路由器之间)传送数据是直接传送的。 从物理层可以知道传输的两端接收到的信息室无差别的,并不能区分出一段与另一段。
在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上“透明”地传送帧(frame)中的数据。
每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
使得接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧之后,就可以从中提取出数据部分,上交给网络层。
控制信息还可以使得接收端能够检测到所收到的帧中有无差错。如果发现有差错,数据链路层就简单地丢弃这个出错的帧
将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。MAC属于LLC)下的一个子层
MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制,定义了数据帧怎样在介质上进行传输。在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。例如载波侦听多路访问,意思是网络上各个工作站在发送数据前都要确认总线上有没有数据传输。若有数据传输(称总线为忙),则不发送数据;若无数据传输(称总线为空),立即发送准备好的数据。所谓多路访问,意思是网络上所有工作站收发数据共同使用同一条总线,且发送数据是广播式的。冲突(Collision),意思是若网上有两个或两个以上工作站同时发送数据,在总线上就会产生信号的混合,这样哪个工作站都辨别不出真正的数据是什么。这种情况称为数据冲突,又称为碰撞。为了减少冲突发生后的影响,工作站在发送数据过程中还要不停地检测自己发送的数据,看有没有在传输过程中与其他工作站的数据发生冲突,这就是冲突检测
LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。数据链路服务通过LLC子层为网络层提供统一的接口
交换机: 二层交换机工作于OSI模型的数据链路层,故而称为二层交换机。可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中
3 第三层 网络层
主要工作:协商不直接相连的两台主机之间如何通信。
数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。因此网络层需要屏蔽底层差异。
mac地址随机性过大,不利于夸子网进行通信。因此提出ip地址,与地域相关联,便于寻路。
数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)
当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端
与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。
4 第四层 传输层
主要工作:协商两个进程间如何通信,使用端口区分进程。
最主要的功能室:负责向两个主机中进程之间的通信提供服务。
由于一个主机可同时运行多个进程,因此运输层具有 复用 和 分用 的功能。
复用:就是多个应用层进程可同时使用下面运输层的服务。
分用:则是运输层把收到的信息分别交付给上面应用层的相应的进程。
本层又添加了可靠性传输,拥塞控制、流量控制等。
5 第五层 会话层
主要工作:识别不同用户
传输层将两个进程之间建立了连接,而会话层则是区分用户的。例如多个用户与服务器通信,服务器用来区分用户的就是会话层的作用。
另外还提供了,认证,权限,回话恢复。
会话层(Session)是建立在传输层之上,利用传输层提供的服务,使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。
协议:ASP:AppleTalk的动态会话协议
6 第六层 表示层
主要工作:解析数据
表示层是处理所有与数据表示及运输有关的问题,包括转换、加密和压缩。每台计算机可能有它自己的表示数据的内部方法,表示层的作用就是进行数据编码的转换。
语法转换涉及代码转换和字符集的转换,数据格式的修改、数据结构操作的适配、数据压缩、数据加密。
协议:HTML
7 应用层
主要工作:向用户提供实际的功能
直接向用户提供服务。提供具体的服务。
协议: DNS、SMTP、SSH等
8 总结
每一层在实现了本层最主要的工作以外,基本上都加入了检验和,另外根据本层的特点,还加入了可靠传输,或是权限认证等功能。