سؤال هل عناوين IP ذات أو بدون الأصفار هي نفسها؟


لدي نظام أمان ويتيح إعداد الشبكة عنوان IP من ثلاثة أرقام فقط. لا أستطيع ضبطها 192.168.2.100، بدلا من ذلك يجب علي استخدامها 192.168.002.100.

هل هذان عنوانا IP مختلفان؟ هل أحتاج إلى تعيين LAN الخاص بالموجّه ليكون كل شيء 192.168.xxx.xxx من أجل هذا العمل بشكل صحيح؟ لا أستطيع العثور على أي معلومات صلبة حول هذا.


83
2017-12-28 02:45


الأصل


بالتوافق مع الإجابات أدناه ، يجب أن يكون 192.168.020.100 ليس يكون نفس 192.168.20.100 ، ولكن ذلك قد يكون هو نفسه إذا كان النظام الخاص بك يسمح ببروتوكول الإنترنت فقط ليتم إدخاله بهذه الطريقة (لقد رأيت هذا مع الناسخات عندما يتم إدخال IP رقم برقم مع الأسهم المتجه لأسفل). - إذا كان النظام الخاص بك يحتوي على ذلك quirk حتى عندما يكون إدخال لوحة المفاتيح "العادي" ممكنًا (بمعنى ، أنت يستطيع إدخال technicall 192.168.2.100ولكنه يشتكي) ، ثم أقترح أن يكون لديك كلمة مع البائع (ما مدى جدارة النظام الأمني ​​إذا كان التحقق من صلاحيته مريبًا؟) - Hagen von Eitzen
هذا حقا هو التحقق من صحة غريبة جدا. كنت أبدل أنظمة الأمان ، كما يلمح هاجن إلى. - Lightness Races in Orbit
هذا يمكن أن يكون برنامج معين ، أيضا. وهي صالحة مع أو بدون الريادة 0s ، لكنني واجهت بعض التطبيقات التي لا تدعم عنوان IP الذي لا يحتوي على 3 أرقام في كل ثمانية. - ps2goat
جميع عناوين IP (v4) هي في الحقيقة مجرد 32 بتة ممثلة بطريقة لطيفة. إذا 192.168.002.100 هو كيف تمثل أداتك 0xc0a80264/3232236132 /192.168.2.100، إنه نفس الشيء - Tim S.
هل يمكنك قبول إجابة أخرى؟ الشخص الذي قبلته خطأ حقا (أو على الأقل غير مكتمل) ولديه 11 درجة. - Arjan


الأجوبة:


بافتراض استخدام كافة البرامج التي تستخدمها dot-decimal و subnetting بشكل صحيح ، نعم هي نفسها.

192.168.0.1 على سبيل المثال هو فقط التدوين العشري ذو النقطة العشرية للقيمة dot-binary 11000000.10101000.00000000.00000001.

سواء كنت تكتبها كـ 192.168.0.1 أو 192.168.000.001 فهما كلاهما يساوي 11000000.10101000.00000000.00000001


64
2017-12-28 02:56



النقاط هي أيضا للراحة. IP الحقيقي هو 1100000010101000000000000000000001 - cpast
@ cpast أو كرقم سداسي عشري: C0A80001 - jfs
أو كرقم ثماني (يبدأ بـ 0 ، مع أو بدون نقاط) ، على سبيل المثال ، 0300.0250.2.0144 ping لـ 192.168.2.100 - Sergey
أو كرقم عشري 3232235521 - oldmud0
وكما أوضحت الإجابة علىGreenstoneWalker ، فإن العديد من البرامج لن تعتبرها كما هي ؛ الرقم الذي يحتوي على صفر بادئ (لا يحتوي على الرقمين 8 أو 9) سيُفهم على أنه رقم تدوين ثماني ؛ لذلك سوف يتم تفسير 010.000.001.063 كـ "8.0.1.51" (octal 010 = decimal 8 ؛ octal 063 = decimal 51) بدلاً من "10.0.1.63"! - Doktor J


ذلك يعتمد على الأداة.

بالنسبة لمعظم الأغراض ، سيكون الاثنين متشابهين ، لكن ليس دائمًا.

