OSI七层模型分别为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。作用分别为:应用层为用户的应用程序提供接入网络的接口。表示层将用户数据进行相应的编码或格式转换。会话层区分通信中的不同上层程序,为每个进程建立单独的链接,并维护和管理通信的过程。传输层为数据的可靠传输提供一种安全可靠的方式。网络层完成数据在网络中的实际传输,确定地址和最佳路径数据链路层使用硬件地址来定位远程主机,传输数据并进行必要的流量控制和差错校验。物理层传输比特流。将链路层的数据用高低不同的电平值表示发送到物理线路上。物理层规定了设备的接口形状、针脚个数、针脚不同电平值的含义。最初的计算机网络每家厂商迪标准都不同,这就造成了不同厂商的计算机在互连时难以互通的情况。这样就形成了一个个的由同一家厂商计算机构成的孤岛网络,而不同厂商的网络难以互联。这样限制了计算机和网络的发展。因而ISO组织制定了开放式系统互联模型(OSI),旨在使所有遵循该标准的厂商生产的设备具有通用性。从而使不同厂商的设备互联称为显示。OSI采用分层设计的方式,将一个复杂的网络问题划分成了多个小的问题。使网络的维护更利于实现、使网络技术更利于更新。但由于OSI的标准实在是太严格了,目前还没有完全按照OSI标准设计的网络。但是,OSI给设计网络和网络排错提供了一个非常好的模型和思路-------一个完整的应该具备哪些功能?该功能在哪个层次?通过这样的思考方式很容易定位网络的故障。也很容易的来衡量出一个现实的网络是否完善。OSI模型中的通信过程。主机A向主机B发送数据,该数据的产生肯定是一个应用层的程序产生的,如IE浏览器或者Email的客户端等等。这些程序在应用层需要有不同的接口,IE是浏览网页的使用HTTP协议,那么HTTP应用层为浏览网页的软件留下的网络接口。Email客户端使用smtp和pop3协议来收发电子邮件,所以smtp和pop3就是应用层为电子邮件的软件留下的接口。我们假设A向B发送了一封电子邮件,因此主机A会使用smtp协议来处理该数据,即在数据前加上SMTP的标记,以便使对端在收到后知道使用什么软件来处理该数据。应用层将数据处理完成后会交给下面的表示层,表示层会进行必要的格式转换,使用一种通信双方都能识别的编码来处理该数据。同时将处理数据的方法添加在数据中,以便对端知道怎样处理数据。表示层处理完成后,将数据交给下一层会话层,会话层会在A主机和B主机之间建立一条只用于传输该数据的会话通道,并监视它的连接状态,直到数据同步完成,断开该会话。注意:A和B之间可以同时有多条会话通道出现,但每一条都和其他的不能混淆。会话层的作用就是有法来区别不同的会话通道。会话通道建立后,为了保证数据传输中的可靠性,就需要在数据传输的构成当中对数据进行不要的处理,如分段,编号,差错校验,确认、重传等等。这些方法的实现必须依赖通信双方的控制,传输层的作用就是在通信双方之间利用上面的会话通道传输控制信息,完成数据的可靠传输。网络层是实际传输数据的层次,在网络层中必须要将传输层中处理完成的数据再次封装,添加上自己的地址信息和对端接受者的地址信息,并且要在网络中找到一条由自己到接收者最好的路径。然后按照最佳路径发送到网络中。数据链路层将网络层的数据再次进行封装,该层会添加能唯一标识每台设备的地址信息(MAC地址),是这个数据在相邻的两个设备之间一段一段的传输。最终到达目的地。物理层将数据链路层的数据转换成电流传输的物理线路。通过物理线路传递的B主机后,B主机会将电信号转换成数据链路层的数据,数据链路层再去掉本层的硬件地址信息和其他的对端添加的内容上交给网络层,网络层同样去掉对端网络层添加的内容后上交给自己的上层。最终数据到达B主机的应用层应用层看到数据使用smtp协议封装,就知道应用电子邮件的软件来处理。两个OSI参考模型之间的通行看似是水平的,但实际上数据的流动过程是有最高层垂直的向下交给相邻的下层的过程。只有最下面的物理层进行了实际的通行。而其他层次只是一种相同层次使用相同协议的虚通信。学习OSI应掌握,分层、协议、实体、服务、接口、虚通信等多个概念。封装指将本层控制信息添加在数据前的一种行为。解封装指接收方将对端添加的控制信息去除的行为。
这涉及到网络传输的原理。
我们的网络传输在逻辑上是分成了好多层的。从通过传输层TPDU建立一条连接开始,传输的数据依次从第七层向第一层流动
流动过程中经历了一个封装过程,从上一层到下一层都要在原来的数据上添加一个控制信息。
会话层的报文拆开成多个部分,每个部分加上控制头就是分组(segment)然后到下一层传输层,传输层传到网络层的时候再添加上IP报头,变成数据包(packet),然后在送到数据链路层,然后再封装,就是添加帧头,变成数据帧(frame),然后传输到物理层,在物理层转换成只有0和1的比特流,再通过电缆把比特流传输过去,到目的主机后再把原来的程序倒转,这就是一个传输的过程
在发送主机端,一个应用层报文被传送到运输层。在最简单的情况下,运输层收取到报文并附上附加信息,该首部将被接收端的运输层使用。应用层报文和运输层首部信息一道构成了运输层报文段。附加的信息可能包括:允许接收端运输层向上向适当的应用程序交付报文的信息以及差错检测位信息。该信息让接收端能够判断报文中的比特是否在途中已被改变。运输层则向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息,生成了网络层数据报。该数据报接下来被传递给链路层,在数据链路层数据包添加发送端 MAC 地址和接收端 MAC 地址后被封装成数据帧,在物理层数据帧被封装成比特流,之后通过传输介质传送到对端。
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。 接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。图3-4表示用帧首部和帧尾部封装成帧的一般概念。我们知道,分组交换的一个重要概念就是:所有在互联网上传送的数据都以分组(即IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。 在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧。 这样的帧就 是数据链路层的数据传送单元 。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是进行 帧定界 (即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。显然,为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限一 最大传送单元MTU(Maximum Transfer Unit) 。图3-4给出了帧的首部和尾部的位置,以及帧的数据部分与MTU的关系。
当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。我们知道,ASCII码是7位编码,一共可组合成128个不同的ASCIIⅡ码,其中可打印的有95个 ① ,而不可打印的控制字符有33个。图3-5的例子可说明帧定界的概念。 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。 请注意,SOH和EOT都是控制字符的名称。它们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。SOH(或EOT)并不是S,O,H(或E,O,T)三个字符。
当数据在传输中出现差错时,帧定界符的作用更加明显 。假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了 帧定界符 ,接收端就知道前面收到的数据是个不完整的帧(只有首部开始符SOH而没有传输结束符EOT),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。
帧的首部和尾部分别为四个字段和两个字段。 首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E(符号“0x”表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
信息字段的长度是可变的,不超过1500字节。
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。
① 注:“可打印的字符”就是“可以从键盘上输入的字符”(因而也是可打印出的)。我们使用的标准键盘有47个键可输入94个字符(包括使用Si键),加上空格键,一共可输入95个可打印字符。
因为数据链路层的需要完成的功能要处理传输错误,调节数据流的快慢,为了达到处理传输错误的目的,数据链路层要将数据流分成帧并且计算每帧的校验和,接收方对校验和进行检验;为了调节数据流的快慢,数据链路层要将数据分帧发送,当接收方速度过慢时,数据链路层可以停止发送下一帧并保持数据的完整性。
1使不同厂商在开发设备的时候有个公共的标准,让不同厂商开发出来的设备能够互相通信。 uR[-1h
2使不同系统之间能够互相通信,如UNIX、Winsows和Mac。
3分层使数据处理分步,互相之间不造成影响。 %
OSI七层网络模型由下至上为1至7层,分别为物理层(Physical layer),数据链路层(Data link layer),网络层(Network layer),传输层(Transport layer),会话层(Session layer),表示层(Presentation layer),应用层(Application layer)。其中上三层称之为高层,定义应用程序之间的通信和人机界面。什么意思呢,就是上三层负责把电脑能看懂的东西转化为你能看懂的东西,或把你能看懂的东西转化为电脑能看懂的东西。下四层称之为底层,定义的是数据如何端到端的传输(end-to-end),物理规范以及数据与光电信号间的转换。先面一层一层的来说明。从上层说起。 7
应用层,很简单,就是应用程序。这一层负责确定通信对象,并确保由足够的资源用于通信,这些当然都是想要通信的应用程序干的事情。 g]Iwcm
表示层,负责数据的编码、转化,确保应用层的正常工作。这一层,是将我们看到的界面与二进制间互相转化的地方,就是我们的语言与机器语言间的转化。数据的压缩、解压,加密、解密都发生在这一层。这一层根据不同的应用目的将数据处理为不同的格式,表现出来就是我们看到的各种各样的文件扩展名。 gxP(~$
会话层,负责建立、维护、控制会话,区分不同的会话,以及提供单工(Simplex)、半双工(Half duplex)、全双工(Full duplex)三种通信模式的服务。我们平时所知的NFS,RPC,X Windows等都工作在这一层。 &
传输层,负责分割、组合数据,实现端到端的逻辑连接。数据在上三层是整体的,到了这一层开始被分割,这一层分割后的数据被称为段(Segment)。三次握手(Three-way handshake),面向连接(Connection-Oriented)或非面向连接(Connectionless-Oriented)的服务,流控(Flow control)等都发生在这一层。 w'<_V
网络层,负责管理网络地址,定位设备,决定路由。我们所熟知的IP地址和路由器就是工作在这一层。上层的数据段在这一层被分割,封装后叫做包(Packet),包有两种,一种叫做用户数据包(Data packets),是上层传下来的用户数据;另一种叫路由更新包(Route update packets),是直接由路由器发出来的,用来和其他路由器进行路由信息的交换。 g/93I
数据链路层,负责准备物理传输,CRC校验,错误通知,网络拓扑,流控等。我们所熟知的MAC地址和交换机都工作在这一层。上层传下来的包在这一层被分割封装后叫做帧(Frame)。 db]
物理层,就是实实在在的物理链路,负责将数据以比特流的方式发送,接收
数据链路层数据的主要功能是封装和解封数据帧建立数据链路等
网络层的主要功能是选址(给它封装一个ip地址)和路由(选择到达另一个网络的路径)
如果是发送(上层往下层封装)
那先从网络层封装ip地址然后再从数据链路层封装数据帧
如果是接收(下层往上层解封)
还有别的层你没提到就不多说了
不知道你听的懂不
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)