OSI和封装学习笔记
2009-01-11 22:28
232 查看
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了 ,这个就是上层和下层是怎么相互配合工作的,都是一层映射一层~这样正确的封装
上三层:应用层(用户接口)、
表示层(数据表示、加密等特殊处理过程)、
会话层(保证不同应用间的数据区分)
所谓高层就是两端应用程序的事情,对于高层,它们是不懂下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了 ,这个就是上层和下层是怎么相互配合工作的,都是一层映射一层~这样正确的封装
相关文章推荐
- JAVA学习笔记--封装
- (JAVA SE 学习笔记)Java.SE.第009讲.面向对象之封装
- onvif学习笔记7:一个C++封装的onvif代码的阅读笔记
- iOS学习笔记--封装倒计时按钮
- Java学习笔记十八:Java面向对象的三大特性之封装
- 学习笔记:boost iostream filter封装openssl EVP
- 【python学习笔记】使用类封装实现贪吃蛇
- 威克诺CCNA学习笔记OSI第八章
- struts2——学习笔记2 通过form表单方式或者js的方式提交请求,封装boolean值的问题
- Javascript学习笔记九——prototype封装继承
- 学习笔记 Tianmao 篇 使用简单封装后的自定义OkHttp 获取json被GSON解析后的数据
- Java学习笔记(八)——封装
- 学习笔记之深入浅出MFC 第8章 C++重要性质-----类封装
- Java学习笔记(三)—— JDBC封装
- 文件上传与下载学习笔记(2)---多文件、单文件、多个单文件函数封装
- JS学习笔记-OO疑问之封装
- 韩顺平 javascript教学视频_学习笔记19_js面向对象三大特征(封装,继承,多态)
- oc学习笔记-set和get函数 基础(Foundation)面向对象之封装方法
- 【itercast OSI 七层网络模型 学习笔记】Layer 1 物理层
- MFC学习笔记(4)——Windows程序的类封装 下