سؤال لماذا يوجد علامة النسبة المئوية "٪" في عنوان IPv6؟


أنا أستخدم .NET Framework فئات للحصول على عناوين IP لجهازي.

Dns.GetHostAddresses(Dns.GetHostName())

لدي محول فيرتثلبوإكس والذي يحتوي على عنوان IPv4 و IPv6. باستخدام رمز .NET أنا الحصول على عنوان IPv6 باسم fe80::71a3:2b00:ddd3:753f%16 

لاحظ الـ٪ 16 في النهاية؟ 

ومع ذلك ، إذا كنت استفسار نفسه باستخدام WMI، أتلقى العنوان كـ "fe80 :: 71a3: 2b00: ddd3: 753f"

لذا ، هل لدى٪ 16 أي أهمية خاصة؟

تصحيح: 

لقد تلقيت المزيد من الملاحظات حول هذا الموضوع. وتنسجم بشكل جيد مع ما قاله ستيفن جينينغز في إجابته.

لقد قمت بتثبيت برنامج Vmware لمعرفة عنوان IPv6 الذي أصدره. العناوين كانت: FE80 :: 3dd0: 7f8e: 57b7: 34d5٪ 19

FE80 :: b059: 65f4: e877: C40 20٪

بوضوح ، الأرقام بعد٪ ليست بعض التمثيل سداسي. راجعت جميع الخصائص المتاحة لمحول شبكة الاتصال باستخدام Wmi ووجدت أن الأرقام هي بالضبط نفس الخاصية InterfaceIndex لكل محول شبكة. حسب MSDNفإنه يعرّف كل محول شبكة بشكل فريد وتم تقديم هذه الخاصية في Vista.

ما كان يزعجني هو لماذا تسمح لك فئة IPAddress بإنشاء عنوان IP بهذا الشكل ما لم تكن صالحة. تم تقديم الجواب من قبل ستيفن. الرقم هو معرف النطاق. لدى IPAddress منشئ يقبل العنوان ومعرف نطاق.

أوه ، وكانت كل هذه المحولات الثلاثة الشبكة المحلية. أكدت ذلك عبر ipconfig

رائع. كان هذا مثيرا للاعجاب!!


113
2018-01-23 21:42


الأصل


لم يكن لدي أي فكرة عما كان قبل ذلك. تعلمت شيء أنيق حول IPv6 اليوم أيضا (ما المهووسين نحن). - Stephen Jennings
@ ستفين ، لذلك كنت قد عملت مع ipv6 من قبل؟ كنت محتقنة بسرعة كنت مسمر ذلك. كنت قد غوغل لبعض الوقت قبل نشر السؤال هنا. عمل جيد! - Amith George
البحث عن "عنوان IPv6 في المئة" حصل علي الاسم الذي احتاجه ، ومن هناك البحث في المكان ومحاولة لفهم المعطيات الفنية المربكة التي استغرقت معظم الوقت. أحصل على ما يحاول IPv6 تحقيقه ، لكن هناك الكثير من المفاهيم الجديدة التي لم يتم الكشف عنها حتى الآن. كان هذا واحدًا ، ولا شيء يمنحك فهمًا أفضل من محاولة التوضيح لشخص آخر. - Stephen Jennings
ورمز بديل قد يكون fe80:10 (ال 0x0010 يجري 16). أنا استخدم ذلك في المتصفح الخاص بي عند العمل مع عناوين IPv6 المحلية الارتباط ، ولكن لست متأكدا 100 ٪ وهذا وفقا للمعايير. (إن استخدام النسبة المئوية في عناوين URL غير مرغوب فيه في المتصفحات ؛ وفي الحقيقة لم أستطع الحصول على ذلك للعمل على الإطلاق.) - Arjan


الأجوبة:


الرقم بعد '٪' هو معرف النطاق.

يعرّف IPv6 على الأقل ثلاثة نطاقات قابلة للوصول إلى العناوين:

  1. قابل للعنوان عالميًا. هذا عنوان IPv6 يعطيه لك مزود خدمة الإنترنت. وهي متاحة للاستخدام على شبكة الإنترنت العامة.

  2. الارتباط المحلي. هذا يشبه نطاق 169.254.X.X. هو عنوان يعينه الكمبيوتر نفسه لتسهيل الاتصالات المحلية. لا يتم توجيه هذه العناوين على الإنترنت العام لأنها ليست فريدة من نوعها على مستوى العالم.

  3. العقدة المحلية. هذا هو العنوان الذي يحدد الواجهة المحلية ، على غرار 127.0.0.1. في الأساس ، هذا هو العنوان :: 1.

