Linux网络编程(一)-IP地址的认识

Internet 依靠 TCP/IP 协议,在全球范围内实现不同硬件结构、不同操作系统、不同网络系统的主机之间的互联。在 Internet 上,每一个节点都依靠唯一的 IP 地址相互区分和相互联系,IP 地址用于标识互联网中的每台主机的身份,设计人员为每个接入网络中的主机都分配一个 IP 地址(Internet Protocol Address),只有合法的 IP 地址才能接入互联网中并且与其他主机进行网络通信,IP 地址是软件地址,不是硬件地址,硬件 MAC 地址是存储在网卡中的,应用于局域网中寻找目标主机。

IP 地址的编址方式

互联网中的每一台主机都需要一个唯一的 IP 地址以标识自己的身份,那么 IP 地址究竟是什么,如何去定义一个 IP 呢?我们需要对 IP 地址的编址方式进行了解。

传统的 IP 地址是一个 32 位二进制数的地址,也叫 IPv4 地址,由 4 个 8 位字段组成。除了 IPv4 之外,还有 IPv6,IPv6 采用 128 位地址长度,8 个 16 位字段组成,本小节我们暂时不去理会 IPv6 地址。在网络通信数据包中,IP 地址以 32 位二进制的形式表示;而在人机交互中,通常使用点分十进制方式表示,譬如 192.168.1.1,这就是点分十进制的表示方式。

IP 地址中的 32 位实际上包含 2 部分,分别为网络地址和主机地址,可通过子网掩码来确定网络地址和主机地址分别占用多少位。

IP 地址的分类

根据 IP 地址中网络地址和主机地址两部分分别占多少位的不同,将 IP 地址划分为 5 类,分别为 A、B、C、D、E 五类,如下所示:

  1. A 类 IP 地址

    从上图中可以看到,一个 A 类 IP 地址由 1 个字节网络地址和 3 个字节主机地址组成,而网络地址的最高位必须为 0,因此可知,网络地址取值范围为 0~127,一共 128 个网络地址。当然,这 128 个网络地址中,其中 3 个网络地址用作特殊用途,因此可用的网络地址有 125 个。

    a. A 类地址的第一字节为网络地址,其它 3 个字节为主机地址;

    b. A 类地址范围为:1.0.0.1 ~ 127.255.255.254;

    c. A 类地址中设有私有地址和保留地址:

    ① 10.X.X.X 是私有地址,所谓私有地址就是在互联网中不能使用,而被用在局域网中使 用的地址。

    ② 127.X.X.X 是保留地址,用作循环测试使用.

  2. B 类 IP 地址

一个 B 类 IP 地址由 2 个字节的网络地址和 2 个字节的主机地址组成,网络地址的最高位必须是“10”,因此,网络地址第一个字节的取值范围为 128~191,IP 地址范围从 128.0.0.0 到 191.255.255.255。对于 B 类地址来说,一共拥有 16384 个网络地址,其中可用的网络地址有 16382 个,每个网络地址能容纳约 6 万(2^16-2=65534)多个主机。

  1. B 类地址中第 1 字节和第 2 字节为网络地址,其它 2 个字节为主机地址。

  2. B 类地址范围:128.0.0.1 ~ 191.255.255.254。

  3. B 类地址中设有私有地址和保留地址:

    ①172.16.0.0 ~ 172.31.255.255 是私有地址

    ②169.254.X.X 是保留地址。如果你的 IP 地址是自动获取 IP 地址,而你在网络上又没有找到可用的DHCP 服务器。就会得到其中一个 IP。

3. C 类 IP 地址

一个 C 类 IP 地址由 3 字节的网络地址和 1 字节的主机地址组成,网络地址的最高位必须是“110”,因此 C 类 IP 地址的第一个字节的取值范围为 192~223。范围从 192.0.0.0 到 223.255.255.255,网络地址可达209 万余个,每个网络地址能容纳 254 个主机。

  1. C 类地址第 1 字节、第 2 字节和第 3 个字节为网络地址,第 4 个个字节为主机地址。另外第 1 个字节的高三位固定为 110。

  2. C 类地址范围为:192.0.0.1 ~ 223.255.255.254。(3)、C 类地址中的私有地址:192.168.X.X 是私有地址。

  3. D 类 IP 地址

    D 类 IP 地址第一个字节以“1110”开始,它是一个专门保留的地址,它并不指向特定的网络,目前这一类地址被用在多点广播(多播,Multicast),多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

    1. D 类地址不分网络地址和主机地址,它的第 1 个字节的高四位固定为 1110。
    2. D 类地址范围:224.0.0.1 ~ 239.255.255.254。
  4. E 类 IP 地址

    E 类 IP 地址以“llll0”开始,为将来使用保留。全零(“0.0.0.0”)地址对应于当前主机。全“1”的 IP 地址(“255.255.255.255”)是当前子网的广播地址。

    a. E 类地址也不分网络地址和主机地址,它的第 1 个字节的前五位固定为 11110。

    b. E 类地址范围:240.0.0.1 ~ 255.255.255.254。

