Багато місяців тому, коли я був просто крихітне дитя , починаючи своєї кар'єри, у мене був співбесіду на роль розробників низького рівня. Тоді, лише дізнавшись, як реалізується CIDR, я захотів показати свої знання.
На жаль, ця тактика не виправдала мене. Я пригадую, що був повністю забитий найпершим запитанням, яке йому задали (і, згодом, все розійшлося). Питання:
Чому адреси IPv4 32-розрядні?
Я з готовністю визнав , що я не знаю відповідь, але я ж знаю , що оригінальний дизайн протоколу розділити адресний простір в 8-бітовим номером мережі і 24-бітний ідентифікатор хоста, тому я спробував раціоналізувати це на тій підставі , що дизайнери протоколів уявляли Інтернет з кількох мереж (зрештою, він спочатку мав на меті з'єднати певну декілька), кожна з яких складала безліч хостів, і для простоти програмування все підтримувалося до байтових меж.
Я пригадую, що інтерв'юер був незадоволений моєю відповіддю і запропонував мені, що справжня причина полягає в тому, що гарантовано вміститься всередині а long int
в С, тому спрощує деталі щодо впровадження. Будучи молодим і зеленим у той час, я прийняв це як розумну відповідь і (до сьогоднішнього дня) більше не думав про це.
Чомусь розмова тільки повернулася до мене, і тепер, коли я розмірковую над цим, вона не здається цілком правдоподібною:
Відповідно до оригінальної схеми адресації, що включає мережі фіксованого розміру та поля хосту, навряд чи розробник хотів би призначити конкатенацію двох полів одній змінній (у мене немає доступу до будь-яких ранніх реалізацій IP для перевірки того, що вони насправді це було на практиці); і
На той момент, коли розпочалися роботи над TCP / IP, C не був ні стандартизованим, ні фактично "lingua franca" розробки програмного забезпечення низького рівня, яким він став сьогодні.
Чи фактично було засновано пропозицію інтерв'юера? Якщо ні, то які були справжні причини того, що розробники протоколів обрали 32-бітну адресацію?
640 kB ought to be enough for anybody.
ніхто не очікував, що тостери та холодильники матимуть доступ до Інтернету.