على سبيل المثال ، إذا استخدمت رقمًا مكونًا من 3 أرقام يبدأ بـ صفر (أو رقم مكون من رقمين يبدأ بـ صفر ، بفضل @ Dietrich-Epp) ، فحينئذٍ سيفترض ping أن الأرقام هي ثماني.

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users>ping 011.012.013.014

Pinging 9.10.11.12 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 9.10.11.12:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

99
2017-12-28 04:08



ليس الكثير بينغ ، ولكن الروتين الأساسي الذي يستخدمه inet_addr() - cde
كما يحدث على OSX. - Johann Philipp Strathausen
ليس لأنه يحتوي على ثلاثة أرقام ، لأن العدد يحتوي على صفر بادئ. يمكنك اختبار ذلك بمحاولة تنفيذ الأمر ping 09.09.09.09 ، وهو أمر لا يعمل لأن 9 غير صالح في النطاق الثماني. - Dietrich Epp


يعتمد ذلك على الأدوات أو الوظائف التي يستخدمها أي برنامج لتعديل العنوان المعطى. كل من مايكروسوفت ولينكس فضلا عن غيرها من أنظمة تشغيل استخدام POSIX متوافق inet_addr() روتين لتحليل العناوين.

استخدام العديد من برامج TCP / IP مثل Ping و FTP الدالة مآخذ inet_addr () لترجمة سلاسل عنوان IP إلى عناوين 4 بايت. تقبل هذه الدالة عنوان IP في الترقيم العشري ، ثماني ، والسداسي القياسي القياسي.
  Microsoft KB115388 Ping و FTP حل عنوان IP مع Leading Zero as Octal

تحول الدالة inet_addr () cp لعنوان مضيف الإنترنت من تدوين الأرقام والنقاط IPv4 إلى البيانات الثنائية في ترتيب البايت الشبكي.

في جميع النماذج المذكورة أعلاه ، يمكن تحديد مكونات العنوان المنقوط بالأرقام العشرية ، الثماني (مع 0) أو سداسي عشري ، مع 0X رائدة). يتم تسمية العناوين في أي من هذه الأشكال مجتمعة عناوين IPv4 تدوين الأرقام والنقاط. ويشار إلى النموذج الذي يستخدم أربعة أرقام عشرية بالضبط على أنه ترقيم منقط عشري IPv4 (أو في بعض الأحيان: تدوين IPv4 منقط رباعي).
inet_addr (3): إجراءات تغيير عنوان الإنترنت - صفحة رجل لينكس

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

بالطبع ، ستعمل فقط أرقام صالحة لكل نوع. خارج نطاق Octal ، ستفشل أيضًا الأرقام Hex أو Decimal أو تتسبب في حدوث مشكلات. Octop 088 ، أو Hex 0xGG ، أو Decimal 280 كلها أمثلة غير صالحة.


35
2017-12-28 17:42



+1 لوظيفة أساسية. للإضافة ، ستؤدي هذه الوظيفة إلى فشل تحليل IP إذا كانت البايتة الصالحة (مثل .88) صفرية ، لأن الرقم 8 ليس رقمًا صالحًا في الثماني. - March Ho
في نظام التشغيل Windows XP (وقبل ذلك) ، ستقوم الدالة بقبول أرقام ثماني صالحة ولا تزال تحاول تحويلها. هذا يمكن أن يؤدي إلى سلوك غير واضح جدا. اعتبارًا من أرقام Vista غير الصالحة يتم التعامل معها كأسماء مجال وسيحاول Windows إجراء بحث DNS لها. وهو سلوك غريب جدًا أيضًا ، ولكن ذلك على الأقل لن يسبب أي مشاكل. - Tonny
tonny ذلك لأن إرجاع inet_addr () POSIX -1 لقيم غير صالحة ، والتي تتدفق حول 255. أحدث روتين ، كما هو مذكور في صفحة رجل لينكس ، لديه معالجة أفضل للخطأ. - cde
@ cde لم ازعج ابدا ان الخوض في عمق ميكانيكا inet_addr (). سآخذ كلامك لذلك :-) - Tonny


مثل سباق الخفة في المدار وقد أشار آخرون ،

ال INET(3) صفحة رجل يصف inet_addr و inet_aton، الوظائف القياسية المستخدمة لتحويل "تدوين أرقام و نقاط IPv4 إلى شكل ثنائي". انها تقول

