Sockets e integridade dos dados

4 respostas
furutani

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

4 Respostas

davidbuzatto

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…

T

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

furutani

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


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.

nbluis

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é.

Criado 15 de maio de 2007
Ultima resposta 16 de mai. de 2007
Respostas 4
Participantes 4