قامت Microsoft بنشر هذه المقالة التي تصف عناوين IPv6، وهي المادة الأقل إرباكًا التي وجدتها. تشير المقالة إلى أن وجود معرف نطاق في عنوانك يعني أنه عنوان الارتباط المحلي. يمكنك أيضًا معرفة أنه الرابط المحلي لأن العنوان يبدأ به fe80.

يبدو أن المعلومات الواضحة والمفهومة ببساطة حول هذا الموضوع نادرة ، لذا أضع بقية هذا معًا استنادًا إلى أفضل فهم لدي RFC 4007 والمعلومات الأخرى هناك.

يمكن أن يحتوي الكمبيوتر على عدة عناوين ارتباط محلية ، لكل منها نطاق مختلف. يشير معرّف النطاق إلى النطاق الذي يقع فيه العنوان. على سبيل المثال ، تخيل سيناريو جهاز كمبيوتر به بطاقتين NIC ، يحتوي كل منهما على عنوان ارتباط محلي على شبكات مختلفة. إذا حاولت إرسال شيء إلى عنوان آخر بدءًا بـ fe80 ، فكيف سيعرف الكمبيوتر أي بطاقة NIC ترسلها؟ يبدو معرف النطاق هو الحل لهذا.


120
2018-01-23 22:26



شكر! عدلت لسؤالي لإضافة الأشياء الإضافية التي صادفتها أثناء انتظار الإجابة. وعندما جئت لنشرها ، فوجئت برؤية إجابتك تؤكد الملاحظات :) - Amith George
إجابة لطيفة. دعني أرى ما إذا كنت أفهم ذلك تمامًا. لذلك قد يتصل جهاز به بطاقتين NIC بجهازين توجيه مختلفين ، ويتم تعيين عنوان DHCP نفسه لهما fe80::42. أيضا ، فإن أجهزة التوجيه لديها نفس العنوان fe80::1. الآن fe80::1%X يمكن استخدامها للتمييز بين أجهزة التوجيه ، ولكن fe80::42%X هو استخدام طفيف للعميل ، أليس كذلك؟ - user123444555621
@ Pumbaa80 سيقوم العميل بإرسال رسائل إلى fe80::1%1 للوصول إلى جهاز التوجيه المتصل بـ NIC # 1 ، وسوف يرسل رسائل إلى fe80::1%2 للوصول إلى جهاز التوجيه المتصل بـ NIC # 2. وكمثال جانبي ، يتم تكوين عناوين الارتباطات المحلية تلقائيًا بواسطة الكمبيوتر المضيف ، وليس عبر DHCP ، لذا فمن المحتمل ألا تقوم بتعيين عنوانَي NIC لهما. ضع في اعتبارك أيضًا أن عناوين الروابط المحلية ليست قابلة للتوجيه ، لذلك عادةً لن ترسل رسائل إلى جهاز توجيه ، ستقوم بإرسال رسائل بين مضيفين. - Stephen Jennings
عن طريق التجريب ، يبدو أن زائدة %nn يمكن حذفها على الأقل لبعض الأوامر ، على سبيل المثال ، ping، tracert. - matt wilkie
إجابة جيدة جدا. فقط أن أذكر أن معرف النطاق هو صفر خاص ، ويبدو أنه يشير إلى خوارزمية محددة للتنفيذ لاختيار معرف نطاق من قائمة الواجهات مع هذا النطاق لذلك IP. - Arran Cudbard-Bell


عناوين IPv6 مع البادئة fe80 :: / 64 هي عناوين الارتباطات المحلية التي تم إنشاؤها بواسطة دمج هذه البادئة مع عنوان جهاز جهاز الشبكة ، 71a3: 2b00: ddd3: 753f في المثال الخاص بك. (النظير في IPv4 هو 169.254.0.0/16.) نظرًا لأن البادئة هي نفسها لجميع عناوين الارتباطات المحلية على جهاز ، قد يحتاج التوجيه أحيانًا إلى معرفة الواجهة التي تشير إليها. وهذا هو ما يحدده الرقم بعد النسبة المئوية ، والذي يسمى مؤشر المنطقة. تعتمد المواصفات على نظام التشغيل: على Windows ، %16 هو رقم الواجهة 16 ؛ على نظام Linux على سبيل المثال ، قد ترى شيئًا مثل %eth0.

