网络编程(一)IP地址与子网掩码

ip 地址的分类和组成

ip 地址由网络号和主机号组成,由一个长度为 32 位的二进制字符表示。但是为了方便记忆,我们一般都转换为点分十进制格式来表示。

点分十进制

点分十进制是把 ip 地址每 8 个字节划分为一组,然后转换成四个十进制数字,最后用点分隔这四个十进制数字的表示方法,比如 11000000 10101000 00000001 00000001 的点分十进制表示为 192.168.1.1

ip 地址的分类有很多种,这里我们深入讨论一下 A B C D E 这种分类。

ip 地址 32 位二进制字符被划分为固定的位数来表示不同的含义,所以就有了 A B C D E 这五类 ip 地址。

如下图表示:

image.png

上图中虚线前面的几位表示网络类别,A 类用 0 表示,B 类是 10,C 类是 110,D 类是 1110,E 类是 1111(这里有争议,按照规律推测应该是 11110)

A 类地址:

网络地址范围:1.0.0.0~126.0.0.0

image.png

IP 地址范围:1.0.0.1~126.255.255.254

A 类地址前 8 位表示网络号,而第一位又用来表示网络类型,所以 2-8 这 7 位用来表示网络号,最多可表示 2^7=128 个网络,然而网络号全为 1 的网络和网络号全为 0 的网络有特殊用途,所以 A 类地址最多有 2^7-2=126 个网络,

网络号全为 1:01111111 也就是 127.x.x.x 作为本地软件环回测试,我们常用的是 127.0.0.1 作为本地环回测试,实际上,如果我们本机搭建了服务器环境,并且开启了服务器环境,无论我们在浏览器地址栏输入 127.0.0.2 还是 127.x.x.x 都指向了本地。所以 127 网段整体都被保留为了本地测试 ip。

网络号全为 0:00000000 也就是 0.x.x.x 作为保留地址,保留地址可以在内网中使用,不可以与公网通信。

后面 24 位表示主机号,有 2^24=16777216,然而主机号全为 0 和主机号全为 1 也有特殊用图,所以 A 类地址每个网络上最多有 2^24-2=16777214 台主机。

主机号全为 1:表示该网络上的所有主机,也就是说,主机号全为 1 是该网络上的广播地址,并不表示某台主机。

主机号全为 0:表示该网络的网络地址,而该网络上没有任何主机

有一种特殊情况就是,网络号全为 0,主机号也全为 0,即 0.0.0.0,我们用它来表示没有获取到 ip 地址,即地址缺失。

如上分析,那么最终 A 类地址的范围是:1.0.0.1~126.255.255.254

ip 地址空间共有 2^32=4294967296 个,A 类地址空间占了 2^7 * 2^24 = 2^31 个,占了整个 ip 地址空间的 50%

B 类地址:

网络地址范围:128.1.0.0~191.255.255.0

image.png

IP 地址范围:128.1.0.1~191.255.255.254

B 类地址前 2 个字节,也就是前 16 位表示网络号,而前 2 位已经固定为 10 用来表示 B 类网络,所以只剩下 14 位来表示网络号共有 2^14=16384 个,而 128.0.0.0 这个网络是不使用的(具体为何没有找到出处),所以 B 类的网络个数为 16383 个,每个网络上的主机个数为 2^16-2=65534 个,这里同样要除去主机号全为 0 和 主机号全为 1 的 ip,整个 B 类 ip 地址空间有约 2^14 * 2^16 = 2^30 (能用不能用的都算上),大约占整个 ip 地址空间的 25%

C 类地址:

网络地址范围 :192.0.1.0~223.255.255.0

image.png

IP 地址范围:192.0.1.1~223.255.255.254

C 类地址前 3 个字节,也就是前 24 位表示网络号,而前 3 位已经固定为 110 用来表示 C 类网络,所以只剩下 21 位来表示网络号共有 2^21=2097152 个,而 192.0.0.0 这个网络也是不使用的(具体为何没有找到出处),所以 C 类的网络个数为 2097151 个,每个网络上的主机个数为 2^8-2 = 254 个,这里同样要除去主机号全为 0 和 主机号全为 1 的 ip,这个 C 类 ip 地址空间约有 2^21 * 2^8 = 2^29 个,占这个 ip 地址空间的 12.5%

D 类地址:

D 类地址作为多播地址使用

E 类地址:

E 类地址保留为科研使用

通过上面的分析,我们可以得到下图

image.png

单播和多播:

其中 A B C 类 ip 属于单播地址,D 类 ip 属于多播地址。

专用 IP 地址(私有 IP 地址):

一个公司中或组织中,并不是所有的主机都需要和互联网直接相连的,所以如果 ip 地址不能复用的话,这样会造成严重的浪费,所以设计者就在 A B C 类地址中各保留了一段 ip 地址作为专用地址,它们可以在不同的内网中重复使用。这些地址不会被当作公用地址被分配。

私有地址的 ip 范围如下


image.png

那么为什么在 A B C 类地址段都有私有地址段呢?

因为他们容纳的主机数量是不一样的,如果主机数量比较少,那么使用 C 类的私有地址就可以了,如果主机数量比较多(例如超过了 C 类网络可以容纳的主机数量),又想把它们划分在同一个局域网内,那么就应该根据具体数量,选用 B 类私有地址,或 A 类私有地址。

