سؤال لماذا هو localhost IP 127.0.0.1؟


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


77
2017-08-29 05:39


الأصل


أنا فضولي حيال هذا أيضًا. الاسترجاع IPv6 هو 0: 0: 0: 0: 0: 0: 0: 1 ، مما يجعل الأمر منطقيًا بالنسبة لي. - hyperslug
نعم ، لا يثير المضيف المحلي IPv6 الكثير من الأسئلة :) - Roee Adler
أنا لم أر "لا يوجد مكان مثل 0: 0: 0: 0: 0: 0: 0: 1" باب حصيرة حتى الآن! - William Hilsum
@ فقم بضغطه على "ليس هناك مكان مثل: 1" وستحصل على المزيد من الأعمال. - new123456
WilliamHilsum توسيعه إلى "لا يوجد مكان مثل 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001" وشحن أكثر. - Nick T


الأجوبة:


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


85
2017-08-29 05:50



والأسباب الوحيدة التي تجعلني أختارها اختيارًا عشوائيًا 127 هي أنه من السهل تذكرها (01111111) ، وربما كانت تسمح لعناوين مضيفين بـ 16 مليونًا لكونهم قادرين على التواصل مع أنفسهم ونفسهم فقط (مثل كيفية استخدام بعض البرامج ومكونات Windows الموانئ في الوقت الحاضر). ذكرت RFC فقط حقا أنه من الممارسة القياسية ل 127.0.0.1/32 لاستخدامها في الاسترجاع. انها غامضة تماما على ما تعتزم لبقية الكتلة جانبا منه حلقات مرة أخرى إلى المضيف وأبدا ضرب الشبكة ، وبالتالي التكهنات أعلاه. - RoyalKnight
وجود كل عناوين الحظر التي تعود إلى 127.0.0.1 يعتمد على التنفيذ وربما يكون مجرد سمة مكدسة لـ Linux. تتطلب Solaris على الأقل ربط واجهة إلى عنوان الوجهة حتى ينجح اختبار ping. - jlliagre


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

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

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

...

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

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

000.rrr.rrr.rrr محفوظة [JBP]
...
127.rrr.rrr.rrr Reserved [JBP]

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

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


54
2017-08-29 07:21





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

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

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

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


22
2018-04-15 15:36



لاحظ أني استخدمت "كلمات" لأن الأجهزة القديمة كانت في السابق أحجامًا غير معتادة من الكلمات ، ولكنها غالبًا ما كانت تستخدم الحساب 8 بت. ل 8088 ، كنت قد قلت "بايت". - Joseph Bui


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

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

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

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


5
2017-08-29 06:02





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


4
2017-08-29 21:21



كيف يكون من الواضح مرة أخرى؟ - Roee Adler
أعتقد أنهم اختاروا شيئًا بسيطًا. مرة أخرى ، يتم حجز جميع "1" الصورة ، لذا تمت إضافة صفر واحد :) - kolypto
فلماذا لا 10111111؟ :) أو 11011111 أو 11101111 أو 11110111 أو 11111011 أو 11111101 أو شيء من هذا القبيل؟ - Mushex Antaranian
كلا. حاول مرة أخري. - Ardee Aram


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

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

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

قد لا تشاهد "IF CallerIP =" 0 "ولكن التعليمات" IF NotZero (CallerIP) ".

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

فى النهايه:

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

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


3
2017-07-11 08:23



جواب رائع. هذا هو حقا أوضح وأوضح التفسير. - not2qubit
في الواقع ، عندما تم تصميم بروتوكول الإنترنت (IP) وتم وضع بعض الأسس المبكرة له ، لم يكن العمل مع البيانات في مضاعفات صحيحة 8 بتات معطى. العديد من البنى التحتية في ذلك الوقت كان لها تسجيل وأحجام كلمات بمضاعفات 12 أو 18 بت ، على سبيل المثال. هذا هو أحد الأسباب التي جعلت Octal شعبية في ذلك الوقت. يمكن تمثيل 18 بتة على هيئة 6 أرقام الثمانية دون خسارة أو ضياع ؛ 12 بت هي 4 أرقام ثمانية. عملت الحواسيب الصغيرة عادة في الكميات 8 بت ، لكنها كانت فقط كثير في وقت لاحق أن بدأت الحواسيب الصغيرة متصلة بانتظام (خصوصا بشكل مباشر) إلى الإنترنت. - α CVn