IPv6 URL में होस्ट और पोर्ट को कैसे अलग किया जा सकता है?


87

URL में हमेशा यह प्रारूप होता है:

<protocol>://<host>[:<port>]/[<path>][#<hash>]

समस्या यह है कि IPv6 कॉलोन का उपयोग करता है, पोर्ट और होस्ट के विभाजक की तरह, जैसे:

2001:db8:1f70::999:de8:7648:6e8

लेकिन क्या होगा अगर यह होस्ट है, और मैं इसे पोर्ट 100 पर HTTP से कनेक्ट करना चाहता हूं?

http://2001:db8:1f70::999:de8:7648:6e8:100/

समस्या अंतिम उपनिवेश है। चूंकि शून्य को डबल कॉलन (1f70 और 999 के बीच) के साथ छोड़ा गया है, यह अज्ञात है अगर ': 100' आईपी या पोर्ट नंबर से संबंधित है। हम यह कैसे जान सकते हैं?

जवाबों:


118

उस स्थिति में अंकन को वर्ग कोष्ठक में IPv6 IP संख्या को एनकोड करना है:

http://[2001:db8:1f70::999:de8:7648:6e8]:100/

यह RFC 3986 , खंड 3.2.2: मेजबान है

एक होस्ट जिसे इंटरनेट प्रोटोकॉल शाब्दिक पते, संस्करण 6 [RFC3513] या बाद में पहचाना जाता है, को वर्ग कोष्ठक ("[" और "]") के भीतर आईपी शाब्दिक रूप से संलग्न करके प्रतिष्ठित किया जाता है। यह एकमात्र स्थान है जहां यूआरआई सिंटैक्स में वर्ग ब्रैकेट वर्णों की अनुमति है। भविष्य की प्रत्याशा में, जैसा कि अभी तक अपरिभाषित आईपी शाब्दिक पता प्रारूप है, एक कार्यान्वयन एक वैकल्पिक संस्करण ध्वज का उपयोग कर सकता है ताकि अनुमान निर्धारण पर भरोसा करने के बजाय इस तरह के प्रारूप को स्पष्ट रूप से इंगित किया जा सके।


38
यह इंगित करने योग्य है कि कोष्ठक वैकल्पिक नहीं हैं । यह एकमात्र ऐसा नायाब तंत्र है जिसके द्वारा ब्राउज़र एक संख्यात्मक IPv6 पते की पहचान कर सकता है।
3

बंदरगाह कोष्ठक के अंदर नहीं होना चाहिए?
जयरोज़ो

2
@ यारज्जो नहीं, क्योंकि ब्रैकेट्स आईपी एड्रेस के बीच असंतोष प्रदान करने के लिए होते हैं, जिसमें कॉलन होते हैं, और पोर्ट, जो कि कोलोन द्वारा आईपी एड्रेस से अलग किया जाता है।
sysadmin1138
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.