网络中的OSI7层模型-封装解封装

OSI7层模型-封装解封装

OSI七层模型

ISO制定了一个OSI7层模式,如下:物理层为基层应用层为最高层
用户层(不存在))——用户使用才会产生数据
应用层——产生数据
表示层——对应用层来的数据进行进行压缩,解压缩,加密,解密(翻译官)
会话层——数据传输之前建立一个会话,传输过程中维持一个会话,传输结束终止这个会话
--------------上三层叫做系统层(主软件系统学)
--------------下四层叫做网络层(网络必学)
传输层——标明上层是哪些应用程序(流量控制(简称:流控))
网络层——寻址
数据链路层——起到一个承上启下的作用物理层——定义了一些设备的接口以及传输速率
物理层——
网络中的OSI7层模型-封装解封装

OSI七层重要层解释说明(这些记下来)

(用户层)——这个在模型中并不存在,但理论上一切数据皆产生于用户的使用,如果没有人使用,那么就不存在数据传输(个人理解)

  • 应用层
  • 表示层
  • 会话层
  • 传输层——
    (源端口号2字节)
    (目的端口号2字节)
    (SYN和ACK各1比特),端口号用来标明上层所使用的应用程序
  • 网络层——
    (源IP地址4字节)
    (目的IP地址4字节)
    (protocol字段1字节),protocol字段标明上层所使用哪些协议:
    1(ICMP)
    6(TCP)
    17(UDP)
    88(EIGRP)
    89(OSPF)
  • 数据链路层——
    (源MAC地址6字节)
    (目的MAC地址6字节)
    (type字段2个字节),标明上层(数据链路层是上层是网络层)所使用哪些协议:
    type字段:
    0x0800(表示上层是IPv4协议)
    0x0806(表示上层是ARP协议)
    0x86dd(表示上层是IPv6协议)
  • 物理层

TCP/IP协议栈

TCP/IP协议栈是OSI简化版的,因为OSI过于复杂,使用人并不是那么多。(注:并不是OSI复杂就不需要了解了,因为OSI是ISO定制的标准,所以网络想往深了学必须研究OSI的7层模型)
其中OSI的应用层,表示层,会话层简化为了TCP/IP的应用层,OSI的数据链路层和物理层统一成链路层的,其他不变,但TCP中的link层其实也可以拆分成物理层和数据链路层,所以 TCP/IP一共有4层或者5层都可以(物理和数据链路可分开可合并):
应用层
传输层
网络层
链路层
网络中的OSI7层模型-封装解封装

主机间的通信模型介绍

网络中的OSI7层模型-封装解封装

主机和主机间通信主要是通过 “集线器(hub)”实现的,这是一个很low的设备,可以理解为路由器的阉割版,现在已经淘汰,说明如下图:
网络中的OSI7层模型-封装解封装

第一张图翻译如下:
两种不同类型的主机到主机型号:
旧款:
-专有的
-由一家供应商控制的应用程序和软件组合
基于标准的模型:
-多供应商软件
-分层方法
-示例:OSI、tcp/ip

主机间通信(数据封装解封装)

用一个故事简要说明这7层模型的作用:
应用层:比如你现在用的是IOS系统电脑,人在北京,你女朋友用的是windows系统电脑,人在上海,你们想在电脑上通过QQ聊天,这时候你和你女朋友电脑上的QQ都属于应用层,比如你给你女朋友发一条消息:吃饭了吗?其实是应用层(qq)产生了数据,但只有应用层能通信吗? 不能!
表示层: IOS系统和windows系统产生的文字编码这些并不一样,如果没有编译和解编译的话对方看到的就是一串乱码,所以这时候需要“表示层”来编译IOS的内容并解编译为windows能识别的编码。
会话层:你给你女朋友发消息,但系统不知道你在给谁发啊,所以会话层的作用就是建立你和你女朋友的会话(可以理解为聊天框),传输过程中维持一个会话,传输结束终止这个会话。
传输层:标明上层是哪些应用程序,怎么标明呢,首先你电脑上肯定不止一个软件,而系统怎么知道你是用qq发的,即使你系统知道你是用qq发的,对面又怎么知道你是用qq发的呢,万一你用qq发了一句你吃饭了吗,对面从浏览器里面蹦出一句 你吃饭了吗, 多吓人啊。 所以 标明应用程序是用端口,每一个应用程序肯定都对应了一个端口,这个端口就用来指定应用程序的,然后对面根据这个端口过来的数据就知道你是用的什么应用程序了。
网络层:之前说了,你在北京给上海的女朋友发消息(源地址),而网络是负责吧你消息发送到另外一个区域(目的地址),假如你上海有很多个女朋友,你想发给小丽,但网络不知道你要发的消息是给上海小丽这个女朋友的。 上面说的区域就是IP地址确定的,可以根据你的IP地址知道你在哪个区域,但不能确定你是谁。 所以网络层的作用就是寻址,根据IP找到你所在的大致位置。
数据链路层:之前说了,网络层可以把你消息发送到一个指定区域(通过IP),并不能确定你发给谁,但每个设备都有一个MAC地址,这个MAC地址是全球唯一的,所以MAC地址可以确定你是谁(MAC就相当于身份证,你的位置是IP地址,你从北京到上海,只是位置(IP)变了,但MAC不会变),数据里面有源mac地址和目的mac地址,最终这个数据通过你上海女朋友小丽的mac地址(目的mac地址)收到由你(源mac地址)发送的消息(同理,对方也是通过你mac地址知道你是谁的)。
物理层:就是传送数据的,数据通过网线传输,但计算机只认识0和1,而网线不认识0和1啊,所以对于网线而言:高点频是1,低电频是0。 传输的数据是 应用层-数据链路层准备好的数据,上面每一层都会封装一个数据 ,所以你发给你女朋友的一个信息,就会产生上面封装的6个包,而你女朋友那边,就需要一层层的解开这6个封装(称为解封装),上面的6个包如下图:

网络中的OSI7层模型-封装解封装
网络中的OSI7层模型-封装解封装
静态图看着费尽下面来看看这张动态图:
网络中的OSI7层模型-封装解封装

名词解释

FCS解释:FCS (帧校验序列(帧尾))
FCS:Frame Check Sequence(帧校验序列),俗称帧尾,即计算机网络数据链路层的协议数据单元(帧)的尾部字段,是一段4个字节的循环冗余校验码。
源节点发送数据帧时,由帧的帧头和数据部分计算得出FCS,目的节点接收到后,用同样的方式再计算一遍FCS,如果与接收到的FCS不同,则认为帧在传输过程中发生了错误,从而选择丢弃这个帧。
FCS提供了一种错误检测机制,用来验证帧在传输过程中的完整性。
链路层:数据链路层分成LLC(Logical Link Control,逻辑链路控制)和MAC(Media Access Control,媒介接入控制)两个子层。

单位说明

计算机智能认识数字0和1
一个0或者一个1叫做一个比特(bit)
8bit叫做一个字节(Byte)
数据存储的最小单位是比特(bit),其计量基本单位是字节(Byte。简称B)
1B=8b
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
1EB=1024PB

家用宽带单位是100Mbps,注意单位是小b(bit),而存储最小单位是Byte,所以下载时看到的单位也是MB,所以宽带需要转换÷8(8bit叫做一个字节(Byte)),所以100Mb宽带实际上只有12.5MBps。

32G内存卡之类的为什么只有二十八九G,是因为批量生产单位是1000KB(为了节约成本,1024KB工艺复杂很多),而电脑识别的是1024KB,所以看到的会比实际的空间小。