بعض الأدوات أو واجهات برمجة التطبيقات ستعتبر مؤشر هذه المنطقة غير مهم أو ضمني لأغراضها. على سبيل المثال ، على لينكس ifconfig لا تظهر الأداة ذلك نظرًا لأنه من الواضح الواجهة التي ينتمي إليها العنوان. ولكن بشكل عام يجب أن تؤخذ بعين الاعتبار.


19
2018-01-23 23:30





تكون الأحرف بعد٪ (التي تصادف أنها أرقام في المثال الخاص بك) هي Interface Identifier. يتم استخدام هذه الأحرف لتعريف "واجهة شبكة الاتصال" ، والتي يطلق عليها الأشخاص "بطاقة الشبكة". على سبيل المثال ، يمكن أن يساعد في تحديد ما إذا كانت الحزمة ستستخدم بطاقة Ethernet سلكية أو محول Wi-Fi لاسلكي.

أظن أنك تستخدم Microsoft Windows. ويستخدم الأرقام كمعرفات واجهة.

كنقطة مقارنة ، قد تستخدم أنظمة تشبه يونكس الأحرف بعد علامة٪. على سبيل المثال: fe80::71a3:2b00:ddd3:753f%eth0

في هذه الحالة ، معرف الواجهة ، eth0، يطابق اسم بطاقة الشبكة.

في Microsoft Windows ، يمكنك الحصول على قائمة بمعرفات الواجهة (الرقمية) باستخدام أحد أسطر الأوامر التي تتحقق من جدول التوجيه. أنا أفضل "netstat -nr"نظرًا لأن ذلك يعمل أيضًا على أنظمة تشغيل أخرى ، إلا أن Microsoft Windows يدعم أيضًا"route print"من المرجح أن يكون الناتج الناتج ، الذي يتم الإبلاغ عنه ، أطول من شاشة طويلة ، لذا كن مستعدًا للتمرير للخلف ، ما لم تنفق أكثر.

على سبيل المثال ، على نظامي:

=========================================================================== Interface List 14...5c f9 dd 6d 98 b8 ......Realtek PCIe GBE Family Controller 12...e0 06 e6 7e fc 4e ......Bluetooth Device (Personal Area Network) 1...........................Software Loopback Interface 1 13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter 15...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2 ===========================================================================

في هذه الحالة ، يشير عنوان مثل fe80 :: 71a3: 2b00: ddd3: 753f٪ 14 إلى وحدة تحكم عائلة Realtek PCIe GBE. يشير "GBE" إلى Gigabit Ethernet.

الآن ، إليك الجزء الصعب: إذا كنت ترغب في اختبار اتصال عنوان بعيد ، فقد تحتاج إلى استخدام عنوان IPv6 الخاص بالنظام البعيد ، ولكن معرّف واجهة النظام المحلي. لذا ، على سبيل المثال ، إذا كنت أستخدم الكمبيوتر A ولدي عنوان IPv6 محلي لـ fe80 :: 1 مرفق بواجهة رقم 14 ، وأريد إجراء اختبار ping على الكمبيوتر B ولديه عنوان IPv6 محلي لـ fe80 :: 2 المرفق بـ رقمها 16 ، ثم هذا هو ما سوف أستخدمه:

ping fe80::2%14

لذلك ping يرسل الأمر حزمة ICMPv6 إلى عنوان IPv6 عن بعد (fd80 :: 2) ، الذي ينتمي إلى الكمبيوتر البعيد ، وسيستخدم واجهة التعامل مع المعرّف 14 للقيام بذلك. إن Interface Identifier 14 هو رقم من النظام الذي أستخدمه وليس النظام البعيد.

الآن ، دعونا ننظر إلى السبب في أن هذا قد يكون ضروريا.

