在用TCP/IP通信时,用IP地址识别主机和路由器。为了保证正常通信,有必要为每个设备配置正确的IP地址,否则根本无法实现正常的通信
IPv4
IPv4地址由32位比特组成,共4个字节,人们更习惯用十进制表示,所以就把每个字节转换成十进制,中间用点号隔开,比如192.168.1.1
IPv4可分配的地址有多少个呢?2^32 = 4 294 967 296,差不多43亿个,也就是说最多允许43亿台设备同时接入网络,而在2019年IPv4地址就已经正式耗尽
IP地址并不是根据主机配置的,也就是说一台主机不是只能有一个IP地址,而是根据网卡设置IP地址,但是,网卡也可以设置多个IP,还可以不配置IP地址。而像路由器,通常都有两块网卡
那你的电脑的IP地址是如何分配的呢?是随意分配的吗?全球网络这么多设备,IP地址是设备的唯一标识,不可能随意配置,重复了怎么办
IP地址由网络标识(网络地址)和主机标识(主机地址)组成
网络标识是数据链路的每个段的唯一的标识,换句话说,网络标识是局域网的唯一的网络地址,每个局域网都有的网段
主机标识是同一个局域网内的主机的唯一标识,在同一个局域网内的主机不可拥有相同的主机地址
由此:
一台主机的IP地址是由唯一的网络地址+唯一的主机地址组成了唯一的IP地址,保证了IP地址在全局网络中的唯一性
如何划分网络地址和主机地址?有两种方式
- 192.168.1.1/24,表示网络地址有24个比特位
192.168.1是网络地址,1是主机地址
- 192.168.1.1,Netmask 255.255.255.0,用子网掩码netmask表示
子网掩码是把IP地址的网络地址位全部置为1,主机地址位全部置为0,然后每8个比特为一组,用十进制表示
IPv4地址分为四类:
- A类地址
首位为0,前8位是网络地址,网络地址范围是0000 0000 - 0111 1111,可分配的A类网段为0.0.0.0 - 127.0.0.0
- B类地址
前两位为0,前16位是网络地址,可分配的B类网段为128.0.0.1 - 191.255.0.0
- C类地址
前三位为110,前24位是网络地址,可分配的C类网段为192.168.0.0 - 239.255.255.0
- D类地址
前四位为1110,全部32位都是网络地址,可分配的D类网段为224.0.0.0 - 239.255.255.255,D类地址没有主机地址,适合做多播地址(为什么?)
如果你想给自己的主机网卡配置IPv4地址,主机地址除了不能重复以外,还不能全部为0或者全部为1,因为全0表示只有在IP地址不可获知的情况下使用,而全1表示广播地址
虽然IPv4地址做了分类,但是在实际使用中不可能这么死板,需要根据局域网内的主机数量灵活设置
比如C类地址的主机数量有255,而我想搭建的局域网内的主机只有50个,那我用C类地址会浪费资源,怎么办呢?可以把网络地址和主机地址位灵活划分,以满足实际使用。用什么划分?子网掩码
比如局域网内最多有50台主机,用C类地址浪费,可以适当缩短主机地址位,从C类的8个bit缩短为6个,2^6 = 63,最多可以配置63个主机,相应的网络地址位就是26位
子网掩码是255.255.255.192
IPv6
为了解决IPv4地址枯竭的问题,IPv6应运而生
IPv6是IPv4的4倍,由128个比特位组成,共16个字节,和IPv4用10进制表示不同,IPv6以每16位为一组,用16进制表示,中间用冒号隔开,比如:DEAF:2780:3A4E:0189:C3D5:F728:6B23:1011
那IPv6可分配的地址有多少呢?2^128,听说可以给地球上的每一粒沙子都分配一个IPv6的地址
IPv6没有ABCD类地址之分,也没有子网掩码,它的寻址方式也不是ARP寻址,感兴趣的可以自己了解,我了解的也不多