当前位置: 首页 > news >正文

22张图带你了解IP地址有什么作用

了解IP地址

1、IP地址的格式

在IP协议的报文中,可以得知IP地址是有32个比特,IP地址在计算机中是以二进制的方式处理的,如果全部以二进制的形式来表示,使用跟表达都非常的困难,所以为了人类方便记忆,采用了点分十进制的方式,将32位的IP地址以8位为一组,分成四个部分,每组以【.】进行隔开,再将每组转换成十进制。

图片

图片

以博主电脑网卡获取的地址举例,计算机系统处理以二进制进行,可以看到非常的长,都是0跟1的组合,在使用中很容易出错也非常难记,换成十进制后,相对来说就轻松很多了。并且可以发现二进制里面0跟1的组合不一样,得到的数值也不一样,总共IP地址有多少个呢?

图片

最大允许差不多43亿的终端连接到网络里面来,看起来已经非常多了!但是,如今的Internet网中,IP地址是枯竭的状态,这也是为什么推出了IPV6的原因,可能IP地址的设计者也没想到,今后的internet网会这么庞大。

IP地址其实是由2个部分组成的,一个是网络号(网段地址)和主机号(主机地址),这个两个组成很关键,网络号是设备所在区域的一种标识区分,网络号相同的设备处于同一个网段内,网络号不同的设备处于不同网段,两个之间通信需要依赖三层设备。主机号是在同一个网段中标识不同终端设备,同一个网段内的终端是不允许出现重复的主机号的,这段很重要,先读几次,有个印象,这对我们排错跟学习都非常有帮助。

举个生活中的例子,一个小区内,有多栋楼,每栋楼都有501、601这样,避免住户搞混冲突,开发商会在前面加一个数字或者字母来进行区分每栋楼,比如2501、3601,这样在找位置的时候就很容易找到了。随着时间久了,可能跟同一栋楼的上下左右邻里相处的不错,经常会相互串门聊聊天,聚聚餐之类的,同一楼层每家独立的门牌号不会重复,很容易就找到了。不同楼就相当于网络号,有不同的标识,而同一栋楼的有很多住户,每个住户的门牌号都是不一样的,不会有重复,这样就方便定位了。

同样的,在网络中也是一样,可能我们访问的目的就在一个区域,也可能在另外的区域,那运行了TCP/IP协议的设备不管是PC、手机、路由器还是交换机,都得有一个判断规则,来对比要去的目的跟自己是不是一个网络区域,那就是通过上面的网络号来进行区分。

图片

以我们最容易接触到的家用网举例,每个人家里都有无线路由器,可能有的下面接了电脑、手机、电视、PAD、有的甚至有个人服务器/NAS等。像上面的图,路由器左边是家庭局域网网,比如有三个终端,地址分别是192.168.255.1、192.168.255.2、192.168.255.240,不管是相互传文件以及访问个人的服务器,直接输入对方的地址就可以了,并且还有这样的情况,就算宽带接入出现故障,互联网访问不到了,但这些局域网之间的互访是不影响的。

图片

另外可以发现图里面有相同的特征,都是192.168.255开头,变化的是最后一位,现在还没学介绍到地址分类,假设192.168.255相同的前缀为网络号,同一个网段,而最后一位1、2、240为主机号,数字都不是重复的。

图片

比如这里192.168.255.1访问192.168.255.240,这里192.168.255.1设备系统通过自己网卡的参数读取到对应的IP信息与目的的IP比较,发现网络号相同,则在同一个网段内,直接发送给对方,并且二层封装目的主机的MAC地址。

PS:(在同一个局域网内就是上一篇学习的二层,通过MAC封装,交换机通过MAC学习到目标MAC的接口发送出去,当然这里会留下个疑问,终端之间怎么在会实现知道对方的MAC地址是多少呢,这里还没讲解ARP协议,暂时当成它已经事先知道了。另外家用路由器有多个LAN口,其实这LAN就相当于交换机的工作模式一样,可以学习MAC的功能,自然就能知道某个设备在哪个口)

图片

如图 192.168.255.1去访问互联网上的百度 181.55.6.6, 假设对比前三段,终端判断目的与自己的网络号不一致,那么它该怎么处理呢?