... يمكن تحديد مكونات العنوان المنقوط بالأرقام العشرية ، ثماني (مع وجود 0)، أو سداسي عشري ، مع 0X رائدة).

لذلك من الناحية الفنية ، لا، عنوان IP مع الأصفار البادئة ليس (دائماً) نفس كأي واحد دون الأصفار البادئة. في حالتك ومع ذلك ، 192.168.2.100 و 192.168.002.100 متطابقة ، لأن 002 == 2.

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


12
2017-12-30 08:18



فكرة أن "الأصفار الرائدة" مطلوبة (على بعض المعدات) لا يبدو أنها محل نزاع ؛ ما هو أساس الدعوة إلى "غير مطلوب - مطلوب" / "مكسور"؟ فقط منذ خرق INET (3) / inet_addr / inet_aton؟ من المرجح أن التطبيقات التي تتطلب مثل هذه الأصفار تستخدم كودًا آخر قد يصل إلى مستوى رفيع ، وبالتالي لا يتم "كسره". (رأيت الطابعات تفعل ذلك.) هل هناك أساس لقول أن صفحة الرجل INET (3) هو "أكثر" حق / مورد أكثر موثوقية من الوثائق الرسمية الأخرى ، مثل RFCs وغيرها من قبل هذا مشروع الوثيقة؟ - TOOGAM


بعض عمليات التنفيذ تعتبر الثمانيات ذات الأصفار البادئة عشريًا أن التطبيقات الأخرى تعتبرها ثُمانية. طالما أن الثماني في النطاق من 0 إلى 7 ، فهذا لا يحدث فرقاً. هكذا على سبيل المثال 192.168.002.100 يتم تفسيرها على أنها 192.168.2.100 في كل من التطبيقات.

ولكن إذا كنت تكتب عنوانًا باسم 192.168.010.100 يمكن تفسيرها على أنها إما 192.168.10.100 أو 192.168.8.100 اعتمادا على التنفيذ. كما أنه من غير المحتمل أن تكون التطبيقات موجودة ، والتي قد تعتبر أن الأصفار الأولية هي خطأ في التركيب. بالإضافة إلى ذلك ، هناك سيناريوهات يمكن أن يصرح فيها البرنامج على ضرورة استخدام التمثيل القانوني لسبب أو لآخر. لكل هذه الأسباب ، أوصي بتجنب الأصفار البادئة عند كتابة عنوان IP.

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

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


5
2017-12-30 18:54





مجرد نصيحة صغيرة: في بعض الحالات ، من المهم استخدام البادئات صفر في عناوين IP. على سبيل المثال ، هو Apache .htaccess ينكر القواعد.

إذا كنت تستخدم شيء من هذا القبيل

deny from 11.22.33.22

يعد Apache غبيًا جدًا ، حيث يعمل أيضًا على حظر الوصول من عناوين IP التالية:

111.22.33.22

11.22.33.221

211.22.33.221

وبشكل عام ، أي عنوان IP الذي يشمل 11.22.33.22

لذا ، فقط للتأكد من أنك لن تحظر عناوين IP التي لا تقصد منعها ، يجب عليك استخدام:

deny from 011.022.033.022

للتأكد من أن Apache سيحظر الوصول فقط من عنوان IP 11.22.33.22.


0
2018-01-18 06:27



مثير للإعجاب. هل يمكنك تقديم مرجع لهذا؟ - Scott
المرجع هو تجربة شخصية والعديد من التجارب والأخطاء ، بعد العثور على العديد من الزوار المحظورين نتيجة لعدم استخدام الأصفار الرائدة. هناك طريقة أخرى لتجنب الحظر الخاطئ وهي استخدام عنوان IP بصيغة CIDR. على سبيل المثال ، 11.22.33.22/32 بدلاً من 11.22.33.22 فقط - Nick Gar


كن حذرا مع هذا. هذا ينبغي يكون هو نفسه لكنه ليس!
لم أستطع العثور على تفسير لهذا ولكني أستطيع أن أقول بالتأكيد أن النوافذ وعناوين ip linux مع وبدون الأصفار الرائدة ليست هي نفسها! ربما هذا له علاقة بالتحويل من تنسيقات أخرى مثل ست عشري أو ثنائي.

