Sockets e integridade dos dados

Olá

Gostaria de saber se usando Socket e ServerSocket
é garantido que os dados que chegaram na outra ponta estara integro, ou seja não estará faltando bytes. Ou eu tenho que fazer essa verificação na mão?

Obrigado

Olha kra, não sou expert no assunto, mas quem tem que se preocupar com a integridade é o protocolo não é? Eu acho que num tem problema não…

O protocolo TCP efetua alguns testes, e o transporte (PPP, GPRS, Ethernet etc.) é que deve checar a integridade.

Entretanto eu sempre recomendaria anteceder os dados por um cabeçalho indicando o tamanho do pacote de dados, porque quando você manda 4096 bytes em uma ponta (por exemplo), o receptor pode receber esses bytes em vários pacotes* em vez de recebê-los todos de uma vez, e isso é característica do protocolo TCP.

  • O tamanho do pacote depende do meio de transmissão usado, entre outras coisas. Já ouviu falar de MTU?

http://www.tcpipguide.com/free/t_IPDatagramSizetheMaximumTransmissionUnitMTUandFrag.htm

[quote=thingol]O protocolo TCP efetua alguns testes, e o transporte (PPP, GPRS, Ethernet etc.) é que deve checar a integridade.

Entretanto eu sempre recomendaria anteceder os dados por um cabeçalho indicando o tamanho do pacote de dados, porque quando você manda 4096 bytes em uma ponta (por exemplo), o receptor pode receber esses bytes em vários pacotes* em vez de recebê-los todos de uma vez, e isso é característica do protocolo TCP.

  • O tamanho do pacote depende do meio de transmissão usado, entre outras coisas. Já ouviu falar de MTU?

http://www.tcpipguide.com/free/t_IPDatagramSizetheMaximumTransmissionUnitMTUandFrag.htm
[/quote]
Nunca ouvi falar. Mas lerei o link.
Eu tive essa preocupação pois tenho que trabalhar com sockets e codificar uma aplicação usando o ISO-8583 pena que ele proprio não destina um bit pra o tamanho do pacote de dados.

Isso existe, e deve ser considerado.
Porém é como se diria “transparente” ao se desenvolver sockets, isso é responsabilidade da do sistema operacional que monta os pacotes.

O protocolo TCP em sí tem o checksum para garantir a integridade dos pacotes, porém também faz parte das responsabilidades da implementação de TCP do sistema operacional a verificação destas.

A parte java sockets fica acima desta camada, após todo o controle tcp(SYN, SYN/ACK, PUSH, PUSH/ACK, FIN, FIN/ACK, RST, RST/ACK) controlado pelo sistema operacional.

Até.