图片

如果终端判断目的与自己的网络号不一致就会丢给网关处理,比如图上面丢给192.168.255.254(家用路由器的网关),家用路由器通过查询路由表中的网络号,查询交给Internet的网关,最终Internet中的路由器也通过查询网络号来层层传递,最终抵达目的地。

通过这个分析,可以得到这些有用的知识点总结。

IP地址的网络号用于区分源目IP是否在同一个网段还是不同网段,主机号用于标识同一个网段内的不同终端,并且不能重复,比如192.168.255(网络号),主机号可以是1、2、3 ……等
设备终端,比如PC、手机、平板运行了TCP/IP协议的,它都有判断的功能,如果目的IP与我网络号相同,判断在一个网段内,直接在同一个区域内完成通信;如果网络号不同,则判断为不同网段,这个时候直接交给网关处理,如果没有网关信息,则通信失败,数据包发送不出。
路由器这些三层设备在处理转发这个数据包的时候,查询路由表根据目的IP的网络号进行查询转发,这样的好处是能够提高效率,不用具体到主机位,否则Internet这么庞大的网络,每个网路设备都存放在路由表中,对设备的压力以及查询的效率就非常低了。
终端设备访问不同网段依靠的是网关,而路由器等三层设备转发数据包去往不同目的地依靠的是路由表中的条目。

图片

这些“规则”一定要有一个认知,后续在学习路由交换的时候非常有用,甚至排错的时候,比如某个设备上不了网,那我们知道了上网是得有网关的,是不是就先检查网关设置了吗,设置的对吗。当然这些会在后续中反复提到,数据包的通信离不开这些“规则”。

明白了网络号与主机号的概念,那在IP地址中,哪几位是网络号?哪几位是主机号呢?下面就来了解下地址分类以及子网掩码的概念。

2、IP地址分类

在internet诞生初期,IP地址是非常充裕的,计算机科学家们进行了分类地址,把IP地址分为了5大类,分别是A类、B类、C类、D类、E类。

图片

早期沿用的是地址分类的方法,A、B、C作为全局可用唯一地址进行分配,每个列别定义了网络号以及主机号的范围大小,由于这种方式早就不在使用,只有考试以及很多书籍还在介绍,所以这里就简单介绍下。

(1)A类地址

A类IP地址以首位为“0”开头,前面8位是网络号,网络号范围是0~127(0和127属于保留地址)。

图片

算下来就2^(8-1)-2=126,其中8位中最开始0是固定的,所以只有7个可以变化,0与127是保留需要-2,最终有126个网段。

后24位是主机号,表示可容纳的终端数量,2^24次方=16777216个地址。

图片

(2)B类地址

B类IP地址前两位以“10”固定开头,116位为网络号,网络号的范围128.0191.255,其中169.254为保留地址,算下来2^(16-2)-1,有16383个可用网段。

图片

后16位主机号,表示可容纳的终端数量,2^16次方=65536个地址。

图片

(3)C类地址

C类IP地址前三位“110”固定,从124位为它的网络号,范围是192.0.0223.255.255.255,其中192.0.0属于保留地址,所以有2^(24-3)-1=2097151

图片

后8位是主机号,标识可容纳的终端数量,2^8=256个地址。

图片

(4)D与E类地址

D类IP比较特殊,它属于组播地址,不区分网络号与主机号,用于各种协议中以及某些特殊场景,后续会慢慢熟悉,范围是224.0.0.0~239.255.255.255。而E类属于科研方面等方面,不用于互联网使用。

(5)了解网段地址、网段广播地址、以及单播地址

当主机号全为0时,表示某个网段,叫做网段地址,比如192.168.255.0,表示192.168.255.1到192.168.255.254所有地址,这也是以后在项目中经常遇到的表示方法,用于表示某个网段。

当主机号全为1时,它表示的网段广播地址,发往这个地址的数据包,该网段内所有主机都能收到,比如:网段192.168.255.0,广播地址是192.168.255.255。

图片

所以,在每个网段中,主机号全0的网段地址以及主机号全1的广播地址是不能被使用,每个网段实际可用的地址是对应的地址数-2。

