Я получил следующий вопрос из курса:
«Предположим, TCP-соединение через Интернет с используемой полосой пропускания 300 Мбит / с. Предположим, что некоторые пакеты транспортируются с очень большой задержкой. При каком времени задержки могут возникнуть серьезные проблемы? Это реальная проблема?»
Я подсчитал, что при времени задержки ~ 2 минуты произойдет переполнение счетчика последовательности (если вы предположили, что он начался с 0). Согласно RFC, счетчик последовательности переполняется до нуля. Я не нашел в RFC «что делать, если это произойдет», но, возможно, я это пропустил.
У меня вопрос: что будет? Это просто ограничение TCP? Есть ли обходные пути (кроме использования большего счетчика последовательностей)?
Что ж, соответствующий RFC говорит вам, как это сделать правильно (и фактически решает проблему). Видеть http://www.apps.ietf.org/rfc/rfc1323.html Раздел 4.
Я не думаю, что переполнение само по себе является проблемой, вы столкнетесь с проблемой только тогда, когда получите пакет с порядковым номером, который находится внутри текущего окна приема, но фактически получен (кратным) 4 ГиБ назад в поток данных. Чтобы это произошло, пакет должен быть задержан на две минуты в соответствии с вашими расчетами (звучит правдоподобно). На практике я не думаю, что это будет происходить слишком часто, поскольку обычно который много буферного пространства во всех промежуточных системах (оно также должно быть порядка 4 ГиБ).