什么是IP地址和MAC地址?
IP地址就是每个计算机的一个独一无二的身份证,但是这个身份证是可变的,重启计算机或者将计算机移动到其他地区,身份证会动态变化。
比如,今日头条等自媒体平台上,发文或者评论都带有IP属地:
计算机还有一个永远不变的身份证就是MAC地址,一般计算机厂商在生产时直接烧录在网卡EPROM上,理论上是独一无二的,但是,这个硬件地址可以人为修改,我们一般不考虑这个因素。
查看自己电脑的MAC地址,在命令提示符中是人ipconfig/all:
然而,我的电脑中除了自己的主机,还有很多windows和Linux虚拟机,同时由于虚拟机是自己设置的MAC虚拟地址,这样也很难保证MAC地址的唯一性。每个虚拟机都会有一个IP、MAC地址。
上述物理地址:80-32-53-6A-EE-E7就是我的电脑MAC地址,由6组十六进制数据组成,共48位,共有个地址,冲突概率极小。
MAC地址在数据链路层,IP在网络层。比如蓝牙通信就是靠MAC地址识别,手机播放音乐,只有和手机进行配对的蓝牙耳机才可以接收,其他人的蓝牙耳机就不可以接收到我的手机音乐。
而我的电脑IP地址为IPv4类型,192.168.1.2。是点分十进制。我们目前大多使用IPv4,共32位。但是用32个0或1表示,可读性很差,因此8个一组,分为4组,每组的数值都在0~255之间,这就是我们目前的IP地址表现形式。但是IPv4的总数很少,大概43亿。因此为了弥补IPv4的数量不足问题,现在还有IPv6地址。
IP地址的分类
IP地址由网络号+主机号构成,分为A、B、C、D、E类IP地址。同时还有一些特殊的IP地址,比如127.0.0.1是本地软件回环测试地址,就是这个地址只在自己的电脑上使用,不会进入到网络,比如,我自己启动一个网站服务器,需要在其他电脑浏览器输入我的电脑IP测试,但是我自己的电脑就是服务器也可以作为客户端,在自己电脑上浏览器输入127.0.0.1也可以实现测试,无需联网,所以服务器开发测试常用这个回环地址。
IP都为0的地址0.0.0.0表示当前网络默认地址,可以作为源地址,而不可以作为目的地址。比如本机服务器启动一个网络服务,源地址可以写自己的IP,而一般为了方便或者防止IP改变,就写成0.0.0.0。
IP地址分段后,只要保证每个网络号段不同,每个网络段内每个主机号不同,就可以保证任意两个主机IP都不同,同时,网络传输过程中,路由器首先根据网络号判断信息传输路径,到达该网段后再进行转发寻找对应主机号。
A类地址:网络号是前8位以0开始,共有128-2个地址可以指派,因为全0代表本网络,同时127开头是回环地址,二进制为7个1。合法主机的地址为个,主机号全为0代表该网络,主机号全为1代表广播,其他类别地址主机地址同样计算方法,需要做减2处理。
B类地址:网络号前16位,以10开头。网络号2的16次方减1,因为以10开头,无论后面14位如何设置,都不会出现全0的情况。
C类地址:网络号前24位,以110开头。
依此类推……
子网划分与子网掩码
网络号+主机号的划分方法使得IP地址空间利用率极低,比如我只是一个10人左右的小公司,电脑数量20台,申请一个B类IP地址,合法主机数量为16777214个。而我最多就20台主机,这样的划分方案显然是不合理的。
因此,划分子网是得两级IP地址变为三级IP地址,子网是公司内部划分的,对外依然是B类IP,三级IP为:网络号+子网号+主机号。
其他网络发送到我的公司信息,先按照网络号到本网络路由器,再按照子网号和主机号找到对应主机。
那么子网如何划分呢?这就涉及到子网掩码的概念。
子网掩码也是由1和0构成的32位二进制串,1对应IP中网络号和子网号,0对应主机号。假定IP为141.14.72.24,子网掩码为255.255.192.0,转换为二进制:
11111111.11111111.11000000.000000。该网络可以使A类或B类地址,假定为B类地址,其主机号有14位,可分配地址数为2的14次方减2。
无分类编址CIDR
一般来说,B类地址比较常用,对于大公司而言,C类地址主机数太少,A类数量一共就126个,因此,B类地址极速消耗,1992年时就已经分配完一半,当时预估1994年就会耗尽。
因此,出现了无分类编制CIDR,取消了A类、B类、C类的概念。表示为:128.14.32.0/20。/20表示网络号20位,后面12位是主机号。也叫做“斜线记法”。
比如在子网192.168.4.0、30中,能接收目的的地址为192.168.4.3的IP分组的最大主机数是多少?
30代表网络号,主机号只有两位,2的平方为4,全0代表该主机,只可以做源地址,不可以发送,因此结果应该为3。
继续分析,还有一个特殊的广播地址,发送到特定网络,该网络所有主机都会接收这个广播信息,也是可以使用的。然而,目的的地址为192.168.4.3最后的两位为3的二进制11,就是该网络的广播地址,所以结果再减1变为2。
再补充一个受限的广播地址255.255.255.255全为1,一个主机如果想把报文发送给其他所有主机可以使用这个地址,但是这个报文只可以发给本网络内所有其他主机,不可以超出局域网范围,路由器会拦截这个IP地址的报文。