TCP/IP协议学习(网络层补充之网络号、主机号与IP地址、子网掩码)

来源:互联网 发布:手游挂机软件 编辑:程序博客网 时间:2024/05/29 04:37

今天看到阿里巴巴的一道题目,是关于利用主机IP与子网掩码计算网络号。

大学大三的时候曾经学过一些计算机数据通信的知识。只不过许久不用,也就忘得一干二净了。。。。哎。。。。囧!!!

基础很重要!!!不扯淡了。。。开始总结。

在此之前,我们需要先了解下五类IP地址。

在同一个物理网络上的主机的地址都有一个相同前缀,即IP地址分成两个部分:netid,hostid。其中netid代表网络地址,hostid代表这个网络上的主机地址,根据他们选择的位数的不同,可以分成A,B,C,D,E五类基本IP地址。

A类地址由1个字节的网络号与3个字节的主机号组成,即就是第一段数字的范围必须是(1~127)。其范围(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达16,777,216个。 

B类地址由2个字节的网络号与2个字节的主机号组成,即就是第一段数字的范围必须是(128~191),其范围(128.0.0.0-191.255.255.255)用于中型网络,节点数可达65,536个。  

C类地址由3个字节的网络号与1个字节的主机号组成,即就是第一段数字的范围必须是(192~223),其范围(192.0.0.0-223.255.255.255)用于256个节点以下的小型网络的单点网络通信。

D类地址并不反映网络的大小,,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成,其范围(224.0.0.0-239.255.255.255)

E类地址,其范围(240.0.0.0-255.255.255.254)地址用于试验。

IPv4的规定,对IP地址强行定义了一些保留地址,即:“网络地址”和“广播地址”。所谓“网络地址”就是指“主机号”全为“0”的IP地址,如:192.168.0.0(C类地址);而“广播地址”就是指“主机号”全为“255”时的IP地址,如:192.168.255.255(C类地址)。

PS:

网络ID不能以“127”作为开头,在地址中数字127保留给诊断用。如127.1.1.1用于回路测试,同时网络ID的第一个8位组也不能全置为“0”,全置“0”表示本地网络。网络ID部分全为“0”和全部为“1”的IP地址被保留使用。 


下面介绍下子网掩码的作用:

子网掩码,则是用来标识两个IP地址是否同属于一个子网。它也是一组32位长的二进制数值,其每一位上的数值代表不同含义:为“1”则代表该位是网络位;若为“0”则代表该位是主机位。和IP地址一样,人们同样使用“点式十进制”来表示子网掩码,如:255.255.0.0。


了解以上基础知识后,我们看一个概念。

CIDR(无类别域间路由选择,Classless and Subnet Address Extensions and Supernetting)与子网。

在子网中是没有“类别”的。上面提到网络分为A类、B类、C类、D类、E类。这些网络只能分为相等的几部分,如C类网络是一个24位网络地址,B类网络是一个16位网络地址,A类网络是一个8位网络地址。要突破这个瓶颈,引入了可变长度子网掩码(VLSM)来解决这个问题。

CIDR(发音为“cider”)网络地址使用网络/子网掩码的风格。此组合会告诉你这样的信息:网络部分/主机部分。
如下面的写法:

192.168.0.0/28

前面的192.168.0.0表示网络地址,后面的28表示子网掩码的前连续的28位全部是“1”,表示成2进制值如下:

11111111 11111111 11111111 11110000
对应子网掩码的十进制数如下:

255.255.255.240

则从上面的子网掩码可以看出,此子网中主机位为4位,其范围是0000~1111,转换成10进制为0~15,除去此子网中的网络地址与广播地址。

一共有14个IP地址(192.168.0.241~192.168.0.254)。


有了上面的基础,下面讨论今天看到的东西。在一个192.168.5.0/24的子网中,有一个主机的IP为192.168.5.125。确定主机的网络号与主机号。

由cider的表示风格确定出子网掩码为255.255.255.0。

转换给定的IP地址与确定出的子网掩码为二进制数:

192.168.5.125:11000000.10101000.00000101.01111101

                                        AND

255.255.255.0:11111111.  11111111.  11111111.00000000

网络号,把IP地址与子网掩码进行按位与得到如下:

11000000.10101000.00000101.00000000

转换成十进制即为:192.168.5.0

下面求主机号,先把子网掩码取反码,再遇IP地址相与。

192.168.5.125:11000000.10101000.00000101.01111101

                                     AND

0.0.0.255:          00000000.  00000000.  00000000.11111111

得到了主机号:0.0.0.125.即就是此主机号为125.

0 0