سؤال ما الفرق بين عنوان IP 0.0.0.0 و 127.0.0.1؟


وأنا أعلم أن 127.0.0.1 ~ 127.255.255.254 هي عناوين IP الاسترجاع لمعظم أنظمة التشغيل الحديثة ، ويمكن استخدام هذه عناوين IP للإشارة إلى جهاز الكمبيوتر الخاص بنا.

لكن ما هو 0.0.0.0؟ يبدو أنه يشير أيضا إلى الكمبيوتر المحلي ، فما هو فرق؟

وهل يمكن أن تشرح اتصالات IP التالية لي:

screenshot of netstat -an output


208
2017-10-25 07:22


الأصل


ألقِ نظرة أيضًا على هذا السؤال ، حيث يقدم تفاصيل حول 0.0.0.0 (ولا): serverfault.com/questions/228629/... - Ellie Kesselman
نظام التشغيل الحديث سوف يستخدم ::1 كعنوان الاسترجاع. - kasperd


الأجوبة:


الشيء الوحيد هو أنك لا تقول "كل العناوين يجب أن يكون لها حق الوصول" - يتم ذلك في جدار الحماية (firewall) الخاص بك و / أو برنامج الخادم و / أو طبقات الأمان الأخرى مثل tcpwrappers.

0.0.0.0 ، في هذا السياق ، تعني "جميع عناوين IP على الجهاز المحلي" (في الواقع ، "جميع عناوين IPv4 على الجهاز المحلي"). لذا ، إذا كان جهاز خادم الويب الخاص بك يحتوي على عنوانين IP ، 192.168.1.1 و 10.1.2.1 ، وتسمح بباقة خادم الويب مثل apache للاستماع على 0.0.0.0 ، فسيكون الوصول إليها في كلا عنواني IP. ولكن فقط إلى ما يمكن الاتصال به عناوين IP ومنفذ (منافذ) الويب.

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


145
2017-10-25 08:55



لذلك تقصد أن مأخذ خادم الويب ملزمة بأي عناوين متاحة عند الاستماع إلى 0.0.0.0؟ - onmyway133
0.0.0.0 يعني المسار الافتراضي فقط إذا كان مصحوبا البادئة /0 (أو قناع الشبكة 0.0.0.0) - minmaxavg
وتجدر الإشارة إلى أنه: إذا استمعت بعض العمليات على 0.0.0.0 ، فسيكون من الممكن الوصول إليها في عناوين IP لجميع واجهات الشبكة الخاصة بالماكينة والتي تتضمن العنوان المكون حاليًا لواجهة الظهر. ولكن إذا استمعت العملية فقط على منفذ <portNumber> لعنوان استرجاع ، على سبيل المثال ، 127.0.0.1 ، ومن ثم يمكن الوصول إلى العملية فقط من نفس الجهاز بواسطة باستهداف 127.0.0.1 بالضبط: <portNumber>. محاولة هذه أداة الثعبان  للعب! - Gab是好人


عندما تستمع الخدمة على 0.0.0.0 ، هذا يعني أن الخدمة تستمع على جميع واجهات الشبكة المكوّنة ، عند الاستماع إلى 127.0.0.1 الخدمة مرتبطة فقط بواجهة الاسترجاع (متوفرة فقط على الجهاز المحلي)


76
2017-10-25 07:33





عنوان IP 0.0.0.0 يمكن أن يكون لها معانٍ مختلفة جدًا ، اعتمادًا على مكان استخدامها.

  • إنه ليس عنوانًا صالحًا يُعطى لواجهة شبكة فعلية ، بالإضافة إلى أي عنوان آخر في الشبكة الفرعية 0.0.0.0/8 (أي أي عنوان يبدأ بـ 0.).
  • لا يمكن استخدامه كعنوان المصدر في أي حزمة IP ، ما لم يحدث ذلك عندما لا يزال الكمبيوتر لا يعرف عنوان IP الخاص به ويحاول الحصول على واحد (مثل classic: DHCP).
  • إذا تم استخدامها في جدول التوجيه ، فإنها تحدد العبارة الافتراضية ؛ يعد المسار إلى 0.0.0.0 هو المسار الافتراضي ، أي الطريق المستخدم عند عدم توفر أي مسار محدد أكثر لعنوان الوجهة.
  • وأخيرا ، عندما ينظر في إخراج netstat الأمر (وهو ما طلبته) ، فهذا يعني أن مأخذ توصيل معين يتم الاستماع إليه على كافة عناوين IP المتوفرة التي يمتلكها الكمبيوتر ؛ عندما يكون جهاز الكمبيوتر يحتوي على أكثر من عنوان IP واحد ، فيمكن ربط مأخذ التوصيل فقط بعنوان وزوج منفذ محدد ، أو بمنفذ الكل عناوين؛ إذا كنت ترى عنوان IP هناك ، فهذا يعني أن مأخذ التوصيل يستمع فقط على هذا المنفذ وهذا العنوان المحدد ؛ إذا رأيت 0.0.0.0، فهذا يعني أنه يستمع على هذا المنفذ الكل عناوين الجهاز ، بما في ذلك الاسترجاع (واحد)127.0.0.1).

