Linux 网络基础知识之IP地址和子网掩码详解

部分内容图片截自慕课网

1. TCP/IP四层模型会对数据逐层打包,其中网络层负责打包IP包头,而IP包头拆开内容格式如下图

ip包头

注意:一般情况下IP包头为20个字节,160个bit大小,包括5行数据,但在IPV4协议下并非一定如此,可能包含其他信息,如图中选项和数据行,这也是ipv4通信慢于ipv6(固定包头长度)的原因,但是必定含有源IP地址和目的IP地址

2. 分析一下源IP地址和目的IP地址:

  1. 长度为32bit,也就是说ip地址最小为32个零:00000000.00000000.00000000.00000000,最大为:32个1
    11111111.11111111.11111111.11111111
  2. 转化为十进制:0.0.0.0和255.255.255.255
  3. 但是并非在此范围内的所有地址均为有效地址,看下图:
    ip地址分类

注意:C类别地址最大为223开始,所以其实还有D、E类型,但是不对我们普通用户开放,其次A和B之间还有一个127,这就不用多说了,localhost和127.0.0.1应该都是用过(这两者不等,有区别的哦)

A类地址解析:

  1. 1.0.0.0代表网络本身,不能用来分配,1.255.255.255代表当前网络的广播地址,最后一个126.255.255.255也不能分配
  2. 第一个数字代表网段,所以最大网络数为126(2^7-2)个,不同的网段之间需要通过路由器来链接,同一网段内通过交换机链接
  3. 后三位数代表同一网段下不同的主机数,由于.0.0.0代表网络本身,.255.255.255代表当前网络的广播,不能用来分配地址,所以最大主机数为2^24-2

B类地址解析:

  1. 与A类不同,B类前两个数代表网段,后两个数代表主机,191.254和191.252不是同一个网段,需要路由器链接

C类地址解析:

  1. 同样,C类则是前三个数代表网段,后一个数代表主机

私有地址:

普通IP地址需要花钱购买,私有地址则是作为内网IP使用

子网掩码决定了A、B、C类地址拥有不同的网段数和主机数

3. 子网掩码:

什么是子网掩码:子网掩码是把大的网络划分成子网,即VLSM(可变长子网掩码),把小的网络归并成大的网络即超网。通俗的理解,子网掩码代表的是当前IP地址所在的网络编号

标准子网掩码的表示:

255.0.0.0    255.255.0.0   255.255.255.0
1. A类地址子网掩码默认为255.0.0.0  B类默认为255.255.0.0 C类默认为255.255.255.0
2. 子网掩码和ip地址必须共同存在否则没有意义
为什么必须共同存在:
首先假设有两个IP地址:A192.168.1.1和B:192.168.2.1 并且A和B不在同一个子网下从A发送一条数据
到B,如果没有子网掩码,计算机就无法确定A和B是否是同一个子网内的不同网段,因为根据IP地址已经知道
该ip为C类,且属于不同网段,结果没有子网掩码,计算机会缺省认为A和B是属于同一个子网内,导致数据在本
子网内循环,直到超时造成网络错误
这也就是为什么说子网掩码是网络或者一个子网的重要属性
举个例子说明子网掩码是如何划分子网的:

以B类地址为例,其默认子网掩码为255.255.0.0,转化为二进制后为
11111111.11111111.00000000.00000000
前面八个连续的1代表ip地址中的网络位,而0则代表的是主机位,一般都是前面连续的1,后面连续的0,B类地址后面8位代表了主机位,看下表(固定长度子网):

子网号位数 子网掩码 子网数 每个子网的主机数
2 255.255.192.0 2 16382
3 255.255.224.0 6 8190
4 255.255.240.0 14 4094
5 255.255.248.0 30 2046
6 255.255.252.0 62 1022
7 255.255.254.0 126 510
8 255.255.255.0 254 254
9 255.255.255.128 510 126
10 255.255.255.192 1022 62
11 255.255.255.224 2046 30
12 255.255.255.240 4094 14
13 255.255.255.248 8190 6
14 255.255.255.252 16382 2

表中数据的计算方法:

  • 子网号位数:子网中连续1的个数,此处前提是B类地址,B类地址默认子网掩码为255.255.0.0,主机位从第三段数字开始,以子网号位数为2举例:转化为二进制为11111111.11111111.11000000.00000000 子网号位数指得就是从第三段开始连续1的个数
  • 子网掩码:同样例子,讲二进制转化为十进制就是子网掩码255.255.192.0
  • 子网数:2^N-2(每一位可能是0或1,所以有2^N中) N代表子网号位数,减2是因为在因特网标准RFC 950中,子网掩码不能全为1或0(无分类域间路由选择CIDR已经可以使用全0和1的子网掩码)
  • 主机数:同例中,后14位0代表主机位,2^14=16383 由于主机位全1时代表当前网段的广播地址,所以主机数为16382

以上也就能再次解释为什么子网掩码必须同IP地址一起使用了,并且,子网掩码并不是可以随意设置的,如果设置大了,计算机会认为数据是发往和本机不在同一子网的目的机,而根据子网寻径规则,数据将在当前子网内循环,知道超时且数据被抛弃。如果设置小了,会将本在同一子网的计算机间数据传输当做是跨子网传输,数据交给了网关处理,从而降低了效率。所以子网掩码应该根据网络规模设置,假设一个网络规模不会超过254台电脑,那么子网掩码设置为255.255.255.0就行了,超过254而不超过16382的,假设1500,设置为255.255.0.0就行了

作用:将某个IP地址划分成网络地址和主机地址两部分。子网掩码一旦设置,网络地址和主机地址就固定了。

计算:

1. 将IP地址和子网掩码转换为二进制的形式,然后进行“与”计算。得到网络号,也就是该子网的首地址。
2. 将转化为二进制后的子网掩码进行取反,然后再和ip地址进行与运算,就得到了主机地址

例如:
A的IP地址:192.168.1.1 子网掩码:255.255.255.0
由IP可知为C类地址
计算IP地址的网络号:

操作 结果
IP地址二进制表示 11000000.10000000.00000001.00000001
子网掩码二进制表示 11111111.11111111.11111111.00000000
与运算 11000000.10000000.00000001.11111110
网络号 C类地址,所以网络号为11000000.10000000.00000001,即192.168.1
子网掩码二进制取饭表示 00000000.00000000.00000000.11111111
与运算得出主机位 00111111.01111111.11111110.00000001
主机号 63.127.254.1
广播地址 子网掩码二进制取反以后,转化为十进制,加上网络地址,便是当前网络的广播地址,如192.168.1.255

猜你喜欢

转载自blog.csdn.net/time_travel/article/details/69802838