我剛剛遇到一個問題,我必須檢查路徑是否指向Windows共享。此問題的一部分是檢查主機A是否與主機B相同。主機A和主機B可以是以下任何一種{IPv4地址,IPv6地址,主機名,FQDN}。由於我不需要確切地解決和比較我的情況下的IP地址就足夠了。如何檢查兩臺主機是否相同
但理論上來說,有一種方法可以檢查主機是否相同?
我剛剛遇到一個問題,我必須檢查路徑是否指向Windows共享。此問題的一部分是檢查主機A是否與主機B相同。主機A和主機B可以是以下任何一種{IPv4地址,IPv6地址,主機名,FQDN}。由於我不需要確切地解決和比較我的情況下的IP地址就足夠了。如何檢查兩臺主機是否相同
但理論上來說,有一種方法可以檢查主機是否相同?
不,沒有通用方法來查看兩個標識符(名稱或地址)是否轉到同一主機。一個例子:192.0.2.1
和2001:db8::bad:dcaf
。他們是一樣的嗎? (回答:看不出)
在互聯網中沒有主機身份的一般概念。一些協議有這樣的概念,例如SSH(連接到主機,看指紋是否匹配)或HIP(測試密鑰),但是您依賴於爲這些特定機器激活的協議。
一些啓發式方法可能會有所幫助(例如,該機器爲fingerprinting),但它遠不是100%。
將這兩個地址傳遞給getaddrinfo()
函數,並將結果列表進行比較。
與gethostbyname()
不同,此函數將高興地解析IPv6文字,並且還會返回與主機名關聯的任何相關的A
或AAAA
記錄。
我用這種方法你會得到錯誤的否定。考慮機器A有兩個IP地址,比如說192.168.1.1和192.168.2.1。地址不匹配,但主機相同。 BTW:與MAC地址相同的問題。 – 2010-05-25 20:07:11
是的,當然你會的。沒有辦法打敗這種邏輯。它可以告訴你,兩個主機是相同的 - 它不能證明他們不是_。 – Alnitak 2010-05-25 20:09:50
即使你知道兩個主機是相同的 - 是不是沒有意義?這兩個主機可能會在不同的時刻出現,包括DNS更新,負載平衡等等。 – Dolph 2010-05-25 16:09:50
那麼好點,但有沒有負載平衡的應用程序和DNS更新是罕見的。無論如何,這個問題在理論上是理性的,沒有聲稱是合理的。 – 2010-05-25 16:24:25
我很感興趣,無論看到的答案:) – Dolph 2010-05-25 16:28:53