您的位置:首页 > 其它

CCNA学习指南第二章——OSI七层模型

2012-01-15 11:56 246 查看
我写东西不喜欢很枯燥的写很多概念性或者很多技术性的东西,因为每每我看到其他人的这些文章的时候,尽管能学到东西,但是看的过程很辛苦,所以,我写东西细化用自己的话,或者说通俗的语言来表达我自己的想法,记录自己每天学习到的东西,希望能跟大家一起学习,一起进步……
今天看了OSI七层模型,感觉或以匪浅,尽管上个学期学过了计算机网络这门课程,但是,当时简直是走马观花的学了一遍,看了一遍书,对于很多问题都没有深究。今天再看一遍相关的内容的时候,倒觉得眼前一亮。我是通过两个例子来理解了OSI这七层的工作原理的,尤其是第二层(数据链路层)跟第三层(网络层),对于其他的五层,原理性的东西就不多说了,也说不清楚,我最想表达的就是自己对于在数据链路层的数据帧帧和网络层的分组的理解,我们可以先看一下下面的这个图:



PC0和PC1(假设在同一个网段)两者需要进行通信,此时,PC0发送数据,经过应用层,表示层,会话层,数据在传输层开始成为数据报,然后继续向下层封装,在网络层成为分组,因为在上面几层,要访问的目的IP都知道了(有可能是因为PC0直接输入的IP地址,也有可能是通过域名解析得到PC1的IP),可以在分组的目的IP字段加上此IP地址。当分组到了数据链路层的时候,必须要将分组封装成帧啊,在帧中,需要填上目的MAC地址,但是PC0此时并不知道PC1的MAC地址啊,怎么填这个字段呢?没关系,我们有ARP协议。在PC0需要这个目的MAC地址的时候,他会向外广播:“谁是PC1,告诉我你的MAC地址”。其实,PC1就发现PC0在呼唤自己,就会回应:“我是PC1,我的MAC地址是XXXX”。于是,PC0就得到了PC1的MAC地址了,将这个MAC地址填到目的MAC字段,就可以封装好数据帧了,往下传给物理层,通过线缆就可以传到PC1了。PC1对数据帧进行解封装,将数据层层传到上面,就会得到通信的数据。

这个问题比较简单,主要是理解ARP协议,然而我们可以再往深层一点的问题去考虑这个过程,下面又是一张图片:



也许会有朋友认为这个图很无谓,根本没必要在两台PC机之间加上诸如集线器,交换机和路由器之类的设备。确实是这样的,但是,我们旨在指出在这个有中间设备的情况下该如何分析数据的传输过程,如果图中的PC数量增多,也适用同样的分析原理。还是讨论PC0和PC1的通信问题。又到了数据链路层这一个层了,现在目的MAC地址应该是谁的呢?有三种可能,交换机,路由器的端口,以及PC1的。我们逐个进行分析。

首先分析交换机的,这个可能性我们可以排除,因为如果目的MAC地址是交换机的MAC地址的话,那么说明PC0要通信的对象就是交换机了,即数据到了交换机就不再往下传递了,也就不能跟PC1通信了。

那么会是PC1的MAC地址吗?也不会,为什么呢?我们这样分析,如果是PC1的MAC地址的话,PC0获得这个MAC地址也是通过ARP协议的,但是我们要知道,ARP协议是工作在数据链路层上的,在这个层上面,ARP包只会通过交换机来广播,根本不会通过路由器,也就是说这个ARP包根本不能到达PC1,充其量只能到路由器的那个端口(与PC0所在网段连接的端口)。

所以,就只剩下一个可能性了。那就是路由器与PC0所在网段连接的端口的MAC地址。刚才已经说了,ARP包只能到达路由器的这个端口,此时,路由器查看自己的路由表,发现他自己可以到达PC1(路由表上有这个表项),于是,他回复PC0的ARP请求包,说:“我可以到达PC1,我帮你转数据”。于是,将与PC0所在网段的接口的MAC地址发回给PC0,PC0在目的MAC地址上填上这个MAC地址,将数据发给了路由器。路由器再转发这个数据到PC1上面,于是便实现了这个通信的过程。

针对PC设备数量多的情况,也可以用同样的原理进行分析,举一反三。以上分析,如果有什么错漏的地方,本人非常欢迎大家指出,也希望跟大家多多交流,能获得 最大的进步!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: