文档章节

网络管理基础

陈亦
 陈亦
发布于 2014/02/12 19:39
字数 1815
阅读 434
收藏 5

之前写了篇文章讲解了IPv4地址跟无符号整型的相互转换:PHP: 详解ip2long和long2ip 。本篇将详细讲解IPv4地址的分类和子网、子网掩码以及单播、广播和多播。本文只从IPv4的角度去考虑问题,不涉及链路层帧格式。

IPv4分类

有五类IPv4地址,地址长32bit,如下图所示:

A、B、C是常用的三类地址;D类地址用于多播(组播);E类地址为将来使用保留,主要用于Internet试验和开发。依上图很容易判断一个IPv4地址是属于哪类地址,只要拿到高8位进行判断即可。以IP:157.23.56.90 来举例说明,157就是高8位,本文的示例假设用于测试的IPv4地址都是合法的,因此不对给出的IPv4地址做合法性校验。代码如下:

<?php
function getIPv4Class($h8)
{
	if ((($h8 >> 7) & 0x1) == 0x0)
	{
		return 'A';
	}
	else if ((($h8 >> 6) & 0x3) == 0x2)
	{
		return 'B';
	}
	else if ((($h8 >> 5) & 0x7) == 0x6)
	{
		return 'C';
	}
	else if ((($h8 >> 4) & 0xf) == 0xe)
	{
		return 'D';
	}
	else if ((($h8 >> 3) & 0x1f) == 0x1e)
	{
		return 'E';
	}

	return 'Unknown';
}

echo "ip: 157.23.56.90是 " . getIPv4Class(157) . " 类地址\n";

$ php -f test.php
ip: 157.23.56.90是 B 类地址

如果您不熟悉十六进制,则希望您能记住下图,并且记住十六进制的一位相当于二进制的四位,从低位算起,高位不足则补0:

我们经常用的回环地址127.0.0.1就是A类地址,这是因为127的二进制表示为:01111111,它的最高位为0,所以是A类地址。

网络ID

A、B、C这三类地址都是由网络号和主机号组成的。网络号用于区分网络,主机号用于区分不同的主机。对于IP: 157.23.56.90 来说,要取得它的网络ID,首先需要知道它是属于哪类地址。很明显它是属于B类地址,我们之前计算过了。B类地址是由16位网络号和16位主机号所组成,因此将这16位网络号移到低位所对应的十进制就是它的网络ID,代码如下:

<?php
// ip: 157.23.56.90
// B类地址的网络号是高16位,因此是由157和23组成
$netID = ((157 << 8) | 23) & 0xffff;
echo "ip: 157.23.56.90的网络ID是: " . $netID . "\n";

$ php -f test.php
ip: 157.23.56.90的网络ID是: 40215

主机ID

主机ID的计算跟网络ID的计算类似,先获取IPv4地址类型,再取对应的主机号计算出来,代码如下:

<?php
// ip: 157.23.56.90
// B类地址的主机号是低16位,因此是由56和90组成
$hostID = ((56 << 8) | 90) & 0xffff;
echo "ip: 157.23.56.90的主机ID是: " . $hostID . "\n";

$ php -f test.php
ip: 157.23.56.90的主机ID是: 14426

子网ID

子网ID是从主机ID中抽出若干位来形成的(将主机ID中的若干位置1),并且只能由高位开始并且是连续的。一般是由连续的8位组成,但这个并没有限制,这主要取决于网络管理员如何来规划子网。比如对于B类网络(157.23),可由低16位主机号中若干位来划分子网。如果取1位来划分子网,则可分为2个子网157.23.0和157.23.1,主机号变成由低15位组成;如果取2位来划分子网,则可分为4个子网157.23.0、157.23.1、157.23.2和157.23.3,主机号变成由低14位组成。对于取2位来划分子网,则子网ID分别为:0b00,0b01,0b10,0b11,结果分别为0,1,2,3。

子网掩码

子网掩码类似于IPv4也是用32位整型来表示。将网络号和子网号全部置1,主机号全部置0则得到子网掩码。对于没有划分子网的IPv4来说,将网络号全部置1,主机号全部置0则得到网络掩码。每类IPv4地址都有默认的网络掩码,根据前面的图我们可以知道:A类地址8位网络号,则它的默认掩码是:255.0.0.0;B类地址16位网络号,则它的默认掩码是:255.255.0.0;C类地址24位网络号,则它的默认掩码是:255.255.255.0。

子网掩码的表示方式

