IP地址概念

目前只考虑 IPv4 的情况.

1. 基本概念

IP 地址是一个 4 字节(32 位)的数据, 通常按每字节分成 4 段, 表示成类似于 192.168.0.1 的格式, 写成 16 进制是 C0.A8.00.01 , 二进制是: 11000000.10101000.00000000.00000001 .

- 第一节 第二节 第三节 第四节 写出来
10 进制 192 168 0 1 192.168.0.1
16 进制 C0 A8 00 1 C0.A8.00.01
2 进制 11000000 10101000 00000000 00000001 -

在这些地址当中, 全为 1 的为 广播地址 , 用于向所在网络的所有主机发送报文.

- 第一节 第二节 第三节 第四节 写出来
10 进制 255 255 255 255 255.255.255.255
16 进制 FF FF FF FF FF.FF.FF.FF
2 进制 11111111 11111111 11111111 11111111 -

全为 0 的为 本网络地址 .

- 第一节 第二节 第三节 第四节 写出来
10 进制 0 0 0 0 0.0.0.0
16 进制 00 00 00 00 00.00.00.00
2 进制 00000000 00000000 00000000 00000000 -

第一节为 127 的为 回送地址 , 其中的主机地址, 表示主机自己(无网络传输).

- 第一节 第二节 第三节 第四节 写出来
10 进制 127 0 0 1 127.0.0.1
16 进制 7F 00 00 01 7F.00.00.01
2 进制 01111111 00000000 00000000 00000001 -

127.0.0.0 是表示的网地址, 不是主机地址.

2. 网地址和主机地址

IP 地址当中, 有一层逻辑的划分, 就是 网地址 和 主机地址 . 前面一部分 N 位表示一个网, 后面剩下的表示网中的一台主机.

比如: 192.168.0.1 , 如果你把 192 看成是网地址, 那么剩下的 168.0.1 就是主机地址. 你把 192.168规定是网地址, 那么剩下的 0.1 就是主机地址. 这个划分是人为定的规则, 表示这个规则的, 是 子网掩码 , 用以标示出 网地址 . 比如如果你是前两节为子网, 对应的子网掩码就是 255.255.0.0 .

- 第一节 第二节 第三节 第四节 写出来
IP 10 进制 192 168 0 1 192.168.0.1
IP 2 进制 11000000 10101000 00000000 00000001 -
掩码 10 进制 255 255 0 0 255.255.0.0
掩码 2 进制 11111111 11111111 00000000 00000000 -
IP & 掩码 11000000 10101000 00000000 00000000 192.168.0.0

IP & 掩码 得到的就是网地址. 网段 IP 的第一个地址是网地址 , 网段 IP 的最后一个地址是广播地址 , 这两个地址是特殊的, 不分配给主机.

对于 IP , 192.168.0.1 , 如果掩码是 255.255.0.0 , 则它对应的网地址是 192.168.0.0 , 此网的广播地址是 192.168.255.255 .

对于 192.168.0.1 , 如果掩码是 255.255.255.0 , 则它对应的网地址是 192.168.0.0 , 此网的广播地址是 192.168.0.255 .

把一个 IP 中的哪部分定义成网地址, 哪部分定义成主机地址, 有一个影响, 就是在 IP 地址中所能表示的 网数量 和 主机数量 是不同的. 直观地不考虑一些特殊地址的情况下, IP 一共只有 32 位, 你用 8 位表示网, 那剩下的 24 位表示主机. 这种情况下, 网数量最大是 511 ( 2 ^ 9-1 ) , 主机数量最大有 33554431 ( 2 ^ 25 - 1 ) .

3. IP地址的分类

前面讲了 网地址 和 主机地址 的概念, 按 网地址 所占位数的不同, IP 地址整个被分成了 A, B, C, D, E 五类. D, E 类特殊, 我们主机会被分配到的地址是 A, B, C 类中的一种.

每类地址在其 网地址 部分都有额外格式规定, 以显示地表明这是哪一类的地址. 否则就会出现前面我们对于 192.168.0.1 这个地址的看法问题, 网地址 占几位是我们自己定的.

