当前位置:首页 > 运维 > 正文内容

通俗易懂解释IP段192.168.1.0/24和192.168.0.0/16

phpmianshi6个月前 (02-05)运维124

192.168.1.0/24 包含哪些IP

IP地址格式采用“斜线记法”,即:IP地址/网络前缀。例如 192.168.1.0/24 表示32位的二进制地址中(任何IP的二进制地址都是32位),前24位为网络前缀,后8位代表主机号。

在换算中,192.168.1.0/24 对应的二进制为:

  • 1100 0000,1010 1000,0000 0001,0000 0000

其中红色为主机号,总共有8位。当这8位全为0时,取最小地址192.168.1.0,当这8位全为1时,取最大地址192.168.1.255。但请注意,在实际中,主机号全为0或者全为1的地址一般不使用,作为预留地址另有作用。所以第一个地址为:

  • 1100 0000,1010 1000,0000 0001,0000 0001

即 192.168.1.1 最后一个地址为:

  • 1100 0000,1010 1000,0000 0001,1111 1110

即 192.168.1.254

因此,192.168.1.0/24 代表的IP段就是 192.168.1.1 ~ 192.168.1.254

192.168.0.0/16 包含哪些IP

方法同上。192.168.0.0/16 表示32位的二进制地址中,前16位为网络前缀,后16位代表主机号。

在换算中,192.168.0.0/16 对应的二进制为:

  • 1100 0000,1010 1000,0000 00000000 0000

其中红色为主机号,总共有16位。当这16位全为0时,取最小地址192.168.0.0,当这16位全为1时,取最大地址192.168.255.255。但请注意,在实际中,主机号全为0或者全为1的地址一般不使用,作为预留地址另有作用。所以第一个地址为:

  • 1100 0000,1010 1000,0000 00000000 0001

即 192.168.0.1 最后一个地址为:

  • 1100 0000,1010 1000,1111 11111111 1110

即 192.168.255.254

因此,192.168.0.0/16 代表的IP段就是 192.168.0.1 ~ 192.168.255.254

总结

通过上述两例子的通俗解释,我们应该可以写出其他任何IP段的地址范围了吧,比如 192.0.0.0/8 就是一个A类IP段,其IP范围为 192.0.0.1 ~ 192.255.255.254 。


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

jsonp安全攻防技术(JSON劫持、XSS漏洞)

关于 JSONPJSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。他实现的基本原理是利用了 HTML 里 <script&...

CSRF攻击与防御

 CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:    &nbs...

linux中利用nethogs查看哪些进程占用网络带宽

centos6版本安装1、安装依赖包yum install ncurses* -y yum install libpcap* -y2、下载...


1、应用程序中调用read() 方法,这里会涉及到一次上下文切换(用户态->内核态),底层采用DMA(direct memory access)读取磁盘的文件,并把内容存储到内核地址空间的读取缓存区。

操作系统检测到进程向I/O设备发起请求后就暂停进程的运行,怎么暂停运行呢?

很简单:只需要记录下当前进程的运行状态并把CPU的PC寄存器指向其它进程的指令就可以了。
进程有暂停就会有继续执行,因此操作系统必须保存被暂停的进程以备后续继续执行,显然我们可以用队列来保存被暂停执行的进程。

注意:现代磁盘向内存copy数据时无需借助CPU的帮助,这就是所谓的DMA(Direct Memory Access)。

实际上:操作系统中除了有阻塞队列之外也有就绪队列,所谓就绪队列是指队列里的进程准备就绪可以被CPU执行了。
你可能会问为什么不直接执行非要有个就绪队列呢?

答案很简单:那就是僧多粥少,在即使只有1个核的机器上也可以创建出成千上万个进程,CPU不可能同时执行这么多的进程,因此必然存在这样的进程,即使其一切准备就绪也不能被分配到计算资源,这样的进程就被放到了就绪队列。

当进程A被暂停执行后CPU是不可以闲下来的,因为就绪队列中还有嗷嗷待哺的进程B,这时操作系统开始在就绪队列中找下一个可以执行的进程,也就是这里的进程B。
此时操作系统将进程B从就绪队列中取出,找出进程B被暂停时执行到的机器指令的位置,然后将CPU的PC寄存器指向该位置,这样进程B就开始运行啦。

此后磁盘终于将全部数据都copy到了进程A的内存中,这时磁盘通知操作系统任务完成啦,你可能会问怎么通知呢?这就是中断
操作系统接收到磁盘中断后发现数据copy完毕,进程A重新获得继续运行的资格,这时操作系统小心翼翼的把进程A从阻塞队列放到了就绪队列当中。

注意:从前面关于就绪状态的讨论中我们知道,操作系统是不会直接运行进程A的,进程A必须被放到就绪队列中等待,这样对大家都公平。

此后进程B继续执行,进程A继续等待,进程B执行了一会儿后操作系统认为进程B执行的时间够长了,因此把进程B放到就绪队列,把进程A取出并继续执行。

注意:操作系统把进程B放到的是就绪队列,因此进程B被暂停运行仅仅是因为时间片到了而不是因为发起I/O请求被阻塞。

进程A继续执行,此时buff中已经装满了想要的数据,进程A就这样愉快的运行下去了,就好像从来没有被暂停过一样


2、由于应用程序无法读取内核地址空间的数据,如果应用程序要操作这些数据,必须把这些内容从读取缓冲区拷贝到用户缓冲区。这个时候,read() 调用返回,且引发一次上下文切换(内核态->用户态),现在数据已经被拷贝到了用户地址空间缓冲区,这时,如果有需要,应用程序可以操作修改这些内容。

3、我们最终目的是把这个文件内容通过Socket传到另一个服务中,调用Socket的send()方法,这里又涉及到一次上下文切换(用户态->内核态),同时,文件内容被进行第三次拷贝,被再次拷贝到内核地址空间缓冲区,但是这次的缓冲区与目标套接字相关联,与读取缓冲区没有半点关系。

4、send()调用返回,引发第四次的上下文切换,同时进行第四次的数据拷贝,通过DMA把数据从目标套接字相关的缓存区传到协议引擎进行发送。

"在整个过程中,过程1和4是由DMA负责,并不会消耗CPU,只有过程2和3的拷贝需要CPU参与


如果在应用程序中,不需要操作内容,过程2和3就是多余的,如果可以直接把内核态读取缓存冲区数据直接拷贝到套接字相关的缓存区,是不是可以达到优化的目的?

Linux中nio的实现原理

我们上一篇文章 《linux中netstat和ss命令详解》中提到了nio 原文:https://www.phpmianshi.com/?id=105有一些小伙伴私信想了解什么是nio,我们这篇详细介...

彻底弄懂502/503/504(php-fpm+nginx)亲测可用

环境 php7.3.5 + nginx1.16.0相信大家都遇到过50X的问题,网上也看了很多文章,总是各种不对,所以今天咱们详解各种出现50X的情况和原因502:Bad Gateway &...

linux中多文件按行拼接整合命令paste

概念Linux下的paste命令主要用于从多个文件(包括标准输入)中读取内容,将每个文件的对应行用指定分隔符(默认tab制表符)拼接起来并打印到标准输出,我们可以使用重定向命令“>”将输出结果保...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。