Por que os endereços IPv4 são de 32 bits?

33

Muitas luas atrás, quando eu era apenas um pequeno garoto começando minha carreira, eu tive uma entrevista de emprego para um papel de desenvolvedor de baixo nível. Tendo acabado de aprender como o CIDR foi implementado, eu estava interessado em mostrar meu conhecimento.

Infelizmente, essa tática não funcionou muito bem para mim. Lembro-me de ter ficado completamente chocado com a primeira pergunta que foi feita (e, depois, frustrada, tudo desceu). A questão era:

Por que os endereços IPv4 são de 32 bits?

Eu prontamente admitiu que eu não sei a resposta, mas eu queria saber que o projeto do protocolo original dividido o espaço de endereço para um número de rede de 8 bits e uma série de 24 bits identificador-então eu tentei racionalizar, alegando que os designers protocolo imaginou uma Internet de algumas redes (afinal, ele foi originalmente destinado a ligação em conjunto um específico poucos) cada uma composta por muitos anfitriões e, por simplicidade de programação, manteve tudo alinhado para limites de byte.

Lembro-me de o entrevistador estar insatisfeito com minha resposta e sugerir que o verdadeiro motivo é que ele se encaixa dentro de um long intem C, simplificando assim os detalhes da implementação. Sendo jovem e verde na época, aceitei isso como uma resposta razoável e (antes de hoje) não havia pensado mais nisso.

Por alguma razão, a conversa acabou de voltar para mim e, agora que penso nisso, não parece totalmente plausível:

  1. Sob o esquema de endereçamento original, que inclui campos de host e rede de tamanho fixo, é improvável que um desenvolvedor deseje atribuir a concatenação dos dois campos a uma única variável (não tenho acesso a nenhuma das implementações de IP anteriores para verificar o que elas realmente fez na prática); e

  2. Na época em que o TCP / IP começou, o C não era padronizado nem a "língua franca" de fato do desenvolvimento de software de baixo nível que se tornou hoje.

A sugestão do entrevistador foi realmente fundada? Caso contrário, quais foram os reais motivos pelos quais os projetistas de protocolo escolheram o endereçamento de 32 bits?

eggyal
fonte
3
Mesma razão pela qual 640 kB ought to be enough for anybody.ninguém esperava que torradeiras e geladeiras tivessem acesso à Internet.
1
@afwe: Hm. A questão não era por que eles não escolheram um número maior para começar? aka por que apenas 32 bits? (qual é realmente o ponto em que a excelente resposta de \ @Jens aborda), mas mais o que há de tão especial em 32 bits (em vez de, digamos, 16 bits ou 24 bits ou 48 bits)?
eggyal 15/05
@ Downowner: Gostaria de comentar?
eggyal

Respostas:

23

Aqui está um link para um Hangout com Vint Cerf (abril de 2014), onde ele explica como ele pensava que essa Internet deveria ser apenas um experimento:

Enquanto pensávamos na Internet (pensando bem, esse número seria arbitrário de redes, todas interconectadas - não sabemos quantas e nem como elas serão conectadas), mas redes em escala nacional que pensou " bem, talvez haja dois por país " (porque era caro: neste momento a Ethernet havia sido inventada, mas não estava proliferando em todos os lugares, como ocorreu alguns anos depois).

Em seguida, dissemos " quantos países existem? " (Duas redes por país, quantas redes?) E não tínhamos o Google para perguntar, então adivinhávamos 128 e isso seria 2 vezes 128 é 256 redes (8 bits) e então dissemos " quantos computadores haveriam em cada rede? " e dissemos " que cerca de 16 milhões? " (ou seja, outros 24 bits), então tínhamos um endereço de 32 bits que permitia 4,3 bilhões de terminações - o que eu o pensamento em 1974/3 foi suficiente para fazer o experimento!

Eu já havia postado isso como um comentário na resposta de Jens Link, mas senti que deveria aparecer um pouco mais.

Daniel F
fonte
Mais do que "aflorar um pouco mais", acho que isso responde à pergunta real mais diretamente do que a resposta de Jens.
eggyal
34

Resposta fácil: porque Vint Cerf decidiu que sim . Ele pensou que estava projetando um protocolo experimental e considerou 32 bits mais do que suficiente para esse fim; ele não esperava que o IPv4 fosse usado em sistemas de produção e, portanto, não se pensou mais no tamanho do espaço de endereço.