من تجربتي مع ويندوز ولينكس أنها ليست أداة تعتمد ولكن يبدو أن نظام التشغيل يعتمد لأن الدردشة قيد التشغيل في بعض المشاكل باستخدام ips مثل 10.08.03.100:

  • ملاحظة: تعذر العثور على "10.08.0.1" و 10.09.0.1
  • ملاحظة: تم حل "10.010.0.1" إلى 10.8.0.1

لينكس / debian7 / 8: نفس النتائج باستخدام أداة "ping" و "snmpget"

user@test:~$ ping 10.7.0.1
PING 10.7.0.1 (10.7.0.1) 56(84) bytes of data.
^C
--- 10.7.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.07.0.1
PING 10.07.0.1 (10.7.0.1) 56(84) bytes of data.
^C
--- 10.07.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
^C
--- 10.8.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.08.0.1
**ping: unknown host 10.08.0.1**
user@test:~$ ping 10.9.0.1
PING 10.9.0.1 (10.9.0.1) 56(84) bytes of data.
^C
--- 10.9.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.09.0.1
ping: unknown host 10.09.0.1
user@test:~$ ping 10.10.0.1
PING 10.10.0.1 (10.10.0.1) 56(84) bytes of data.
^C
--- 10.10.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.010.0.1
PING 10.010.0.1 (10.8.0.1) 56(84) bytes of data.
^C
--- 10.010.0.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1001ms

WINDOWS7 / 8/10: نفس النتائج باستخدام أداة "ping" و "telnet"

(آسف ، ليس لدي نوافذ باللغة الإنجليزية في متناول اليد ، خطأ يخبرنا أنه لا يمكن العثور على المضيف)

C:\Users\user>ping 10.7.0.1

Ping wird ausgeführt für 10.7.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.07.0.1

Ping wird ausgeführt für 10.7.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.8.0.1

Ping wird ausgeführt für 10.8.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.08.0.1
Ping-Anforderung konnte Host "10.08.0.1" nicht finden. Überprüfen Sie den Namen,

C:\Users\user>ping 10.9.0.1

Ping wird ausgeführt für 10.9.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.09.0.1
Ping-Anforderung konnte Host "10.09.0.1" nicht finden. Überprüfen Sie den Namen,

C:\Users\user>ping 10.10.0.1

Ping wird ausgeführt für 10.10.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.010.0.1

Ping wird ausgeführt für 10.8.0.1 mit 32 Bytes Daten:
STRG-C
^C

0
2017-07-15 15:30



يشير صفر البادئة غالبًا إلى رقم ثماني. في الواقع ، يكون octal 010 عشريًا 8 ، و 08 و 09 أرقامًا ثمانية غير صالحة. لذا نعم ، الإجابة (حالياً) المقبولة من قبل AthomSfere خاطئة (أو على الأقل غير مكتملة). انظر تعليقاتها ، وبعض الإجابات الأخرى. - Arjan
هتاف اشمئزاز ، أن التعامل مع 10.010.0.1 مروع للغاية. في Microsoft Windows ، يتم التعامل مع ping 10.070.0.1 على أنه 10.56.0.1 و 10.080.0.1 يعطي خطأً فوريًا ، "تعذر العثور على طلب Ping على المضيف 10.080.0.1. الرجاء التحقق من الاسم والمحاولة مرة أخرى." - TOOGAM
نعم ،TOOGAM ، 070 octal عشري 56. أما octal 080 ليس رقمًا صالحًا. - Arjan


عنوانا IP مختلفان.

ومع ذلك:

  • الناس ينظرون إليهم بشكل عام.
  • بعض البرامج قد تعتبرها نفسها.
  • بعض البرامج ، على بعض المنصات ، ستعتبرها مختلفة.

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

تكون عناوين IP في الواقع ثنائية ، ويميل الأشخاص إلى استخدام ترقيم عشري منقط لتمثيل عناوين IP. يمكن أن يقبل البرنامج القواعد العددية المختلفة (أي العشرية ، الثماني ، السداسي) ويترجم الأشياء بطرق مختلفة بناءً على كيفية كتابتها. كيف تكتبها يمكن أن تخبر البرنامج عن القاعدة التي تكتب بها.

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

سألت أ سؤال مماثل وحصلت على بعض الردود الجيدة ، لذلك إذا كنت تريد أن تقرأ على RFC ، هناك معلومات جيدة ليكون هناك.


-4
2017-07-10 14:20