一、网络互联模型
为了更好地促进互联网的研究和发展,国际标准组织ISO在1985年制定了网络互连模型:OSI参考模型,具有7层结构
请求过程
二、计算机之间的通信
计算机之间通信的基础
- 需要得知对方的ip地址
- 最终是根据MAC地址(网卡地址),输送数据到网卡,被网卡接收
- 如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理
- 如果网卡发现数据的目标MAC地址不是自己,就会将数据丢弃,不会传递给上一层进行处理
关于ARP协议
- 广播,在同一网段中传播
- 在计算机第一次建立连接的时候,通过发广播的形式获取对方的MAC地址
- 目标mac地址全为1(FFFF.FFFF.FFFF)时,代表广播地址
计算机之间的通信方式
1. 网线直接连接(使用的是交叉线)
2. 同轴电缆(Coaxial)
- 半双工通信
- 容易冲突
- 不安全
- 中间断了,整个都瘫了
3. 集线器(Hub)
- 半双工通信
- 容易冲突
- 不安全
- 和同轴电缆一样,没有智商
4. 网桥(Bridge)
- 能够通过自学习得知每个接口那侧的MAC地址
-
从而起到隔绝冲突的作用
当网桥已经记录目标mac地址,并且确定在源mac地址的同一侧时,而且另一组数据目标mac地址和源mac地址都在另一侧时,左侧和右侧可以同时发送数据
例如:mac已经记录计算机6、计算机7、计算机3、计算机2的mac地址,此时如果计算机6给计算机7发送消息,计算机3给计算机2发送消息,他们可以同时发送
5. 交换机(Switch)
- 相当于接口更多的网桥
- 全双工通信
- 比集线器安全
-
但是,如果设备过多的话,ARP获取MAC地址阶段也会发送给所有设备,产生广播风暴;由于交换机连接的是同一网段的设备,ip地址会不够用
网线直连、同轴电缆、网桥、交换机的局限性
- 连接的设备必须在同一网段
- 连接的设备处在同一广播域
6. 路由器(Router)
计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段,在同一网段,则不需要由路由器进行转发,不在同一网段,交给路由器进行转发
路由器的作用:
- 可以在不同网段之间转发数据
- 隔绝广播域
路由器转发数据的过程
发数据之前,首先会判断目标主机的ip地址是否在同一网段
- 在同一网段:发送ARP广播,通过交换机/集线器传递数据
- 不在同一网段:通过路由器转发数据
- 给路由器的网关配置ip,给计算机配置网关ip
- 主机发送ARP广播获取网关的mac地址,并且传数据到网关
- 路由器会找到目标主机对应的网关,并发送ARP广播,获取目标主机的mac地址
- 网关将数据传给目标主机
三、MAC地址
简介
- 每一个网卡都有一个6字节(48bit)的MAC地址
- 全球唯一,固化在了网卡的ROM中,由IEEE802标准规定
- 前3个字节:OUI,组织唯一标识符,由IEEE的注册管理机构分配给厂商
- 后3个字节: 网络接口标识符,由厂商自行分配
- OUI查询
表示格式
- Windows:40-55-82-0A-8C-6D
- Linux、Android、Mac、iOS:40:55:82:0A:8C:6D
- Packer Tracer:4055.820A.8C6D
- 当48位全为1时,代表广播地址
FF:FF:FF:FF:FF:FF
MAC地址操作
- 查看MAC地址:
Windows:ipconfig /all
unix:ifconfig
MAC地址的获取
当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
- 获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
- 通过ARP广播获取的MAC地址,属于动态缓存,存储的时间比较短(默认是2分钟),过期了就自动删除
相关命令
-
arp -a [主机地址]
:查询ARP缓存 -
arp -d [主机地址]
:删除ARP缓存 -
arp -s 主机地址 MAC地址
:增加一条缓存信息(静态缓存,存储时间较久,不同系统的存储时间不同)
四、IP地址
IP地址:互联网上的每一个主机都有一个IP地址
-
最初是IPv4版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完
后面推出IPv6版本,128bit(16字节)
IP地址的组成
IP地址(Internet Protocol Address)由2部分组成:网络标识(网络ID)、主机标识(主机ID)
通过子网掩码可以得知网络ID、主机ID
同一个网段的计算机,网络ID相同
通过子网掩码可以计算出网络ID:子网掩码 & IP地址
主机ID为全0,表示主机所在的网段;主机ID为全1,表示主机所在网段的全部主机(广播)
可以尝试用ping给某个网段的全部主机发数据,如
ping 192.168.1.255
-
示例:
- IP地址:192.168.1.10 ,子网掩码:255.255.255.0 ,那么网络ID就是 192.168.1.10 & 255.255.255.0 ,即192.168.1.0,主机ID就是10。192.168.1..0网段共有 256 - 2个ip地址。
- IP地址:130.168.1.10,子网掩码:255.255.0.0,那么网络ID就是130.168.0.0,主机ID就是1.10;130.168.0.0网段共有 256 * 256 - 2个ip地址,130.168.0.0代表广播ip地址,130.168.255.255代表130.168.0.0这一网段内的所有IP地址
IP地址的分类
只有A、B、C类地址才能分配给主机
1. A类地址
默认子网掩码是255.0.0.0,主机ID占24bit,网络ID占8bit,网络ID以0开头
- 网络ID
0不能用,127作为保留网段(其中127.0.0.1)是本地环回地址,代表本机地址,因此可以分配给主机的第1部分 的取值范围是1~126 - 主机ID
第2、3、4部分的取值范围是0~255,因此每个A类网络能容纳的最大主机数是:256 * 256 * 256 - 2 = 2^24 - 2 = 16777214
2. B类地址
默认子网掩码是255.255.0.0,主机ID占16bit,网络ID占16bit,网络ID以10开头
- 网络ID
可以分配给主机的第1部分取值范围是:128~191,第2部分的取值范围是:0~255 - 主机ID
第3、4部分的取值范围是:0~255,每个B类网络能容纳的最大主机数是:256 * 256 - 2 = 2^16 - 2 = 65534
3. C类地址
默认子网掩码是255.255.255.0,主机ID占8bit,网络ID占24bit,网络ID以110开头
- 网络ID
可以分配给主机的第1部分的取值范围是:192~223,第2、3部分的取值范围是:0~255 - 主机ID
第4部分的取值范围是:0~255,因此每个C类网络能容纳的最大主机数是:256-2 = 254
4. D类地址
没有子网掩码,网络ID以1110开头,多播地址
第1部分取值范围是:224~239
5. E类地址
网络ID以1111开头,保留为今后使用
第1部分取值范围是:240~255
子网掩码的CIDR表示方法
CIDR:无类别域间路由
示例:
- 192.168.1.100/24 ,代表子网掩码有24个1,也就是255.255.255.0
- 123.210.100.200/16,代表子网掩码有16个1,也就是255.255.0.0
计算工具:https://www.sojson.com/convert/subnetmask.html
五、子网划分
为什么要进行子网划分
- 如果需要让200台主机在同一网段内
可以分配一个C类网段,比如192.168.1.0/24,共254个可用的IP地址:192.168.1.1~192.168.1.254,多出54个空闲的IP地址,这种情况并不算浪费资源 - 如果需要让500台主机在同一网段内
那就分配一个B类网段,比如191.100.0.0/16,共65534个可用的IP地址:191.100.0.1~191.100.255.254,多出65034个空闲的IP地址,这种情况属于极大的浪费资源
那么如何避免浪费IP地址资源?
合理的进行子网划分
子网划分
借用 主机位作子网位,划分出多个子网
- 等长子网划分:将一个网段等分成多个子网,每个子网的可用IP地址数量是一样的
- 变长子网划分:每个子网的可用IP地址数量可以是不一样的
子网划分器:http://www.ab126.com/web/3552.html
1. 等长子网划分
等分成2个子网
- A子网
网段:192.168.0.0/25
子网掩码:255.255.255.128/25
主机可用IP地址:192.168.0.1~192.168.0.126 - B子网
网段:192.168.0.128
子网掩码:255.255.255.128/25
主机可用IP地址:192.168.0.129~192.168.0.254
等分成4个子网
- 4个子网的子网掩码都是:255.255.255.192/26
- A子网的主机可用IP地址:192.168.0.1~192.168.0.62
- B子网的主机可用IP地址:192.168.0.65~192.168.0.126
- C子网的主机可用IP地址:192.168.0.129~192.168.0.190
- D子网的主机可用IP地址:192.168.0.193~192.168.0.254
等分成8个子网
- 8个子网的子网掩码都是:255.255.255.224/27
- A子网的主机可用IP地址:192.168.0.1~192.168.0.30
- B子网的主机可用IP地址:192.168.0.33~192.168.0.62
- C子网的主机可用IP地址:192.168.0.65~192.168.0.94
- D子网的主机可用IP地址:192.168.0.97~192.168.0.126
- E子网的主机可用IP地址:192.168.0.129~192.168.0.158
- F子网的主机可用IP地址:192.168.0.161~192.168.0.190
- G子网的主机可用IP地址:192.168.0.193~192.168.0.222
- H子网的主机可用IP地址:192.168.0.225~192.168.0.254
B类子网划分
A类子网划分
等分成4个子网的广播地址
2. 变长子网划分
如果一个子网地址块的长度是原网段的(1/2)^n,那么
- 子网的子网掩码,就是在原网段的子网掩码基础上增加n个1
-
不等长的子网,它们的子网掩码也不同
假设上图是对192.168.0.0/24进行变长子网划分
C网段:子网掩码是255.255.255.128/25
B网段:子网掩码是255.255.255.192/26
A网段:子网掩码是255.255.255.224/27
D网段:子网掩码是255.255.255.252/30
E网段:子网掩码是255.255.255.252/30
思考题
这2台设备能正常通信么?
答案:不能
解析:当一台主机给另外一台计算机发消息的时候,要判断另外一台计算机和自己是否在同一网段,即利用自己的子网掩码和另外一台计算机的ip地址进行&操作
当计算机0给计算机1发送消息时
计算机0的网段:192.168.0.10 & 255.255.255.0 = 192.168.0.0
计算机1的网段:192.168.10.10 & 255.255.255.0 = 192.168.10.0
得知计算机1和自己并不在同一网段,因此不能直接通信当计算机1给计算机0发送消息时
计算机1的网段:192.168.10.10 & 255.255.0.0 = 192.168.0.0
计算机0的网段:192.168.0.10 & 255.255.0.0 = 192.168.0.0
得知计算机0和自己在同一网段,可以给计算机0发送消息,但是计算机0在给计算机1回复消息的时候,发现计算机1和自己不在同一网段,不能回复消息,因此也无法正常通信
六、超网
跟子网反过来,它是将多个连续的网段合并成一个更大的网段
1. 合并两个网段
需求:原本有200台计算机使用192.168.0.0/24网段,现在希望增加200台设备到同一网段
- 200台在192.168.0.0/24网段,200台在192.168.0.0/23网段
-
合并192.168.0.0/24、192.168.1.0/24为一个网段:192.168.0.0/23(子网掩码往左移动1位)
思考
192.168.0.255/23这个IP地址,可以分配给计算机使用么?
答:可以
解析:
192.168.0.255/23,主机部分2进制值为011111111,不是全0(网段),也不是全1(广播),因此可以分配给计算机使用
另,广播ip地址为192.168.1.255,不能给计算机使用
2. 合并4个网段
子网掩码向左移动2位,可以合并4个网段
将192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24合并为192.168.0.0/22网段
思考
下面2个网段,能通过子网掩码向左移动1位进行合并么?
答:不可以
合并网段的规律
-
假设n时2的k次幂(k>=1),子网掩码左移k位能够合并n个网段
假设n时2的k次幂(k>=1),如果第一个网段的网络号能被n整除,那么由它开始连续的n个网段,能够通过左移k位子网掩码进行合并
例如:
- 第一个网段的网络号以二进制0结尾,那么由它开始连续的2个网段,能通过左移1位子网掩码进行合并
- 第一个网段的网络号以二进制00结尾,那么由它开始连续的4个网段,能通过左移2位子网掩码进行合并
- 第一个网段的网络号以二进制000结尾,那么由它开始连续的8个网段,能通过左移3位子网掩码进行合并
判断一个网段是子网还是超网
- 判断该网段的类型,是A类网络、B类网络、C类网络,默认情况下,A类网络子网掩码的位数是8,B类网络子网掩码的位数是16,C类网络子网掩码的位数是24
- 如果该网段的子网掩码位数比默认子网掩码多,就是子网
如果该网段的子网掩码位数比默认子网掩码少,则是超网
例
25.100.0.1/16是一个A类子网
200.100.0.1/16是一个C类超网