程序员基础知识—IP地址

文章目录

一、什么是IP地址

IP地址就像我们需要打电话时的电话号码一样,它用来标识网络中的一台主机,每台主机至少有一个IP地址,而且这个IP地址是全网唯一的。IP地址由网路号和主机号两部分组成。如果一台主机拥有两个或者多个IP地址,那么说明该主机属于两个或者多个逻辑网络,一般用作路由器。网络号相同的主机可以直接互相访问,网路号不同的主机需要通过路由器才能互相访问。

IP地址用一个32位的二进制码来表示,每个字节转换成对应的十进制数,每一个十进制数之间用"."来分隔,这种方法称为"点分十进制表示法"。

二、IP地址的分类

在TCP/IP协议中,根据网络规模的大小划分了5类IP地址。

  • A类IP地址
    A类IP地址第一个字节为网络号,后三个字节为主机号。网络号的最高位固定为0。因此能够表示的网络号有2^7^也就是128个。另外,由于全0和全1的网络号有特殊用途,因此,去掉全0和全1的网络号,只能表示126个网络号。有三个字节,24位可以用来表示主机号,可以表示2^24^个主机。A类IP地址常用于大型的网络。
  • B类IP地址
    B类IP地址用前两个字节表示网络号,后两个字节表示主机号。网络号的最高位为10,因此最多可以表示2^14^ - 2个网络号。最多表示2^16^ - 2个主机号。B类IP地址通常用于中等类型的网络。
  • C类IP地址
    C类IP地址的前三个字节表示网络号,最后一个字节表示主机号。网络号最高位为110,最多表示2^21^ - 2个网络号。最多表示2^8^ - 2个主机号。C类IP地址通常用于小型的网络。
  • D类IP地址
    D类IP地址最高位为1110,是多播地址。主要留给Internet体系结构委员会使用。
  • E类IP地址
    E类IP地址的最高位为11110,它留做今后使用。

需要注意的是,并不是说A类IP地址比其他B类和C类的IP地址高级,或者优先级更高,只是它们的使用场景不同。

三、子网掩码

子网掩码也是用来标识网络中的主机的。既然上面的IP地址也是标识网络中的主机的,那么为什么还要有子网掩码的概念呢?当然是因为只用IP地址存在一些问题。

首先是只是用IP地址能够表示的主机数有限。其次是,IP地址在使用时会存在很大的浪费。比如一个单位申请了一个A类地址,但是实际本单位的主机数并没有达到A类地址的上线,甚至一半都没有达到,这就会造成很大的浪费。为此,增加了子网掩码的概念。

在一个主机很多,分布范围很广的大型网络中,如果所有的主机都是用同一个网络号,就需要用一些网桥来将这些主机连接起来。但是网桥有很多缺点,比如容易引起广播风暴,而且出现问题时不太容易隔离和管理。可以把这个网络分成若干个子网,每个子网之间用路由器来连接。此时,在IP地址中增加一个子网号字段

需要注意的是,子网的划分是网络内部的事情,子网号究竟有多长,是由单位自身决定的。从网络外部来看,该网络只有一个网络号,只有进入网络内部,路由器才会根据子网号进行路由选择,然后找到目的主机。

TCP/IP体系规定,使用32位来表示子网掩码。子网掩码由0和1组成,1对应IP地址的网络号和子网号字段,0对应IP地址的主机号字段。子网掩码也是用点分十进制表示法表示。如果不进行子网划分,那么子网掩码就是默认值,A类IP地址的子网掩码默认值为255.0.0.0,B类IP地址的默认子网掩码为255.255.0.0,C类IP地址的默认子网掩码为255.255.255.0。使用子网掩码时,寻址就变成了三级寻址。首先寻找对应的网络号,然后匹配子网号,最后寻找主机号。

如何判断两个IP地址是否是一个子网呢?具体方法是将两个IP地址分别和子网掩码做二进制"与"运算。如果得到的结果相同,则属于同一个子网。如果结果不同,则不属于同一个子网。

相关推荐
友友马20 分钟前
『 Linux 』网络层 - IP协议(一)
linux·网络·tcp/ip
码老白1 小时前
【老白学 Java】Warshipv2.0(二)
java·网络
HackKong2 小时前
小白怎样入门网络安全?
网络·学习·安全·web安全·网络安全·黑客
vmlogin虚拟多登浏览器2 小时前
虚拟浏览器可以应对哪些浏览器安全威胁?
服务器·网络·安全·跨境电商·防关联
澜世2 小时前
2024小迪安全基础入门第三课
网络·笔记·安全·网络安全
ZZZCY20034 小时前
华为ENSP--IP编址及静态路由配置
网络·华为
EasyCVR4 小时前
私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?
大数据·网络·音视频·h.265
hgdlip5 小时前
主IP地址与从IP地址:深入解析与应用探讨
网络·网络协议·tcp/ip
珹洺5 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
今天我刷leetcode了吗5 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