إذا كنت أريد اختبار اتصال عنوان IPv6 من Google (وهو 2607: f8b0: 400a: 802 :: 200e في الوقت الذي كتبت فيه هذه الإجابة) ، فسيتحقق جدول التوجيه من بطاقة الشبكة التي تتعامل مع العناوين التي تبدأ بـ 2607: f8b0: 400a: 802. سيشير جدول التوجيه إلى أن أيًا من بطاقات الشبكة الخاصة بي متصلة مباشرة بشبكة تستخدم العناوين التي تبدأ بـ 2607: f8b0: 400a: 802 ، بحيث ينتهي جهاز الكمبيوتر باستخدام عنوان "عبّارة". إذا كنت أتصل بشبكة أخرى تعد جزءًا من المؤسسة التي أعمل فيها ، فقد يكون لدي عنوان "بوابة" خاص يوجه الزيارات إلى شبكة خاصة. في هذه الحالة ، ليس لدي بوابة أكثر تحديدًا ، لذا سأستخدم العبارة الافتراضية "IPv6". هذه هي الطريقة التي يعمل بها IPv6 معظم الوقت ، باستثناء عناوين الارتباط المحلية. هذه أيضًا طريقة عمل IPv4 معظم الوقت. (لقد قمت بتبسيط هذا المثال بافتراض حجم IPv6 للشبكة الفرعية / 64 ، لأن وصف العملية بأكملها كان من شأنه أن يجعل هذا الوصف أطول.)

بالنسبة الى RFC 4291 section 2.8، يجب على كل كمبيوتر يستخدم IPv6 تعيين عنوان ارتباط محلي لكل واجهة شبكة. RFC 4291 القسم 2.5.6 عرض البتات التي يجب أن تبدأ بها عناوين الارتباط المحلي ، مما يؤدي إلى بدء عناوين الارتباطات المحلية بـ "fe80: 0000: 0000: 0000:" (على الرغم من أن العديد من تلك الأصفار يتم تصغيرها إلى نقطتين مزدوجتين). حقيقة أن تلك العناوين التي تبدأ بـ "fe80:" تم وصفها أيضًا بواسطة RFC 4291 section 2.4.

إذا حاولت تنفيذ الأمر ping على نظام بعيد (على سبيل المثال ، "2607: f8b0: 400a: 802") ، عادة ما تكون العملية العامة هي اكتشاف شبكة أو شبكة فرعية يكون العنوان جزءًا منها ، ويتم ذلك بالنظر إلى البتات في بداية العنوان. ثم ، يتم استخدام تلك البت لتحديد كيفية توجيه حركة المرور.

ومع ذلك ، لا تعمل هذه العملية لعنوان IPv6 link-local ، نظرًا لأن كل واجهة شبكة (تشغيلية ونشطة) تحتوي على عنوان ارتباط محلي يبدأ بـ "fe80:" على شبكة فرعية باستخدام بادئة الشبكة الفرعية / حجم "/ 64 ". إذا كنت تستخدم جهاز كمبيوتر محمول ، فمن المحتمل أن تجد أن كل من بطاقة Ethernet ومحول Wi-Fi الخاص بك من المتوقع أن يكون لديك عنوان IPv6.

الآن ، عندما تقوم بإرسال ping إلى fe80 :: 2 ، فأنت تريد أن يرسل الكمبيوتر الخاص بك هذه الحزمة خارج بطاقة الشبكة الصحيحة. إذا كانت لديك طابعة متصلة بشبكة سلكية ، فأنت لا ترغب في إرسال زيارات إلى بطاقة Wi-Fi الخاصة بك ، باستخدام مسار / مسار شبكة لا يؤدي إلى وصول حركة المرور إلى الطابعة. وإذا كنت تحاول الاتصال بجهاز لاسلكي باستخدام بطاقة Wi-Fi ، فأنت لا تريد أن تخرج حركة المرور الخاصة بك بطاقة Ethernet.

يتمثل الحل في تحديد جهاز الشبكة الذي تريد أن تستخدمه الزيارات. لذلك ، هذا هو الغرض من معرف الشبكة.


14
2018-04-24 04:22



حسنا ، عند إعادة القراءة إجابة بيتر إيسينتراوت، يبدو أنه صحيح من الناحية الفنية. نأمل أن توفر تفاصيلي بعض الوضوح. أنا لا أتفق مع جواب ستيفن جينينغزنظرًا لأن هذه الإجابة تجعل الأمر يبدو وكأنه "معرّف النطاق" يعرّف "الرابط المحلي" بالنطاق. ومع ذلك ، يمكن أن يكون كل من واجهات الشبكة المختلفة "link local" ولكن لن يستخدمان نفس "النطاق" (في الأمثلة المعروضة في القائمة المرقمة). بدلا من ذلك ، أقول أن هذه الأرقام تحدد "واجهة" الشبكة. - TOOGAM