一共有 5 类地址, 直观地, 2 ^ 2 = 42 ^ 3 = 8, 我们使用三位地址就可以区分它们了, 000, 001, 010, 011, 100. 但是这种平均分的方式, 对于 A 类地址这种, 消耗太大, 它一共网地址就只有 8 位可用, 标示就占去了 3 位, 肯定尴尬啊. 于是就用上了 进位两分 的方式.

种类 第一位 第二位 第三位 第四位
A 0 - - -
B 1 0 - -
C 1 1 0 -
D 1 1 1 0
E 1 1 1 1

这种分法不是最有效率的, E 类要 4 位才能区分. 但是却是对短的网地址分类更有利, A 类只占用了一位网地址空间.

每类 IP 对网地址的表示定义.

分类 网地址位数 主机地址位数 十进制 二进制
A 8 24 10.10.0.1 00001010.00001010.00000000.00000001
B 16 16 172.16.0.1 10101100.00010000.00000000.00000001
C 24 8 192.168.0.1 11000000.10101000.00000000.00000001

3.1. A类地址

A 类地址使用 8 位空间表示网地址, 24 位表示主机地址. 网地址以 0 起始作为标示. 剩下能用来网地址有 7 位空间. 所以 A 类地址的网数总数量上能有 2 ^ 7 = 128 个.

A 类地址的 128 个网中, 有两个是特殊的, 0.0.0.0 的 0 网, 127.0.0.1 的 127 网. 所以实际可用的 A 类地址中, 有 126 个网.

A 类地址有 24 位的主机地址空间, 单网下的主机数量有 2 ^ 24 = 16777216 个, 除去第一个表示网本身的地址, 和最后一个用于广播的地址, 可用的主机地址有 16777214 个.

3.2. B类地址

B 类地址使用 16 位的网地址, 16 位的主机地址. 网地址以 10 起始作为标示. 剩下 14 位的网地址空间. B 类地址的网的总数量有 2 ^ 14 = 16384 个. 主机空间 16 位, 则单网的主机数量最多有 2 ^ 16 - 2 = 65534 个.

3.3. C类地址

C 类地址使用 24 位网地址, 8 位的主机地址. 网地址以 110 起始作为标示. 剩下 21 位网地址空间. C 类地址的网的总数量有 2 ^ 21 = 2097152 个. 主机空间 8 位, 单网主机数量 2 ^ 8 - 2 = 254个.

3.4. D类和E类

D 类地址用于多点广播, 用于一次寻址一组主机.

E 类地址目前保留.

4. 网段表示方法

有时我们需要表示一段的 IP , 直观地, 可能会想到的形式是, 192.168.0.* , 表示的网段是192.168.0.0 ~ 192.168.0.255 . 但是这种在十进制形式上表示的做法, 和 IP 的数据本质是有一些不匹配的. IP 的数据是 32 位二进制位, 我们只是为了方便可以写成 4 节十进制的形式. 但是在实际使用中, 我们自己规划的网络环境下, 网地址的位数不一定就是 8 的整数倍. 如果我们希望表示的 IP 段是, 前 6 位是 011111 , 后 26 位随意, 那按前面的 * 的形式就无能为力了.

于是, 我们使用 124.0.0.0/6 的形式来表示 "固定前 6 位". 这种情况通常是前 6 位作为网地址(和 IP 是哪类没关系).

- 第一节 第二节 第三节 第四节 写出来
第一个地址 01111100 00000000 00000000 00000000 124.0.0.0
最后一个地址 01111111 11111111 11111111 11111111 127.255.255.255

5. 私有地址

IP 地址是有限的, 而且每个设备很多时候都是需要一个 IP 地址的. 但是, 并不是所有设备都需要接入互联网. 为了规范 IP 地址的使用, 使那些私网自己分配的 IP 地址不和那些互联网公网 IP 地址冲突, 在 IP 地址的协议上, 每类 IP 中都预留了一段地址供私网自己使用, 这些地址不进行公开的分配.

这三段地址是:

类型 网段 范围
A 10.0.0.0/8 10.0.0.0 ~ 10.255.255.255
B 172.16.255.255/12 172.16.0.0 ~ 172.31.255.255
C 192.168.0.0/16 192.168.0.0 ~ 192.168.255.255

时间: 2024-07-30 04:18:37

IP地址概念的相关文章

教程1:IP地址和路由基本概念

