深入理解 IP 地址、子网掩码和网关的概念
通俗来讲:IP地址,是标注一台电脑的身份,如同每个人都有的身份证;子网掩码表示所使用的网络属于哪种网络段,两个IP地址同属于一个网段就可以直接通信,当属于不同的网络段时则需要网关来发挥作用了;而网关指的是所发送的信息(数据包)出去的出口,一般指的是路由器地址。
IP地址
什么是IP协议/地址?
即“网络之间能相互连通的协议”,即计算机与计算机之间借助网络的相互通信都得遵循IP协议。IP地址是用来标识每台计算机的身份,它为互联网上的每台计算机分配一个逻辑地址,标识这台计算机的唯一。即计算机的网络身份证。
打个比方,你开车允许你上高速公路,那么你的车辆就必须得上牌照,别人的车辆也上了牌照,那么大家都可以上高速公路,车辆没上牌照的就不能上公路了。而在这里这个IP协议,就相当于车辆需要安装的牌照。
IP协议的位置
在OSI(网络七层模型)中位于“网络层”一处。
IP协议的组成
它将数据链路层传来的数据帧打包成“IP数据包”的格式来传递到下一层。
IP地址的组成:
IP地址 = 网格号 + 主机号。
子网掩码
什么是子网掩码
即用来判断两台计算机的IP地址是否属于同一个网络段的判断。如果两台计算机处于同一个网络字段上,则这两台计算机就可以直接进行通信交流。
屏蔽IP地址的一部分用来表示区别是网络标识和主机标识,以此来判断出IP地址是在局域网还是,Internet网上,将整个巨大的IP
网络划分成若干个小的子网,除此之外通过计算机的子网掩码,可以判断出两台计算机是否是处在同一个网络段的。
即将计算机的IP地址和子网掩码都转化为二进制,进行AND运算,得出结果相同的话,则说明两台计算机处在同一个网络段,可以直接通信。
子网掩码的组成
由32位的二进制组成,例如:
11111111 . 11111111 . 11111111 . 00000000 即表示为: 255 .255 . 255 . 0
IP地址和子网掩码
IP地址:4段十进制,共32位二进制,如:192.168.1.1二进制就是:11000000|10101000|00000001|00000001
子网掩码可以看出有多少位是网络号,有多少位是主机号:
255.255.255.0二进制是:11111111 11111111 11111111 00000000
网络号24位,即全是1;主机号8位,即全是0
129.168.1.1 /24 ,这个24就是网络号是24位,主机号是8位,也就相当于子网掩码是:11111111 11111111 11111111
00000000即:255.255.255.0
172.16.10.33/27中的/27,也就是说子网掩码是255.255.255.224,即27个全1 ,11111111 11111111
11111111 11100000
网关
通常指默认网关,比如通过子网掩码判断出两台计算机处于不同的网络字段,两台计算机就不能直接进行通信,为了能进行通信,这个时候网关就出现了,可以将不同网络频段的两台计算机联系在一起,从而进行通信。
打个比方:在古代我们从一个地方到另一个地方,需要经过一个城门口,比如说从东北进入内地需要经过山海关。这个城门口叫做“关口“。那么同样道理而言,从一个网络通道进入另一个网络通道是,也必须要经历这样的一个“关口”,在这里我们称之为网关。即从一个网络连接进入另一个网络的“入口“。
再打个比方:你和一个美国人进行交流,而你不懂英语,美国人也不懂汉语,那怎么办?你们互相说话的话,都是无法交流的。
这时,我们可以借助于一个翻译机,可以将对方所说的话翻译成我所能听得懂的语言。这样就可以了,网关的作用也是这样的,两个不同网络频段的计算机,经过网关(网关需要靠路由器来实现协议作用)可以进行无障碍的交流通信。
网关的作用
比如现有网络a和网络b两个网络,而如果两个网络之间要是没有路由器的话,网络a和网络b之间是不能进行TCP/IP通信。根据子网掩码我们判断出网络a和网络b是处于不同的网络,因此要使两个网络可以互相连通,则必须通过网关。
广播地址
广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址。
在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。
实践
IP地址为128.36.199.3 子网掩码是255.255.240.0。算出网络地址、广播地址、地址范围、主机数。
1)将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址,虚线前为网络地址,虚线后为主机地址
2)IP地址和子网掩码进行与运算,结果是网络地址
3)将运算结果中的网络地址不变,主机地址变为1,结果就是广播地址
4) 地址范围就是含在本网段内的所有主机
网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出
地址范围是: 网络地址+1 至 广播地址-1
128.36.11000111.00000011
&255.255.11110000.00000000
128.36.11000000.00000000即:网络地址128.36.192.0 广播地址:128.36.11000000.00000000把主机位有12个零换成1变成:
128.36.11001111.11111111 即:128.36.207.255
本例的网络范围是:128•36•192•1 至 128•36•207•254
5) 主机的数量
主机的数量=2^二进制位数的主机-2
主机的数量=2^12-2=4094
减2是因为主机不包括网络地址和广播地址。
从上面两个例子可以看出不管子网掩码是标准的还是特殊的,计算网络地址、广播地址、地址数时只要把地址换算成二进制,然后从子网掩码处分清楚连续1以前的是网络地址,后是主机地址进行相应计算即可。
推荐阅读
-
默认网关和 IP 地址之间的关系
-
IP 地址和子网掩码的划分 简要说明
-
计算 IP 地址划分子网中每个子网的子网掩码、可用地址数和 IP 的方法
-
子网掩码、前缀长度和 IP 地址数的转换
-
了解 IP 地址、默认网关、子网掩码和 DNS 的概念和作用。
-
详细的网络基础知识:IP 地址、子网掩码、网关
-
IP 地址的概念和作用
-
计算机网络:什么是 IP 地址、子网掩码和网关?
-
深入理解 IP 地址、子网掩码和网关的概念
-
Java 类加载器的作用 - 简介:类加载器是 Java™ 中一个非常重要的概念。类加载器负责将 Java 类的字节码加载到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模型、加载类的具体过程和线程上下文类加载器等。然后介绍了如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™ 中的应用。 类加载器是 Java 语言的一项创新,也是 Java 语言广受欢迎的重要原因之一。它允许将 Java 类动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 开始出现,最初是为了满足 Java Applets 的需求而开发的,Java Applets 需要从远程位置下载 Java 类文件并在浏览器中执行。现在,类加载器已广泛应用于网络容器和 OSGi。一般来说,Java 应用程序的开发人员不需要直接与类加载器交互;Java 虚拟机的默认行为足以应对大多数情况。但是,如果遇到需要与类加载器交互的情况,而您又不太了解类加载器的机制,就很容易花费大量时间调试异常,如 ClassNotFoundException 和 NoClassDefFoundError。本文将详细介绍 Java 的类加载器,帮助读者深入理解 Java 语言中的这一重要概念。下面先介绍一些基本概念。 类加载器的基本概念 顾名思义,类加载器用于将 Java 类加载到 Java 虚拟机中。一般来说,Java 虚拟机以如下方式使用 Java 类:Java 源程序(.java 文件)经 Java 编译器编译后转换为 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码并将其转换为 java.lang 实例。每个实例都用来表示一个 Java 类。通过该实例的 newInstance 方法创建该类的对象。实际情况可能更加复杂,例如,Java 字节代码可能是由工具动态生成或通过网络下载的。 基本上,所有类加载器都是 java.lang.ClassLoader 类的实例。下面将详细介绍这个 Java 类。 java.lang.ClassLoader 类简介 java.lang.ClassLoader 类的基本职责是根据给定类的名称为其查找或生成相应的字节码,然后根据这些字节码定义一个 Java 类,即 java.lang.Class 类的实例。除此之外,ClassLoader 还负责加载 Java 应用程序所需的资源,如图像文件和配置文件。不过,本文只讨论它加载类的功能。为了履行加载类的职责,ClassLoader 提供了许多方法,其中比较重要的方法如表 1 所示。下文将详细介绍这些方法。 表 1.与加载类相关的 ClassLoader 方法