2010-08-25 18 views
5

में आईपीवी 4 अंतर-रूपांतरण के लिए मुझे लगता है कि मैं पिछले से एकत्र किया HttpRequest वस्तुओं है कि मेरी वेब सर्वर प्राप्त आईपीवी 4 प्रारूप में आईपी के की एक सूची है। मेरे पास एक जावा एप्लेट है जो आईपीवी 6 प्रारूप में आईपी पते देता है (जावा एप्लेट आईपी पते के साथ डेटा का एक गुच्छा देता है)। मुझे यह जांचने की ज़रूरत है कि एप्लेट द्वारा आईपी आईपी सूची से किसी भी आइटम से मेल खाता है या नहीं।आईपीवी 6 सी #

आईपीवी 6 और आईपीवी 4 प्रारूपों को इंटर-कन्वर्ट कैसे करें?

मेरे वेब अनुप्रयोग पर ASP.Net सी #

संपादित

यहाँ

बनाया गया है समस्या यह है कि मैं का सामना करना पड़ रहा है। जावा एप्लेट क्लाइंट से आईपी का एक समूह देता है जो मुझे लगता है कि क्लाइंट मशीन के नेटवर्क कार्ड की संख्या पर निर्भर करता है।

इसके साथ ही मैं ASP.Net HttpRequest ऑब्जेक्ट से एक आईपी पते मिलता है। मुझे यह पता लगाने की ज़रूरत है कि वास्तव में मेरी वेबसाइट से कनेक्ट करने और कुछ कार्यों को करने के लिए कौन सा आईपी इस्तेमाल किया गया था।

समस्या कभी कभी मैं आईपीवी 6 प्रारूप में javaapplet से केवल एक ही आईपी मिलता है जहां आईपी के रूप में मैं इतना तुलना में विफल रहता है से HttpRequest वस्तु आईपीवी 4 प्रारूप में है मिलता है।

उत्तर

4

आप के बारे में आईपीवी 4-आईपीवी 6 मैपिंग या IPv4 पता एम्बेडिंग बात कर रहे हैं।

IPv4 पता एम्बेडिंग एक IPv4 पते और आईपीवी 6 को आईपीवी 4 से संक्रमण में सहायता करने के एक IPv6 पता के बीच एक रिश्ता बनाने किया जाता है। एक प्रकार, आईपीवी 4-संगत आईपीवी 6 पता, उपकरणों कि दोनों IPv4 और IPv6 के साथ संगत के लिए प्रयोग किया जाता है; यह 96 शून्य बिट्स के साथ शुरू होता है। अन्य, आईपीवी 4-मैप किया गया पता, मानचित्रण आईपीवी 4 उपकरणों कि आईपीवी 6 पता स्थान में IPv6 के साथ संगत नहीं हैं के लिए प्रयोग किया जाता है; यह 80 शून्य के साथ 16 से शुरू होता है।

..

पतों की इन दो प्रकार के बीच अंतर सूक्ष्म है, लेकिन महत्वपूर्ण। पहले 80 बिट हमेशा शून्य कर रहे हैं, इसलिए जब यह देखा जाता है जैसा कि आप जानते यह किसी प्रकार की एक एम्बेडेड IPv4 पता है। आईपीवी 4-संगत आईपीवी 6 पते केवल डिवाइस के लिए उपयोग किए जाते हैं जो वास्तव में आईपीवी 6-जागरूक हैं; आईपीवी 4-संगत पता इसके पारंपरिक आईपीवी 6 पते के साथ है। इसके विपरीत, यदि प्रारंभिक 80 के बाद 16 बिट्स के लिए "एफएफएफएफ" देखा जाता है, तो यह एक पारंपरिक आईपीवी 4 डिवाइस निर्दिष्ट करता है जिसका आईपीवी 4 पता आईपीवी 6 प्रारूप में मैप किया गया है। यह आईपीवी 6-सक्षम डिवाइस नहीं है।

तो नीचे की रेखा तब तक है जब तक वे एक साथ मैप किए जाते हैं, आप/से कनवर्ट नहीं कर पाएंगे। आपको translator की आवश्यकता होगी।

+0

अद्यतन सवाल की जांच करें –

2

मान लें कि आप किसी प्रकार के वायरलेस प्लेटफार्म के साथ काम कर रहे हैं या वायरलेस करने की क्षमता है। आईपीवी 6 को मोबाइल नेटवर्किंग एकेए "वायरलेस" पर सुधार के साथ करना है। आईपीवी 6 को आईपीवी 4 में कनवर्ट करना वह नहीं है जिसे आप ढूंढ रहे हैं। आईपीवी 6 एक असली पता है। इन दिनों आईपी पते के लिए यह नया उन्नत मानक है। Here देखें और अपने लिए निर्णय लें। आप इसे मैन्युअल रूप से here भी कर सकते हैं। आईपीवी 6 आपके आईपीवी 4 को मुखौटा करना है।

उम्मीद है कि मदद करता है।

+0

अद्यतन सवाल –

3

0A0D पहले से ही इस जवाब देने के लिए लग रहा था, लेकिन मैं इसे एक शॉट दे देंगे:

अपने IPv6 पता के पहले 10 बाइट्स (80 बिट) शून्य हैं, तो आप के साथ पिछले 4 बाइट तुलना कर सकते हैं एक आईपीवी 4 पते के 4 बाइट्स।

bool AreEquivalent(IPAddress ip6addr, IPAddress ip4addr) 
{ 
    byte[] ip6bytes = ip6addr.GetBytes(); 
    byte[] ip4bytes = ip4addr.GetBytes(); 
    for (int i = 0; i < 10; i++) 
    { 
    if (ip6bytes[i] != 0) 
     return false; 
    } 
    for (int i = 0; i < 4; i++) 
    { 
    if (ip6bytes[i + 12] != ip4bytes[i]) 
     return false; 
    } 
    return true; 
} 

इसका मतलब यह है कि आप पहले से ही पता है कि IPv6 और IPv4 है क्या। यदि आपको मनमानी पते की तुलना करने की आवश्यकता है तो अतिरिक्त तर्क जोड़ें।

+0

की जांच करें कोड ऊपर पूरा नहीं लगता है। [मानक] (http://tools.ietf.org/html/rfc3513) के अनुसार, उपर्युक्त के अतिरिक्त, आपको आईपीवी 6 पते पर बाइट्स 10 और 11 को भी जांचना होगा। उन्हें "आईपीवी 4-संगत आईपीवी 6 पता" और "आईपीवी 4-मैप किए गए आईपीवी 6 पते" के लिए एफएफ के लिए 0 होना चाहिए। –