سؤال كيف يمكن التمييز بين المضيف والمنفذ في عنوان IPv6؟


تحتوي عناوين URL دائمًا على هذا التنسيق:

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

تكمن المشكلة في أن IPv6 يستخدم النقطتين ، تمامًا مثل فاصل المنفذ والمضيف ، على سبيل المثال:

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

ولكن ماذا لو كان هذا هو المضيف ، وأريد الاتصال به مع HTTP على المنفذ 100؟

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

المشكلة هي القولون الأخير. بما أن الصفر يتم حذفه بنقطتين مزدوجتين (بين 1f70 و 999) ، فإنه من غير المعروف إذا كان ": 100" ينتمي إلى IP أو رقم المنفذ. كيف يمكننا أن نعرف هذا؟


81
2017-11-24 22:48


الأصل




الأجوبة:


التدوين في هذه الحالة هو ترميز رقم IP IP6 في أقواس مربعة:

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

هذا RFC 3986، القسم 3.2.2: المضيف

مضيف تم تعريفه بواسطة عنوان بروتوكول الإنترنت الحرفي ، الإصدار 6       [RFC3513] أو ما بعده ، يتميز بإحاطة حرفية IP       داخل أقواس مربعة ("[" و "]"). هذا هو المكان الوحيد الذي       يُسمح بأحرف قوس مربع في بناء جملة URI. في       توقع تنسيقات عناوين حرفية IP المستقبلية التي لم يتم تحديدها بعد ،       قد يستخدم تطبيق علامة إصدار اختياري للإشارة إلى مثل هذا       بصراحة بدلاً من الاعتماد على تقرير إرشادي.


112
2017-11-24 22:51



تجدر الإشارة إلى أن الأقواس ليس اختياري. إنها الآلية الوحيدة التي لا لبس فيها والتي يمكن للمتصفح من خلالها تحديد عنوان IPv6 رقمي. - tylerl
لا ينبغي أن يكون المنفذ داخل الأقواس؟ - jayarjo
jayarjo لا ، حيث توجد الأقواس لتوفير توضيح بين عنوان IP ، الذي يحتوي على علامات ، والمنفذ ، الذي يتم فصله عن عنوان بروتوكول الإنترنت بواسطة نقطتين. - sysadmin1138♦