38
2017-08-12 06:45



ماذا يعني إذا كنت تجعيد 0.0.0.0؟ هل يتم التجعيد فعليًا في الاتصال وإرسال طلب عبر واجهات متوفرة؟ كيف يعرف أي واجهة هو الصحيح؟ أفهم كيف يمكن للخادم أن يستمع على جميع الواجهات ، ولكن ما هي آلية العميل لطلب كل الواجهات مثل عندما أقوم بحركات curl 0.0.0.0 أو curl [::]. - CMCDragonkai
من المحتمل جدًا أن يمنعك نظام التشغيل من القيام بذلك ، نظرًا لأنه ليس منطقيًا من منظور الشبكات. يحاول أن ping 0.0.0.0 على نظام ويندوز النتائج في رسالة خطأ. - Massimo
curl 0.0.0.0 عائدات connection refusedعلى Arch Linux. ping 0.0.0.0، من ناحية أخرى ، يبدو أن يكون اسم مستعار ل ping 127.0.0.1 الذي يعمل بشكل جيد. - Matthias Braun
تضمين التغريدة connection refused قد يكون ذلك لأن curl بشكل افتراضي حاول الاتصال بالمنفذ 80 / tcp. حاول العثور على المنافذ المفتوحة الخاصة بك nmap -sV localhost ثم على سبيل المثال إذا كان 631 / tcp: curl 0.0.0.0:631. - Pablo Bianchi


إجابة Lee B صحيحة ، ولكن إليك بعض RFCs ذات الصلة إذا كنت مهتمًا.

0.0.0.0:

من عند RFC1122، القسم 3.1.2.3:

نلخص الآن الحالات الخاصة المهمة للفئة A و B و               وعناوين IP C ، باستخدام الترميز التالي لـ IP               عنوان:

            { <Network-number>, <Host-number> }

        or
            { <Network-number>, <Subnet-number>, <Host-number> }

...

          (a)  { 0, 0 }

             This host on this network.  MUST NOT be sent, except as
             a source address as part of an initialization procedure
             by which the host learns its own IP address.

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

127.0.0.1:

من عند RFC5735:

127.0.0.0/8 - يتم تعيين هذه الكتلة لاستخدامها كعنوان استرجاع مضيف إنترنت. يتم إرسال مخطط بيانات تم إرساله بواسطة بروتوكول أعلى مستوى إلى عنوان في أي مكان داخل هذه المجموعة مرة أخرى داخل المضيف. يتم تنفيذ ذلك عادةً باستخدام 127.0.0.1/32 فقط للاسترجاع. كما هو موضح في [RFC1122] ، القسم 3.2.1.3 ، عناوين ضمن كامل كتلة 127.0.0.0/8 لا تظهر بشكل قانوني على أي شبكة في أي مكان.

الفرق بين 0.0.0.0 وعنوان الاسترجاع 127.0.0.1 هو أن عنوان الاسترجاع مصمم للسماح بواجهة IP تعمل بشكل كامل داخل المضيف نفسه ، بغض النظر عن الشكل الذي تبدو عليه بقية إعدادات الشبكة ، إن وجدت. يتم تلقي أي حركة مرور يتم إرسالها إلى جهاز الاسترجاع على الفور. لا يعني الأمر أن شبكة الاسترجاع "تشير" إلى مضيفك الخاص ... فهي تشبه إلى حد كبير جزءًا صغيرًا من الشبكة في مضيفك تقوم به الأجهزة والعمليات والمآخذ ويمكن فتحها والاتصال بها.


27
2017-08-12 06:20





بعبارة بسيطة: الاستماع على 0.0.0.0 يعني الاستماع من أي مكان لديه وصول إلى الشبكة لهذا الكمبيوتر ، على سبيل المثال ، من هذا الكمبيوتر ، من الشبكة المحلية أو من الإنترنت ، بينما الاستماع إلى 127.0.0.1 يعني الاستماع فقط من هذا الكمبيوتر بالذات


3
2017-12-28 10:28