Wiele księżyców temu, kiedy był tylko wee bairn rozpoczynających karierę, miałem kwalifikacyjnej do roli dewelopera niskim poziomie. Po tym, jak właśnie dowiedziałem się, jak zaimplementowano CIDR, chciałem pochwalić się swoją wiedzą.
Niestety ta taktyka nie wyszła mi zbyt dobrze. Pamiętam, że pierwsze pytanie, które mi zadano, całkowicie mnie przeraziło (a potem potargałem, wszystko poszło w dół). Pytanie brzmiało:
Dlaczego adresy IPv4 są 32-bitowe?
I łatwo przyznać, że nie wiem, odpowiedź, ale ja nie wiem, że pierwotny projekt protokołu dzieli przestrzeń adresową pod numerem sieciowego 8-bitowy i 24-bitowy identyfikator hosta, więc starałem się zracjonalizować go na tej podstawie, że projektanci protokołów wyobrazić internetowy z kilku sieci (mimo wszystko, był pierwotnie przeznaczony do połączenia razem specyficzne kilka) z których każdy zawiera wiele hostów, a dla uproszczenia programowania, utrzymane wszystko wyrównane do granic bajtów.
Pamiętam, że ankieter był niezadowolony z mojej odpowiedzi i zasugerował mi, że prawdziwym powodem jest to, że z pewnością mieści się long int
w C, więc upraszcza szczegóły implementacji. Będąc wtedy młody i zielony, zaakceptowałem to jako rozsądną odpowiedź i (przed dniem dzisiejszym) już o tym nie myślałem.
Z jakiegoś powodu ta rozmowa właśnie do mnie wróciła, a teraz, gdy się nad nią zastanawiam, nie wydaje się to całkowicie prawdopodobne:
Zgodnie z pierwotnym schematem adresowania obejmującym pola sieci i hosta o stałej wielkości, mało prawdopodobne jest, aby deweloper chciał przypisać konkatenację dwóch pól do jednej zmiennej (nie mam dostępu do żadnych wczesnych implementacji IP, aby zweryfikować, co one faktycznie zrobił w praktyce); i
W momencie, gdy zaczęły działać TCP / IP, C nie było ani standaryzowane, ani de facto „lingua franca” rozwoju oprogramowania niskiego poziomu, jakim stało się dzisiaj.
Czy sugestia ankietera była faktycznie uzasadniona? Jeśli nie, to jakie były prawdziwe powody, dla których projektanci protokołów wybrali adresowanie 32-bitowe?
640 kB ought to be enough for anybody.
nikt nie oczekiwał, że tostery i lodówki będą miały dostęp do Internetu.