图片

那什么是单播地址呢?每个网段内除去网段地址以及网段广播地址以外,剩下的就是单播地址,单播地址也就我们终端PC、手机以及网络设备路由器、交换机设备上使用的地址了,通信双方就一个发送方与接收方,而广播则是一个发送方,其余同网段的主机都为接收方,但是不会发往其他网段,中间三层设备会隔离广播,不会进行转发。

(6)二进制与十进制转换

上面介绍了一大堆地址范围,可能很多朋友有点犯迷糊,怎么就计算出这么多的网段跟主机了,首先,要明白二进制与十进制的换算。

图片

二进制到十进制的换算,可以参考上面表格,也可以借助计算器,采用程序员的模式,输入对应的数值即可,其中BIN表示二进制,DEC表示十进制,HEX表示十六进制。

图片

按照上面的表格,把每一段“置1”的数值相加就得了每一段的十进制,最终就是192.168.255.4,这个是C类地址,因为网络号前三位固定为110,同样的A与B类的地址,都有前面固定的值,范围都不一样,只要知道了固定值的位置,然后就可以计算出每个类的范围。

图片

(7)IP地址分类的好处

判断方便,网络设备需要解析一个IP地址的时候,只需要判断网络位的前四位就可以知道是网络号与主机地址的范围。
图片

这样的地址分类好处就是简单、选路查询方便,减轻中间设备的压力,但是也带来了很多的问题,也是导致这种分类在如今的环境下无法使用的原因。

问题一:灵活性

一个企业可能根据需求以及区域不同会划分成办公区、生产区、会议区等,而IP分类是没有这种区域层次的划分功能的,缺少灵活性。

问题二:与现实网络不匹配

从上面的分类的网段以及每个可以容纳的终端数来看,A、B、C中间差距太明显,比如一个C类的网段可以容纳254个主机,一个小型办公环境可能够用了,稍微有点规模的就显得不够,而一个B类地址对应一个企业来说又达不到这样大的规模,很多地址就浪费了,注意,公网地址是要花钱购买的,并不是免费使用的。

问题三:安全性问题

比如A公司与B公司是是同行竞争关系,同时向运营商购买了自己需要数量的IP地址,有一天,A公司的技术发现它竟然能看到B公司的数据包?原因就是运营商给它们分配的都是C类同一个网段,比如给A公司分配的是202.100.1.1到202.100.1.50,B公司分配的是202.100.1.101到202.100.1.180,通过地址分类,202.100.1.0属于C类,而且是同一个网段,那么数据通信A与B之间其实是可以直接通信的,有可能B的数据发送了广播报文的,导致A收到了,同样A发送的某些数据包,B也收到了,对于这样的场景,可能客户为了安全性就会选择去其他运营商购买,并且要求独立的网段,这问题对于运营商来说就头疼了,一个C内网段最少也有254个地址,一个公司有又不需要购买这么多,一部分给A,一个部分给B呢,又说不安全,空着吧,又浪费了。

问题四:地址浪费

其实从上面的三个问题中都可以看出来,地址的分类根本无法根据不同的场景需求来定制需要的,不是一个网段多了,就是少了,怎么都会造成地址浪

费空闲的,并且在划分的时候,很多A类地址就被美国的公司或者运营商占据了,像我们中国作为全球第一的人口庞大的国家,都没有一个”完整”的A类地址。而一个A类想想上千万个地址,一个公司怎么可能用得了这么多,剩下的就白白的浪费了。

重点回顾

IP地址采用点分十进制表示,分为四个部分。
IP地址由网络号与主机号组成,网络号表示具体的某一个网段,同一个网段内的主机可以直接通信,不同网段的主机互访则交给网关处理,是否在于同一个网段的判断依据就是依赖网络号。主机号表示这个网段内的终端数量,每个地址都不能相同。
路由器等三层设备在处理数据包转发的时候,也是通过网络号进行查询转发,这样效率更高,对设备压力更小。
每个网段都存在一个网段广播地址,一个网段地址,这两个地址是不能被使用的,其中网段地址表示某个整体网段,而网段广播地址是指,发往该地址的数据包,该网段内所有主机能收到,就像广播一样,但是只能在该网段内广播,穿越不了路由器,也可以理解路由器天生隔离广播。
IP地址早期采用分类地址,分为了A、B、C、D、E 五大类,其中在后续经常会接触到的有A、B、C三类,分类的好处就是规划了网络号与主机号的范围,并且为不同场景规模的环境提供了不同的网段数量以及主机数量。网关以及互联网设备在转发数据查询的时候也很容易进行判断。
分类地址的方法存在很多弊端,最大的弊端就是地址的浪费,导致IPV4地址枯竭的重大原因。

