it-swarm.asia

لماذا هو المضيف المحلي IP 127.0.0.1؟

لقد تساءلت ما هو أصل قرار اتخاذ عنوان IP localhost الخاص بـ 127.0.0.1. ما هو "معنى" 127؟ ما هو "معنى" 0.0.1؟

85
Roee Adler

127 هو آخر رقم للشبكة في شبكة من الفئة A مع قناع شبكة فرعية من 255.0.0.0. 127.0.0.1 هو أول عنوان قابل للتخصيص في الشبكة الفرعية. لا يمكن استخدام 127.0.0.0 لأن هذا سيكون رقم السلك. لكن استخدام أي أرقام أخرى لجزء المضيف يجب أن يعمل بشكل جيد ويعود إلى استخدام 127.0.0.1. يمكنك أن تجرب ذلك بنفسك من خلال اختبار الاتصال 127.1.1.1 إذا كنت ترغب في ذلك. لماذا انتظروا حتى آخر رقم للشبكة لتنفيذ ذلك؟ لا اعتقد انها موثقة.

87
John T

أذكر سابقًا ما يمكنني العثور عليه فيما يتعلق بمهمة 127 نظرًا لأن الاسترجاع هو نوفمبر 1986 RFC 990 من تأليف رينولدز وبوستل:

يجب تفسير العنوان صفر على أنه يعني "هذا" ، كما في "هذه الشبكة".

على سبيل المثال ، يمكن تفسير العنوان 0.0.0.37 على أنه يعني المضيف 37 على هذه الشبكة.

...

يتم تعيين رقم شبكة فئة 127 "دالة الاسترجاع" ، أي أن مخطط البيانات المرسلة بواسطة بروتوكول مستوى أعلى إلى عنوان شبكة 127 يجب أن حلقة مرة أخرى داخل المضيف. لا يجب أن يظهر أي مخطط بيانات "تم إرساله" إلى عنوان شبكة 127 على أي شبكة في أي مكان.

حتى في وقت مبكر من سبتمبر 1981 RFC 790 ، تم حجز 0 و 127 بالفعل:

 000.rrr.rrr.rrr محجوز [JBP] 
 ... 
 127.rrr.rrr.rrr محجوز [JBP] 

كانت 0 و 127 هي شبكات الفئة A المحجوزة فقط بحلول عام 1981. تم استخدام 0 للإشارة إلى مضيف محدد ، بحيث ترك 127 لـ الاسترجاع.

أعلم أن هذا لا يجيب على السؤال ، لكن هذا يعود بقدر ما استطعت الحفر. ربما كان من المنطقي أكثر اختيار 1.0.0.0 للاسترجاع ولكن تم بالفعل إعطاء ذلك لشبكة BBN Packet Radio Network.

56
hyperslug

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

تعتبر القيم 0 و 127 و 255 خاصة في برمجة التجميع ولغة الآلة ذات 8 بتات لأن هناك "حيل" يمكنك استخدامها لاختبار هذه القيم وفرع لرمز مختلف باستخدام تعليمات أصغر يتم تنفيذها بشكل أسرع من الأعداد الصحيحة الأخرى. 127 هو أعلى عدد صحيح من 8 بت موقّع ، لذا فإن زيادته بمقدار 1 سيؤدي إلى تجاوز سعة موقعة. وبالمثل ، فإن زيادة 255 ستؤدي إلى تجاوز سعة غير موقعة. يؤدي مجرد تحميل القيمة 0 إلى السجل إلى تعيين علامة صفر على الشريحة. تخيل أن برنامج الشبكات يبدو كهذا في الكود الكاذب:

if (value == 0) doLocal();
if (value == 127) doLoopback();
if (value == 255) doNetwork();

على الرغم من أن ذلك يعتمد على الشريحة ، إلا أنه في تلك الأيام ، يمكن لمعظم الرقائق ترميز هذه الاختبارات بكلمتين و 3 كلمات و 3 كلمات على التوالي (إجمالي 8 كلمات) وكل هذه الاختبارات المحددة من المحتمل أن تنفذ في دورة واحدة لكل ساعة. قد يتطلب استخدام أي قيمة أخرى 4 كلمات لكل منها (إجمالي 12 كلمة) ، وزيادة بنسبة 50 ٪ في حجم الرمز وزيادة 50 ٪ على الأرجح في وقت التنفيذ كذلك.

