Por que a soma de verificação TCP é invertida?

1

Na página da Wikipédia :

The checksum field is the 16 bit one's complement of the one's complement sum of all 16-bit words in the header and text.

Por que, depois de somar os 16 bits no cabeçalho e no texto, o complemento de um é usado para computar a soma de verificação TCP?

    
por Randomblue 14.05.2013 / 17:39

4 respostas

8

O complemento é usado para simplificar a validação da soma de verificação - em vez de calcular novamente a soma de verificação e comparar o valor calculado com o campo checksum no cabeçalho (que está no meio dos dados somados), é possível somar ( usando aritmética de complemento) todas as palavras de 16 bits no cabeçalho (incluindo a palavra de soma de verificação) e compare o resultado com zero.

    
por 16.05.2013 / 23:20
3

Pode ser porque um valor de todos os zeros é significativo (de RFC 793 ):

While computing the checksum, the checksum field itself is replaced with zeros.

para que possa preservar este significado contra o improvável evento de que a soma de verificação seja realmente zero.

    
por 14.05.2013 / 17:45
0

Checksumming para o resultado ser ZEROs é problemático, já que todos os ZEROs também são gerados por um dispositivo desligado ou algo não tendo energia. Com o resultado sendo todos, há mais garantia de que o hardware está funcionando corretamente.

Um complemento é um termo mais complicado para analisar os bits um a um e não como uma unidade inteira (ou seja, AND / OR / XOR / NOT).

    
por 16.05.2013 / 23:28
-2

A aritmética do complemento foi usada porque o TCP foi projetado na década de 1970 para computadores dos anos 70, a maioria dos quais usava complementar aritmética. A ascensão da aritmética de complemento de dois, que os computadores modernos usam, não começou realmente a sério até os computadores pessoais do final dos anos 1970 e 1980.

    
por 17.05.2013 / 00:02