相关文章:

22张图带你了解IP地址有什么作用

了解IP地址 1、IP地址的格式 在IP协议的报文中,可以得知IP地址是有32个比特,IP地址在计算机中是以二进制的方式处理的,如果全部以二进制的形式来表示,使用跟表达都非常的困难,所以为了人类方便记忆,采用了…...

121.Android 简单的人工智能聊天项目,chatAi,AI聊天项目,GPTAi

//首页xml布局代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"mat…...

C++ this指针详解

this 是 C 中的一个关键字&#xff0c;也是一个 const 指针&#xff0c;它指向当前对象&#xff0c;通过它可以访问当前对象的所有成员。所谓当前对象&#xff0c;是指正在使用的对象。例如对于stu.show();&#xff0c;stu 就是当前对象&#xff0c;this 就指向 stu。下面是使用…...

CSS 实现六边形柱状图

前言 &#x1f44f;CSS 实现六边形柱状图 速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义全局css变量&#xff0c;柱状宽度为–w&#xff0c;最大高度为–h&#xff0c;柱形整体为渐变色&#xff0c;定义上部分颜色为…...

什么是推挽输出,开漏输出?

这篇文章是看B站“工科男孙老师”这个视频的笔记推挽 开漏 高阻 这都是谁想出来的词&#xff1f;&#xff1f; 我觉得讲的很好&#xff0c;做一下笔记 1.什么是IO输出三态 一共有&#xff1a;高电平, 低电平&#xff0c;浮空/高阻态 三种IO态 2.推挽输出 推挽输出能够表示高、…...

【图像分割】Unet系列深度讲解(FCN、UNET、UNET++)

【图像分割】Unet 深度讲解 文章目录【图像分割】Unet 深度讲解1. 介绍1.1 背景介绍&#xff1a;1.2 医学图像特点1.3 图像分割是什么2. Unet发展历程&#xff08;FCN、Unet、Unet&#xff09;2.1 全卷积网络-FCN2.1.1 FCN介绍&#xff1a;2.1.2 FCN框架2.1.3 反卷积层2.1.4 输…...

list底层的简单实现(万字长文详解!)

list底层的简单实现 文章目录list底层的简单实现list_node的实现&#xff01;list_node的构造函数list的迭代器&#xff01;——重点&#xff01;list迭代器的成员变量迭代器的构造函数* 重载前置 重载后置 重载前置-- 重载后置-- 重载! 重载 重载-- 重载list的const迭代器——…...

学习Linux只要学会这个命令就够了!

大家好&#xff0c;我是良许。 这段时间又是搬家&#xff0c;又是找新办公室&#xff0c;现在终于安顿下来了&#xff0c;有时间给大家分享干货了。 今天给大家介绍一个 Linux 超级实用命令&#xff0c;有了这个命令&#xff0c;你就可以愉快使用 Linux 上几乎所有常用命令了…...

javascript基础

javascript基础 1概述&#xff1a; JavaScript是目前web开发中不可缺少的脚本语言&#xff0c;js不需要编译即可运行&#xff0c;运行在客户端&#xff0c;需要通过浏览器来解析执行JavaScript代码。 诞生于1995年&#xff0c;当时的主要目的是验证表单的数据是否合法。 JavaS…...

【游戏逆向】某游戏技能库分析

技能库的分析大多是从技能名字入手的&#xff0c;然后再通过传入职业或者ID等信息去到库中去取当前角色的可用技能。下面我们来对《**明月刀》中的技能库进行分析。 首先通过CE对技能名字进行搜索&#xff0c;得到较少的结果&#xff0c;分别对结果进行修改&#xff0c;并再次…...

