网络IP的理解,可以直接先看这里 IP的组成,以及分类
IP地址的组成,可以分成4个部分:
本质:是一串32bit的数据 每个bit位的10进制最大值:255 可以分割成4部分:每一部分都是8个bit位
组成:然后,使用 32bit,分成{网络 ID,主机 ID}两部分组成 其中:网络ID占,24位;主机ID占8位**【正常情况下 】**
1、子网ID(网络ID)、主机ID表示
这里每8位组成一个整形数,最大二进制位是1111 1111 ,变成10进制就是255 最小就是0了
如上面白色图片所示的话,那么子网ID(网络ID)留24位,不动,照拿,这里是172.20.223.0
主机ID留8位,这里是0.0.0.75
2、这里的24、16、8都是代表的子网掩码二进制有效的位数,无效的地方都是0
IP地址,&与上子网掩码,得到网络ID(子网ID)的地址
255.255.255.0中,二进制位数是:是1的一共有24位 ,剩下8bit位是0,那么我们得子网ID(网络ID),就可以拿到24位,3个整数【例子1所示】;而主机ID,就只能拿8位,一个整数了
3、这里的各级分类的理解
举例A:默认8bit子网id,且0开头:
它的子网掩码,现在是8位,意味着,IP【&与】上它,得到的网络ID,只有8位,一个整数。
且这里要求0开头,那么它的排列就是0xxx xxxx 0000 0000 0000 0000 0000 0000 【只有8位有效位,第一位是0】。
举例A:的子网范围:
只能留8位网络ID,那么子网掩码就是255.0.0.0 换成二进制是:1111 1111 0000 0000 0000 0000 0000 0000
既然网络ID的第一位必须是0,所以IP【&与】上的子网掩码的二进制第一位就必须是0(虽然无符号二进制,第一位是正整数位吧,但是这里是特殊要求,没办法)。--可参考第一条链接 那么,它的可以转换的十进制范围就在0000 0001 ~ 0111 1111 之间了(它得第一位也是0)。 这个子网掩码的范围,基本上可以算是,网络ID的第一位整数的范围了
举例A:网络ID的最大范围,只考虑第一位 整数的:
(8位一个字节计算)1.0.0.0 ~ 127.0.0.0
举例A:每一个地址主机可连接多少个,看掩码置0 的范围有多大,这就是给主机留的位数
这里默认只给网络ID留8个bit位,那么剩下的位数,就全部就给主机ID了,A类可以连接【2^24】 个主机ID
举例其他B类,默认16bit子网id:
它的子网掩码,现在是16位,意味着,IP【&与】上它,得到的网络ID,只有16位,俩个整数 ,那么其余位就是0了。
且这里要求10开头,那么它的排列就是10xx xxxx xxxx xxxx 0000 0000 0000 0000 【只有16位有效位,第一位是1】。
举例B:的子网范围:
既然网络IP的必须是10开头,所有IP【&与】上的子网掩码的二进制第一位就必须是1,第二位跟着是0(有符号 二进制,第一位是正整数位,无符号 的话,没有符号位,都是数据的一部分)。 那么,它的可以转换的十进制范围就在1000 0000 0000 0001 ~ 1111 1111 1111 1111 之间了。 这个子网掩码的范围,基本上可以算是,网络ID的第一位整数的范围了,只取第一位(8个字节算一位 )
(128.0.0.0~191.0.0.0)
举例B:每一个地址主机可连接多少个,看掩码范围
这里默认只给网络ID留16个bit位,那么剩下的16个位数,就全部就给主机ID了,A类可以连接**【2^16】**个,ID
子网掩码,和子网范围为什么是这样【理解错误,以得出结论】?
这里理解错了,把它当作成子网范围了,这里是IP与&上子网掩码==得到的网络ID的范围 10xx xxxx xxxx xxxx 0000 0000 0000 0000 /255.255.0.0 子网范围:1000 0000 0000 0001 ~1011 1111 1111 1111(128.0.0.0~191.0.0.0)
网段地址:相当于一条街道的IP地址,是这条街道名称的标签(网络ID),不能占用和更改,否则无法索引到这条街道上用户的门牌号(主机ID)
IP地址的两种表示方法:整数和点分十进制【点分十进制表示的意思–由点,把四个十进制数分开】:
由点,把四个十进制数分开,表示成我们容易识别的IP:
将IP当作一个字符串,由4个整数和3个点’.'组成的一长串字符串 这就是点分十进制
整数和点分十进制的计算转换(有专门的两个函数):
都是先转换成二进制,再继续下一步
点分十进制 虽然是一个IP ,而IP是由32bit位分成单独的4个单独的8bit位,然后转成10进制数字,再由点分隔开
但是它在转成一个很大的整数的时候,分割的整数转成,合在一起的二进制数,然后从最右侧的2^0加到 2的31次方·
16进制的一个位数(两个整数)由两个字节组成,一个字节8个比特位
`0x01--> 0000 0000 0000 0001`
0x0102->0000 0000 0000 0001 0000 0000 0000 0010
转换函数中的点分十进制表示:
我们容易理解的IP
转换成,计算机容易理解的一长串很大的数字
或者可以把IP,存进一个char str[4]类型的数组中,每一位元素都是一个整数,去转换成**点分十进制字符串** ,我们可以看到的IP信息
|