子网掩码概述:

此处我需要引用一段经典的解释来说明子网掩码的存在意义

与 IP 地址关系最为紧密的要算子网掩码,在较复杂的网络中,子网掩码的作用并不比

IP 地址弱。
IP 地址以网络号和主机号来标识网络上的主机,只有在一个网络号下的计算机之间才能
直接互通,不同网络号的计算机要通过网关(Gateway)才能互通,但这样的划分在某些情
况下显得并不十分灵活。为此 IP 网络还允许划分成更小的网络,称为“子网(Subnet)”,这
样就产生了“子网掩码”。
子网掩码用来判断任意两个 IP 地址是否属于同一子网络,只有在同一子网的计算机才能
直接互通。要将一个网络划分为多个子网,网络号将会占用原來的主机位。如对于一个 C 类
地址,标准规定是用 24 位来标识网络号,如要将其划分为两个子网,则需要占用 1 位原来
的主机标识位。此时网络号位变为 25 位,而主机号位则变为 7 位。同理,借用两个主机位
则吋以将一个 C 类网络划分为 4 个子网,依次类推。
计算机可以从子网掩码中看出这一网络是否划分子网。子网掩码和 IP 地址一样有 32 位,
确定子网掩码的方法是将它与 IP 地址中标识网络号的所有对应位都用“1”表示,而与主机
号 对 应 的位都用“0”表示。如分为两个子网的 C 类 IP 地址用 25 位来标识网络号,则其子
网掩码为:11111111 11111111 11111111 10000000,即 255.255.255.128。于是,A 类地址的默
认子网掩码为 255.0.0.0: B 类 EP 地址的默认子网掩码为 255.255.0.0; C 类 IP 地址的默认子
网掩码为 255.255.255.0。这就是在设置一个 IP 地址的子网掩码时通常不用手工输入,而是由
系统根据所配置的 IP 地址自动确定的原因。

子网掩码不能单独存在,它必须结合 IP 地址一起使用才有意义。子网掩码只有一个作用,
就是将某个 IP 地址划分成网络地址和主机地址两部分。子网掩码确定了个 IP 地址的 32 位
二进制数字中哪些是网络号,哪些是主机号。这对于采用 TCP/IP 协议的网络来说非常重要,
只有通过子网掩码,才能表明一台主机所在的子网与其他子网的义系,使网络正常工作。如
在 Windows2000Server 中,给一个网卡指定 IP 地址,系统会自动填入一个默认的子网掩码。
比如,网卡所配置的 IP 地址为“192.168.1.10”,则系统会自动配置它的子网掩码为
“255.255.255.0”。—般情况下,使用默认子网掩码就可以了。
IP 地址的子网掩码设置不是仟意的。如果将子网掩码设置得过大,也就是说子网范围扩
大,那么根据子网寻径规则,很可能发往和本地机不在同一子网内的目的主机的数据,会因
为错误的判断而认为目的机是在同一子网内。这样数据包将在本子网内循环,直到超时被抛
弃,使数据不能正确到达目的机,导致网络传输错误。如果将子网掩码设置得过小,那么就
会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给默认网关处

理,这样势必增加默认网关的负担,造成网络效率下降。因此,子网掩码应该根据网络的规
模进行设置。
如果一个局域网的规模不超过 254 台电脑,则可以采用“255.255.255.0”作为子网掩码,
现在大多数局域网都不会超过这个数宇,因此“255.255.255.0”是最常用的 1P 地址子网掩码。
如果超过了 254 台电脑,而又想把所有电脑配置在一个局域网内,就必须使用 B 类地址,但
这是不推荐使用的,因为 B 和 A,以及 C 类中大多数 IP 地址都是公用网使用的,如果在局
域网中采用了公用网的 IP 地址,当局域网中的主机连上因特网时,就会发现一些网站访问不
了,原因就是 IP 地址冲突。当然,如果局域网中的主机根本不上公用网,使用哪类 IP 地址
都可以,但实际上在当今信息社会中这是不可能的。

——摘自《网管员必读——网络基础(第 2 版)》5.1.2 子网掩码概述

子网掩码与 IP 地址计算网络号和主机号:

例如有一个个 C 类地址为 192.9.200.13,按其 IP 地址类型,它的默认子网掩码为 255.255.255.0,则它的网络号和主机号可按如下方法得到:
(1)将 IP 地址 192.9.200.13 转换为二进制数 11000000 00001001 11001000 00001101
(2)将子网掩码 255.255255.0 转换为二进制数 11111111 11111111 11111111 00000000
(3)将以上两个二进制数进行逻辑与(AND)运算,得出的结果即为网络部分。“11000000 00001001 11001000 00001101” 和 “11111111 11111111 11111111 00000000” 进行“与”运算, 得到 “11000000 00001001 11001000 00000000”,即 “192.9.200.0”,这就是这个 IP 地址的网络号,或称为“网络地址”
(4)将子网掩码的二进制数值取反后,再与 1P 地址进行逻辑与(AND)运算,得到的结果,为主机部分。如将“00000000 00000000 00000000 11111111 (子网掩码的值取反)”, 和 “11000000 00001001 11001000 00001101” 进行“与”运算后得到 “00000000 00000000 00000000 00001101”,即“0.0.0.13”,这就是这个 IP 地址的主机号(可简化为“13”)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容