23
Joseph Bui

إذا كنت تفكر فيما يعنيه عنوان IP الخاص بالضيف المحلي أو الاسترجاع ، فأنت تدرك أنك لا تريد أبدًا رؤية ذلك العنوان أو الشبكة التي ينتمي إليها هذا العنوان ، خارج المضيف. (من داخل المضيف ، يكون من المظلمة جدًا رؤيته. الاعتذار لمارك توين.)

لذلك ، كان على شخص ما اختيار شبكة IP لتمثيل عنوان المضيف المحلي هذا. لا أتذكر من اختارها لأول مرة ، لكنه محدد في طلب IETF للتعليقات التي يتم إصدارها بصفة دورية كـ "متطلبات المضيف".

تم القيام به منذ فترة طويلة ، أن فكرة "إضاعة" عنوان فئة كاملة بالكامل لم تدخل في ذهن أي شخص في ذلك الوقت.

فائدة المضيف المحلي هي أنه يمكنك التحدث مع نفسك باستخدام عنوان IP مرمّز. تم استخدامه قبل وقت طويل من وجود نظام اسم المجال. يمكنك بالفعل استخدام أي من العناوين الصالحة 127.x.x.x ، لكن لا أحد يستخدمها على الإطلاق. لا يمكنك التسلل واستخدام 127 كشبكة حقيقية لأن "متطلبات جهاز التوجيه" RFC لا تسمح بتوجيه تلك الشبكة على أي الإنترنت.

5
kwe

أولاً ، يشير نطاق 127.x.x.x بأكمله إلى مضيفك المحلي.
127 في ثنائي هو "01111111". "11111111" = 255 و 0 محجوز ، لذلك يكون الخيار واضحًا :)

4
kolypto

لأنه عندما تم إنشاء هذه المعايير ، كانت أجهزة الكمبيوتر بطيئة وعادة ما تقتصر على سجلات 8 بت. كانت مقارنة الأرقام بالأرقام بطيئة جدًا ، خاصة إذا كان من الضروري إحضار هذه الأرقام من الخلف ، ثم الذاكرة البطيئة حقًا. السجلات ، وهذا هو التخزين "وحدة المعالجة المركزية على متن الطائرة" كانت أسرع بكثير.

علاوة على ذلك ، كانت تلك الحواسب القديمة تحتوي على إرشادات خاصة وأسرع للكشف عن "تساوي الصفر" ، و "مختلفة عن الصفر" ، و "عدد صحيح سالب/موجب" (حيث كانت علامة ... تخمين ما ، أقصى اليسار ، انظر الآن اتصال مع 127 ، هذا هو الرقم مع كل ثنائي "1" باستثناء أقصى اليسار = علامة؟).

لذلك كانت هذه أرقامًا خاصة ، لأنها سمحت للخداع في البرمجة بحفظ الكثير من دورات وحدة المعالجة المركزية على العمليات التي تتم بشكل متكرر.

لن ترى أبدًا "IF CallerIP =" 0 "لكن تعليميًا" IF NotZero (CallerIP) ".

يمكنك التحقق من إرشادات التجميع القديمة مثل "BEQ، BNE" (6502 وحدات المعالجة المركزية) للحصول على تفسيرات أطول. أيضًا تحقق من هذه الصفحة .

فى النهايه:

يمكن التحقق من 0 و 255 و 127 باستخدام تعليمة واحدة وأسرع. حتى لغات المستوى الأعلى مثل C لها وظائف مقارنة "اختصار" يمكن للمترجم تحسينها داخليًا في تعليمة واحدة.

أنتج المبرمجون في الأعوام 70 و 80 حقًا تصميمات رائعة بموارد نادرة للغاية ، وراء معايير مثل ترقيم بروتوكول الإنترنت هناك الكثير من التفكير والعبقرية.

3
Dario Fumagalli