Na Google IPv6 Conference 2008, ele organizou um painel de discussão intitulado Como será a Internet IPv6? durante o qual ele relatou :

A decisão de colocar um espaço de endereço de 32 bits foi o resultado da batalha de um ano entre vários engenheiros que não conseguiam se decidir sobre 32, 128 ou comprimento variável. E depois de um ano de luta, eu disse - agora estou no ARPA, estou executando o programa, estou pagando por essas coisas e usando dólares americanos - e queria algum progresso porque não sabíamos se isso era indo trabalhar. Então eu disse 32 bits, é suficiente para um experimento, são 4,3 bilhões de terminações - mesmo o departamento de defesa não precisa de 4,3 bilhões de nada e não podia comprar 4,3 bilhões de dispositivos de ponta para fazer um teste de qualquer maneira. Então, na época, pensei que estávamos fazendo um experimento para provar a tecnologia e que, se funcionasse, teríamos a oportunidade de fazer uma versão de produção. Bem - [risos] - apenas escapou!

Transcrição por Peter E. Murray .

Jens Link
fonte
7
Agh, que idiota da minha parte! A navalha de Occam ataca novamente. Pelo menos você me deu a satisfação presunçosa de saber que o entrevistador estava errado.
eggyal 15/05
2
@ user5025: Sim, é possível (no caso geral). Mas se Vint diz que esses foram seus motivos para escolher 32 bits para o IPv4, é difícil argumentar que ele também tinha outros.
eggyal 15/05
5
@ user5025: Ok, esse é um ponto justo. De fato, ele menciona que os engenheiros estavam brigando sobre qual deveria ser o comprimento, com alguns defendendo 32 bits. Portanto, suponho que a pergunta seja quais foram suas motivações para defender 32 bits (ou seja, o que a tornou aceitável para Vint)?
eggyal 15/05
2
@eggyal: Meu argumento não é que números inteiros de 32 bits foram "definitivamente" um fator motivador, mas sugerir que eu consideraria altamente plausível que um número suficiente de engenheiros sugerindo que tamanho poderia considerar esse fator um fator que, falta de evidência para o pelo contrário, não acho que possa ser descartado como um fator na eventual escolha.
Supercat
2
@eggyal: Você perguntou o que poderia ter motivado os engenheiros a escolher 32 bits. Minha intenção era responder a essa pergunta em particular. Eu escrevi uma pilha TCP / IP em "bare metal" e tive que lidar com endereços em várias ocasiões, mas nunca tive interesse em analisá-las - apenas para determinar se elas correspondiam [essa pilha específica lidava apenas com conexões TCP / IP de entrada, então teve que lidar com o ARP, mas não os gateways].
Supercat
0

Tamanho da palavra . Eles estavam escrevendo software, não projetando hardware de computador - embora eu tenha certeza de que eles tinham desempenho e portabilidade em mente. Naquela época, 32 bits era o word, o longword, ou intou longIntou o que quer. Consulte Escolha do tamanho da palavra .

Eles escreveram esse software "durante as primeiras décadas de arquiteturas de 32 bits (das décadas de 1960 a 1980)". - Wikipedia

Ron Royston
fonte
3
A menos que você esteja sugerindo que os arquitetos do TCP / IP tenham em mente uma arquitetura de máquina específica, não sei para onde você está indo com esse argumento ... você tem alguma evidência de que eles estavam usando / projetando para 32- arquiteturas de bit ou mesmo que o tamanho da palavra fosse uma consideração relevante para o tamanho que eles selecionaram para o endereço de rede?
eggyal
@eggyal: os idiomas para máquinas de 8 e 16 bits geralmente incluíam um tipo de dados inteiro de 32 bits, mas era muito menos comum que os idiomas nas máquinas de 32 bits tivessem tipos de dados inteiros com várias palavras. Pelo menos no nível do código-fonte, trabalhar com valores de 32 bits é essencialmente tão conveniente quanto trabalhar com valores de 16 bits e é definitivamente mais conveniente do que trabalhar com tipos maiores. Além disso, para dispositivos com necessidades limitadas de comunicação, o endereçamento de 32 bits pode ser bom se eles se comunicarem através de gateways mais sofisticados.
Supercat