Я регулярно посещаю Stack Overflow (разработчик программного обеспечения), который пытается пройти сетевой курс. У меня есть домашнее задание, которое я хотел бы проверить. Вот что у меня получилось.
Вопрос:
Магистраль T1 длиной 3000 км используется для передачи 64-байтовых кадров по протоколу Go-Back-N. Если скорость распространения составляет 6 микросекунд / км, сколько битов должны быть порядковые номера?
Мой ответ:
Для ответа на этот вопрос нам нужно заложить базовые знания. То, что мы пытаемся найти, - это размер наибольшего порядкового номера, который мы должны использовать с помощью Go-Back-N. Чтобы понять это, нам нужно выяснить, сколько пакетов может поместиться в нашу ссылку за раз, а затем вычесть один из этого числа. Это гарантирует, что у нас никогда не будет двух пакетов с одинаковым порядковым номером одновременно в канале связи.
Длина канала: 3000 км Скорость: 6 микросекунд / км Размер кадра: 64 байта Скорость передачи T1: 1544 Кбит / с (http://ckp.made-it.com/t1234.html)
Время распространения = 6 микросекунд / км * 3000 км = 18000 микросекунд (18 мс). Преобразовать 1544 КБ в байты = 1544 * 1024 = 1581056 байтов Время передачи = 64 байта / 1581056 байтов / секунду = 0,000040479 секунд (0,4 мс)
Итак, если мы возьмем время распространения 18 мс и разделим его на время передачи 0,4 мс, мы увидим, что мы сможем загружать (18 / 0,4) 45 пакетов в канал за раз. Это означает, что наш порядковый номер должен быть 2 ^ 45 бит!
Я иду в правильном направлении?
Спасибо Майк
Чтобы понять это, нам нужно выяснить, сколько пакетов может поместиться в нашу ссылку за раз, а затем вычесть один из этого числа. Это гарантирует, что у нас никогда не будет двух пакетов с одинаковым порядковым номером одновременно в канале связи.
Я не согласен с этим рассуждением. Отсутствие двух пакетов с одинаковым порядковым номером достигается за счет того, что объекты протокола не отправляют кадры за пределы окна. Следует различать размер окна, N
, и диапазон порядковых номеров. Нет проблем с использованием 32-битных порядковых номеров для окна, состоящего всего лишь из 5 кадров, хотя это, конечно, не было бы оптимальным.
Если время передачи в одном направлении составляет 18 мс, тогда у вас будет RTT, время приема-передачи, 18 мс + время обработки на принимающей стороне + 18 мс. Я понятия не имею, какие значения времени обработки целесообразны в этом случае, поэтому для простоты давайте просто примем ноль. Это дает RTT 36 мс. Это означает, что с момента отправки кадра пройдет (в лучшем случае) 38 мс, прежде чем вы получите подтверждение в этом кадре. Это определяет верхний предел объема ожидаемых данных, который имеет смысл иметь при выборе размера окна. Если у вас окно большего размера, оно заполнит только буфер передачи на отправляющей стороне и не повлияет на пропускную способность. Вполне могут быть другие факторы (например, размер буфера на принимающей стороне), которые дополнительно ограничивают окно, но поскольку для этого не дается никакой информации, предположим, что принимающая сторона имеет неограниченное количество буферов и т. Д.
Для оптимальной производительности (пропускной способности) окно должно быть достаточно большим, чтобы отправитель мог непрерывно отправлять 38 мсек. Скорость T1 составляет 193000 байт в секунду. С 64 байтами на кадр, что соответствует 3015,625 кадрам в секунду. 0,038 умножить на 3015,625 дает 114,59375. То есть за 38 мс вы можете отправить 114 кадров. Поэтому можно выбрать размер окна немного больше теоретического максимума (например, 115-120) (так, чтобы ограничивающим фактором была физическая ссылка, а не размер окна). Диапазон порядковых номеров должен быть больше, чем размер окна, и в этом случае 128 - это близкое максимальное значение.
Итак, ответ на ваш вопрос: в этом случае вам нужно минимум 7 бит для порядковых номеров. Смотрите также Вот для интерактивного java-апплета возврата.