Como foi observado por outros, há muitas possibilidades de corrupção de dados em que qualquer soma de verificação na camada de transporte não pode ajudar, como corrupção acontecendo antes que a soma de verificação seja calculada no lado de envio, uma interceptação MITM e modificando o fluxo ( dados, bem como somas de verificação), corrupção acontecendo depois de validar a soma de verificação no fim de recepção, etc.
Se desconsiderarmos todas essas outras possibilidades e nos concentrarmos nas especificidades da soma de verificação TCP em si e no que Na verdade, em termos de validação de integridade de dados, verifica-se que as propriedades dessa soma de verificação não são de todo abrangentes em termos de detecção de erros. A maneira como esse algoritmo de soma de verificação foi escolhido reflete a necessidade de velocidade em combinação com o período de tempo (final dos anos 70).
É assim que a soma de verificação TCP é calculada:
Checksum: 16 bits
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. If a
segment contains an odd number of header and text octets to be
checksummed, the last octet is padded on the right with zeros to
form a 16 bit word for checksum purposes. The pad is not
transmitted as part of the segment. While computing the checksum,
the checksum field itself is replaced with zeros.
Isso significa que qualquer corrupção que se equilibre ao somar os dados dessa maneira não será detectada. Há um número de categorias de corrupção nos dados que isso permitirá, mas apenas como um exemplo trivial: alterar a ordem das palavras de 16 bits sempre não será detectado.
Na prática, ele detecta muitos erros típicos, mas não garante a integridade.
Também é ajudado por como a camada L2 também faz verificações de integridade (por exemplo, CRC32 de quadros Ethernet), embora apenas para a transmissão no link local, e muitos casos de dados corrompidos nunca são transmitidos para a pilha TCP.
A validação dos dados usando um hash strong, ou preferencialmente uma assinatura criptográfica, está em um nível totalmente diferente em termos de garantir a integridade dos dados. Os dois mal podem ser comparados.