思考重点
如何看懂IP代表的意思
子网内的设备可以被直接访问吗
网络设定中的255.255.255.0是什么
公有IP与私有IP差别
固定IP与浮动IP区别
架构图
IP地址表示方法
IP地址相当于电话号码的概念,想要与对方通讯必须要知道对方的电话号码才行
在网际网络中,相应主机之间是透过IP地址进行沟通,也就是说使用TCP/IP网络互相沟通的主机一定要配置IP地址,因此IP地址可以说是网络传输中最基本的部分
IP地址总长度为4个bytes,每一个byte为一组,总共分成4组,通常用十进位制表示:
IPv4二进位制 | IPv4十进位制 |
---|---|
11000000. 10101000. 00000000. 00000001 | 192.168.0.1 |
11001011. 11001100. 00110000. 00111000 | 203.204.48.56 |
10101100. 00010000. 00000000. 00001010 | 172.16.0.10 |
由于一个分组的长度是一个bytes的关系,分组的数值表示上限为255(8个bits全部为1),这也是为什么你不会看到256.0.0.1这种表示方法
从IP地址的表现方式不难看出其实IP地址的数量其实是非常有限的,若是每个分组均有256种可能,那么经过计算,IP地址总共会有256*256*256*256=4294967296个,相信以现在的设备数量来说,一定是远远不够的,因此我们会看到网际网络使用了非常多技术来降低IP地址的实际使用数量
你可能会觉得IP地址代表的是连线到网络的这台电脑,但其实IP地址是依据网卡来分配的。若是电脑只搭配一张网卡的话,我们可以说该IP地址代表这台电脑,但若是同时配备两张以上的网卡,主机就会拥有多个IP地址,你可以试着在终端中输入ipconfig/all来查看IP地址的配置,由于我的电脑址搭配一张网卡,所以只会有一个IPv4地址
若路由器同时拥有两个网卡,他可以同时代表两个不同的子网系统,例如下图的路由器就代表192.168.0.1与192.168.1.1两个子网
IP地址等级
IP地址分为网络部分与主机部分,网络部分代表所处网域,而主机部分则代表该主机。以192.168.0.12为例,其中的192.168.0是网络部分,12代表这个主机,同一个网域中每台装置的网络部分相同,但主机部分必须互不相同
依照网络的用途与子网主机数量要求,IP地址为了有效分配IP给不同层级的客户,引进了IP等级制度。网络部分长度越小,代表可以分配的主机数量越少,但相对的它可以容纳更多的子网主机数量,这种类型的IP地址就非常适合分配给大机构与政府机关
相反的网络部分越长,主机部分越短,它能够容纳的主机号越少,这种等级的地址数量众多,但子网主机数量少,适合分配给家庭、学校等小单位
简单来说IP地址等级是利用第1位元到第4位元的组合来进行等级地划分,每个IP等级可以分配的数量与对应关系如表:
网络
等级 | 对象 | IP范围 | 子网遮罩 | 部分容纳数量 | 主机部分容纳数量 |
---|---|---|---|---|---|
A | 大型企业、国家机构、研究机构 | 0.0.0.0~127.255.255.255 | 255.0.0.0 | 128 | 16777214 |
B | 中型企业 | 128.0.0.0~191.255.255.255 | 255.255.0.0 | 16384 | 65534 |
C | 电信商业者、小型企业 | 192.0.0.0~223.255.255.255 | 255.255.255.0 | 2097152 | 254 |
D | 群播地址 | 224.0.0.0~239.255.255.255 | 255.255.255.255 | --- | --- |
E | 保留 | 240.0.0.0~255.255.255.255 | --- | --- | --- |
B级地址A级地址
A级地址第一个位元固定为0,IP地址的前8个位元为网络部分,范围落在00000000~011111111,换算成10进位置就是0~127。后24位元为主机部分,总共有256*256*256=16777216个主机号,但主机号部分不能同时为0或同时为1,所以主机部分容纳数量为166777216-2=16777214
B级地址的第一个位元为1,第二个位元为0,IP地址的前16个位元为网络部分,范围落在10000000~10111111,换算成10进位就是128~191。后16位元为主机部分,总共有256*256=16386个主机号,减去两个特殊IP地址,主机部分容纳数量为16386-2=16384
C级地址
C级地址的第一个位元为1,第二个位元为1,第三个位元为0,IP地址的前24个位元为网络部分,范围落在11000000~11011111,换算成10进位就是192~223。后8位元为主机部分,总共有256个主机号,减去两个特殊IP地址,主机部分容纳数量为256-2=254
D级地址
D级地址的前四个位元分别是1110,整个IP地址的都是网络部分,范围落在11100000~11101111,换算成10进位就是224~239。 D级地址主要用于群播用途(Multicast),它并没有分配主机号
E级地址
E级地址的为保留未使用的IP地址
从上面的介绍中可以发现使用等级制度可以使得IP地使用更有效率
试想不使用等级制度的状况下,所有的设备均使用一样的主机数量,有些大型机构一定会不够用,所以势必要使用更多IP地址,另一方面家庭则可以会有太多主机号未使用,一来一往之下,IP的使用效率一定不高
但IP等级制度的缺点很明显,一旦分配特定等级的IP地址后,主机号的分配数量就固定了
比如说我申请一个C级地址,主机号最多就是254个,将来想要申请超过254台主机号就需要转换成更高等级的B级地址,不过B级地址的主机号又太多,这之间的变化太大,反而会造成IP地址的浪费
你能想像不使用网络部分与主机部分区隔IP地址的状况吗?
这种情况下就没有所谓的区域网络概念,所有设备都直接与网络核心相连,而且每个设备都需要IP地址,这种状况下IP地址很快就会被消耗殆尽
为什么主机部分数量要减2?
主机号全为0的状况代表该网络区段,例如在C级地址192.168.0.12中192.168.0.0,或B级地址172.16.10.1中172.16.0.0都代表该子网网域,所以IP在分配主机号时候尽量避免使用全0的地址,以免发生冲突。主机号全为1的状况为广播模式,后面会做介绍,简单来说IP主机号为255时为特殊保留字,应该避免,例如192.168.0.255
IP等级的另类好处: 快速分类
我们前面有提到IP等级是依据前1到4个比特位进行分类,假如IP地址的第一个比特位为0,我们马上就可以得知它是一个A级地址,并能快速分析出网络部分与主机部分
子网遮罩
为了解决IP等级产生的缺点,我们需要更精确的定义IP地址,因此子网遮罩的目的就是如何更有效的区分出网络部分。子网遮罩的出现使得IP分割不再受到IP等级的限制,可以将不同IP等级再切分成更小网络单位
使用子网络遮罩必须准备一组掩码长度,来判断网络部分长度。举例来说178.15.50.9这个B级地址,使用掩码长度26,所以1~26比特位要设置成1,27~32要设置成0,经过运算后可以得到网络遮造255.255.255.192
将计算出来的网络遮罩与原本IP地址进行AND运算就可以得到网络部分,详细运算如下表所示:
IP (十进位) | 178.15.50.9 |
---|---|
IP(二进位) | 10110010.00001111.00110010. 00001001 |
子网络遮罩(十进位) | 255.255.255.192 |
子网络遮罩(二进位) | 11111111.11111111.11111111.11000000 |
IP网络部分(十进位) | 178.15.50.0 |
IP网络部分(二进位) | 10110010.00001111.00110010.00000000 |
你可以想想下列哪一个场景更具有效率优势:你看这样是不是就解决IP等级下的浪费了呢,透过将IP分成更细的子网,每个区域网络下包含的设备数量恰到好处,而不会为了提升效率免强塞进一堆设备,增加封包传递时的冲突
将所有的车流导向同一条一级快速道路上
将有特定目的的车流分别引导到不同的二级快速道路上,虽然二级快速道路不如一级来得宽敞,但都恰好可以处理车流
另外网络遮罩还具有让传送封包更有效率的功能。我们之前提到过,IP封包头部会包含发送端IP与接收端IP,这时只要使用子网遮罩就可以得知目的地主机是不是和自己处于相同的网域下,如果是的话就直接发送,不是的话再交给路由器转发
在cmd中输入route print指令来查看路由表,我当前电脑的IP为192.168.0.12,若目的地IP地址与网络遮罩栏位AND运算后等于网络目的地栏位中的地址,则将封包发往对应的闸道栏位
例如目的地IP为168.15.56.1,经过网络遮罩0.0.0.0AND运算后得到0.0.0.0,所以必须先将封包传到路由器地址192.168.0.1
若闸道栏位显示"在连结上",代表目的地IP与当前IP在同一个区域网络中,可以直接传送封包而不用透过路由器转发
路由表的优先级判断
上述的例子可能有些朋友会疑惑,路由表中的网络遮罩这么多,该怎么判断查找的优先顺序呢?其实在查找过程中会先判断前缀(prefix),符合越多项的优先比对,且前缀必须是连续相同的。例如目的地IP192.168.0.9的前3个bytes具有相同的前缀(均为192.168.0),因此优先使用255.255.255.0这组网络遮罩,以此类推,0.0.0.0是最后的一个比对遮罩
子网络遮罩表示方法
上面的例子我们将子网络遮罩长度设定成26,我们可以将IP地址写成178.15.50.9/26,这样就可以清楚知道网络部分是从第1个比特位到第几个为止
广播
广播的目的是将讯息传给该区域网络中的所有设备。 IP地址将主机号全部设置成1判定为广播地址,有点难懂吧,刚好前面学过子网遮罩的概念,就顺便举个小例子练练手!
案例
使用现有的IP地址、子网络遮罩来求广播地址
IP地址 | 192.168.56.205 |
---|---|
子网络遮罩 | 255.255.255.224 |
广播地址 | ??? |
首先我们需要将IP地址与子网络遮罩分别都转换成二进位,转换后发现子网络遮罩的长度为27,这代表IP其实可以写成192.168.56.205/27,网络部分占27bits,主机部分占5bits
均转换成二进位后,将两个IP地址做AND运算得出IP的网络部分。 11000000.1010100.00111000.11000000转换成十进位就是192.168.56.192
因为子网络遮罩只到第27比特位,剩下的的比特位都是主机号,所以将得到的IP网络部分的末5码比特位都设置成1,得到11000000.1010100.00111000.11011111,转换成十进位就是192.168.56.223
把这一系列的运算整理成如下的表格:
IP地址(二进位) | 11000000. 10101000. 00111000.11001101 |
---|---|
子网络遮罩(二进位) | 11111111.11111111.11111111.11100000 |
IP地址网络部分(二进位) | 11000000.1010100.00111000.11000000 |
IP广播地址(二进位) | 11000000.1010100.00111000.11011111 |
IP广播地址(十进位) | 192.168.56.223 |
ff-ff-ff-ff-ff-ff为特别保留的MAC地址,只要交换设备发现封包的MAC地址为ff-ff-ff-ff-ff-ff,就会自动将该封包转发给相同网域中除了发送方以外的设备,一般来说接收到广播的设备不用做任何回应了解广播IP的配置方法后,我们可以看看广播地址对应的MAC地址是什么。手动打开cmd,输入arp -a指令来看看[[网络是怎样连接的(十一) 初探IP协议#ARP表|ARP表的内容]],发现广播地址对应的MAC地址是ff-ff-ff-ff-ff-ff
一般来说若设备收到的MAC头部地址与自己不同会直接丢弃封包,不过ff-ff-ff-ff-ff-ff除外,它代表网络中的所有设备都要接收它
公有地址与私有地址
公有地址与私有地址的概念很简单,但凡可以让全球范围内的人可以直接访问的IP地址就称为公有IP
例如连接外部网络的路由器、服务器、Google首页、Amazon官网、或有注册全球IP地址的部落格等,公有IP具有唯一性。相对的只有在区域内的人员才能够互相通讯的的称为私有IP,不同区域网络内的私有IP可以重复,但同一个网域内的不能,例如学校、公司、家庭或组织内部人员使用的就是私有IP
提出公私有IP的目的很简单,就是为了减少全球范围的公有IP的使用,假如所有设备都配置一个公有IP,那么很显然IP地址很快就会被消耗殆尽
话又说回来私有IP又是怎么分配的呢?
其实IP地址有专门分配给组地址给私有IP使用,其分布如下表所示,超过这个范围的就是公有IP:
网络
等级 | 私有地址范围 | 数量 |
---|---|---|
A | 10.0.0.0~10.255.255.255 | 1 |
B | 172.16.0.0~172.31.255.255 | 16 |
C | 192.168.0.0~192.168.255.255 | 256 |
嗯,很明显是C级私有地址,然后我去查了一下,家里使用的路由器品牌是D-Link不是工商时间,预设路由器IP是192.168.0.1,网络部分是192.168.0实际操作很重要,让我们在一次打开cmd输入ipconfig/all指令来看看电脑的IP地址是公有还是私有IP
然后看看cmd中的预设闸道消息,192.168.0.1就是路由器IP,不同路由器品牌分配的子网IP会有些不同,不过常见的就是192.168.0.1, 192.168.1.1, 192.168.31.1等
大家到这里可能会有些疑惑,既然私有IP的目的是减少公有IP的使用,使用范围是同一个子网内的设备,那假如我要与其他区域网络的设备通讯怎怎么办?在IP头部中填入私有IP吗?不对阿,不同网域可能会有相同的私有IP,到底私有IP跟公有IP之间存在什么关系?
从ipconfig/all指令中我得知了当前电脑的私有IP为192.168.0.12,这是同一个子网络中的设备互相辨识用的IP,那我们来看看浏览网页时对方判定的IP又是多少
首先到Google搜寻页面,打上what is my ip,按下搜寻即可显示你的公有IP地址(你也可以到百度搜寻我的IP)
结果显示203.204.48.56是我的公有IP地址,其实这个IP是由路由器分配给我的,假如我现在要访问全球范围内的网络,就分配给我一个公有IP
分配?这又是怎么一回事...
固定IP与浮动IP
其实固定IP与浮动IP都是公有IP,只是分配的形式不同而已。你可以它当成商业化下的产物,也就是ISP业者向使用者提通的不同形式服务
固定IP顾名思义,它的IP地址不会随着时间改变,更不会因为你重新开机或者重新连线而不同。因为这种特性,固定IP通常用于IP不允许变动的使用场景,例如辨公室里的印表机、网络上注册的部落格、商业用途的官方网站等等
优点:
方便远端连线协作
便于其他使用者直接造访
更快的连网速度(不需要重新配置IP)
缺点:
更高的费用
需要手动配置固定IP(较为复杂)
容易成为骇客攻击目标
使用浮动IP的设备有可能因为时间、重开机或电信业者重新分配而改变IP地址,也可能不会改变。这种特性使得浮动IP可以分配给多台设备共用,有需要连线的设备在透过具有NAT功能的主机或路由器分配一个浮动IP就好
优点:
相对便宜的费用
自动配置IP,设定较为简单
仅需要一条Cable或ADSL就可以让多名用户上网
缺点:
连网速度较慢(需要重新配置IP)
对于有架网站需求的使用者来说,较为麻烦
先来简单介绍一下DHCP与NAT之间的关系。当设备有上网的需求时,ISP电信商就会动态分配一个可以上网的公有IP地址,这种技术就称为DHCP。而子网域内的私有IP是无法上网的,因此NAT的责任就是让子网内多台设备共用一个DHCP分配的公有IP。这个分配到的IP我们就称为浮动IP,所以假如你的DHCP功能是显示开启,那代表你的设备是使用浮动IP的方式进行上网
我们一样在cmd中输入ipconfig/all指令,假如DHCP功能被启用则表示当前使用的是浮动IP,否则就是使用固定IP。
下图显示我的电脑的DHCP配置为启用,也就是说我们在Google上搜寻What is my IP的结果(203.204.48.56)其实是电信业者使用DHCP分配给路由器的一组浮动IP,路由器再使用NAT功能使我可以用这组IP上网
不使用DHCP
若使用者不使用DHCP功能,那么每次上网时都需要手动输入IP地址(固定IP)、网络遮罩、预设路由等等,非常麻烦,相反的有设定DHCP的设备,只要简单设定DHCP服务器,就可以达到随插即用的作用
好啦,今天的文章就到这里,希望会对各位有帮助,有任何想法也欢迎留言告诉我,毕竟你的反馈是我写作的最大动力!
0 评论