以下内容来自于小码哥"网络协议从入门到底层原理"
计算机之间的连接方式:
网线直连, 同轴电缆, 集线器, 网桥, 交换机
-- 连接的设备必须在同一网段
-- 连接的设备处在同一广播域路由器:
-- 可以在不同网段之间转发数据
-- 隔绝广播域(不同网段之间的广播是发不过去的)
主机发数据之前, 首先会判断目标主机的ip
地址跟它是否在同一个网段
1> 在同一个网段: ARP
2> 不在同一个网段: 通过路由器转发数据
MAC
地址
每一个网卡都有一个6字节(48bit)的MAC地址(Media Access Control Address)
-
全球唯一, 固化在了网卡的
ROM
中, 由IEEE802
标准规定
-- 前3字节:OUI(Organizationally Unique Identifier)
, 组织唯一标识符(代表网卡的生产厂家)
✔️ 由IEEE
的注册管理机构分配给厂商-- 后3字节: 网络接口标识符
✔️ 由厂商自行分配
MAC
地址的表示格式
Windows
✅40-55-82-0A-8C-6DLinux, Android, Mac, iOS
✅40:55:82:0A:8C:6DPacket Tracer
✅4055.820A.8C6D当
48
位全为1
时, 代表广播地址
✅FF-FF-FF-FF-FF-FF当不知道对方主机的
MAC
地址时, 可以通过发送ARP
广播获取对方的MAC
地址
-- 获取成功后, 会缓存IP
地址,MAC
地址的映射信息, 俗称ARP
缓存
-- 通过ARP
广播获取的MAC
地址, 属于动态(dynamic)
缓存
✅存储时间比较短(默认是2分钟), 过期了就自动删除相关命令
arp -a[主机地址]
: 查询ARP
缓存
arp -d[主机地址]
: 删除ARP
缓存
arp -s 主机地址 MAC地址
: 增加一条缓存信息(这是静态缓存, 存储时间比较久, 不同系统的存储时间不同)
IP
地址
-
IP
地址(Internet Protocol Address)
: 互联网上的每一个主机都有一个IP
地址
-- 最初是IPv4
版本, 32bit
(4字节), 2019年11月25日, 全球的IP
地址已经用完
-- 后面推出了IPv6
版本, 128bit
(16字节)
IP
地址的组成
IP
地址由2部分组成: 网络标识(网络ID
), 主机标识(主机ID
)
-- 同一网段的计算机, 网络ID
相同
-- 通过子网掩码(subnet mask)
可以计算出网络ID: 子网掩码&IP
地址计算机和其他计算机通信前, 会先判断目标主机和自己是否在同一网段
-- 同一网段: 不需要路由器转发
-- 不同网段: 需要路由器转发
IP
地址的分类:
A
类地址: 默认子网掩码是255.0.0.0
B
类地址: 默认子网掩码是255.255.0.0
C
类地址: 默认子网页码是255.255.255.0
D
类地址: 以1110
开头, 多播地址E
类地址: 以1111
开头, 保留为今后所用只有A\B\C类地址才能分配给主机
-- 主机ID
全为0
, 表示主机所在的网段
-- 主机ID
全为1
, 表示主机所在网段的广播地址
A
类地址
网络
ID
--0
不能用,127
作为保留网段. 其中127.0.0.1
是本地环回地址(Loopback)
, 代表本机地址
-- 可以分配给主机的
✔️第一部分的取值范围:1~126
主机
ID
-- 第2,3,4
部分的取值范围是0~255
-- 每个A
类网络能容纳的最大主机数是:256 * 256 * 256 -2 = 2的24次方 - 2 = 16777214
B
类地址
网络
ID
-- 可以分配给主机的
✔️第1
部分的取值范围:128~191
✔️第2
部分的取值范围:0~255
主机
ID
-- 第3,4
部分的取值范围是0~255
-- 每个B
类网络能容纳的最大主机数是:256 * 256 -2 = 2的16次方 - 2 = 65534
C
类地址
网络
ID
-- 可以分配给主机的
✔️第1
部分的取值范围:192~223
✔️第2,3
部分的取值范围:0~255
主机
ID
-- 第4
部分的取值范围是0~255
-- 每个C
类网络能容纳的最大主机数是:256 -2 = 254
子网掩码的CIDR
表示方法
CIDR(Classless Inter-Domain Routing)
: 无类别域间路由子网掩码的
CIDR
表示方法
--192.168.1.100/24
, 代表子网掩码有24
个1
, 也就是255.255.255.0
--123.210.100.200/16
, 代表子网掩码有16
个1
, 也就是255.255.0.0
为毛要进行子网划分
如果需要让
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.0/16~191.100.255.254
-- 多出65034
个空闲的IP
地址, 这种情况就属于极大的资源浪费如何尽量避免浪费
IP
地址资源?
-- 合理进行子网划分
等长子网划分
变长子网划分
超网
- 超网: 跟子网反过来, 它是将多个连续的网段合并成一个更大的网段
- 需求: 原本有
200
台计算机使用192.168.0.0/24
网段, 现在希望增加200
台设备到同一个网段
--200
台在192.168.0.0/24
网段,200
台在192.168.1.0/24
网段
-- 合并192.168.0.0/24
,192.168.1.0/24
为一个网段:192.168.0.0/23
(子网掩码往左移动1
位)
合并网段的规律
假设
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.0/16
是一个A
类子网
--200.100.0.0/16
是一个C
类超网