OSI七层模型在现网环境中已很少用到,使用最多的是TCP/IP协议栈。但在学习研究中先搞清楚OSI的七层模型,因OSI区分较细也便于自身能快速理解。
1.OSI模型中设备的分类:
一、我能识别二层帧头和二层帧尾信息就称为二层设备。
二、我能识别二层帧头和帧尾信息同时也能识别三层网络就称为三层设备。
三、我能识别你二层帧头帧尾的和我还能识别你的三层报头同时识别你的四层报头就称为四层设备。
四、PC称为七层设备因为能安装各式各样的应用程序,接收到数据帧所有的帧头你能识别,所以PC是OSI中智能性最强的设备。
2.对于智能设备通过两个层面来研究:
一、是控制层面。对于智能设备来说是如何获得转发表项信息的,是如何填充MAC地址表(具体见第4点)。对于交换机里面有一张MAC地址表也叫CAM表(内容可寻址存储器),是基于ASIC(应用专用集成电路)芯片调用的表,交换机查这个表能基于线速转发就是近乎没有任何延迟。
路由器也有一张转发表叫IP路由表,是基于CPU来调用的。但转发效率是极低的,会消耗CPU资源并且基于软件来转发是有延迟的。
二、是数据层面。就是设备进行数据的转发。
3.MAC地址包含哪些参数:
每台交换机switch 的控制层面里面都有一个MAC地址表,每个MAC地址表的表项里面都包含三个参数:主机的MAC地址。交换机连接主机的接口。该接口所属的VLAN。
4.填充MAC地址表有两种方式:
交换机(switch)刚启动时里面的MAC地址表项是空的,有两种方式填充:
一、让管理员登录交换机手工配置这个叫做静态MAC地址表项的获悉,是优先级最高的,被攻击的时候才使用这种方法例如:ARP攻击。
二、自动学习MAC地址表项就是switch通过一个接口收到一个数据帧,我根据帧的源MAC地址以及接收接口以及该接口所关联的VLAN这三样信息做一个绑定就行成发送着主机的MAC地址信息,自动学习有个条件,当你交换机的接口运行生成树协议的时候你的生成树接口状态至少是Learning和Forwarding的时候才具备学习能力。连接PC的接口都是DP全是Forwarding都是可以自动学习的。但是MAC地址有个老化计时器(Aging Timer)时间为300s。
5.在数据层面根据帧头的DMAC看需要把这个帧发给谁就查找MAC地址来匹配DMAC信息看通信目的地在我的哪个接口会出现三种情况:
一、没有找到对应表项那就是Hub的泛洪形式转发,这个称为叫未知单播帧的泛洪。
二、如果交换机的接口接的是一台集线器,集线器也会泛洪给交换机会收到两个包叫重复包就会丢包。
三、精确转发。根据帧的DMAC我能够找到对应的MAC地址表项在根据这个表项的出接口把流量做一个精确转发,发送给目的地。一个收一个发这就是正常转发。
6.交换机的接口可以分割冲突域,交换机每个接口连接的是一个独立的冲突域。
7.数据流量分为三类:
一、单播(Unicast)是1对1的一个人发一个人收。
二、组播(Multicast)是1对多的就像主播直播一样一个人直播多个人看,特点是不带有强制性的,想收就收不想收就不收,接收流量的人可以分部在不同的地址位置。
三、广播(Broadcast)一个范围内的一对所有就像是学校的大喇叭,一个范围指的就是一个网络(广播域),特点是带有强制性的必须要收。
这三种流量对于地址而言,在以太网环境中要发送这三种流量的特点:
一、单播流量SMAC和DMAC都是单播地址。
二、对于组播它的SMAC依旧是单播地址,DMAC是组播地址。
三、广播流量它的SMAC还是单播地址,目的地址是广播地址。
这三种流量的特点是SMAC一定是单播地址。基于这点交换机收到一个帧你要基于SMAC学习地址表项,交换机学到的MAC地址表项肯定是单播表项,所以当你交换机收到一个组播或广播帧查不到对应的表项只能以泛洪的形式来转发。得出一个结论星型拓扑内的所有成员共处同一个广播域。
8.三种流量对应三种地址:
一、单播MAC地址第二个16进制数为偶数。从左到右第8位称为组播位。这个位置0代表单播地址,这个位置1代表组播地址。单播地址接口可以使用,组播地址接口不能使用。
二、组播地址第二个16进制数为奇数,00100.5E开头是IPV4对应的组播地址。3333+IPV6后32位是IPV6对应的组播地址。
三、广播地址为所有位全为1的就是全F。
9.PC永远都是单播地址,MAC地址表项也是基于SMAC,所以switch学习到的地址永远为单播地址。
对于组播流量和广播流量switch学不到相应的地址表项所以永远只能以泛洪的形式转发。
10.泛洪与广播是指两类事:
广播:是由一股流量一个人发,发给所有目的的,它的特征是这股流量的目的地址是一个广播地址,以太网环境中广播的MAC地址是FFFF.FFFF.FFFF全F。
泛洪:指的是一台设备的转发机制,他指的是这台网络设备收到数据帧之后我把帧复制成多份然后除了接收接口以外的每个接口一份一份的发送走。
11.广播域(Broadcast Domain)的解释:
一个广播能影响到的所有设备的集合叫广播域,交换机所连接的计算机连同交换机在内星型网络中的所有成员属于广播域。
广播域的危害:
一个广播域就是一个网络,广播域越小越好,被恶性广播流量影响的概率越小,网络的可用性就越来越高反之广播域越大,受到莫名其妙的广播越多,广播是限制不了的,它会消耗你的带宽,个人的CPU内存消耗也会增多。
12.MAC2层地址通信的方式:
例:PC--A---R1----R2---PC--B。PCA 和PCB不在同一个广播域内,这时PCA访问PCB。
通信的过程:SIP是A,DIP是B。SMAC是A,DMAC是R1左连接口的MAC地址,这时R1会查表把包发给R2,这时包在发送时SDIP都没有变,SMAC变成R1右边MAC,DMAC变为了R2左边MAC。R2在查路由表把包发给PCB,这时这个包SMAC变为R2右连MAC,DMAC变为PCB的MAC地址,这就是通信。二层地址是每跨跃一个广播域都会发生变化的。
13.交换机具体转发数据是当你PC发送的数据到达交换机接口之后会做四件事:
一、是会先确定这个帧是否完整,因为这个帧不仅携带源目MAC,还携带FCS(帧校验序列),就是用来识别一个帧是正常还是被篡改的还是有发生冲突的。
二、是信号放大就是收到的帧通过几百米的传输变得比较模糊,这时只要当我判断出这个帧没有发生过篡改,没有发生过冲突是个完整的帧,我会把这个帧按照最原始的信号做一个还原。
三、是基于源MAC地址表来学习发送者的MAC地址表项。
四、是针对目的MAC地址在MAC地址表中找寻对应的表项。然后根据找寻结果做转发策略。转发策略是直接转发,泛洪,丢弃。
14.OSI七层协议栈的层与层之间层在一个服务的关系:
下层协议为上层协议提供服务,下层设备为上层提供服务。在设计网络也是先下后上,在给网络排错的时候也是先下在上。下面能用上面才能用。
15.应用层的详细说明:
承载的是应用程序支持程序的应用层协议也分为两类:
一类分为知名应用它的特征是能在官方的文档上查到这些协议的细节。
一类分为非知名应用。
知名协议与非知名协议最大的区别是知名协议往往能看得到能查阅到相关的参数而非知名应用打包在非知名应用中去了能使用它但不能了解它,从技术层面上知名应用对应的端口号都是固定的而非知名应用对应的端口号是随机的。
表示层的详细说明:
是因操作系统的不同来协商应用层。
会话层(session)的详细说明:
承载的是应用程序之间的逻辑连接,网络会话知道跟我连接的是谁,对方也知道我是谁,为表示层服务。
前三层统称为应用层不涉及发送数据。
16.传输层的详细说明:
应用程序产生的数据是不能直接发送的,发送之前要做两件事:
一、数据分片应用程序产生的数据流可能太大了,不能直接发送走,因为网卡有限,介质也有限,所以以太网中定义了一个名词叫MTU(最大传输单元),它是以字节为单位,描述任何一个网卡连接以太网一次性最多最大传输的最大承载是1500字节,就需要把数据切成一片一片的发。但现在数据中心的环境中当使用二代以太网的时候,由于数据中心都是使用万兆这种链路,因此这种1500的MTU会有传输瓶颈,所以提出一个新的概念叫Jumbo MTU,指的是你的MTU的值大于9000。
二、在每个数据切片前添加一个报头,里面来携带地址信息告诉网络设备流量到底要发给谁,在每一个切片前添加第一个报头(Header)叫4层报头,也叫传输层报头,这个数据报头也称为数据段(Segment)的段头,这个报头里面包含其中两个致关重要就是源目端口号。
传输层用得比较多的协议有两种:
一、TCP叫传输控制协议
二、UDP叫用户数据报协议
这两个协议都会干上面所说的两件事,都会跟据接口所连接的MTU去做一个数据切片,每个分片前面都会添加一个4层报头,报头通过源目端口号来描述流量都由哪个应用程序产生由哪个应用程序接收。
4层报头的数据称为数据段,这个数据段在OSI中称为PDU(协议数据单元),每一层都有对应的每一层的数据单元,4层所对应的就是数据段,但是不能被发送你还需要地址信息,地址信息就需要交给3层网络层加工。
17.网络层的详细说明:
网络层在TCP/IP协议中最经典的两款协议分别是:
一、IPV4
二、IPV6
这两款协议都会干一件事都会在segment的基础之上进一步的处理,给数据段添加源目地址信息,就在数据段前面添加3层报头,这个报头中就有源目3层地址,因为添加3层报头之后这个PDU就称为数据包(Packet)也叫数据包的包头。这个收包和发包指的是添加了3层报头的协议数据单元。
无论是IPV4还是IPV6都定义了两个东西, 一个是报头格式,还有一个是三层地址。
在三层报头中会定义两个地址信息:
一、SIP用来描述流量是由谁产生的。
二、DIP用来描述流量是由谁接收的。
无论你两个主机是否在同一个网络内,源目IP都是发送人和接收人接口的IP地址。发送者接口IP一定是源IP,接口者接口IP一定是目的IP。
数据包也不能够直接发送,因为你数据包只能够识别3层设备,而连接PC入网的是交换机是2层设备,为了让交换机顺利把流量发送给网关,则需要把数据包交给2层数据链路层来加工。
18.数据链路层的详细说明:
在数据链路层干的两件事:
一、在数据包的基础之上前面添加源目2层的帧头。这个帧头在以太网环境中就是源目MAC地址,方便交换机做MAC地址表的学习,方便交换机基于DMAC地址查看MAC地址表来做精确转发。
二、在数据包的后面添加一个2层帧尾(FCS),这个帧尾是为了让二层设备接收到数据帧能够确定这个数据帧是否完整。
因为在以太网环境中所有接口都有MAC地址,交换机通过对MAC地址做一个处理就能做网络内的精确转发这个PDU就称为叫数据帧(Frame)。
局域网协议或是广域网协议说的都是数据链路层的概念。
数据发送的流程:
数据帧不能够被直接发走,数据帧到达物理层,物理层把数据帧转变成Bit,Bit最终转变成脉冲信号,最终通过电缆或者光缆发送走。
这就是从7层到1层这样的一个过程也恰恰是数据流量从发送方发送流量的过程,期间中途的网络设备收到数据是脉冲信号,然后把脉冲信号转变成Bit,到2层转变成数据帧,交换机看帧头帧尾做一个转发,到路由器先看帧头的DMAC地址是否发给我接口,是就去掉帧头帧尾交给网络层处理。网络层路由器查看DIP查看路由表做一个网络间的转发,这就是数据通信的流程。
接收者收到数据也是脉冲信号还原成Bit交给物理层,变成数据帧交给数据链路层查看DMAC地址是否发给我的确定是了去掉帧头帧尾。数据包查看DIP是否发给自已,如果是去掉包头变成数据段交给传输层,在传输层查看目的端口确定交给哪个应用程序处理,这时段头就去掉了,然后把这些个数据分片重组变成数据流。最后数据流通过6层,5层的处理。最后应用程序通过输出的方式。
从7层到1层是数据发送。从1层到7层是数据接收。
OSI定义了一个对等层通信:
你OSI的每一层在跟对方通信的时候,相同的层之间的协议来彼此操作,比如我应用层的协议不会干预你表示层的事情,我网络层的协议不会干预你传输层的事情。
OSI定义了三个层的封装:
在传输层,网络层,数据链路层都要给数据的载核添加报头。这三个层添加报头的过程称为数据封装(Encapsulation)。封装不是给目的主机看的而是给网络设备看的,之所以要封装就是为了给数据在传输的时候能够携带源目地址信息,让网络设备知道发给谁,然后做一个精确转发。
而接收者收到数据之后要一层一层的去掉报头,查看核心内容,去掉报头称为数据解封装(Decapsulation)。
19.OSI是逐层封装指的是:
OSI中任何一个应用在发送流量之前要固定经过3次封装,这种就称为叫逐层封装。由于时代在快速的发展在慢慢的被淘汰,这个协议栈太过严谨,太过难以实现。早期基本厂商都能支持OSI协议栈的标准来生产硬件软件。取代它的是TCP/IP协议栈,因为它开放谁都能改动。
TCP/IP协议栈是由两个经典的协议组成:
一个是TCP传输控制协议。
一个是IP因特网协议。
TCP/IP协议栈它分为4层模型:
四、应用层。对应是OSI的上三层。
三、主机层到主机层。对应的是OSI传输层,中TCP/UDP,传输层中的数据大小的限制称为MTU最大传输单元。
二、因特网层。对应的是OSI的网络层,包含IPV4 IPV6 (ICMP ARP )工具,网络层,网络中需要被IP地址或者MAC地址标识的称为节点(Node)。
一、网络接口层。对应的是OSI的数据链路层和物理层。
OSI的协议和TCP/IP的协议完全是不一样的,你的协议你有,我的协议我有。但协议之间有很多相似之处。比如传输层用的TCP和UDP,TCP和UDP用的不是OSI中的协议,包括IPV4和IPV6,以太网都是TCP/IP中的协议。
TCP/IP相比OSI唯一的本质区别是:
封装机制不一样,TCP/IP要远高于OSI,它的封装是跃层封装指的是你TCP/IP应用程序产生的流量未必总要经过三次封装,有可能经过一次,有可能经过两次。例:Ethernet2|IPV4|TCP|HTTP|FCS这是标准的三次封装。Ethernet2|IPV4|OSPF|FCS,这是标准的两次封装。Ethernet2|ARP|FCS,这是标准的一次封装。
任何一个应用在产生流量的时候你这个流量在产生和被发送你经过需要封装的数量是由你这个协议自己决定的,不像OSI是逐层封装这就是OSI淘态的原因。当前使用的是TCP/IP,分析研究网络的时候是基于OSI,因为分层分的比较细便于研究。