OSI参考模型
OSI参考模型将复杂的网络协议整理并分为易于理解的7个分层,对通信中必要的功能做了很好的归纳。不过,OSI参考模型始终是一个模型,它也只是对各层的作用做了一系列粗略的界定,并没有对协议和接口进行详细的定义。
OSI参考模型中各个分层的作用

- 应用层:为应用程序提供服务并规定应用程序中通信相关的细节,包括文件传输、电子邮件、远程登录等协议。
- 表示层:将应用程序的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式,因此它主要负责数据格式转换。
- 会话层:负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理。
- 传输层:起着传输的作用,只在通信双方节点上进行处理,而无需在路由器上处理。
- 网络层:将数据传输到目标地址,目标地址可以是多个网络通过路由器连接而成的某一个地址,因此这一层主要负责寻址和路由选择。
- 数据链路层:负责物理层面上互连的、节点之间的通信传输。
- 物理层:负责0、1比特流与电压的高低、光的闪灭之间的互换。
OSI参考模型通信处理举例
下面举例说明7层网络模型的功能,假设使用主机A的用户A要给使用主机B的用户B发送一封电子邮件。
应用层
用户A在主机A上新建一封电子邮件,指定收件人为B,并输入邮件内容为“早上好”。
从用户输入完所要发送到内容并点击“发送”按钮的那一刻开始,就进入了应用层协议的处理,该协议会在所要传送数据的前端附加一个首部(标签)信息。如果主机B上收件人的邮箱空间已满无法接收新的邮件,则会返回一个错误给发送方。对这类异常的处理也属于应用层要解决的问题。
表示层
表示层的“表示”有“表现”、“演示”的意思,因此更关注数据的具体表现形式。此外,所使用的应用软件本身的不同也会导致数据的表现形式截然不同,例如有的字处理软件的文件只能由该字处理厂商所提供的特定版本的软件才来打开读取。
利用应用层,将数据从“某个计算机特定的数据格式”转换为“网络通用的标准数据格式”后,再发送出去。接收端主机收到数据以后,将这些网络标准格式的数据恢复为“该计算机特定的数据格式”,然后再进行相应处理。
会话层
决定采用何种连接方法是会话层的主要责任。会话层也会像应用层或表示层那样,在其收到的数据前端附加首部信息或标签信息后再转发给下一层。而这些首部或标签中记录着数据传送顺序的信息。
会话层只对何时建立连接、何时发送数据等问题进行管理,并不具有实际传输数据的功能。
传输层
主机A确保与主机B之间的通信并准备发送数据。这一过程叫“建立连接”。有了这个通信连接就可以使主机A发送的电子邮件到达主机B中,并由主机B的邮件处理程序获取最终数据。此外当通信传输结束后,有必要将连接断开。
如上,进行建立连接或断开连接的处理,在两个主机之间创建逻辑上的通信连接即是传输层的主要作用。此处请注意,会话层负责决定建立连接和断开连接的时机,而传输层进行实际的连接和断开处理。
此外,传输层为确保所传输的数据到达目标地址,会在通信两端的计算机之间进行确认,如果数据没有到达,它会负责重发。例如,主机A将“早上好”这一数据发送给主机B,期间可能会因为某些原因导致数据被破坏,或由于发生某种网络异常致使只有一部分数据到达目标地址。假设主机B只收到了“早上”这一部分数据,那么会在它收到数据后将自己没有收到“早上”之后那部分数据的事实告知主机A,主机A得知这个情况后就会将后面的“好”重发给主机B,并再次确认对端是否收到。
网络层
网络层的作用是在网络与网络相互连接的环境中,将数据从发送端主机发送到接收端主机,两端主机之间虽有众多数据链路,但能够将数据从主机A送到主机B也是网络层的功劳。
在实际发送数据时,目的地址至关重要,这个地址是进行通信的网络中唯一指定的序号。
数据链路层、物理层
通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。
物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输,这种地址被称为MAC地址,也可称为物理地址或硬件地址。采用MAC地址,目的是为了识别连接到同一传输介质上的设备。因此,在这一层中将包含MAC地址信息的首部附加到从网络层转发过来的数据上,将其发送给网络。
传输方式的分类
网络与通信中可以根据其数据发送方法进行多种分类,分类方法也有很多,下面介绍几种。
面向有连接型与面向无连接型
通过网络发送数据,大致可以分为面向有连接与面向无连接两种类型。面向有连接型包括TCP、ATM、帧中继等协议;面向无连接型包括UDP、IP、以太网等协议。
- 面向有连接型:面向有连接型中,在发送数据之前,需要在收发主机之间连接一条通信线路;在通信传输结束之后,专门断开连接。
- 面向无连接型:面向无连接型则不要求建立和断开连接。发送端可于任何时候自由发送数据,反之接收端也永远不知道自己会在何时从哪里收到数据。因此在面向无连接的情况下,接收端需要时常确认是否收到了数据。面向无连接型采用分组交换的情况要多一些。
电路交换与分组交换
在电路交换中,交换机主要负责数据的中转处理。计算机首先被连接到交换机上,而交换机与交换机之间则由众多通信线路再继续连接。因此计算机之间再发送数据时,需要通过交换机与目标主机建立通信电路,我们将连接电路称为建立连接。建立好连接之后,用户就可以一直使用这条电路,知道该链接被断开为止。
如果某条电路只是用来连接两台计算机的通信线路,就意味着只需要在这两台计算机之间实现通信,因此这两台计算机是可以独占线路进行数据传输的。但是,如果一条电路上连接了多台计算机,而这些计算机之间需要相互传递数据,就会出现新的问题。鉴于一台计算机在收发信息时会独占整个电路,其他计算机只能等待这台计算机处理结束以后才有机会使用这条电路发送数据,并且在此过程中,谁也无法预测某一台计算机的数据传输从何开始又在何时结束。如果并发用户数超过交换机之间的通信线路数,就意味着通信根本无法实现。
在分组交换中,由分组交换机(路由器)连接通信线路。分组交换的大致处理过程是:发送端计算机将数据分组发送给路由器,路由器收到这些分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。因此分组交换也有另一个名称:蓄积交换。路由器收到数据以后会按照顺序缓存到相应的队列中,再以先进先出的顺序将它们逐一发送出去。
在分组交换中,计算机与路由器之间以及路由器与路由器之间只有一条通信线路,因此这条线路其实是一条共享线路。在电路交换中,计算机之间的传输速度不变。然而在分组交换中,通信线路的速度可能会有所不同,根据网络拥堵的情况,数据达到目标地址的时间有长有短。另外,路由器的缓存饱和或溢出时,甚至可能会发生分组数据丢失、无法发送到对端的情况。
根据接收端数量分类
- 单播:就是一对一通信。
- 广播:它指的是将消息从一台主机发送给与之相连的所有其他主机。广播通信的一个典型例子就是电视播放。
- 多播:多播与广播类似,不同之处子啊与多播要限定某一组主机作为接收端。多播通信最典型的例子就是电视会议。
- 任播:任播是指在特定的多台主机中选出一台作为接收端的一种通信方式。
地址
通信传输中,发送端和接收端可以被视为通信主体,他们都能由一个所谓的“地址”的信息加以标识出来。当人们使用电话时,电话号码就相当于“地址”。当地址总数并不是很多的情况下,有了唯一地址就可以定位相互通信的主体。然而当地址的总数越来越多的时候,如何高效的从中找出通信的目标地址将成为一个重要的问题,为此人们发现地址除了具有唯一性还需要具有层次性。
MAC地址和IP地址在标识一个通信主体时虽然都具有唯一性,但是它们当中只有IP地址具有层次性。MAC地址由设备的制造厂商针对没块网卡进行分别指定;IP地址由网络号和主机号两部分组成,即使通信主体的IP地址不同,若主机号不同,网络号相同,说明它们处于同一个网段。
网络传输中,每个节点会根据分组数据的地址信息,来判断报文应该由哪些网卡发出去。为此,各个地址会参考一个发出接口列表。在这一点上MAC寻址与IP寻址一样。只不过MAC寻址所参考的这张表叫做地址转发表;而IP寻址中所参考的叫做路由控制表。
- 主机A先查看自己的路由控制表,在根据此表将发往主机B的数据先发给路由器1。
- 接收到该数据的交换机1则根据自己的地址转发表将数据转发给路由器1。
- 接收到该数据的路由器1根据自己的路由控制表将数据转发给路由器3。
- 接受到该数据的路由器3则根据自己的路由转发表将数据发给交换机3。
- 接受到该数据的交换机3再根据自己的地址转发表将数据发给主机B。
网络构成的要素
搭建一套网络环境要涉及各种各样的电缆和网络设备,在此仅介绍连接计算机与计算机的硬件设备。
| 设备 | 应用 |
|---|---|
| 网卡 | 使计算机连网的设备(Network Interface) |
| 中继器 | 从物理层上延长网络的设备 |
| 网桥/2层交换机 | 从数据链路层上延长网络的设备 |
| 路由器/3层交换机 | 通过网络层转发分组数据的设备 |
| 4-7层交换机 | 处理传输层以上各层网络传输的设备 |
| 网关 | 转换协议的设备 |
网卡
任何一台计算机连接网络时,必须要使用网卡(全称为网络接口卡),有时也被称为网络适配器、网络接口卡、LAN卡。
中继器
中继器是OSI模型的第一层——物理层面上延长网络的设备。由电缆传输过来的电信号或光信号经由中继器的波形调整和放大再传给另一个电缆。
- 中继器是对减弱的信号进行放大和发送的设备。
- 中继器通过物理层的连接延长网络。
- 即使在数据链路层出现某些错误,中继器仍然转发数据。
- 中继器无法改变传输速度。
一般情况下,中继器的两端连接的是相同的通信媒介,但有的中继器也可以完成不同媒介之间的转接工作,例如可以在同轴电缆与光轴电缆之间调整信号。然而,在这种情况下,中继器也只是单纯的负责信号在0和1比特流之间的替换,并不负责判断数据是否有错误,也不能在传输速度不同的媒介之间转发。
通过中继器而进行的网络延长,其距离也并非可以无限扩大,例如一个10Mbps的以太网最多可以用4个中继器分段连接,而一个100Mbps的以太网则最多只能连两个中继器。
网桥/2层交换机

