6.1 OSI参考模型概述
计算机的整套理论是图灵提出来的,自此创办图灵奖(计算机类最高奖项)。科学远远比技术更重要。
OSI七层模型就是科学,就是理论,所以非常重要!
注:ISO是一个机构,OSI是一个协议:分别七层
6.2 OSI参考模型
注:在传输层中,什么是端到端,例如A,B两点通信就是端到端(从起点到终点),A,B之间可能存在C,D,E,F等节点。什么是可靠和非可靠,可靠就是TCP,不可靠就是UDP。数据链路层提供的是节点到节点的传输,例如A到E到F到G最后到B,A到E就是一个节点到节点的传输。网络层主要就是路由和寻址(ip),路由就是A到B走哪条路最好这样子,主要学的就是路由。
特点:1. OSI模型每层都有自己的功能集;2. 层与层之间相互独立又相互依靠;3. 上层依赖于下层,下层为上层提供服务。
应用层: 表示层:
会话层:
传输层:
网络层:
数据链路层:
物理层:
6.3 网络和交换机发展历程
6.3.1 网络发展历史
1946年2月14日,冯诺依曼研制世界第一台电子计算机ENIAC问世。1969年11月,美国国防部建立ARPAnet网络,只有4个节点。
注:中继器可以放大信号
集线器Hub的工作原理:
注:从part2进入的信号,经过信号放大以后从其他所有的接口发送出来
注:part5到part3,part4到part8连接了,就会形成无休止的环路;
注:还有一个问题就是安全性问题,例如Part2接了一个pc,发送了明文的用户名和密码,其他的接口只要使用抓包软件,就能截获这个用户名和密码,因为part2发的信息,会泛洪到其他所有的接口。
由于Hub有前边两个严重的问题,所以就有了一个划时代的设备:交换机
注:交换机的数据通信不是采用泛洪的方式,他是有专用的交换通道。例如PC1和PC2通信,PC3和PC4是收不到他们的通信的,最早的交换机是3com公司发明的。
注:后来又有广播域隔离的需求,会划分相应的VLAN,例如一台交换机的Part5和part6划分为一个VLAN,Part7和Part8划分为一个VLAN,这两个VLAN之间是不能通信的,如果想要通信怎么办,就需要在中间加一个路由器。
再后来我们再改进交换机,把路由器的功能集成到交换机里了,相当于两层交换机+一层路由,就是三层交换机;
那么三层交换机能不能替代路由器,完全替代?
多业务交换机:适用于多业务场景:
可编程交换机:
注:这是三层交换机连接起来的网络,对于传统架构,每台交换机都有转发层面和控制层面,做控制的一半就是路由协议,路由表。对于SDN只保留转发层面,有统一的SDN控制器做控制,不需要什么OSPF乱七八糟的路由协议。如果要实现防火墙等功能,只需要在控制器上开发相应的APP。(在园区网,企业网,SDN好像没啥用)
网桥就是两个口的二层交换机,中继器就是两个口的集线器;
6.4 TCP/IP模型
OSI的上三层全部整合到应用层,物理层和数据链路层全部整合为网际层,为了方便理解,也有人就说是5层,实际是4层;
TCP/IP 就是传输层的TCP和网络层的IP协议,通过这两个典型的协议代表整个协议簇;
每一层的功能和之前没有太大的区别:
以下是TCP/IP协议簇中相关的协议:
6.5 以太网
以太网是局域网中用的最多的协议;以下是局域网的四大协议,务必了解:
以太网拓扑:真是的局域网用的最多的是树型(园区网),环形偶尔也会用到;
什么是半双工 和 全双工?
半双工就是只能发或者收,全双工就是可以同时发和收;
注:一般现在都是全双工
如果网络是半双工的共享型的网络,例如下图的PC1和PC4可能同时发送数据,这时候就会产生冲突了,在这种情况下有种技术叫 CSMA/CD(冲突域与冲突避免技术),什么是冲突域?例如上面的PC1和PC4可能产生冲突,就是在一个冲突域里,或者一个Hub集线器,一次只能有一个端口发送数据,其他端口泛洪,如果两个端口发送数据了,就会产生冲突,所以一个Hub就是一个冲突域。什么是广播域,就是我发送数据,能收到数据的所有端口都在这个广播域里面。
注:等待时机,就是启动一个随机计时器,例如15s之后再发;
注:交换机是交换式网络,会根据mac地址进行转发,就不需要用CSMA/CD进行冲突检测了,不是共享式网络。什么是共享型网络,例如早期的在一根总线上的网络,或者Hub连接的网络
6.6 以太网帧格式
我们现在使用的就是TCP/IP协议栈,数据链路层控制数据帧在物理链路上传输,什么是是链路,链路就是A到B是一个链路,B到C又是一个链路,什么是端到端?端到端就是A到C。
以太网有两种标准,一种叫以太网Ⅱ,Etherneet Ⅱ,一种叫IEEE802.3.
目前90%都是用的以太网Ⅱ的帧结构;也有部分用的802.3格式,什么时候用802.3呢?交换机之间要进行数据的通信,STP协议的更新。
6.6.1 Etherneet Ⅱ
DMAC是目的MAC地址,SMAC是源MAC地址, Type表示类型,这个数据是什么数据,如果是0x0800,表示Data里面装的是IP,如果是0x0806,表示Data里面装的是ARP。(0x表示16进制)。帧的总长度最小是64字节,最大是1518字节。Type字段的长度(十进制)要大于等于1536.
6.6.2 IEEE802.3
Length字段长度(十进制)一定是小于1500的。十六进制是(0x05DC)。帧的所有总长度是64-1518B。FCS是检查帧校验序列;
6.6.3 数据帧的传送
数据帧的传送是基于目的MAC进行的数据帧的转发。
6.6.4 以太网地址 MAC地址/硬件地址
6.6.5 单播和广播
单播就是一个终端发,只有一个终端能收,单播在mac地址有个特点,就是第八位是0,广播地址就是目的地址全F的数据帧,所有的PC都能收到。
6.6.6 组播
把所有的终端分一个组,例如D和B在一个组里。从A发一个目的地址为组播的数据帧,这样,D和B就都可以收到,组播的MAC地址的第八位是1.
6.6.7 数据帧的发送和接收
6.6.8 总结
6.7 IP协议基础
在网络层有两个协议比较重要,分别是ICMP和ARP
6.7.1 IPV4报文的格式
注:只要记住IP报头是20个字节,里面核心的几个字段是干什么用的。版本就是IPV4/IPV6,头部长度就是IP报头到底有多长(没有啥作用),IOS字段,给IP报文打上标识,如果是6个1,就表示这个IP特别重要(没有啥作用),总长度就是表示IP字段的总长度,用处也不大,IP的标识,标志,分片也没有必要细说了。
前面的字段了解就可以了,也没有必要去记,重要的字段就是标黄的那些。TTL是从0-255,一共2^8位,表示一个ip报文最多可以在网络中传送经过255个三层设备,每经过一个三层设备,就会-1,当减到0,这个数据包就丢弃了。为什么三层没有二层的可怕,因为三层的ip里面就有防环的机制了,即使出现环路了,最多在网络里传255跳就会被扔掉。二层的数据帧里就没有类似TTL这种字段,如果出现二层环路,数据帧就会在网络里无限被传送。所以TTL字段的主要作用就是标识经过了多少跳。第二个是协议字段,类似于二层以太网帧的Type字段,表示的是IP数据里面封装的是TCP还是UDP。源IP地址和目的IP地址,也很重要。
6.7.2 IPV6报文的格式
注:DS就相当于TOS字段,做服务质量,控制的。,标识这个ip流量重不重要。多了一个流标签,IPV6可以吧相同源目的IP,相同端口的流量做一个标签,就是流标签,应用也不多。负载长度,就是头部的长度,下一个头部,报文头可以做无限的扩展。跳数限制就和IPV4的TTL一样,是八位。IPv6的IP地址长度增加了。
6.7.3 IP编址
6.7.4 网关
6.8 IP地址概述
注:十进制和二进制转换:
注:一个ip的地址是192.168.1.0,它的网络掩码255.255.255.0,表示 前24位是网络地址,后8位是主机地址。我们也可以写成192.168.1.0/24,/24就表示前24位是网络地址。
例如:192.168.1.1/16,192.168.2.1/16 这两个ip地址的子网段都是 192.168.0.0/16,说明都是一个网段的。 192.168.1.0 这个ip没写子网掩码,默认是/24的,因为它是192开头的,是C类的ip地址,所以我们默认是/24的。一般A类,默认/8,B类默认/16,C类默认/24。
三层网络里的单播、组播和广播
单播:PC1发送数据,只有PC2能收到。
广播:PC1发送一个数据,在它的广播域内都能收到。到一个路由器就相当于终止掉了。(路由器的接口可以隔离广播),有什么方法可以穿透路由器的?答案是有的,例如在DHCP里配置,可以把广播转成单播。
组播:可以把用户分个组,加入这个组的用户都能收到数据。
6.9 VLSM子网划分
6.9.1 为什么要进行子网划分?
假设一个公司网络内有500台主机,分配一个C类网IP地址不够用(254),因为一个C类的最多只可以容纳254个主机,如果分配一个B类的IP,又会产生大量的浪费。(65534个ip<减去广播号>,利用率不足1%).
6.9.2 标准ABC类网络问题?
IP地址空间的极大浪费;一个广播域PC数量过于庞大,网络可能被广播报文消耗大量的资源。(建议一个网段是254台,最多不要超过1000)
6.9.3 如何进行子网划分?
假如我有一个B类地址:172.16.0.0/16,一共有2^16个ip可供使用。
主要思想就是网络位向主机位借位,从而使得网络部分的位数加长:
原先是 172.16.0.0/16(/16表示16个网络位,还剩16个主机位),其中172.16是网络位,主机位就是0.1-255.254,因为0.0 和255.255分别代表网段地址和广播地址,这两个地址是需要单独去除的。
例1:(我们前16个网络位用16进制,后16个主机位用2进制表示)
172.16.0000 0000. 0000 0000/16 (16个网络位)
向主机位借一位,划分子网如下:
子网1:172.16.0000 0000. 0000 0000/17 主机:172.16.0000 0000. 0000 0001 - 172.16.0111 1111. 1111 1110
写成完整的16进制:
子网1 :172.16.0.0/17 (17个网络位),主机:172.16.0.1 - 172.16.127.254
子网2:172.16.1000 0000. 0000 0000/17 主机:172.16. 1000 0000. 0000 0001 - 172.16.1111 1111. 1111 1110
写成完整的16进制:
子网2:172.16.128.0/17 (17个网络位),主机:172.16.128.1 - 172.16.255.254
我们有计算子网1主机号的简便方法:
172.16.0.0/16 划分两个子网
子网1:172.16.0.0/17 (这个子网应该可以直接写出来,/17不一样)
主机号:172.16.0.1 - 172.16.子网2的主机位-1 (因为首先需要计算出子网2,原先是128.0 ,减1后变成127.254) 172.16.0.1-172.16.127.254
子网2:172.16.128.0/17
例2:将192.168.1.0/24这个C类地址进行子网划分,网络位向主机位借1位
例3:计算一下172.16.1.0/27这个子网的网络号、广播号、及可用IP地址
注:简便方法:
172.16.1.0/27
掩码是/27,说明网络位有27位,主机位有32-27=5位。
每个子网有5位的主机位,每个子网主机有2^5=32个。
子网1:172.16.1.0/27 可用ip:172.16.1.1-172.16.1.30 (除去最后一个广播地址31,能用的1.1-1.30)
子网2:172.16.1.32/27
子网3:172.16.1.64/27
...
可推理得出以下公式:(可以用来检验结果)
6.9.4 公有ip及私有ip