OSI计算机网络七层模型 - c语言源码

时间:2024-03-07 16:01:47

OSI计算机网络七层模型

前言
首先,我想先说一下关于网络分类的问题。因为,有一些同学有错误的认识。
我们都知道根据不同的分类方式,可以把网络分为不同的类。其实,这些类的由来是有原因的,那就是用户的需求。任何一项技术的发展都是由需求开始的,然后由理论技术变为技术产品。
首先,人们想通过一种方式把各台计算机上的资源(硬件资源、软件资源等等)共享,于是就产生了我们现在所说的局域网LAN(Local Area NetWork)(但是,这种网络有一定的限制,比如说它的覆盖范围、能提供的端口等)。当人们有想把更多、更远的地方的计算机进行联网的时候,接着就有了今天的城域网(Metropolitan Area NetWork)、广域网WAN(Wide Area NetWork)的概念。
可是我想强调的一点是,我们所说的广域网,和我们现在经常使用的Ineternet不是对等的。
连接到Internet上,是很昂贵的,所以,我们说是一些运营商首先连接到Internet上,然后给我们提供了接口,我们这才连接到了Internet上。而广域网呢,是一个私有的网络,可以连接到Internet上,当然,出于安全等因素,也可以不用连接到Internet上,只供内部人使用。
ISO七层模型

一、介绍
随着网络的兴起与繁荣,ISO(International Standard Organization)为了让不同厂牌的计算机拥有共通的通信协议,于1987年制定了计算机网络的七层模型。
可是这个模型,只是一个模糊的概念,为什么这么说呢!因为它并没有规定七层中的具体内容,比如说传输介质是什么,甚至也没有说是有线通信还是无线通信,而它只是提供了一个模型、一个参考。
二、内容
我想只要是学过网络的同学,对这七层模型再熟悉不过了。分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
来张图吧!更清晰



三、举例
即使看到了这几层,对每一层的认识还不是很明确,那么每一层具体是干什么的呢?怎么相互协作完成数据传输的呢?下面我们就来举个例子吧:
比如说我们从userA发一封邮件到UserB,我们来看看是怎么实现的。
首先我们会在我们的电脑上运行一个软件,可是outLook客户端软件,也可能是通过网页来发送,可不要误认为这就是应用层了。这只不过是为进入应用层提供了一个接口,在应用层,会用到相关的协议,比如文件传输协议(SMTP),然后对数据进行处理。
表示层呢,主要是解决硬件与软件不一致的问题,我们可以想到,我们现在所用的电脑的型号,运行的操作系统等都不一定是相同的。为了将数据得到统一,在表示层会对数据再进行相应的处理,使之成为可以可以被下一层所识别。
那么会话层呢,它会提供一个连接,要确保这个连接是相通的。如果连接丢失,可以重新获取连接等。
而传输层与网络层往往是绑定在一起的(也就是因为,七层模型太细化,于是有了现在的TCP/IP四层模型,不过,原理还是七层模型,只是将把一些相关的层合并了),传输层是确保数据在网络中传输的,如果数据丢失,要重新发送等。而对于网络层,我们可以会更熟悉,比如会涉及到IP地址、包交换、路由。IP地址,我们都很熟悉,关于数据包呢,比如,如果数据不能一次传输,我们会将包进行拆分,然后封装;路由呢,是帮助数据到达指定IP的目的地。
接下来的数据链路层与物理层就与具体的设备相关了,我们上面提到的线路只是逻辑上的线路,而数据传输是需要具体的传输介质的。就是我们所说的数据链路层与物理层了,数据链路层,会把上层的数据包经过再一次的封装,而变成数据帧,并且确保数据帧的完整性、正确性,物理层就是上只有两个状态就是0,1了。
当数据到达UserB时,数据进行与上述相反的过程,最终显示给UserB。


四、数据的逐级封装
邮件——TCP数据——IP数据——帧


欢迎大家指出不足,提出宝贵意见!