阿里巴巴的一道题目,是关于利用主机IP与子网掩码计算网络号。

在此之前,我们需要先了解下五类IP地址。

在同一个物理网络上的主机的地址都有一个相同前缀,即IP地址分成两个部分:netid,hostid。其中netid代表网络地址,hostid代表这个网络上的主机地址,根据他们选择的位数的不同,可以分成A,B,C,D,E五类基本IP地址。

A类地址由1个字节的网络号与3个字节的主机号组成,即就是第一段数字的范围必须是(1~127)。其范围(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达16,777,216个。

B类地址由2个字节的网络号与2个字节的主机号组成,即就是第一段数字的范围必须是(128~191),其范围(128.0.0.0-191.255.255.255)用于中型网络,节点数可达65,536个。

C类地址由3个字节的网络号与1个字节的主机号组成,即就是第一段数字的范围必须是(192~223),其范围(192.0.0.0-223.255.255.255)用于256个节点以下的小型网络的单点网络通信。

D类地址并不反映网络的大小,,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成,其范围(224.0.0.0-239.255.255.255)

E类地址,其范围(240.0.0.0-255.255.255.254)地址用于试验。

IPv4的规定,对IP地址强行定义了一些保留地址,即:“网络地址”和“广播地址”。所谓“网络地址”就是指“主机号”全为“0”的IP地址,如:192.168.0.0(C类地址);而“广播地址”就是指“主机号”全为“255”时的IP地址,如:192.168.255.255(C类地址)。

PS:

网络ID不能以“127”作为开头,在地址中数字127保留给诊断用。如127.1.1.1用于回路测试,
同时网络ID的第一个8位组也不能全置为“0”,全置“0”表示本地网络。网络ID部分全为“0”和全部为“1”的IP地址被保留使用。 

下面介绍下子网掩码的作用:

子网掩码,则是用来标识两个IP地址是否同属于一个子网。它也是一组32位长的二进制数值,其每一位上的数值代表不同含义:为“1”则代表该位是网络位;若为“0”则代表该位是主机位。和IP地址一样,人们同样使用“点式十进制”来表示子网掩码,如:255.255.0.0。

了解以上基础知识后,我们看一个概念。

CIDR(无类别域间路由选择,Classless and Subnet Address Extensions and Supernetting)与子网。

在子网中是没有“类别”的。上面提到网络分为A类、B类、C类、D类、E类。这些网络只能分为相等的几部分,如C类网络是一个24位网络地址,B类网络是一个16位网络地址,A类网络是一个8位网络地址。要突破这个瓶颈,引入了可变长度子网掩码(VLSM)来解决这个问题。

CIDR(发音为“cider”)网络地址使用网络/子网掩码的风格。此组合会告诉你这样的信息:网络部分/主机部分。
如下面的写法:

[plain] view plaincopy
  1. 192.168.0.0/28

前面的192.168.0.0表示网络地址,后面的28表示子网掩码的前连续的28位全部是“1”,表示成2进制值如下:

[plain] view plaincopy
  1. 11111111 11111111 11111111 11110000

对应子网掩码的十进制数如下:

[plain] view plaincopy
  1. 255.255.255.240

则从上面的子网掩码可以看出,此子网中主机位为4位,其范围是0000~1111,转换成10进制为0~15,除去此子网中的网络地址与广播地址。

一共有14个IP地址(192.168.0.241~192.168.0.254)。

有了上面的基础,下面讨论今天看到的东西。在一个192.168.5.0/24的子网中,有一个主机的IP为192.168.5.125。确定主机的网络号与主机号。

由cider的表示风格确定出子网掩码为255.255.255.0。

转换给定的IP地址与确定出的子网掩码为二进制数:

192.168.5.125:11000000.10101000.00000101.01111101

AND

255.255.255.0:11111111.  11111111.  11111111.00000000

网络号,把IP地址与子网掩码进行按位与得到如下:

11000000.10101000.00000101.00000000

转换成十进制即为:192.168.5.0

下面求主机号,先把子网掩码取反码,再遇IP地址相与。

192.168.5.125:11000000.10101000.00000101.01111101

AND

0.0.0.255:          00000000.  00000000.  00000000.11111111

得到了主机号:0.0.0.125.即就是此主机号为125.

TCP/IP学习——利用主机IP与子网掩码计算网络号相关推荐

  1. C语言实现通过IP和子网掩码计算网络号

    想找个现成的直接用都找不到,只好自己写了 直接上码 1.c // 编译 gcc 1.c #include <stdio.h> #include <string.h> #incl ...

  2. IP地址(分类)、子网掩码、网络号、主机号、子网号

    IP地址 IP地址被用来给Internet上的电脑一个编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把"个人电脑"比作"一台电话&qu ...

  3. 已知IP地址和子网掩码计算网络号

    已知B类地址的子网掩码为255.255.0.0,假设某B类地址为127.24.36.55,那么它的网络号为:() A.127.24.0.0 B.0.0.36.55 C.255.255.36.55 D. ...

  4. 计算机网络:根据IP和子网掩码计算网络号

    题目感觉有误,但是解题思路是正确的. 已知B类地址的子网掩码为255.255.0.0,假设某B类地址为127.24.36.55,那么它的网络号为:() A.127.24.0.0 B.0.0.36.55 ...

  5. 计算机网络之ip、子网掩码、网络号、主机号等概念解析

    在工作中谈论到计算机网络时,有几个经常出现的术语,比如:ip.子网掩码.网段等等.之前对这些概念的理解都比较模糊,只知其大概意思,随着工作中遇到的网络问题越来越多,有必要详细理解一下计算机网络的基础知 ...

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

    IP地址.子网掩码.网络号.主机号.网络地址.主机地址以及ip段/数字-如192.168.0.1/24是什么意思? 2016年03月26日 23:38:50 JeanCheng 阅读数:105674  ...

  7. IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字

    IP地址.子网掩码.网络号.主机号.网络地址.主机地址以及ip段/数字 IP地址被用来给Internet上的电脑一个编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把 ...

  8. 计算机网络知识总结:有关IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字的概念及笔试题

    有关知识背景及概念 参考书籍:<图解TCP/IP> 1.IP地址(Internet Protocol Address) IP地址(Internet Protocol Address)是指互 ...

  9. IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段

    背景知识 IP地址 IP地址被用来给Internet上的电脑一个编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把"个人电脑"比作"一台 ...

最新文章

  1. java rest 图_SpringMVC视图及REST风格
  2. mysql enum和set_mysql enum和set字段类型的使用
  3. Factom(公证通)--基于区块链的存证系统
  4. php 取utc时间,得到UTC时间在PHP
  5. ubuntu 清空/tmp目录
  6. linux获取连续数组下标值,shell 数组,双层循环打印变量
  7. 苹果将削减iPhone SE及AirPods产量 iPhone 13也要求减产
  8. linux常用命令练习:wc、cut、|、tee、tail
  9. Tclientdate的排序
  10. spring boot / cloud (九) 使用rabbitmq消息中间件
  11. 我脸都问绿了!二面竟然被问到MySQL时间类型datetime、bigint及timestamp的查询效率......
  12. C++中volatile的作用
  13. three.js 05-01 之 PlaneGeometry 几何体
  14. 时间复杂度比较以及额外空间复杂度O(1)
  15. (4)Dojo学习之动画学习
  16. ROS文件系统和文件系统操作
  17. STM32单片机开发实例 基于STM32单片机的温室大棚监测系统
  18. 晚上不能入睡有什么办法改善?这些助眠好物你要知道
  19. Javaweb分页技术实现
  20. 51CTO“硅谷技划”日记之一:飞向旧金山的技术集结号

热门文章

  1. MVC5+EF6 入门完整教程十
  2. udhcp源码详解(四) 之租赁IP的管理
  3. 你不是在拯救世界就是在拯救世界的路上
  4. 浅谈String和StringBuffer类:
  5. pip: failed to create process.解决方法
  6. memcache的原理和命中率的总结
  7. Linux-makefile
  8. OpneCV3——使用SURF、SVM、BOW对图像进行分类
  9. python dlib学习(八):训练人脸特征点检测器
  10. 定位插件_微创新 | 开发PL/SQL插件,快速定位所需字段