Pytorch深度学习常用预训练网络模型的下载地址

Resnet:model_urls {‘resnet18’: ‘https://download.pytorch.org/models/resnet18-5c106cde.pth‘,‘resnet34’: ‘https://download.pytorch.org/models/resnet34-333f7ec4.pth‘,‘resnet50’: ‘https://download.pytorch.org/models/resnet50-19c8e357.pth‘,‘resnet…...

毕业设计 基于51单片机自动智能浇花系统设计

基于51单片机自动智能浇花系统设计1、毕业设计选题原则说明&#xff08;重点&#xff09;2、项目资料2.1 系统框架2.2 系统功能3、部分电路设计3.1 STC89C52单片机最小系统电路设计3.2 按键电路设计3.3 水泵控制电路设计4、部分代码展示4.1 数码管位选程序4.2 ad0832数据读取程…...

熟悉常用的 Linux 操作和 Hadoop 操作

文章目录前言一、常用命令集合1、cd命令&#xff1a;切换目录1、切换到目录/usr/local2、切换回上级目录3、切换到当前登录Linux系统的用户的自己的文件夹2、ls命令&#xff1a;查看文件与目录3、mkdir命令&#xff1a;创建目录4、rmdir命令&#xff1a;删除空的目录5、cp 命令…...

Vue2项目总结-电商后台管理系统

Vue2项目总结-电商后台管理系统 去年做的项目&#xff0c;拖了很久&#xff0c;总算是打起精力去做这个项目的总结&#xff0c;并对Vue2的相关知识进行回顾与复习 各个功能模块如果有过多重复冗杂的部分&#xff0c;将会抽取部分值得记录复习的地方进行记录 一&#xff1a;项目…...

【二】一起算法---队列:STL queue、手写循环队列、双端队列和单调队列、优先队列

纸上得来终觉浅&#xff0c;绝知此事要躬行。大家好&#xff01;我是霜淮子&#xff0c;欢迎订阅我的专栏《算法系列》。 学习经典算法和经典代码&#xff0c;建立算法思维&#xff1b;大量编码让代码成为我们大脑的一部分。 ⭐️已更系列 1、基础数据结构 1.1、链表➡传送门 1…...

<Linux>环境变量

环境变量 文章目录环境变量一、基本概念二、常见环境变量三、查看环境变量的方法四、测试PATH五、测试HOME六、测试SHELL七、环境变量相关的命令八、环境变量的组织方式九、命令行参数十、通过代码获得环境变量十一、通过系统调用获取环境变量十二、环境变量通常是具有全局属性…...

【MySQL】下载(超详细教程)

目录 First-下载 Second-安装 Third-检测是否安装 Last-总结 First-下载 首先 &#xff0c;我们一步一步跟着我的操作来&#xff0c;不能越步骤&#xff0c;很容易报错&#xff0c;就芭比Q了。 第一步直接进入这个网址&#xff1a;MySQL &#xff1a;&#xff1a; MySQL 社…...

再探pytorch的Dataset和DataLoader

本文从分类、检测、分割三大任务的角度来剖析pytorch得dataset和dataloader源码&#xff0c;可以让初学者深刻理解每个参数的由来和使用&#xff0c;并轻松自定义dataset。思考&#xff1a;在探究Dataset和DataLoader之前&#xff0c;需要明白一个事情&#xff0c;就是当我们不…...

【2023.3.18 美团校招】

文章目录1. 小美剪彩带2. 最多修改两个字符&#xff0c;生成字典序最小的回文串1. 小美剪彩带 题意&#xff1a;找出区间内不超过k种数字子数组的最大长度 使用双指针的方式&#xff0c;用哈希表来统计每个数出现次数。在双指针移动的过程中&#xff0c;动态的维护区间内不同数…...

程序员必须知道的HTML常用代码有哪些?

HTML 即超文本标记语言&#xff0c;是目前应用最为广泛的语言之一&#xff0c;是组成一个网页的主要语言。在现今这个 HTML5 华丽丽地占领了整个互联网的时候&#xff0c;如果想要通过网页抓住浏览者的眼球光靠因循守旧是不行的&#xff0c;程序猿们需要掌握一些必须知道的 HTM…...

多目标家庭行为检测--人脸识别模块构建

文章目录前言原理项目结构编码配置主控函数人脸采集模块特征提取识别测试前言 2023-3-18 天小雨&#xff0c;午觉舒适程度5颗星。任务完成指数2颗星。续接上文&#xff1a;《MidiaPipe stgcn&#xff08;时空图卷积网络&#xff09;实现人体姿态判断&#xff08;单目标&#x…...

RocketMQ重复消费问题的原因

文章目录 概览消息发送异常时重复发送消费消息抛出异常消费者提交offset失败服务端持久化offset失败主从同步offset失败重平衡清理长时间消费的消息总结概览 消息发送异常时重复发送 首先,我们来瞅瞅RocketMQ发送消息和消费消息的基本原理。 如图,简单说一下上图中的概念: …...

proxy详细介绍与使用

proxy详细介绍与使用 proxy 对象用于创建一个对象的代理&#xff0c;是在目标对象之前架设一个拦截&#xff0c;外界对该对象的访问&#xff0c;都必须先通过这个拦截。通过这种机制&#xff0c;就可以对外界的访问进行过滤和改写。 ES6 原生提供 Proxy 构造函数&#xff0c;…...

基于YOLOv5的舰船检测与识别系统(Python+清新界面+数据集)

摘要&#xff1a;基于YOLOv5的舰船检测与识别系统用于识别包括渔船、游轮等多种海上船只类型&#xff0c;检测船舰目标并进行识别计数&#xff0c;以提供海洋船只的自动化监测和管理。本文详细介绍船舰类型识别系统&#xff0c;在介绍算法原理的同时&#xff0c;给出Python的实…...

【C#】List数据去重

系列文章 【C#】单号生成器&#xff08;定义编号规则、流水号、产生业务单号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成&#xff08;构建本周开始、结束日期&#xff09; 本文链接&#xff1a;https…...

避免踩坑,教给你VSCode中最常用到的6项功能

这里为程序员介绍VSCode中包含的许多令人兴奋的Tips。 1. 插件市场中免费下载使用CodeGeeX插件 AI辅助编程工具CodeGeeX&#xff0c;是完全免费&#xff0c;开源开放给所有开发者使用。程序员普遍反应使用这个插件后&#xff0c;代码编写效率提升2倍以上。 CodeGeeX插件拥有…...

ThingsBoard开源物联网平台智慧农业实例快速部署教程(Ubuntu、CentOS适用)

ThingsBoard部署教程文档 文章目录ThingsBoard部署教程文档1. JDK环境安装2. 安装thingsBoard2.1 ThingsBoard软件包安装2.2 PostgreSQL安装2.3 PostgreSQL初始化配置3. 修改ThingsBord的配置4. 运行安装脚本测试5. 访问测试6. 导入一个仪表盘库6.1 导出仪表盘并导入自己的项目…...

【Java Spring基本问题】记录面试题宝典中自己不熟悉的Spring问题

文章目录Spring Bean定义装配Spring Bean生命周期Spring Bean容器Spring 循环依赖Spring 事务Autowired和ResourceSpring Bean定义装配 参考文章 1. 定义Spring Bean的三种方式 XML文件定义Spring Bean JavaConfig定义Spring Bean Component注解定义SpringBean 2. 装配Spri…...

I2C协议简介 Verilog实现

I2C协议 IIC 协议是三种最常用的串行通信协议&#xff08;I2C&#xff0c;SPI&#xff0c;UART&#xff09;之一&#xff0c;接口包含 SDA&#xff08;串行数据线&#xff09;和 SCL&#xff08;串行时钟线&#xff09;&#xff0c;均为双向端口。I2C 仅使用两根信号线&#xf…...

服务器被DDoS攻击,怎么破?

文章目录前言网站受到DDoS的症状判断是否被攻击查看网络带宽占用查看网络连接TCP连接攻击SYN洪水攻击防御措施TCP/IP内核参数优化iptables 防火墙预防防止同步包洪水&#xff08;Sync Flood&#xff09;Ping洪水攻击&#xff08;Ping of Death&#xff09;控制单个IP的最大并发…...