Чому адреси IPv4 32-розрядні?


33

Багато місяців тому, коли я був просто крихітне дитя , починаючи своєї кар'єри, у мене був співбесіду на роль розробників низького рівня. Тоді, лише дізнавшись, як реалізується CIDR, я захотів показати свої знання.

На жаль, ця тактика не виправдала мене. Я пригадую, що був повністю забитий найпершим запитанням, яке йому задали (і, згодом, все розійшлося). Питання:

Чому адреси IPv4 32-розрядні?

Я з готовністю визнав , що я не знаю відповідь, але я ж знаю , що оригінальний дизайн протоколу розділити адресний простір в 8-бітовим номером мережі і 24-бітний ідентифікатор хоста, тому я спробував раціоналізувати це на тій підставі , що дизайнери протоколів уявляли Інтернет з кількох мереж (зрештою, він спочатку мав на меті з'єднати певну декілька), кожна з яких складала безліч хостів, і для простоти програмування все підтримувалося до байтових меж.

Я пригадую, що інтерв'юер був незадоволений моєю відповіддю і запропонував мені, що справжня причина полягає в тому, що гарантовано вміститься всередині а long intв С, тому спрощує деталі щодо впровадження. Будучи молодим і зеленим у той час, я прийняв це як розумну відповідь і (до сьогоднішнього дня) більше не думав про це.

Чомусь розмова тільки повернулася до мене, і тепер, коли я розмірковую над цим, вона не здається цілком правдоподібною:

  1. Відповідно до оригінальної схеми адресації, що включає мережі фіксованого розміру та поля хосту, навряд чи розробник хотів би призначити конкатенацію двох полів одній змінній (у мене немає доступу до будь-яких ранніх реалізацій IP для перевірки того, що вони насправді це було на практиці); і

  2. На той момент, коли розпочалися роботи над TCP / IP, C не був ні стандартизованим, ні фактично "lingua franca" розробки програмного забезпечення низького рівня, яким він став сьогодні.

Чи фактично було засновано пропозицію інтерв'юера? Якщо ні, то які були справжні причини того, що розробники протоколів обрали 32-бітну адресацію?


3
Ця ж причина, чому 640 kB ought to be enough for anybody.ніхто не очікував, що тостери та холодильники матимуть доступ до Інтернету.

1
@afwe: Гм. Питання не було, чому вони не обрали для початку більшу кількість? інакше чому лише 32-бітні? (що справді суть у тому, що \ @Jens чудові відповіді адреси), але більше, що було настільки особливим щодо 32-бітових (а не, скажімо, 16-бітових або 24-бітних або 48-бітних)?
eggyal

@Downvoter: Хочете коментувати?
eggyal

Відповіді:


23

Ось посилання на відеозустріч із Vint Cerf (квітня 2014 р.), Де він пояснює, як вважав, що цей Інтернет повинен був бути лише експериментом:

Як ми думали про Інтернет (добре думаючи, це буде деяка кількість довільної кількості мереж, всі взаємопов'язані - ми не знаємо, скільки і не знаємо, як вони будуть підключені), але національних мереж ми подумав: " ну, може, буде по дві на кожну країну " (бо це було дорого: на даний момент Ethernet був винайдений, але він не розповсюджувався скрізь, як це робилося через кілька років).

Тоді ми сказали " скільки країн? " (Дві мережі в країні, скільки мереж?), І у нас не було запитувати Google, тому ми здогадалися в 128, а це було б 2 рази. 128 це 256 мереж (це 8 біт), і тоді ми сказали " скільки комп'ютерів буде в кожній мережі? ", і ми сказали " як приблизно 16 мільйонів? " (це ще 24 біти), тому у нас була 32-бітна адреса, яка дозволила 4,3 мільярда завершень - що я подумав, що в 1974/3 році вистачило для проведення експерименту!

Я вже опублікував це як коментар до відповіді Йенса Лінка, але відчув, що це повинно трохи більше.


Більше, ніж "трохи більше", я думаю, що це відповідає на актуальне питання безпосередньо, ніж відповідь Йенса.
eggyal

34

Проста відповідь: адже Вінт Серф вирішив так . Він вважав, що розробляє експериментальний протокол, і вважав 32-бітові більш ніж достатніми для цієї мети; він не сподівався, що IPv4 буде використаний у виробничих системах, і тому більше розмірковувати про розмір адресного простору не було.

На конференції Google IPv6 2008 він провів панельну дискусію під назвою Як виглядатиме Інтернет IPv6? під час якого він переказав :

Рішення помістити 32-розрядний адресний простір було результатом річного бою між купою інженерів, які не могли скласти свою думку приблизно про 32, 128 або змінну довжину. І після року бойових дій я сказав - я зараз в ARPA, я запускаю програму, я плачу за ці речі і використовую американські податкові долари - і я хотів певного прогресу, тому що ми не знали, чи це йти на роботу. Тому я сказав 32 біти, це достатньо для експерименту, це 4,3 мільярда закінчень - навіть оборонному відділу нічого не потрібно 4,3 мільярда, і він не міг дозволити собі придбати 4,3 мільярда крайових пристроїв, щоб зробити тест все одно. Тоді я подумав, що ми робимо експеримент, щоб довести технологію, і якщо б вона працювала, у нас з'явиться можливість зробити її виробничу версію. Ну - [сміх] - це просто втекло!

Стенограма від Пітера Е. Мюррей .


7
Ага, як нерозумно мене! Бритва Оккама знову вражає. Принаймні, ви дали мені самодовольне задоволення, знаючи, що інтерв'юер помилився.
eggyal

2
@ user5025: Так, це можливо (у загальному випадку). Але якщо Вінт каже, що це були його причини для вибору 32-бітового для IPv4, то важко стверджувати, що він також мав інших.
eggyal

5
@ user5025: Гаразд, це справедливо. Дійсно, він згадує, що інженери розбиралися над тим, якою має бути довжина, дехто виступає за 32-розрядні. Тож я припускаю, що питання полягає в тому, які їх мотивації виступали за 32-розрядні (тобто те, що зробило його прийнятним для Vint)?
eggyal

2
@eggyal: Моя думка не в тому, що 32-бітові цілі числа були "безумовно" мотивуючим фактором, а радше припускати, що я вважаю дуже правдоподібним, що достатньо інженерів, які припускають, що розмір, можливо, вважав би чинником, який не є свідченням навпаки, я не думаю, що це може бути виключено як чинник можливого вибору.
supercat

2
@eggyal: Ви запитали, що, можливо , мотивувало інженерів вибрати 32 біти. Я мав намір відповісти на це конкретне питання. Я написав стек TCP / IP на "голому металі" і мусив працювати з адресами в різні випадки, але ніколи не був зацікавлений у їх розборі - лише для визначення того, чи відповідають вони [цей конкретний стек обробляє лише вхідні TCP / IP-з'єднання, тому довелося мати справу з ARP, але не шлюзами].
supercat

0

Розмір слова . Вони писали програмне забезпечення, не розробляючи комп’ютерне обладнання - хоча я впевнений, що вони мали на увазі продуктивність та портативність. У той час, 32 біт був word, то longword, або intчи longIntабо будь-який інший . Див. Вибір розміру слова .

Вони написали це програмне забезпечення "протягом перших десятиліть 32-розрядної архітектури (1960 - 1980)". - Вікіпедія


3
Якщо ви не припускаєте, що архітектори TCP / IP мали на увазі конкретну архітектуру машини, я не впевнений, куди ви йдете з цим аргументом ... чи є у вас докази того, що вони використовували / проектували для 32- бітові архітектури чи навіть те, що розмір слова був відповідним врахуванням довжини, яку вони вибрали для мережевої адреси?
eggyal

@eggyal: Мови для 8-бітних та 16-розрядних машин часто включали 32-бітний цілочисельний тип даних, але набагато рідше для мов на 32-бітних машинах існували багатословні цілі типи даних. Принаймні, на рівні вихідного коду, робота з 32-бітовими значеннями по суті так само зручна, як робота з 16-бітовими значеннями, і, безумовно, зручніше, ніж робота з великими типами. Крім того, для пристроїв, що мають обмежені потреби в комунікаціях, 32-розрядна адресація може бути чудовою, якщо вони спілкуються через більш складні шлюзи.
supercat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.