Estou usando um idioma de alto nível em um PC para enviar uma mensagem via TCP / IP para um dispositivo remoto que é um dispositivo incorporado.
Estou enviando mensagens relativamente pequenas (<255 bytes).
Devo assumir que haverá vários firewalls, proxies e gateway entre o meu PC e o dispositivo de destino.
Também devo assumir que a mensagem pode ser transmitida por rádio (GPRS, UMTS) antes de chegar ao dispositivo de destino.
Supondo que os buffers de hardware e software do dispositivo de destino sejam grandes o suficiente (1000 bytes), qual deve ser a mensagem pequena para que eu tenha certeza de que sempre será recebida em uma única peça no nível de aplicativo do dispositivo de destino?
Em outras palavras, devo incluir o tamanho da mensagem no meu protocolo de aplicativo ou é inútil, pois a mensagem é pequena?
fonte
Você está tentando ajustar o tamanho do pacote TCP / IP para a chamada MTU (unidade máxima de transmissão). Você pode fazer isso. Ou você pode ignorá-lo e, como você está usando o TCP / IP, basta enviar o pacote: ele viajará pela rede, cortado em pedaços e colado automaticamente mais tarde e, em seguida, o pacote chegará.
Se sua mensagem for muito pequena e estiver abaixo do "tamanho mínimo do datagrama", esta citação o deixará feliz:
Portanto, se sua mensagem for menor que 556 bytes (576 bytes - cabeçalho ipv4 de 20 bytes), ela deverá chegar como um pacote.
Mas mesmo com a fragmentação: o receptor obtém um pacote completo somente se todos os fragmentos (possíveis) chegaram. O que torna um pouco inútil "se importar" com o tamanho da mensagem para evitar a fragmentação.
Além do tamanho da transferência, pode ser uma boa ideia incluir o tamanho da mensagem ao longo da mensagem (talvez você queira transferir a mensagem por diferentes mídias também um dia)
fonte