Я должен отправить пакеты от одного хоста до другого по сети потенциально с потерями. Для уменьшения пакетной задержки я не рассматриваю TCP/IP. Но, я хочу максимизировать пропускную способность с помощью UDP. Каков должен быть оптимальный размер пакета UDP для использования?
Вот некоторые мои соображения:
Размер MTU переключателей в сети является 1500. Если я буду использовать большой пакет, например, 8192, то это вызовет фрагментацию. Потеря одного фрагмента приведет к потере целого пакета, правильно?
Если я буду использовать пакеты меньшего размера, то я подвергнусь издержкам заголовка IP и UDP
Если я использую действительно большой пакет, что является самым большим, который я могу использовать? Я считал, что самый большой размер датаграммы 65507. Каков размер буфера, который я должен использовать, чтобы позволить мне отправлять такие размеры? Это помогло бы увеличить мою пропускную способность?
Что типичный максимальный размер датаграммы поддерживаются общими Ose (например, Windows, Linux, и т.д.)?
Обновленный:
Некоторые получатели данных являются встроенными системами, для которых не реализован стек TCP/IP.
Я знаю, что это место заполнено людьми, которые очень непреклонны по отношению к использованию, что доступно. Но я надеюсь иметь лучшие ответы, чем просто фокусировка на одном только MTU.
Эээ, Джейсон, TCP не использует UDP. TCP использует IP, поэтому вы часто видите его как TCP / IP. UDP также использует IP, поэтому технически UDP является UDP / IP. Уровень IP обрабатывает передачу данных из конца в конец (по разным сетям), поэтому его называют межсетевым протоколом . TCP и UDP обрабатывают сегментацию самих данных. Нижние уровни, такие как Ethernet или PPP, или что-то еще, что вы используете, обрабатывают передачу данных от компьютера к компьютеру (то есть в пределах одной сети).