ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

Время отклика клиента и задержка сети

Вопрос из книги Таненбаума про компьютерные сети к главе 1 «Введение», цитата:

29. Приведите список причин того, почему время отклика клиента может быть больше, чем задержка лучшего случая.


Оригинал на английском:

29. Provide a list of reasons for why the response time of a client may be larger than the best-case delay.


Сначала я не понял смысл этого вопроса. Думаю, тут нужны некоторые пояснения по использующимся в тексте вопроса терминам. Предположения о значении этих терминов, по-видимому, следует делать, исходя из того, что наш контекст — это компьютерные сети.

Клиент-серверная система

Раз речь в вопросе идет о некоем «клиенте», то, думаю, понятно, что у нас есть «клиент-серверная система». Для иллюстрации этой системы я взял из книги рисунок 1.1 и немного его переделал:


Сеть изображена абстрактно, овалом, потому что она может быть разных видов: проводная, беспроводная и тому подобное. Общение между клиентом и сервером изображено двумя стрелками: 1) стрелка, направленная слева направо, изображает запрос (по-английски «request») клиента серверу; 2) стрелка, направленная справа налево, изображает ответ (по-английски «reply» или «response») сервера клиенту.

Время отклика клиента

По термину «время отклика» в контексте техники и технологий в википедии есть статьи. В англоязычной: «response time», в русской: «время отклика». Итак, как я понимаю, время отклика клиента — это время, которое требуется, чтобы получить на экране (или каком-либо другом устройстве, выводящем данные) клиента ответ на наш запрос, введенный через клавиатуру (или какое-либо другое устройство для ввода данных) клиента.

Какие действия происходят за это время? Мы вводим запрос и даем команду на его отправку. После этого начинается отсчет времени. Клиент обрабатывает и передает наш запрос в канал сети, запрос проходит по каналу сети, достигая сервера. Сервер получает наш запрос и обрабатывает его, а затем формирует ответ. Сервер передает ответ в канал сети, ответ проходит по каналу сети, достигая клиента. Клиент получает ответ и выводит его на устройство вывода. Как только пользователь видит начало вывода ответа, отсчет времени заканчивается.

Задержки

Особенно непонятным в вопросе мне показалось словосочетание «задержка лучшего случая». Дословно-то перевод на русский правильный, но смысл словосочетания остается неясным.

Каково значение слова «задержка» вообще? Из толкового словаря можно узнать, что это «промедление, приостановка (обычно вследствие какого-либо препятствия)». Длительность задержки можно измерить в единицах измерения времени, так как задержка занимает некий отрезок времени.

Как клиент-серверная система должна работать с точки зрения пользователя, работающего на машине-клиенте, в идеальном случае? После того, как пользователь отдает команду на отправку запроса, он желает получить ответ на экране (или другом устройстве вывода данных) клиента мгновенно. Однако, в реальности довольно часто пользователю приходится ждать ответ. В наше время ожидание даже в несколько секунд начинает раздражать и вредит бизнесу. С точки зрения пользователя ожидание ответа является задержкой в его работе. Отсюда, как я понимаю, началось использование слова «задержка» для характеристики быстродействия используемой для общения сети, ее оборудования и узлов. В англоязычной википедии по этому термину есть статья «network delay», а в русской википедии ее аналога я не нашел.

В технической области в английском языке существует более общее понятие «latency», которое, как я понимаю, в области компьютерных сетей можно считать синонимом термина «network delay». Вообще, задержка сети складывается из задержек ее составных частей. К примеру, если сеть состоит из машин-узлов, проводов и маршрутизаторов (роутеров), то задержка сети будет равна сумме следующих задержек: задержка на обработку запроса на машине-клиенте, задержка на распространение сигнала по проводу (по-английски «propagation delay»), задержка на обработку и передачу пакетов маршрутизаторами (по-английски «processing delay» и «transmission delay»), задержка на прохождение различных очередей на маршрутизаторах и машинах-узлах (по-английски «queuing delay») и тому подобных.

Как измеряется задержка сети? В нашем случае можно просто замерить время отклика клиента — это, по идее, и будет задержка сети. Однако, выполнив несколько десятков замеров подряд, мы, скорее всего, получим в каждом случае разное время задержки сети. К тому, почему это происходит, я вернусь ниже (это и будет ответом на обсуждаемый вопрос из книги). Если каждый замер назвать «случаем» (по-английски «case»), то лучшим случаем для пользователя будет тот, в котором время задержки будет наименьшим, а худшим случаем — тот, в котором время задержки будет наибольшим. Еще можно вычислить среднее время задержки. Все три эти времени задержки используются для описания производительности конкретной используемой сети.

Википедия об этом: «Best, worst and average case» (русскоязычного аналога этой статьи я не нашел).

Время задержки сети зависит от того, что понимается под «сетью». Иногда под «сетью» понимают всё вместе: узлы сети (в нашем случае — машина-клиент и машина-сервер), каналы сети (к примеру, провода или воздух при беспроводной сети) и оборудование сети (к примеру, маршрутизаторы в проводной сети или базовые станции в беспроводной сети). На вышеприведенном рисунке 1.1 из учебника под «сетью» понимают только каналы сети и оборудование сети.

Чтобы «время отклика клиента» и «задержка сети» были сравнимы, я буду подразумевать под «сетью» тот путь, который описан выше при определении понятия «время отклика клиента». То есть в нашем случае «сетью» будем считать часть машины-клиента, канал сети, оборудование сети и машину-сервер.

Ответ на вопрос

«Задержка лучшего случая» — это минимальная задержка сети. В этом случае машины-узлы и оборудование сети работают идеально, то есть без сбоев. Почему же минимальная задержка сети всё-таки не равна нулю? Из-за протяженности канала сети. Да, скорость распространения сигнала по сети сравнима со скоростью света, но если между машиной-клиентом и машиной-сервером находятся тысячи километров, то только задержка на распространение сигнала по каналу сети (propagation delay) составит больше нескольких микросекунд. А, скажем, если рассмотреть сеть, в которой узлы находятся на Земле и Луне, то только задержка на распространение сигнала (радиоволны) по каналу сети (воздуху и вакууму) окажется уже больше нескольких секунд.

Понятно, что такое «минимальная задержка сети». Почему же «время отклика клиента» может оказаться больше «минимальной задержки сети»? Перечислю пришедшие мне в голову возможные причины.

1) При использовании одной и той же сети можно использовать разные протоколы: с подтверждениями пакетов или без подтверждений (к примеру, TCP и UDP на транспортном уровне сетевой модели, см. ответ на вопрос 17). По идее, без подтверждений время отклика клиента должно быть меньше, а с подтверждениями — больше.

2) При большой загруженности сети пакеты могут теряться или повреждаться, вызывая дополнительные задержки на повторную посылку потерянных или поврежденных пакетов.

3) В беспроводных сетях дополнительные задержки могут создаваться коллизиями (см. мой ответ на вопрос 24).

4) Большая загруженность машины-клиента или большая загруженность машины-сервера. В этом случае пакеты помещаются в очередь, ожидая, пока процессор соответствующей машины освободится. В итоге порождаются дополнительные задержки.
Tags: Английский язык, Образование
Subscribe

Recent Posts from This Journal

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments