У меня два сервера debian расположены в одной подсети. Они подключаются переключателем. Я знаю, что UDP ненадежен.
Вопрос 1: Я предполагаю, что канальным уровнем является Ethernet. А MTU из стандартного Ethernet составляет 1500 байт. Таким образом, максимальная дейтаграмма, не подлежащая ароматизации, составляет 1500-20-8 = 1472 байта? Могу я сказать, потому что между этими двумя серверами нет маршрутизатора, следовательно, IP-дейтаграмма не будет фрагментирована.
Вопрос 2: Поскольку два сервера напрямую связаны с коммутатором, могу ли я предположить, что все дейтаграммы прибывают по порядку и без потерь на пути?
Вопрос 3: Как я могу определить, что шансы датаграммы упали на сервере из-за переполнения буфера. Какой размер установить буфер приема, чтобы дейтаграмма не переполняла буфер приема.
1) Нет. На практике даже установка бита запрета фрагментации (DF) не гарантирует для уровня выше UDP отсутствие фрагментации. UDP просто не предоставляет эту гарантию вышестоящим слоям. Уровни выше UDP не должны заботиться.
2) Нет. UDP просто не предоставляет эту гарантию вышестоящим уровням.
3) Единственный надежный способ сказать - это измерить в реальных условиях, которые вы планируете использовать.
По сути, то, что вы пытаетесь сделать, - это синтезировать гарантию, аргументируя это тем, что вы не можете придумать никакого способа нарушения гарантии. Таким образом невозможно синтезировать гарантию. Вы получаете только те гарантии, которые фактически предоставляет протокол. Хотя на практике это будет происходить в большинстве случаев таким образом, это просто не гарантируется, точка.
IP-пакет, безусловно, может быть фрагментирован отправляющими его устройствами; они знают, что MTU их носителя ниже, чем пакет, который они отправляют, поэтому они разделят IP-пакет соответствующим образом. В наши дни многие хосты реализуют обнаружение MTU пути, которое явно указывает маршрутизаторам не обрабатывать фрагментацию вообще, а вместо этого сообщает хосту, что нужно настроить его эффективный MTU для этого пути, чтобы он обрабатывал любую необходимую фрагментацию.
Нет - с топологией с одним коммутатором вы, вероятно, можете предположить, что они прибудут по порядку, но вы не можете предполагать никаких потерь.
Это полностью зависит от используемых устройств, их производительности и объема передаваемых данных.