IP协议属于TCP/IP模型中的网络层,它标识了一个网络设备的接口或者一台主机,用于IP寻址和路由选择。IP地址用于网络层对于设备的标识或者路由转发的路径,类似收发快递时,快递站点需要提供发送地址和收货地址,IP地址在网络中起到了至关重要的作用。
针对于机器而言,只能识别0和1,因此,网络中传递的信息,到达主机以后,都是使用二进制进行标识的。在传输的过程中,以比特流的形式进行传输。IP地址长度共有32比特,每个比特等于1个字符,也就是共有32个0或者1组成。那么由于计算机的存储基本单元是以字节为单位的,一个字节等于8个比特。因此,IP地址共分为4段,每段8个比特。例如:
00001000 01000000 00000001 00000001
但是对于人类而言,用二进制标识IP地址不便于沟通和表示,因次,IP地址常用的表示方式为,点分十进制。例如:192.168.1.1可以表示一个IP地址。
IP地址的组成可以分为由网络号和主机号构成,网络号用来表示此地址属于哪一个网络,而主机号表示此网段可以支持多少台主机。
在IP地址中,由于每段地址都是8个比特,所以只需要记住8个2的次幂即可,如下:
128 64 32 16 8 4 2 1
二进制转十进制,通常使用加法进行计算,二进制从最右边开始,表示第0位,依次用M*2^n次方进行相加,M标识二进制的数字,n是第几位,比如:
二进制11101010=0*2^0+1*2^1+0*2^2+1*2^3+0*2^4+1*2^5+1*2^6+1*2^7=234
十进制转二进制,通常使用减法进行计算。从最左边开始相减,能减的标识为1,再用余数依次相减,不能相减的标识为0,再依次向右相减,直至余数为0,比如:
十进制167转换成二进制:
167-128足够减,余数为39,标识为1
39-64不够减,余数为39,标识为0
39-32足够减,余数为7,标识为1
7-16不够减,余数为7,标识为0
7-8不够减,余数为7,标识为0
7-4足够减,余数为3,标识为1
3-2足够减,余数为1,标识为1
1-1足够减,余数为0,标识为1
因此十进制167转二进制为10100111
由于计算机传输的最小单元是比特,即一个字符,所以数字没有办法用一个字符标识十六进制中超过9的数字,所以10-15分别用A-F代替,十六进制的组成右0-9和A-F组成。
二进制转换为十六进制时,一般是用加法计算然后组合的方式,但是一个十六进制是占用1/2个字节,也就是4个比特,所以一个字节的二进制要拆解为两个1/2个字节去计算十六进制,然后组合起来。比如:
二进制01101101转换为十六进制:
01101101=0110 1101
0110=0*2^0+1*2^1+1*2^2+0*2^3=6
1101=1*2^0+0*2^1+1*2^2+1*2^3=13=D
组合后就是6D,所以二进制01101101转换为十六进制为:6D
十进制转换十六进制一般是使用二进制作为中转,即把十进制转换成二进制再转换为十六进制。比如:
十进制248转换成十六进制:
248转换成二进制为:11111000
再转换为十六进制为:F8
十六进制转换十进制一般也是使用二进制作为中转,即把十六进制转换成二进制再转换为十进制。比如:
十六进制C9转换成十进制:
C9转换成二进制为:11001001
再转换为十进制为:201
IP地址的分类是根据第一个字节的数值进行区分的。大致可以分为以下几类:
A类地址:
网络号 | 主机号 |
0+7位 | 24位 |
A类地址的第一个字节的第一个比特固定为0,前8位是网络号,后24位是主机号,因此,A类地址的范围为0.0.0.0——127.255.255.255。
B类地址:
网络号 | 主机号 |
10+14位 | 16位 |
B类地址的第一个字节的前两个比特固定为10,前16位是网络号,后16位是主机号,因此,B类地址的范围为128.0.0.0——191.255.255.255。
C类地址:
网络号 | 主机号 |
110+21位 | 8位 |
C类地址的第一个字节的前三个比特固定为110,前24位是网络号,后8位是主机号,因此,C类地址的范围为192.0.0.0——223.255.255.255。
D类地址:
11100000 00000000 00000000 00000000 |
D类地址的第一个字节的前四个比特固定为1110,C类地址为组播地址,因此,C类地址的范围为224.0.0.0——239.255.255.255。
E类地址:
1111000000000000 00000000 00000000 |
E类地址为保留地址,前四位固定是1111,范围是240.0.0.0-255.255.255.255。
A、B、C类地址都可以分配给主机使用,但是有些特殊地址不能分配给主机。
0.0.0.0
此地址在路由中可以表示位任意地址,也可以在DHCP中,DHCP客户端没有分配地址的起始地址。
127.0.0.0——127.255.255.255
整个127网段表示回环地址,通常用来诊断本地网络是否正常。
255.255.255.255
此地址表示全网广播地址,也不能分配给主机使用。
除了上述特殊地址之外,每个网段的网络地址和广播地址,也不能分配给主机使用。
网络地址:主机号全为0的地址。
广播地址:主机号全为1的地址。
因此,A、B、C类可供使用地址范围为:
A:1.0.0.0-126.255.255.254
B:128.0.0.1-191.255.255.254
C:192.168.0.1-192.168.255.254
随着网络的不断发展,终端设备越来越多,导致IPv4地址出现不够用的情况。另外,在错综复杂的网络环境中,还会有一些安全隐患,各种病毒攻击等行为。为了解决这两个问题,相关组织机构把IP地址划分为私有地址和公有地址。在公网中不能存在私网地址的路由,保证了私网环境的安全性,同时,多个私网地址可以映射成一个公网地址进行访问,一定程度上缓解了IP地址紧张的状态。
私有地址范围:
10.0.0.0——10.255.255.255
172.16.0.0——172.16.31.255.255
192.168.0.0——192.168.255.255
由于IP地址目前即将消耗殆尽,为了能够充分的使用IP地址,避免地址浪费,可以使用子网划分来尽可能的满足当前的需求。假如一个部门只有30个人,如果分配192.168.1.0/24的网段,那么就会导致大部分的地址被浪费掉,192.168.1.0/24的网段公有2^8=256个主机地址,去掉网络地址和广播地址,还剩余254个可用主机地址,而部门需求只有25个。此时,应当采用子网划分的方式,在尽可能不浪费地址的情况下满足需求。
我们通常称A、B、C类地址为主类地址,进行过子网划分后的地址,为某个主类地址下的子类地址。子网掩码的出现,提供了可以进行子网划分的前提,此技术通过牺牲主机数量来增加网络数量,通过向主机位借位来实现。
子网掩码和IP地址一样是32比特,通常也是用点分十进制来表示,比如192.168.1.0/24,网络地址为192.168.1.0,子网掩码为255.255.255.0。如何通过VLSM来实现满足上述部门的需求?
部门有30个人,那么也就代表可用地址要大于等于25,那么相应的主机位计算方式为:2^n-2>=25,n就要大于等于5。也就是说当此网段有27个网络位时,可以满足该部门需求的同时,又最大限度的避免了地址浪费。划分方式如下:
192.168.1.0/24=192.168.1.00000000,当前是24位网络号,那么实现27位网络号,就要向主机位借3位,即192.168.1.00000000,向主机位借来的3位网络号自由排序可以得到2^3=8中结果,因此,192.168.1.0/24通过子网划分可以有8个27位掩码的子网,每个子网都有2^5-2=30个可用主机地址。即:192.168.1.0/27,192.168.1.32/27, 192.168.1.64/27,192.168.1.96/27, 192.168.1.128/27,192.168.1.160/27, 192.168.1.192/27,192.168.1.224/27。
为了减少设备中路由表的大小和因网络中大量路由传递占用资源,无类域间路由可以把多个相同主类的网段聚合成一条路由,从而减少资源的消耗。比如公司内部有四个网段,那么可以通过CIDR技术和合成一条路由向外宣告。
如图所示,公司内部公有四个部门,网段分别是192.168.12.0/24,192.168.13.0/24,192.168.14.0/24,192.168.15.0/24,在核心出口只宣告了一条192.168.12.0/22的路由出去,大大减少了路由条目。聚合方式如下:
192.168.00001100
192.168.00001101
192.168.00001110
192.168.00001111
从上可以看出这四个网段的前22位网络号都是相同的,因此,他们可以聚合为一条22位的聚合网络,192.168.00001100,前22位是网络号,后8位是主机号,即可表示为192.168.12.0/22对外宣告。