Descobrindo o tamanho máximo do pacote
-
22-09-2019 - |
Pergunta
Estou trabalhando em um projeto relacionado à rede e estou usando o DTLS (TLS/UDP) para garantir comunicações.
Lendo as especificações para os DTLs, observei que os DTLs exigem o Df sinalizador (não fragmento) a ser definido.
Na minha rede local, se eu tentar enviar uma mensagem maior que 1500 bytes, nada é enviado. Isso faz todo o sentido. No Windows, o sendTo () relata um sucesso, mas nada é enviado.
Eu obviamente não posso despertar o Df Sinalizador manualmente, pois é obrigatório para o DTLS e não tenho certeza se o limite de 1500 bytes (MTU?) poderia mudar em algumas situações. Eu acho que pode.
Então, minha pergunta é: "Existe uma maneira de descobrir esse limite?" Usando APIs?
Caso contrário, qual seria o menor valor possível?
Meu software é executado no UNIX (Linux/Mac OSX) e Windows OSes, para que soluções diferentes para cada sistema operacional sejam bem -vindas;)
Muito Obrigado.
Solução
Existe um MTU mínimo que deve ser suportado - 576 bytes, incluindo cabeçalhos IP. Portanto, se você mantiver seus pacotes abaixo disso, não precisará se preocupar com o PMTU-D (é o que o DNS faz).
Outras dicas
Você provavelmente precisa 'ajustá -lo automático' enviando uma variedade de tamanhos de pacotes para o alvo e veja qual chegar. Pense binário_search ...