子网掩码一般用形如:255.255.255.0这种方式来书写,但也提供了另一种书写方式。比如在设置路由表时,使用ip/n的方式。其中ip是有效的ip地址,n是子网掩码中1的个数。因为子网掩码是连续的1和连续的0组成的,所以可使用这种方式。比如对于IP: 157.23.56.90来说,子网掩码255.255.0.0,是连续的16个1,它是B类地址的默认掩码,因此可以写成:157.23.56.90/16。

子网掩码的作用

对于IP: 157.23.246.90来说,这是B类地址是毋庸置疑的,它的网络号为157.23,主机号为246.90。如果要知道157.23.246.90所处的网段,则需要提供子网掩码。因为246的二进制数为:11110110,如果没有提供子网掩码,则不能确定是否从主机号中抽出了若干位来形成子网。例如:157.23.246.90/16,则表示没有被划分子网,它的网络掩码即是B类地址的默认网络掩码255.255.0.0。再如:157.23.246.90/18,很明显是从主机号中抽出了2(18-16)位来形成子网ID,它的子网掩码是255.255.192.0,至于192是如何得到的,您只需计算二进制11000000的值。

网络地址

将主机号全部置0,其它位不变则得到网络地址。比如对于B类IP: 157.23.246.90/16来说,它的网络地址为: 157.23.0.0,而对于IP: 157.23.246.90/18来说,它的网络地址为: 157.23.192.0。

单播

单播是一对一的通信,通常情况下我们使用的都是单播方式。A、B、C类地址都是单播地址。

广播

广播可以分为几种。这里只涉及到指向网络的广播和指向子网的广播。

指向网络的广播

指向网络的广播地址是主机号全为1的地址。对于B类IP: 157.23.246.90/16来说,它的广播地址为: 157.23.255.255。

指向子网的广播

指向子网的广播地址是主机号全为1且有特定子网号的地址。对于B类IP: 157.23.246.90/18来说,它的指向子网的广播地址跟具体的子网号有关,这里就不进行具体的计算,只要分别针对各子网来计算即可。

多播

多播也称组播,D类地址就是是用于多播的。多播用于向多个目标主机发送报文,这点跟广播是有区别的。广播是向整个网络或整个子网发送报文。多播组ID是由28位来表示的,多播组地址包括最高4位的1110和多播组ID,范围从224.0.0.0到239.255.255.255。


© 著作权归作者所有

陈亦
粉丝 241
博文 23
码字总数 53194
作品 0
浦东
高级程序员
私信 提问
加载中

评论(2)

xiaoye
xiaoye
64
喻恒春
喻恒春
好文,很好,很强大
超级网管员系列图书介绍

超级网管员系列图书,是由机械工业出版社 华章图文信息技术有限公司策划,资深作者 刘晓辉、王春海、王淑江等人编写的一系列网络技术类图书,本书共分10本,涵盖了从网络基础、网络应用、网络...

技术小甜
2017/11/16
0
0
新书《Windows Server 2012活动目录管理实践》上市

从规划《管理实践》套书开始,到现在已经经历了2年的时间,其中: 《Exchange Server 2010 SP1/SP2管理实践 》,2013-1月份上市。《Windows Server 2012 Hyper-V虚拟化管理实践 》,2013-7上...

wangshujiang
2014/02/20
0
0
《Windows Server 2012活动目录管理实践》 内容提要、前言

内容提要 Windows域的核心价值是身份验证系统。域从出现(Windows NT)到现在(Windows Server 2012 AD DS域服务)已经经过了15年的时间,从初期单纯身份验证功能到现在的企业管理中枢,已经...

wangshujiang
2018/06/26
0
0
基于JAVA技术的WEB网管软件开发方案

  随着Web/Java技术的成熟及其在Internet上的广泛应用,网络管理技术和模式迎来了又一次革命。在网络管理领域,通过Web技术(如Web服务器,HTTP协议、HTML和Java语言等)来集成网络管理系统...

智和网管平台
2016/11/14
214
0
超级网管员——网络管理

前 言 自从计算机网络诞生以来,无论过去、现在还是将来,网络管理一直是并且永远是永久的话题。随着网络应用的深入、网络规模的扩大和数据存储量的增加,对网络管理的要求也就越来越高。本书...

刘晓辉
2007/09/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Taro 兼容 h5 踩坑指南

最近一周在做 Taro 适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 解决跨域问题 h5 发请求会报跨域问题,需...

dkvirus
今天
4
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
3
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部