顾名思义,IP地址就是一个地址,IP包裹投递(Delivery)地址。
目的IP地址 = IP包裹的收件人地址
有收件人地址,就会有寄件人地址,怎么表示呢?
源IP地址 = IP包裹的寄件人地址
IP包裹,英文名称为IP Packet。
这里的IP又是什么呢?
IP = Internet Protocol
Internet(互联网),IP包裹(Packet)可以在Internet(互联网)快递平台上实现自动投递(Delivery)。
收件人地址(目的IP)在哪里,这是Internet(互联网)职责所在,他们知道目的IP具体在哪里。读者如果有兴趣,可以简单写一下。
运营商,每条线路/端口分配的IP地址(PPPoE/DHCP)是多少记录下来,通过BGP路由协议告诉自己的邻居(其他运营商),BGP邻居再告诉自己的邻居,通过这样的扩散方式,比如1.1.1.1就完成了扩散。这句话的潜台词是,如果互联网出现目的IP = 1.1.1.1 的IP包裹,互联网是知道如何到达目的地,即原始扩散1.1.1.1的BGP路由器,以及对应的线路/端口。
一个小问题,如果每一个IP地址都像1.1.1.1这样扩散,互联网有40亿+IP地址,每个BGP路由器有40亿+ 个IP地址条目,按照保存一个条目100字节算,需要耗费40亿 *100 = 4000亿字节 = 400G byte,这远远超出80、90年代路由器的内存容量。
怎么办?
如果1.1.1.0、1.1.1.1、1.1.1.2、…1.1.1.255 一共256个连续的IP地址都属于某个运营商,它们有一个共同的前缀1.1.1,这个前缀一共3个Byte,即24 bit位,如果用1.1.1/24来代表以上的256个IP地址,是不是一个good idea?
好是好,如果1.1.1用0补齐成4byte,对于32 bit位计算的计算机就很友好了。补齐的样子是这样的:
1.1.1.0/24
可以将IP地址路由表缩小到1/256。
可是缩减规模还是不够,最初的互联网只接受前缀长度 ≤ 19 的IP地址前缀。
比如
1.1.0.0/19
代表前缀 = 00000001 00000001 000/19
剩余的后缀长度 = 32 -19 = 13,后缀可以是0,也可以是1。
第一个IP = 00000001 00000001 0000000 00000000 (二进制)= 1.1.0.0(十进制)
最后一个IP = 00000001 00000001 00011111 11111111(二进制)= 1.1.31.255(十进制)
一共2^13 = 8192个IP地址。
缩减规模 = 1/8192
有的大企业,拥有17.0.0.0/8 整个号段,只需要这一条路由,即可代表所有前缀为17的1600万 + IP地址。
随着路由器内存容量越来越大,BGP路由器对前缀长度限制越来越松,从最初的19,先放松到21,再放松到22。意味着互联网路由表越来越大,从最初的几万条,到2015年的60几万条,截止2024.2.13号,大约941238条。
BGP routing table entries examined: 941238
现实的问题来了,电脑/手机也要有全球94万+ 路由表条目吗?
没有必要。
可是电脑/手机依赖于路由表来寻找目的地的,没有全球路由表,怎么办呢?
很简单,用0.0.0.0/0这一条即可代表互联网所有的IP地址。
凡是在本地查找没有合适的匹配,最后都会匹配0.0.0.0/0,并delvery给它指示的线路/端口(运营商)。
通过前缀归纳的方式可以缩减路由表规模,但是也带来了很多不便。
Cloudflare,一家CDN加速厂商,收购了1.1.1.1这一个IP地址。希望将1.1.1.1在全球N多运营商通过BGP扩散出去。运营商犯难了,因为这是一条1.1.1.1/32路由,前缀32显然不小于等于22的要求。
但是规则是死的,人是活的,只要砸钱运营商可以通告/32路由。
Cloudflare可以使用1.1.1.1来实现泛播Anycast。
通常一个IP地址代表唯一一个目的地,这个就是最通用、使用最多的单播Unicast。
使用Anycast的好处是,同一个IP地址可以在多个物理地点扩散,用户访问1.1.1.1,就会被deliver到物理距离最近的1.1.1.1,响应延迟小,从而实现加速访问。
为何私有IP地址?
电话号码长度没有硬性的限制,如果号码不够用了,只要从6位变成7位,甚至8位,丝毫没有影响。
实在扩展不了,也可以使用分机号,比如010-60001000-888,888就是分机号,前面的一串数字是全球可路由号,通过2次拨号888即可使用,无非麻烦一点。
可是IP地址就不一样了,它是定长的32 bit位。长度无法扩展,也没有办法使用分机号。
但是全球可路由的IP地址不够用,必须开辟几个地址块,谁都可以自由使用的IP地址块。针对用户共开辟3块,称之为私有IP地址。
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
代表的含义上文已经详细阐述。
如果任由这些IP地址进入互联网,返程的时候就出问题了,因为大家都可以使用,会有冲突。
怎么办?
需要在这些进入互联网的I P包裹,它们的私有源IP,替换成网关的全球可路由IP地址,返程的时候再替换成原始的私有IP即可。
这个技术就是网络地址转换(NAT)。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...