- 网桥根据数据帧的内容转发数据给相邻的其他网络
- 网桥没有连接网段个数的限制
- 网桥基本上只用于连接相同类型的网络,但是有时也可以连接传输速率不同的网络
网桥是OSI模型的第2层——数据链路层面上连接两个网络的设备,它能识别数据链路中的数据帧,并将这些数据帧临时存储于内存,再重新生成信号作为一个全新的帧转发给相连的另一个网段。由于能够存储这些数据帧,网桥能够连接传输速率完全不同的数据链路,并且不限制连接网段的个数。
数据链路的数据帧中有一个数据为叫做FCS,用以校验数据是否正确送达目的地。网桥通过检查这个域中的值,将那些损坏的数据丢弃,从而避免发送给其他的网段,此外网桥还能通过地址自学机制和过滤功能控制网络流量。
有些网桥能够判断是否将数据报文转发给相邻的网段,这种网桥被称为自学式网桥,这类网桥会记住曾经自己转发的所有数据帧的MAC地址,并保存到自己的内存中,由此可以判断哪个网段中包含持有哪类MAC地址的设备。
路由器/3层交换机
- 路由器是连接网络与网络的设备
- 可以将分组报文发送给另一个目标路由器地址
- 基本上可以连接任意两个数据链路
路由器是在OSI模型的第3层——网络层面上连接两个网络,并对分组报文进行转发到设备。网桥是根据物理地址(MAC地址)进行处理,而路由器/3层交换机则是根据IP地址进行处理的。
路由器可以连接不同的数据链路,例如两个以太网,或者一个以太网与一个FDDI。路由器还有分担网络负荷的作用,甚至有些路由器具备一定的网络安全功能。
4-7层交换机
4-7层交换机负责处理OSI模型中从传输层至应用层的数据。如果用TCP/IP分层模型来表述,4-7层交换机就是以TCP等协议的传输层及其上面的应用层为基础,分析收发数据,并对其进行特定的处理。
网关

- 网关负责协议的转换与数据的转发
- 在同一种类型的协议之间转发数据叫做应用网关
网关是OSI参考模型中负责将传输层到应用层的数据进行转换和转发的设备。它与4-7层交换机都是处理传输层及以上的数据,但是网关不仅转发数据还负责对数据进行转换,它通常会使用一个表示层或应用层网关,在两个不能进行直接通信的协议之间进行翻译,最终实现两者之间的通信。
为了控制网络流量以及出于安全的考虑,有时会使用代理服务器,这种代理服务器也是网关的一种。