Я ищу это, как две стороны могут определить, какой масштабный коэффициент будет использоваться? В син пакетах мы можем дать масштабный коэффициент, и тогда, когда две стороны имеют любой масштабный коэффициент, мы можем понять, что две стороны могут поддерживать масштабирование окна. Теперь возникает вопрос, если отправитель устанавливает коэффициент масштабирования равным 8, а получатель задает значение 7 в опции масштабирования пакетов syn(может быть syn, ack), какой из них будет использоваться в этом tcp-соединении?
3 ответа
Окна TCP - все о том, сколько данных система может буферизовать при получении. Таким образом, каждый конец говорит, что он может получить.
Помните, что TCP-соединения всегда являются двунаправленными соединениями независимо от того, кто их инициирует. Конечно, в большинстве случаев данные, которые отправляются в одном направлении, намного больше, чем объем, отправляемый в другом направлении, но это все еще считается двунаправленным соединением. Таким образом, обе стороны считаются отправителями и получателями, и обеим сторонам необходимо указать, какой объем данных они могут буферизовать при получении, и сообщить, насколько заполнен этот буфер приема.
Значение, представленное любым TCP, не важно, только то, что опция масштаба окна существует на обоих. Используемое окно всегда будет меньше окна отправки отправляющих устройств или окна приема принимающих устройств. Так, например, если сервер, на который вы отправляете, имеет ограниченное оставшееся буферное пространство, он будет объявлять размер окна, который он может получить, используя подтверждения. Отправляющий TCP будет затем отключаться по мере необходимости. Окно TCP всегда изменяется в массовых передачах по мере необходимости в зависимости от условий сети. Значение масштаба окна - это просто максимум, основанный на возможностях ваших адаптеров.
TCP работает на AIMD (аддитивное увеличение и мультипликативное уменьшение); после того как TCP-сокет переходит в установленное состояние, отправитель tcp будет использовать свое скользящее окно, чтобы, скажем, 1 сегментЕсли RX TCP подтвердит этот сегмент, то отправитель увеличит окно на 2 сегмента, если его подтвердили, то окно будет равно 3, так что. Если сегмент потерян и повторно передан отправителем, то окно будет уменьшено с 4 до 2.Информация о коэффициенте масштабирования передается в пакетах syn-send и receive.