-
IP地址十进制转换成二进制计算器
IP : 172.16.10.2 python >>> bin(172) '0b10101100' >>> bin(16) '0b10000' >>> bin(10) '0b1010' >>> bin(2) '0b10' 换算成二进制等于:10101100.00010000.00001010.00000010
子网掩码是什么?
IP:
10101100.00010000.00001010.00000010 ==> IP地址 : 172.16.10.2/24
11111111.11111111.11111111.00000000 ==> 子网掩码 : 255.255.255.0
10101100.00010000.00001010 ==> 网络地址 : 172.16.10.0
00000010 ==> 主机号: 2
- 子网掩码 : 用来标识一个IP地址的网络号个数。从左到右,属于网络号,子网掩码标记为1;属于主机号,子网掩码标记为0。
- 网络地址的计算方式,IP地址与子网掩码都转换成二进制,然后按位运算。
- 网络号主要是用来标识不同的局域网,网络号不同,代表不在同一个局域网。
IP:
10101100.00010000.00001010.00000010 ==> IP地址 : 172.16.10.2/16
11111111.11111111.00000000.00000000 ==> 子网掩码 : 255.255.0.0
10101100.00010000 ==> 网络地址 : 172.16.0.0
00000010 ==> 主机号: 2
- 结论 : 同一个IP地址,子网掩码不一样,按位运算可以得到不同的网络地址,那就说明两个IP地址不在同一个局域网,也就直接决定了两台计算机的通信方式。
IP地址的分类
- 网络地址占位越少,代表可以划分的局域网越少,那么主机号的占位就越多。例如A类的网络地址,主机只有126个。
- 一般中小型企业,都是用的C类的IP地址,可以划分多个局域网,每一个局域网都可以配一个IP地址,但是每一个局域网内包含的主机个数较少。
- C类的IP地址(192.168.4.125/24),一般网络地址为192.168.4.0,网关地址为192.168.4.1,本网段的广播地址为:192.168.4.255。真正可以用的IP地址只有253个。
特殊的IP地址
-
255.255.255.255 : 全网广播地址
-
127.0.0.1 : 本地回环地址,一般用于测试,客户端和服务端会用不同的端口号进行连接,通过这样的方式进行测试可以先排除网络问题。
-
公网IP与私网IP,客户端在访问服务端的时候,只能访问到服务端的公网IP。公网IP在公网中是独一无二的,服务端的公网IP与私网IP存在一个映射关系,一个公网IP对应一个私网IP,客户端可以通过公网IP找到服务器的私网IP。(我们在服务端是看不见公网IP地址的)
-
0.0.0.0/0 : 不是真正意义上的IP地址。我们在部署服务的时候,服务端部署的IP地址应该监听0.0.0.0(子网掩码必须设置成0)。任何客户端只要能够跟我的网络连通,都可以直接访问到我的服务端IP地址。如果我们使用的是阿里云进行部署,我们在服务端部署的IP为0.0.0.0/0,那么阿里云服务器会自动帮我们绑定一个公网IP。
子网划分
什么是子网划分?
- 通过子网掩码,网络号占用主机号,把同一个网段的IP地址划分成不同的局域网,但是每个网段的主机号变少,也就是每个网段可用的IP地址变少。
子网划分运算
IP:
11000000.00010000.00001010.10001011 ==> IP地址 : 192.16.10.139/24 # /24代表子网掩码连续24个1
11111111.11111111.11111111.00000000 ==> 子网掩码换 : 255.255.255.0
11000000.00010000.00001010 ==> 网络地址 : 192.16.10.0
10001011 ==> 主机号: 139
IP:
11000000.00010000.00001010.10001011 ==> IP地址 : 192.16.10.139/25 # /25代表子网掩码连续25个1
11111111.11111111.11111111.10000000 ==> 子网掩码 : 255.255.255.128
11000000.00010000.00001010.10000000 ==> 网络地址 : 192.16.10.128
10001011 ==> 主机号: 139
结论:两台IP地址一样的计算机,子网掩码不一样,并不在同一个局域网内。
- 正常情况下,C类子网掩码默认为 /24,我们一共可以划分出255个IP地址。
- 我们把子网掩码换成 /25个,测试一下,IP地址是如何划分的。
192.168.10.1/25
......
192.169.10.255/25
11000000.10101001.00001010.00000001 IP地址:192.168.10.1/25
11111111.11111111.11111111.10000000 子网掩码:255.255.255.128
11000000.10101001.00001010.00000000 网络地址:192.168.10.0
....
11000000.10101001.00001010.01111111 IP地址:192.168.10.127/25
11111111.11111111.11111111.10000000 子网掩码:255.255.255.128
11000000.10101001.00001010.00000000 网络地址:192.168.10.0
- 主机位在1-127之间的IP地址,网络地址为192.168.10.0
11000000.10101001.00001010.10000000 IP地址:192.168.10.128/25
11111111.11111111.11111111.10000000 子网掩码:255.255.255.128
11000000.10101001.00001010.10000000 网络地址:192.168.10.128
...
11000000.10101001.00001010.11111111 IP地址:192.168.10.255/25
11111111.11111111.11111111.10000000 子网掩码:255.255.255.128
11000000.10101001.00001010.10000000 网络地址:192.168.10.128
- 主机位在128-255之间IP地址,网络地址为192.168.10.128
- 我们通过以上运算,可以发现,同一个网段的IP地址被子网掩码划分成了2个不同的网络地址。
- 也是说子网划分技术,就是通过把主机位借给网络位的方式,把IP地址划分成了不同的局域网。
注意
- 我们通过子网划分技术把IP地址进行划分之后,一般情况下,一个网段的最小的IP地址默认为网络地址,最大的IP地址默认为广播地址。
- 如上所示,主机位在128-255之间IP地址,默认的网络地址为192.168.10.128,广播地址为128.168.10.255。
划分多个子网的算法
- 我们用网络位占用3个主机位做验证
192.168.10.1/27
......
192.169.10.255/27
11000000.10101001.00001010.000 00000 IP地址:192.168.10.0/27
11111111.11111111.11111111.111 00000 子网掩码:255.255.255.224
11000000.10101001.00001010.000 00000 网络地址:192.168.10.0
......
11000000.10101001.00001010.000 11111 IP地址:192.168.10.31/27
11111111.11111111.11111111.111 00000 子网掩码:255.255.255.224
11000000.10101001.00001010.000 00000 网络地址:192.168.10.0
我们发现子网掩码是固定的,IP地址的前24位都是固定的,所以我们只需要对比IP地址的25,26,27这三位的网络地址就可以了。
假设网络位占用3个主机位,一共可以分多少个可用网段呢?
# 二进制算法: 比如 11 111==>再加一个二进制位为100 000
11000000.10101001.00001010.000 00000 192.168.10.0 ~ 192.168.10.31 整个网段的网络地址 (一般情况下会保留)
# 一般情况下,会保留下来当作网关地址,广播地址,还有网络地址
子网地址 广播地址
11000000.10101001.00001010.001 00000 192.168.10.32 ~ 192.168.10.63 可用IP的主机号为33~62
11000000.10101001.00001010.010 00000 192.168.10.64 ~ 192.168.10.95 可用IP的主机号为65~94
11000000.10101001.00001010.011 00000 192.168.10.96 ~ 192.168.10.127 可用IP的主机号为97~126
11000000.10101001.00001010.100 00000 192.168.10.128 ~ 192.168.10.159 可用IP的主机号为129~158
11000000.10101001.00001010.101 00000 192.168.10.160 ~ 192.168.10.195 可用IP的主机号为161~194
11000000.10101001.00001010.110 00000 192.168.10.196 ~ 192.168.10.223 可用IP的主机号为197~222
11000000.10101001.00001010.111 00000 192.168.10.224 ~ 192.168.10.255 整个网段的广播地址 (一般情况下会保留)
# 一般情况下,会保留下来当作网关地址,广播地址,还有网络地址
- 我们整理了一下C类网络中,网络位占用不同的主机位个数,分别可以划分多少个子网,每个子网的主机个数。
ps : 计算机如何判定与对方是否在一个局域网中?
通过IP地址与子网掩码判定的
ARP协议将对方的IP地址与子网按位运算得到一个网络地址,然后与自己的比对
子网划分的优点
- 缩小广播域,提示传播效率
- 减少IP地址的浪费
vlan
- vlan的作用是什么?
- 针对一个物理交换机可以划分出多个虚拟的局域网,可以隔离广播域。
- vlan是二层的隔离,IP的子网是三层的隔离, 二层的隔离应该与三层的隔离保持一致。
-
802.1Q(交换机工作协议)规定了Vlan的格式,会在数据帧中源mac与目标mac之后加4个Byte的Vlan tag(Vlan标签),一个物理交换机划分出多个局域网,每个局域网都会有一个vlanID(编号)。
-
VLAN ID 最大值为4096(0~4095),但是有效值范围是 1 - 4094。也就是说,vlan最多可以把一个交换机划分成4094个局域网。
-
VLAN 的交换机的端口分为两类:
-
Access port(一个access口只能划分给一个vlan) : 主要用来连接个人计算机的。
1. 收到计算机发来数据包时会加上4byte的vlan tag 2. 发送包给计算机时,会去掉4byte的vlan tag
-
Trunk port (一个trunk口可以同时划分给多个vlan): 主要用来进行交换机与交换机之间串联。
1. 收到的数据包会带着4byte的vlan tag 2. 发出的数据包会带着4byte的vlan tag
-
-
VLAN划分图
-
VLAN 的类型
-
基于端口的 VLAN
连接两个交换机的同一个 VLAN 中的两个计算机需要通信的话,需要在两个交换机之间连两根线:
一根从 Switch A 端口4 到 Switch B 端口 4 (VLAN 1)
一根从 Switch A 端口8 到 Switch B 端口 8 (VLAN 2)
1) 交换机接收到计算机传输的数据时,交换机先封装vlan编号,确认同一个vlan的计算机端口有哪些。
2) 进行广播发送数据的时候,交换机去掉vlan编号,直接以广播的形式进行数据包的发送。
3) Switch A 端口4和端口8 Switch B 端口4和端口8 不能再连接计算机,只能做两个vlan的数据传输。 -
Tagged VLANs
两个交换机上的端口8 支持 VLAN 1 和 2, 因此一根线就可以了实现跨交换机的同VLAN 内的计算机互相通信了。
1) 交换机接收到计算机传输的数据时,交换机先封装vlan编号,确认同一个vlan的计算机端口有哪些。
2) 进行广播发送数据的时候,通过Switch A的8号端口再将数据传输给Switch B的8号端口,发送给相匹配的vlan编号端口(Trun口之间进行数据传递是打上vlan标签的,发送到计算机之前会先拆除对应的vlan编号,计算机是无法识别vlan编号的)。
3) Switch A的8号端口和Switch B的8号端口,同属于vlan1和vlan2,也就是说无论是vlan1的数据包还是vlan2的数据包都会经过这两个Trunk口进行数据传递。
4) Switch A 端口8 Switch B 端口8 同属于多个vlan,不能再连接计算机,只能做两个vlan的数据传输。
- vlan的缺点
- VLAN 使用 12-bit 的 VLAN ID,所以 VLAN 的第一个不足之处就是它最多只支持 4096 个 VLAN 网络(当然这还要除去几个预留的),对于大型数据中心的来说,这个数量是远远不够的。
- VLAN 是基于 L2(2层设备) 的,所以很难跨越 L2(2层设备) 的边界,在很大程度上限制了网络的灵活性。
- VLAN 操作需手工介入较多,这对于管理成千上万台机器的管理员来说是难以接受的。
广播域隔离
1. 三层隔离:ip地址与子网掩码运算得到的网络地址不一样,即网段不一样,这就是三层隔离
2. 二层隔离:两台计算机的网线只要接在不同的vlan里(一个vlan就是一个广播域),就是二层隔离
二层隔离应该与三层隔离保持一致
如果不一致会有什么问题?
会出现原本是三层隔离的数据包,但是数据包发到交换机之后,
因为交换机是二层设备,所以直接基于二层设备就开始广播,这就导致了一些不必要的广播包,广播效率变低。