免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1556 | 回复: 0
打印 上一主题 下一主题

分享: CCNP中OSI封装学习笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-09 14:30 |只看该作者 |倒序浏览
下面为大家分享一下我在北大青鸟学习到的关于CCNP中OSI模型的封装学习笔记:
OSI模型
上三层:应用层(用户接口)、
        表示层(数据表示、加密等特殊处理过程)、
        会话层(保证不同应用间的数据区分)
所谓高层就是两端应用程序的事情,对于高层,它们是不懂下4层的,也就是低层的具体数据是怎么传输的
下四层:传输层(可靠或不可靠的数据传输、数据重传前的错误纠正)、
        网络层(提供路由器用来决定路径的逻辑寻址)、
        数据链路层(将比特组成字节进而组合成祯、用MAC地址访问介质、错误发现但不能纠正)、
        物理层(设备间接受或发送比特流、说明电压、线速和线缆等)
真正的网络中的数据在网络中传输是由下4层,也就是低层来实现的,也就是低层来实现的,高层只是实现网络中的各种应用~

PDU(protocol data unit):每一层使用自己层的协议和别的系统的对应层互相通信,协议层的协议在对等层之间交换的信息叫协议数据单元。
数据在每一层的叫法
上层(应用层、表示层、会话层)       :message  信息、数据
传输层(transport layer)            :Segment  段、网段
网络层(Network layer)              :packet   数据包、数据分组
数据链路层(Data-link layer)        :frame    帧
物理层(Physical layer)             :bit      比特(8个比特组成1个字节、字节合成frame)
数据封装与解封装
封装(encapsulate/encapsulation):数据要通过网络进行传输,要从高层一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议报头中,这个过程叫-封装。
封装分为:切片和加控制信息
解封装:上述的逆向过程
现在简单的说下封装
比如现在,我用QQ和 Reborn 聊天,这个模型,首先我要在QQ上发了一条“hello,Reborn”这个在QQ的应用程序做的这个“hello,Reborn”的动作,就是在应用层上完成的,但是怎么才能把“hello,Reborn”这几个字发给在网络另一端的Reborn呢?假设QQ这个应用程序在传输层上是用的TCP做协议的,那么在传输层,就用TCP做报头,在“hello,Reborn”等高层数据的前面进行封装。并且这个时候进行数据的分段,和标记上顺序号,当然这些都是在TCP报头上完成的,到了传输层,目前的状况是TCP报头+hello,Reborn等高层数据,大家看到,TCP报头被加在了高层数据前面,这个就封装了一次,因为TCP被加在了前面。这个就是传输层的PDU(数据协议单元),这个传输层的PDU就叫做段(segment)。网络层,在网络层所有来自网络层的以上数据,也就是TCP+hello,Reborn等高层数据,再次被封装在其前面加上IP报头,IP用与寻址,这样才能找到Reborn那台PC的IP地址。到了网络层,现在数据变成了IP报头+TCP+hello,Reborn等高层数据 ,在网络层的PDU叫做数据包,packet,又会来到下面的一层,叫做数据链路层(data-link layer),现在的数据是这样的了以太帧+IP报头+TCP报头+hello,Reborn等高层数据,这个时候的PDU叫做帧,以太帧+IP报头+TCP报头+hello,Reborn等高层数据,这些在第2层的frame再次进入最低层,也就是物理层,进行信号等等的编码,以0101010010这样的bits流进行在网络介质上传输给Reborn。
解封装
以太帧+IP报头+TCP报头+hello,Rebron等高层数据,这些数据在Rebron这边开始解封装 这是个第2层的frame,首先在Rebron这边去掉以太帧 IP报头+TCP报头+hello,Rebron等高层数据,到了网络层,然后再去掉 IP报头,TCP报头+hello,Rebron等高层数据到了传输层,再去掉TCP报头,最后,在应用层的QQ程序里,Reborn终于收到了我发的 “hello,Rebron”的消息。 当然在业界都是用TCP/IP模型,没用OSI模型,但是封装解封装都是一个原理。
大家都知道了封装与解封装,那么具体是怎么操作的呢?上层和下层是怎么配合工作的呢?我怎么知道封装给下一层的哪一个报头呢?hello,Rebron等高层数据,这高层的数据流在进入传输层时,假设QQ聊天是用的TCP ,那么QQ这个应用程序本身已经对下层,也就是传输层做了映射,或有一个字段指向了传输层,通知它,请把我的数据封装到你的TCP协议里,传输层这个时候,在TCP里也有一个目的端口号,指向QQ应用程序,QQ的端口好像是4000,这样,在接受方,也就是Rebron,解封装的时候,传输层才知道把封装了的数据交给上层的哪个程序
下面分析传输层的TCP报头 ,我讲几个TCP报头里主要的结果字段,TCP报头首先是源端口,目的端口,然后有序列,检验和,等等 .当我们发消息或进行HTTP协议上网的时候,远端口是1024以上的一个随机端口 ,这样在传输层接封装的时候在传输层,才知道把我的数据交递给上层的http程序,通过什么知道的呢?正是通过这个在TCP报头里的目的端口号这样实现上下层配合工作。
下面讲述网络层,IP报头的封装
首先看看IP报头里有哪些字段,我只讲几个,如果讲完,时间不够,而且讲多了,有些人也茫然,IP报头里有源IP地址,目的IP地址,协议,等等等字段, 首先源地址当然就是我这台的外网地址了,那么在网络层进行封装的时候,用高层已经知道了Reborn的IP地址,所以加上这个IP地址, TCP报头里的协议,这个东西重要 ,协议字段,这正是指向(映射)到上层,也就是传输层的协议 ,在接封装的时候,网络层才知道我把我的数据交给传输层的哪个协议,这样也完成了上下两层的配合。
下面马上要进行数据链路层的封装,也就是刚才说的封装一个以太帧以太帧这个报头比较简单了,字段也少 有目的MAC地址,源MAC地址,还有协议或字段,以太网帧有几种就讲带协议的以太网帧,先讲以太网帧报头的协议字段,这个协议也是映射到上层的,也就是网络层的协议,是交给IP协议?还是ICMP?还是ARP?还是IPX?就是靠这个识别 在解封装的时候,也就是靠这个知道到底是交给上层的哪个协议 ,达到和上层的配合。
下面讲MAC地址,
那么我们怎么知道dailyMM的MAC地址呢??在网络层把自己的数据包交给下层数据链路层的时候,通过ARP找到daily的MAC地址 当然如果ARP表里已经存在了daily的MAC,那么就不用发ARP了 ,这个就是上层和下层是怎么相互配合工作的,都是一层映射一层~这样正确的封装
如有需要,还可以访问CCNP认证来了解更多的详情。
谢谢观赏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP