前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向程序员的网络基本知识 - IP地址

面向程序员的网络基本知识 - IP地址

作者头像
颇忒脱
发布2018-10-19 14:34:38
5970
发布2018-10-19 14:34:38
举报

Github

本系列文章旨在向程序员分享一些网络基本知识,让程序员具备基本的网络常识,以便与网络工程师沟通。本系列文章不会涉及如何组建网络、如何配置交换机/路由器等硬件相关的内容,所以不适合想考CCNA/HCNA证书的人士。

IP地址

IP地址,多么熟悉啊,比如192.168.1.1就是一个IP地址,但你可能未必知道IP地址的含义,本文将分享给你一些IP地址相关的基础知识。

IP地址的结构

事实上192.168.1.1这样的IP地址是一个IPv4地址,IPv4地址实际上是由4个字节组成,回想一下一个字节(byte)多少位(bit)来着?192.168.1.1实际上是二进制11000000.10101000.00000001.00000001的十进制表达。所以IP地址的最大值也就是255.255.255.255——11111111.11111111.11111111.11111111

所以在读下去之前请记住:IP地址是由4个字节组成,IP地址是二进制的。

network id和host

IP地址包含了两个信息:

  • network id,当前主机所属的二层网络
  • host,当前主机在二层网络中的ID

但是我们怎么从IP地址的4个字节中提取这两个信息呢?这就需要子网掩码(Subnet Mask)了。

子网掩码和IP地址一样也是4个字节,区别在于它的二进制形式中的1必须从左到右且连续,比如255.255.255.0的二进制是11111111.11111111.11111111.0254.255.255.0不是一个合法的子网掩码,因为它的二进制是11111110.11111111.11111111.0,1没有连续。1.255.255.0也不是一个合法的子网掩码,因为它的二进制是00000001.11111111.11111111.0,1不是从最左侧开始的。

我们在来看192.168.1.1的network id和host,它的子网掩码是255.255.255.0,为了简便起见,我们用子网掩码中的1的数量来表示:192.168.1.1/24

代码语言:javascript
复制
ip          : 11000000.10101000.00000001.00000001 (192.168.1.1)
subnet mask : 11111111.11111111.11111111.00000000 (255.255.255.0)
network id  : 11000000.10101000.00000001.00000000 (192.168.1.0)
host        : 00000000.00000000.00000000.00000001 (1)

我们把子网掩码和IP地址Bit AND一下,得到network id=192.168.1.0 ,把子网掩码取反码和IP地址Bit AND一下,得到host=1

那我们知道network id有什么用呢?当我们试图做网络通信的时候,操作系统会计算出源IP的network id和目标IP的network id,如果两者一样就说明在同一个二层网络,如果不一样则说明不在同一个二层网络,那么数据就会发送给路由器处理(回忆网络模型及网络设备的内容)。

IP地址类型

IP地址是分类型的,有:

  • A类:1-126.xxx.xxx.xxx / 8
  • B类:128-191.xxx.xxx.xxx / 16
  • C类:192-223.xxx.xxx.xxx / 24
  • D类:224-239.xxx.xxx.xxx
  • E类:240-255.xxx.xxx.xxx
  • loopback:127.xxx.xxx.xxx

不过我们一般都只会接触到A、B、C三类加一个loopback地址。

私有IP地址

在A、B、C三类IP地址中有部分地址保留为私有地址,Internet上的网络设备均不会接受、发送或者转发属于私有地址的源IP地址或目的IP地址。私有IP地址的范围是:

  • A类:10.0.0.0 ~ 10.255.255.255
  • B类:172.16.0.0 ~ 172.31.255.255
  • C类:192.168.0.0 ~ 192.168.255.255(这个很熟悉吧)

参考资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IP地址
    • IP地址的结构
      • network id和host
    • IP地址类型
      • 私有IP地址
        • 参考资料
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档