- •2. Протокол. Примеры.
- •3. Конечные системы, архитектура клиент-сервер, сервисы с установление и без установления соединения.
- •4. Коммутация каналов, коммутация пакетов, коммутация сообщений, маршрутизация.
- •5. Сети доступа и среды передачи данных.
- •6. Причины задержек и потерь в сетях с коммутацией пакетов.
- •7. Уровни протоколов, стек протоколов Internet. Иерархия isp.
- •8. Требования приложений. Сервисы, предоставляемые tcp и udp.
- •9. Протокол http
- •10. Аутентификация в http, cookies, условный get в http.
- •11. Протокол ftp.
- •12. Протокол smtp.
- •13. Служба имен доменов (dns).
- •14. Распределение нагрузки (cdn, основные варианты организации). Web-proxy, принцип действия. P2p-сети (основные варианты организации).
- •15. Сервисы, предоставляемые протоколами транспортного уровня.
- •16. Мультиплексирование и демультиплексирование, порты, сокеты.
- •17. Протокол udp.
- •18. Принципы надежной передачи данных.
- •19. Протокол tcp.
- •20. Установление и разрыв соединения, состояния tcp.
- •21. Максимальное время ожидания подтверждения в tcp (timeout)
- •22. Управление потоком в tcp.
- •23. Время выполнения запроса в статическом окне.
- •24. Сервисы, предоставляемые функциями сетевого уровня.
- •25. Маршрутизация, термины, алгоритм Дейкстры (ls).
- •26. Маршрутизация, алгоритм Беллмана-Форда (dv).
- •27. Автономные системы. Иерархическая маршрутизация.
- •28. Протокол ip. Адресация и маршрутизация в ip.
- •29. Основные варианты архитектуры маршрутизатора (коммутатора).
- •30. Сервисы, предоставляемые функциями канального уровня.
- •31. Методы обнаружения и коррекции ошибок.
- •32.Способы разделения среды передачи (tdm, fdm, cdma). Основные способы организации доступа к общей среде передачи.
- •33. Адрес в локальной сети и arp
- •34. Ethernet.
- •35. Хабы и коммутаторы.
- •36. Протокол ppp.
22. Управление потоком в tcp.
На обоих хостах между которыми установлено TCP-соединение, имеются приемные буферы. Приложение считывает из них данные в произвольный момент времени. Если частота поступления данных в буфер превышает частоту их считывания приложением, то через некоторый интервал времени возникает угроза переполнения буфера. Для избежания этого TCP предоставляет приложениям службу контроля потока, призванную контролировать , чтобы частота передачи данных соответствовала частоте из считывания принимающим приложением. Скорость передачи может быть принудительно снижена - механизм контроля перегрузок. TCP обеспечивает контроль приема с помощью переменной, называемой окном приема, поддерживается обеими сторонами, размер буфера хранится в переменной RcvBuffer.
LastByteRead - номер последнего байта потока данных, считанного из буфера процессом В.
LastByteRcvd - номер последнего байта потока данных, полученного от передающей стороны и помещенного в буфер.
Чтобы входной буфер не мог переполниться, необходимо: LastByteRcvd - LastByteRead <= RcvBuffer.
Значение окна приема RcvWindow равно объему свободного места в буфере:
RcvWindoq = RcvBuffer - [LastByteRcvd - LastByteRead]
значение этой переменной динамически меняется.
Как реализовано: хост В сообщает А сколько свободного места имеется в его приемном буфере, помещая значение переменной RcvWindow в поле окна приема каждого сегмента, отправляемого А. Начальные значения RcvWindoq = RcvBuffer.
А поддерживает 2 переменные LastByteSent и LastByteAcked - номер последнего отправленного и последнего квитированного байтов. LastByteSent - LastByteAcked - размер неподтвержденных данных, переданных от А к В. при
LastByteSent и LastByteAcked <= RcvWindow
хост А может гарантировать, что приемный буфер хоста В не переполнится.
Проблема: предположим, что приемный буфер хоста В оказался заполненным, тогда RcvWindow = 0, возможно, что в этот момент В не имеет данных для передачи, ТО А не получит сведений об освободившемся пространстве буфера и не сможет осуществлять дальнейшую передачу данных. Предусмотрена периодическая генерация хостом А сегментов, содержащих 1 байт, если окно приема В имеет нулевое значение, эти сегменты квитируются принимающей стороной и при освобождении места в буфере, ненулевое значение RcvWindow будет отправлено вместе с одной из квитанций.
23. Время выполнения запроса в статическом окне.
На практике размер окна перегрузки протокола TCP постоянно меняется, для наглядности удобно представить окно перегрузки статическим. Пусть W - положительное целое число, равное размеру статического окна; это означает, что сервер не ожидая подтверждений, может передать не более W сегментов. Далее сервер посылает каждый новый сегмент после получения одной из квитанций от клиента.
2 случая:
WS/R > RTT + S/R - сервер получает квитанцию для первого сегмента первого окна до завершения передачи его сегментов.
WS/R < RTT + S/R - сервер заканчивает передачу сегментов окна раньше, чем получает квитанцию для первого сегмента окна.
Инициирование TCP-соединения занимает все время оборота, на 2 обороте клиент отсылает серверу запрос на получение объекта, вложенный в последний сегмент тройного рукопожатия. Новые сегменты поступают к клиенту с периодичностью S/R и подтверждаются им. Если сервер получает 1 подтверждение до завершения передачи сегментов окна, он имеет возможность передавать сегменты следующего окна сразу по завершении передачи сегментов предыдущего окна. Все подтверждения поступают на сервер с периодичность S/Rс, поэтому сервер передает новые сегменты без простоев в ожидании подтверждений. ТО, если передача объекта начата со скоростью R, то такая скорость сохраняется на протяжении всего процесса передачи, а следовательно задержка: T = 2RTT + O/R
Теперь 2 случай: Как и раньше новые сегменты поступают к клиенту ч периодичностью S/Rс. Сервер вынужден провести некоторое время в ожидании. Подтверждения на сервер поступают с периодичностью S/Rc, и при получении каждого подтверждения сервер отсылает клиенту очередной сегмент. ТО сервер нах в 2 состояниях: передача W сегментов или простой. Простой: K=O/WS (если не целое, то округляем в большую сторону). В процессе передачи сервер входит в состояние простоя K-1 раз, при этом время простоя: RTT - (W-1)S/R.
Задержка: 2RTT + O/R + (K-1)*[S/R+RTT-WS/R]
Объединим оба случая: 2RTT + O/R + (K-1)*[S/R+RTT-WS/R]*
[x]* = max(x,0). Задержка складывается из 3 составляющих: 2RTT - установление соединения, O/R - время передачи объекта, (K-1)*[S/R+RTT-WS/R]* - время простоя сервера.