0.说明         在学习下面的内容之前,应该对TCP/IP有一个最基本的认识,这个我们在前面也已经多次提到过,其实在不涉及网络数据的结构分析上,我们只需要在心里对TCP/IP有如下一个概念即可: TCP/IP层次 重点 应用层 各种应用,如Web应用.QQ等 传输层 两种连接协议:TCP.UDP 传输层端口号 网络层 IP地址(用于寻找不同的网络) 数据链路层 MAC地址(用于局域网中寻找不同的主机) 物理层 二进制数据串         这个表格的内容很重要,可以说,对于TCP/IP协

Linux技术:用IP地址的用途理解Loopback接口

1.问题 IP地址到底是属于主机的还是属于网卡的?这个问题有点太学院派了,现实中,只要懂得IP地址的概念以及IP路由,基本上没有问题.IP作为一个网络层协议,它更多的意义在于寻址而不是标识主机,因此你可以认为IP是属于网卡的. 然而不同的人对于IP地址有不同的看法,程序员看来,IP地址是属于主机的,因为他们总是用一个套接字来表示一个服务,套接字中的IP地址表示一台主机,协议和端口号表示了该主机上的一个特定进程:对于网络工程师而言,他们会认为IP地址是属于一个网段的,也就是编写于网卡上的,如果一台

一些新手必知的IP地址小常识

谈到因特网,IP地址就不能不提,因为无论是从学习还是使用因特网的角度来看,IP地址都是一个十分重要的概念,INTERNET的许多服务和特点都是通过IP地址体现出来的. 一.IP地址的概念 我们知道因特网是全世界范围内的计算机联为一体而构成的通信网络的总称.联在某个网络上的两台计算机之间在相互通信时,在它们所传送的数据包里都会含有某些附加信息,这些附加信息就是发送数据的计算机的地址和接受数据的计算机的地址.象这样,人们为了通信的方便给每一台计算机都事先分配一个类似我们日常生活中的电话号码一样的标识

java-怎么校验ip地址是否属于某ip段范围里??

问题描述 怎么校验ip地址是否属于某ip段范围里?? 如图,"配置ip信息"那个框框里,要先配置好起始ip段和结束ip段,然后在新增设备哪里,要输入设备的ip地址 现在就困在一个验证问题,1,要验证配置的ip段是否属于同一个网段,图上那个肯定配错的,2,输入的ip地址是否输入配置的ip段的范围里 问题是没想好怎么验证能符合上面那两点 求大神指教....还有,这种情况,一半需要验证ip和掩码和网关之间的正确性么??? 解决方案 判断是否是同一个网段是根据子网掩码与运算得出的 解决方案二:

IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

背景知识 IP地址 IP地址被用来给Internet上的电脑一个编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把"个人电脑"比作"一台电话",那么"IP地址"就相当于"电话号码",而Internet中的路由器,就相当于电信局的"程控式交换机". IP地址是一个32位的二进制数,通常被分割为4个"8位二进制数"(也就是4个字节).IP地址通常用"

IP地址 A\B\C类

互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),在Internet上,一种给主机编址的方式.常见的IP地址,分为IPv4与IPv6两大类. IP是英文Internet Protocol的缩写,意思是"网络之间互连的协议",也就是为计算机网络相互连接进行通信而设计的协议.在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则.任何厂家生产的

【Linux网络编程】IP地址介绍

什么是 IP 地址 IP 地址(Internet Protocol Address)也称为网间地址.网际地址.IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异. IP 地址是 TCP/IP 协议栈 里的网络层地址方案,IP地址是一种用来对网络设备的逻辑标识. 举个生活中的例子,如果我要寄

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,

Java根据ip地址获得机器名速度慢的原因?

问题描述 我在做登录的时候作了个记录客户端的登录机器名和ip,但是有的时候登录特别慢,我跟踪了下代码,发现慢的地方在根据IP地址获得机器名这段代码.但是我查了好久没有找到原因,请高手们指点一下.下面是我的代码:第一个方法获得IP地址,第二个方法是通过上面获得IP得到机器名.privatestaticStringgetClientIpAddr(HttpServletRequestrequest){//分不同的特殊情况获取用户客户端ip地址Stringip=request.getHeader("X-