米葫芦网

网络基础:理解OSI网络分层

热度:10℃ 发布时间:2023-11-16 19:33:02

在上一次课程里我们介绍了子网的概念和子网的划分。现在该谈到OSI(开放系统互连)参考模型了。网络协议栈具有重要的意义。但是,还没有重要到你应该首先学习的程度。许多所谓的网络课程都是从教你记住OSI模型中的每一个层的名字和这个模型中包含的每一个协议开始的。这样做是不必要的。甚至第5层和第6层是完全可以忽略的。

国际标准组织(ISO)制定了OSI模型。这个模型把网络通信的工作分为7层。1至4层被认为是低层,这些层与数据移动密切相关。5至7层是高层,包含应用程序级的数据。每一层负责一项具体的工作,然后把数据传送到下一层。

物理层(也即OSI模型中的第一层)在课堂上经常是被忽略的。它看起来似乎很简单。但是,这一层的某些方面有时需要非凡留意。物理层实际上就是布线、光纤、网卡和其它用来把两台网络通信设备连接在一起的东西。甚至一个信鸽也可以被认为是一个1层设备(参见RFC 1149)。网络故障的排除经常涉及到1层问题。我们不能忘记用五类线在整个一层楼进行连接的传奇故事。由于办公室的椅子经常从电缆线上压过,导致网络连接出现断断续续的情况。遗憾的是,这种故障是很常见的,而且排除这种故障需要耗费很长时间。

第2层是以太网等协议。请记住,我们要使这个问题简单一些。第2层中最重要的是你应该理解网桥是什么。交换机可以看成网桥,人们现在都这样称呼它。网桥都在2层工作,仅关注以太网上的MAC地址。假如你在谈论有关MAC地址、交换机或者网卡和驱动程序,你就是在第2层的范畴。集线器属于第1层的领域,因为它们只是电子设备,没有2层的知识。第2层的相关问题在本网络讲座中有自己的一部分,因此现在先不具体讨论这个问题的细节。现在只需要知道第2层把数据帧转换成二进制位供1层处理就可以了。

在往下讲之间,你应该回过头来重新阅读一下上面的内容,因为经验不足的网络治理员经常混淆2层和3层的区别。

假如你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP)。有关路由的一切事情都在第3层处理。地址解析和路由是3层的重要目的。

第4层是处理信息的传输层。第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有非凡的叫法,TCP的数据单元称为段(segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。理解第4层的另一种方法是,第4层提供端对端的通信治理。像TCP等一些协议非常善于保证通信的可靠性。有些协议并不在乎一些数据包是否丢失,UDP协议就是一个主要例子。

现在快要到7层了,我们很想知道第5层和第6层有些什么功能。可以说,它们都是没有用的。

有一些应用程序和协议在5层和6层。但是,对于理解网络问题来说,谈论这些问题没有任何益处。请大家注重,第7层是“一切”。7层也称作“应用层”,是专门用于应用程序的。假如你的程序需要一种具体格式的数据,你可以发明一些你希望能够把数据发送到目的地的格式,并且创建一个第7层协议。SMTP、DNS和FTP都是7层协议。

学习OSI模型中最重要的事情是它实际代表什么意思。

假如你是一个网络上的操作系统。在1层和2层工作的网卡将通知你什么时候有数据到达。驱动程序处理2层帧的出口,通过它你可以得到一个发亮和闪光的3层数据包(希望是如此)。作为操作系统,你将调用一些常用的应用程序处理3层数据。假如这个数据是从下面发上来的,你知道那是发给你的数据包,或者那是一个广播数据包(除非你同时也是一个路由器,不过,暂时不用担心这个问题)。假如你决定保留这个数据包,你将打开它,并且取出4层数据包。假如它是TCP协议,这个TCP子系统将被调用并打开这个数据包,然后把这个7层数据发送给在目标端口等待的应用程序。这个过程就结束了。

当要对网络上的其它计算机做出回应的时候,每一件事情都以相反的顺序发生。7层应用程序将把数据发送给TCP协议的执行者。然后,TCP协议在这些数据中加入额外的文件头。在这个方向上,数据每前进一步体积都要大一些。TCP协议在IP协议中加入一个合法的TCP字段。然后,IP协议把这个数据包交给以太网。以太网再把这个数据作为一个以太网帧发送给驱动程序。然后,这个数据通过了这个网络。这条线路中的路由器将部分地分解这个数据包以获得3层文件头,以便确定这个数据包应该发送到哪里。假如这个数据包的目的地是本地以太网子网,这个操作系统将代替路由器为计算机进行地址解析,并且把数据直接发送给主机。

这个过程确实简化了。但是,假如你能够按照这个进程来做,并且理解数据包在每一个阶段都会发生什么事情,你就征服了理解网络的相当大的一部分问题。当你开始讨论每一个协议实际上做什么的时候,一切都会变得非常复杂。假如你刚刚开始学习,在你理解复杂的事情在设法完成什么任务之前,请你先忽略这些复杂的事情。这样会提高你的学习热情。

在以后的文章里,我们将沿着网络栈向上旅行,通过讨论常用的协议和这些协议的工作原理来具体研究每一层。

  小结

?与其苦钻OSI模型中的各协议不如好好理解路由器和主机如何利用网络栈传输数据

?2层数据称作帧,不包含IP地址。IP地址和数据包在3层,MAC地址在2层。


?除非你是一台路由器,通过网络栈向上发来的数据是给你的,通过网络栈向下发送的数据是你发送的。


网友评论
评论
发 布

更多软件教程
  • 软件教程推荐
更多+
Greenfoot设置中文的方法

Greenfoot设置中文的方法

Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...

07-05

Egret UI Editor修改快捷键的方法

Egret UI Editor修改快捷键的方法

Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...

07-05

KittenCode新建项目的方法

KittenCode新建项目的方法

KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...

07-05

Thonny设置中文的方法

Thonny设置中文的方法

Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...

07-05

最新软件下载