Производительность сети обычно зависит от протокола и накладных расходов по обработке сегментов, а с увеличением скорости передачи данных ситуация ухудшается. Протоколы должны разрабатываться так, чтобы минимизировать число сегментов и оставаться работоспособными при больших значениях задержки передачи. Для гигабитных сетей лучше всего подходят простые протоколы и потоковая обработка.
Вопросы и задачи
1. В нашем примере транспортных примитивов, приведенных на илл. 6.2, LISTEN является блокирующим вызовом. Обязательно ли это? Если нет, объясните, как следует пользоваться неблокирующим примитивом. Какое преимущество это даст по сравнению с представленной нами схемой?
2. Приложение для общения в чате, использующее протокол TCP, многократно вызывает функцию получения данных receive() и выводит полученные данные как новое сообщение. К какой проблеме может привести такой подход?
3. В модели, лежащей в основе диаграммы состояний на илл. 6.4, предполагается, что пакеты могут теряться на сетевом уровне и поэтому должны подтверждаться индивидуально. Допустим, сетевой уровень обеспечивает 100 %-ную надежность доставки и никогда не теряет пакеты. Нужны ли какие-нибудь изменения в диаграмме состояний на илл. 6.4, и если да, то какие?
4. В обеих частях илл. 6.6 значение SERVER_PORT должно быть одинаковым у клиента и у сервера. Почему это так важно?
5. Предположим, что используется управляемая таймером схема генерирования начальных порядковых номеров с 15-разрядным счетчиком тактовых импульсов. Таймер срабатывает один раз в 100 мс, а максимальное время жизни пакета равно 60 с. Как часто должна производиться ресинхронизация:
а) в наихудшем случае?
б) если на данные тратится 240 порядковых номеров в минуту?
6. Почему максимальное время жизни пакета T должно быть достаточно большим, чтобы гарантировать, что не только пакет, но и его подтверждение исчезли?
7. Представьте протокол транспортного уровня, ориентированный на установление соединения, который выбирает порядковые номера для пакетов на основе времени суток. Таймер использует 10-битный счетчик и срабатывает с интервалом в 125 мс. Максимальное время жизни пакета — 64 с. Если отправитель передает по 4 пакета/с, как долго соединение будет работать без захода в запретную зону?
8. Объясните, в чем состоит разница между использованием протокола раздвижного окна на канальном уровне и его использованием на транспортном уровне с точки зрения тайм-аутов протокола.
9. Рассмотрим проблему восстановления после сбоев хостов (илл. 6.18). Если бы интервал между записью и отправкой подтверждения (или наоборот) можно было сделать относительно небольшим, какими были бы две лучшие стратегии отправителя и получателя, минимизирующие риск ошибки протокола?
10. В сеть на илл. 6.20 добавляется новый поток E, который идет через маршрутизаторы R1, R2 и R6. Как изменится распределение пропускной способности по максиминному критерию для пяти потоков?
11. Допустим, потоки на илл. 6.20 реорганизованы так, что поток A проходит через маршрутизаторы R1, R2, R3, B — через R1, R2, R5, R6, C — через R4, R2, R3, а D — через R4, R2, R3. Как при этом будет выглядеть распределение пропускной способности по максиминному критерию?
12. Обсудите преимущества и недостатки схемы кредитного протокола по сравнению с протоколами раздвижного окна.
13. Существуют и другие стратегии, обеспечивающие равнодоступность при контроле перегрузки: аддитивное увеличение, аддитивное уменьшение (Additive Increase Additive Decrease, AIAD); мультипликативное увеличение, аддитивное уменьшение (Multiplicative Increase Additive Decrease, MIAD); мультипликативное увеличение, мультипликативное уменьшение (Multiplicative Increase Multiplicative Decrease, MIMD). Что вы можете сказать об их сходимости и стабильности?
14. Имеется протокол транспортного уровня, который использует правило AISRD (Additive Increase Square Root Decrease — аддитивное увеличение, уменьшение по закону квадратного корня). Сходится ли эта версия протокола к справедливому распределению пропускной способности?
15. Два хоста одновременно передают данные через сеть с пропускной способностью 1 Мбит/с. Хост A использует UDP и передает 100-байтный пакет за 1 мс. Хост B генерирует данные со скоростью 600 Кбит/с и использует TCP. Какой хост получит более высокую пропускную способность?
16. Зачем нужен протокол UDP? Разве не достаточно было бы просто позволить пользовательским процессам отправлять необработанные IP-пакеты?
17. Рассмотрим простой протокол прикладного уровня на основе UDP, позволяющий клиенту запрашивать файл с удаленного сервера, расположенного по общеизвестному адресу. Клиент отправляет запрос с именем файла, а сервер отвечает последовательностью информационных пакетов с разными частями запрошенного файла. Для обеспечения надежности и доставки частей в правильном порядке клиент и сервер используют протокол с ожиданием. Какие сложности могут возникнуть с таким протоколом, кроме очевидных проблем с производительностью? Учитывайте вероятность сбоя процессов.
18. Клиент отправляет 128-байтный запрос на сервер, удаленный от него на 100 км, по оптоволокну со скоростью 1 Гбит/с. Какова эффективность линии во время выполнения удаленного вызова процедуры?
19. Вновь рассмотрите ситуацию, описанную в предыдущем вопросе. Вычислите минимально возможное время ответа для данной линии со скоростью 1 Гбит/с и для линии со скоростью 1 Мбит/с. Какой вывод можно сделать, исходя из полученных значений?
20. Как в UDP, так и в TCP номера портов используются для идентификации принимающей подсистемы при доставке сообщения. Назовите две причины того, почему для этих протоколов были изобретены новые абстрактные идентификаторы (номера портов) и не использовались идентификаторы процессов, уже существовавшие на момент появления данных протоколов.
21. Почему протокол RTP обычно реализуется поверх UDP, а не TCP? При каких условиях приложение может использовать RTP на основе TCP?
22. Рассмотрим две сети, N1 и N2, с одинаковой средней задержкой при передаче пакетов от источника A к получателю D. В N1 задержка распределена равномерно с максимальным значением 10 с, а в N2 99 % пакетов имеют задержку менее 1 с, но максимальная задержка может быть сколь угодно большой. Подумайте, как в таких ситуациях можно использовать RTP, если вы планируете передавать аудио-/видеопоток в режиме реального времени.
23. Каков суммарный размер минимального MTU протокола TCP, включая накладные расходы TCP и IP, но не учитывая накладные расходы канального уровня?
24. Фрагментация и дефрагментация дейтаграмм выполняется протоколом IP и невидима для TCP. Означает ли это, что TCP не должен беспокоиться о данных, приходящих в неверном порядке?
25. RTP используется для передачи аудио с таким же качеством звука, как на компакт-диске, что соответствует паре 16-битных сэмплов на частоте 44 100 Гц, по одному сэмплу на каждый канал стерео. Сколько пакетов в секунду должен уметь передавать RTP?
26. Процессу хоста 1 был назначен порт p, а процессу хоста 2 — порт q. Могут ли несколько соединений одновременно существовать между этими портами?
27. На илл. 6.36 мы видели, что в дополнение к 32-разрядному полю Acknowledgement number в четвертом слове имеется бит ACK. Приносит ли он какую-либо пользу? Ответ поясните.
28. Имеется TCP-соединение, которое передает данные с такой высокой скоростью, что начинает повторно использовать порядковые номера в течение максимального времени жизни сегмента. Можно ли предотвратить это, увеличив размер сегмента? Объясните почему.
29. Опишите два способа, с помощью которых можно достичь состояния SYN RCVD (илл. 6.39).
30. Какой возможный недостаток несет в себе использование алгоритма Нейгла в сильно загруженной сети?
31. Вы играете в онлайн-игру по сети с высокой задержкой. Игра требует, чтобы вы быстро нажимали на объекты на экране. В то же время результаты ваших действий игра отображает в режиме слайд-шоу. Может ли определенный параметр протокола TCP привести к такому результату? Какой еще причиной (связанной с сетью) это может быть вызвано?