总结

以上就给大家介绍了这 5 类 IP 地址,其中在 A、B、C 三类地址中,各保留了一个区域作为私有地址:

A 类地址:10.0.0.0~10.255.255.255

B 类地址:172.16.0.0~172.31.255.255

C 类地址:192.168.0.0~192.168.255.255

A 类地址的第一组数字为 1~126。

B 类地址的第一组数字为 128~191。

C 类地址的第一组数字为 192~223。

A 类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A 类地址分配给规模特别大的网络使用。A 类地址用第一组数字表示网络地址,后面三组数字作为连接于网络上的主机对应的地址。分配给具有大量主机而局域网络个数较少的大型网络,譬如 IBM 公司的网络。

B 类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B 类地址分配给一般的中型网络。B 类地址用第一、二组数字表示网络地址,后面两组数字代表网络上的主机地址。

C 类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络掩码为:255.255.255.0;C 类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C 类地址用前三组数字表示网络地址,最后一组数字作为网络上的主机地址。

特殊的 IP 地址

下面给大家介绍一些特殊的 IP 地址,这些 IP 地址不能分配给任何一个网络的主机使用。

直接广播地址

直接广播(Direct Broadcast Address):向某个网络上所有的主机发送报文。TCP/IP 规定,主机号各位全部为“1”的 IP 地址用于广播,叫作广播地址。譬如一个 IP 地址是 192.168.0.181,这是一个 C 类地址,所以它的主机号只有一个字节,那么对主机号全取 1 得到一个广播地址 192.168.0.255,向这个地址发送数据就能让同一网络下的所有主机接收到。

A、B、C 三类地址的广播地址结构如下:

  • A 类地址的广播地址为:XXX.255.255.255(XXX 为 A 类地址中网络地址对应的取值范围,譬如:120.255.255.255)。
  • B 类地址的广播地址为:XXX.XXX.255.255(XXX 为 B 类地址中网络地址的取值范围,譬如139.22.255.255)。
  • C 类地址的广播地址为:XXX.XXX.XXX.255(XXX 为 C 类地址中网络地址的取值范围,譬如203.120.16.255)。

受限广播地址

直接广播要求发送方必须广播网络对应的网络号。但有些主机在启动时,往往并不知道本网络的网络号,这时候如果想要向本网络广播,只能采用受限广播地址(Limited Broadcast Address)。

受限广播地址是在本网络内部进行广播的一种广播地址,TCP/IP 规定,32 比特全为“1”的 IP 地址用于本网络内的广播,也就是 255.255.255.255。

多播地址

多播地址用在一对多的通信中,即一个发送者,多个接收者,不论接受者数量的多少,发送者只发送一次数据包。多播地址属于 D 类地址,D 类地址只能用作目的地址,而不能作为主机中的源地址。

环回地址

环回地址(Loopback Address)是用于网络软件测试以及本机进程之间通信的特殊地址。把 A 类地址中的 127.XXX.XXX.XXX 的所有地址都称为环回地址,主要用来测试网络协议是否工作正常的作用。比如在电脑中使用 ping 命令去 ping 127.1.1.1 就可以测试本地 TCP/IP 协议是否正常。

不能将环回地址作为任何一台主机的 IP 地址使用。

0.0.0.0 地址

IP 地址 32bit 全为 0 的地址(也就是 0.0.0.0)表示本网络上的本主机,只能用作源地址。

0.0.0.0 是不能被 ping 通的,在服务器中,0.0.0.0 并不是一个真实的的 IP 地址,它表示本机中所有的IPv4 地址。监听 0.0.0.0 的端口,就是监听本机中所有 IP 的端口。

如何判断 2 个 IP 地址是否在同一个网段内

如何判断两个 IP 地址是否处于同一个子网,可通过网络标识来进行判断,网络标识定义如下:

网络标识 = IP 地址 & 子网掩码

2 个 IP 地址的网络标识相同,那么它们就处于同一网络。譬如 192.168.1.50 和 192.168.1.100,这 2 个都是 C 类地址,对应的子网掩码为 255.255.255.0,很明显,这两个 IP 地址与子网掩码进行按位与操作时得到的结果(网络标识)是一样的,所以它们处于同一网络。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dola_Pan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值