#5 我们天天都接触的 IP 地址到底是什么东西?

2016-08-02

IP 地址

IP 就是一个编号,用 32 位二进制数表示,范围是 [0, 4294967295]。

为了阅读方便,IP 地址可以用点分十进制表示,也就是说,每八位用一个十进制数字表示,然后用小数点连接,比如 127.0.0.1。

那么,IP 的范围就可以表示为:0.0.0.0 ~ 255.255.255.255

总数:$2^{32} = 4294967296$ (约 43 亿)

分配机制

IP 的管理和分配是互联网号码分配局(Internet Assigned Numbers Authority,IANA)负责。

早期,IANA 是由美国南加州大学信息科学研究所(USC/ISI)依据美国国防部授权负责,后来移交给非盈利组织 ICANN。

由于互联网是从美国发展起来的,所以美国拿了大量可分配 IP 地址。

为了保证 IP 资源相对公平高效的分配,目前互联网的实际 IP 分配工作是在 IANA 的协调下,由五个区域互联网注册机构(Regional Internet Registry,RIR)负责:

  • 美洲互联网号码注册管理机构(American Registry for Internet Numbers,ARIN
    管理北美、南极洲和部分加勒比地区事务
  • 欧洲 IP 网络资源协调中心(RIPE Network Coordination Centre,RIPE NCC
    管理欧洲、中东和中亚地区事务
  • 亚太网络信息中心(Asia-Pacific Network Information Centre,APNIC
    管理亚洲和太平洋地区事务
  • 拉丁美洲及加勒比地区互联网地址注册管理机构(Latin American and Caribbean Internet Address Registry,LACNIC
    管理拉丁美洲和部分加勒比地区事务
  • 非洲网络信息中心(African Network Information Centre,AfriNIC
    管理非洲事务

我国的网络地址就由 APNIC 分配。APNIC 总部之前在日本东京,后来由于成本问题,1998 年搬到了澳大利亚布里斯班。

非公网 IP(特殊用途地址)

最知名的 10/8, 172.16/12, 192.168/16 三个网段,我们在各种局域网中见到,完整的信息在负责网络地址分配的 IANA 那里可以拿到。

  1. IANA IPv4 Address Space Registry
  2. IANA IPv4 Special-Purpose Address Registry
网段 数量 说明
0.0.0.0/8 $2^{24} = 16777216$ 本地网络,其中 0.0.0.0 表示本机。
10.0.0.0/8 $2^{24} = 16777216$ 私有
100.64.0.0/10 $2^{16} \times 64 = 4194304$ 私有, (100.64 - 100.127),ISP NAT
127.0.0.0/8 $2^{24} = 16777216$ 环回地址
169.254.0.0/16 $2^{16} = 65536$ 链路本地地址(Link-local address)
172.16.0.0/12 $2^{16} \times 16 = 1048576$ 私有,(172.16 - 172.31)
192.0.0.0/24 256 IETF Protocol Assignments
192.0.2.0/24 256 TEST-NET-1
192.31.196.0/24 256 -
192.52.193.0/24 256 -
192.88.99.0/24 256 IPv6 to IPv4 relay
192.168.0.0/16 $2^{16} = 65536$ 私有
192.175.48.0/24 256 -
198.18.0.0/15 $2^{16} \times 2 = 131072$ 私有,(192.18 - 192.19)
198.51.100.0/24 256 -
203.0.113.0/24 256 MCAST-TEST-NET
240.0.0.0/4 $2^{24} \times 16 = 268435456$ (240 - 255),保留

不知道上面为什么没有列出组播网段 224/4 (224 - 239), 和 240/4 网段一样,共 268435456 个地址。

$2^{32} - (16777216 \times 3 + 4194304 + 65536 \times 2 + 1048576 + 256 \times 8 + 131072 + 268435456 \times 2) = 3702257664$

2 ** 32 - 16777216 * 3 - 4194304 - 65536 * 2 - 1048576 - 256 * 8 - 131072 - 268435456 * 2
3702257664

3702257664 * 100 / (2 ** 32)
392519680 * 100 / (2 ** 32)
392519680 * 100 / 3702257664

所以,可分配地址大约 37 亿,占总 IP 地址数的 86.2%。

根据 全中国一共有多少 IP 地址? 一文的计算(来自 APNIC 数据),中国(含港澳台)一共分配到 IP 地址大约 4 亿,占总 IP 数的 9.14,占可分配 IP 数的 10.6。

大陆 343881984
香港  12612096
澳门    336640
台湾  35688960
--------------
总计 392519680

网络分类

早期,可能包括我们的教科书,总是提到 A 类地址,B 类地址等概念。

标准的说法,叫做 Classful Addressing,分类地址,分级寻址,分类路由。

最早 IP 分配都是按照 IP 第一个字节分配,十分大方。但是最多只能分配 256 次。
眼看着网络发展壮大,接入的机构越来越多,这样下去 IP 地址根本就不够分。
所以想出了分级的概念,按照实际需求来分配 (RFC791, 1981)。

所有的 IP 按照前缀被分成 A, B, C, D, E 五类。

Class 前缀位 网络地址位数 剩余的位数 网络数 每个网络的主机数
A 类地址 0 8 24 128 16,777,214
B 类地址 10 16 16 16,384 65,534
C 类地址 110 24 8 2,097,152 254
D 类地址(群播) 1110 未定义 未定义 未定义 未定义
E 类地址(保留) 1111 未定义 未定义 未定义 未定义

比如:
A 类:100.0.0.0/8 0110
B 类:160.0.0.0/16 1010
C 类:208.0.0.0/24 1101

地址的分配按 8 位,16 位,24 位,三种级别,也就是说每次分配可以选择 256、65536、16777214,三种 IP 数量,IP 不够分配问题暂时得到缓解。

后来,IP 地址还是不够分配,又改成了更加合理的无类别域间路由(Classless Inter-Domain Routine)方案,支持 1, 2, 4, 8, 16, 32, 64, 128, 256, 512...更多细粒度的选择。

到现在为止,又支撑了一些年,不过眼看着 IP 最后还是会耗尽。

IPv4 耗尽问题

为了推迟 IPv4 地址耗尽的问题,电信运营商早就不默认分配公网地址了。
给每户分配一个私有地址,层层 NAT,可能一个小区才一个公网 IP。

好处是再也不用怕 IP 用完。
坏处就是网络变得复杂(依赖中间的 NAT 服务),降低了可靠性。
而且,网络用户变得无法直接通信(P2P),被运营商卡了一道。

局域网 IP

RFC 1918 中定义了内网使用的地址。

10.0.0.0        -   10.255.255.255  (10/8 prefix)
172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
192.168.0.0     -   192.168.255.255 (192.168/16 prefix)

参考资料与拓展阅读

#3 首席信息安全官必须知道的五大黑客工具

2015-09-28

原文:Nabil Ouchn,Top Five Hacker Tools Every CISO Should Understand
翻译:安全牛,首席信息安全官必须知道的五大黑客工具

说明:原文作者是白帽安全工具网站 ToolsWatch.org 的创始人。

文中提到了五个据说是黑客喜欢使用的利器。

不过,

  1. 我不确定这些真的都是黑客热爱的、常用的工具,我觉得更多的应该是网络管理员常用的工具吧!
  2. 我很怀疑那些 CXO 需要上一线去做什么具体事务,文中提到的首席信息安全官(CISO)应该也只是是行政职务。

五大利器

  1. 渗透测试工具:Metasploit/Armitage

Armitage 是一个拥有图形用户界面的 Metasploit 管理工具,据说使后者更好用。

  1. 密码破解工具 Hashcat

还有一篇文章,安全军火库:渗透测试工具流行性大调查,对安全相关的其他几个工具进行了一个 “用户选择” 在线调查。
有意思的是,这个里面,密码破解一项没有看到 Hashcat 的影子。

  1. Wi-Fi 网络安全测试工具:Wifite

Python 编写

可以检测 WiFi 网络配置是否符合安全政策,甚至还能识别任何可能被用于钓鱼和中间人攻击的开放 WiFi 网络。

  1. 数据包分析(抓包):WireShark

这不用解释了,绝对的神器,正在学习中。

  1. 社交工程工具箱:SET

Python 编写

https://github.com/trustedsec/social-engineer-toolkit

复习:常用网络命令

  • nmap:Network Mapper 网络嗅探
  • tcptrack
  • tcpview
  • tcpdump
  • traceroute/traceroute6/tcptraceroute/lft
  • tracepath/tracepathtraceroute 的替代。
  • route:IP 路由表。
  • host:DNS 检查工具,即通过主机名(域名)查 IP 地址。
  • dig:DNS 检查工具,似乎得到的数据比 host 更加详细。
  • ifconfig:网卡配置工具。
  • ip
  • netstat
  • ss:socket statistics,netstat 的替代品。
  • netcatnc
  • nslookup
  • rdate:根据远程服务器设置本地时间
  • ping
  • inetdxined):网络服务守护程序
  • ssh/rlogin/telnet

我对网络命令比较感兴趣,因为我还不会。>"<|||

#2 OSI 参考模型

2014-04-25

OSI: Open System Interconnect,开放系统互联

OSI

OSI vs TCP/IP

img

应用层 Application Layer

表示层 Presentation Layer

按照 OSI 的设计, 应用层的数据可以在这一层经过编码转换,压缩,加密。

会话层 Session Layer

传输层 Transport Layer

端口 Port。

  • Packet segmentation (数据包分段)
  • Datagram (数据报)

网络层 Network Layer

IP 地址。

PDU (协议数据单元): Packet (包)

数据链路层 Data link layer

PDU (协议数据单元): Frame (帧)

子层:逻辑链路控制层 LLC

Logical Link Control

子层:媒体访问控制层 MAC

Media Access Control

  1. CSMA/CD
    Carrier sense multiple access with collision detection
  2. 数据校验
  3. 打包成帧

物理层 Physical layer

PDU (协议数据单元): Bit

比特转换为物理层的信号, 比如无线电信号、光纤信号、载波信号等。

子层:物理信号层 Physical signaling

#1 MAC 地址

2014-03-05

MAC 地址的正式名称应该是 Media Access Control Address, 翻译过来就是 “媒体接入控制层地址”。