2016-08-16 124 views
0

用ipv4_mapped很容易將ipv4轉換爲ipv6。但另一方呢?Ruby:如何將ipv6的uo地址轉換爲ipv4的ip地址?

我沒有找到在IpAddr文檔中做到這一點的方法。

+0

IP不能這樣工作,是嗎?您可以在IPv4中封裝IPv4地址,這是規範的一部分,但反過來需要IPv4到IPv6代理。 – tadman

+0

IPv4和IPv6是不同的協議。在IPv6表示法中有IPv4地址的表示,但這並不意味着您只能在不同協議之間轉換地址。他們是不同的,必須分開處理。 –

回答

2

首先,理解將大多數IPv6地址轉換爲IPv4地址是不可能的(出於多種原因,最明顯的是無法將128位數字合併到32位中)是很重要的。可以轉換爲IPv4的唯一IPv6地址是從IPv4地址映射的地址(例如由IPAddr#ipv4_mapped生成的那些地址)。爲此,我們有IPAddr#native

require "ipaddr" 

ip = IPAddr.new("192.168.2.128") 
ipv6 = ip.ipv4_mapped 
puts ipv6.native 
# => 192.168.2.128