Category: литература

Category was added automatically. Read all entries about "литература".

Чтение книг онлайн, браузер Tor

Я уже писал раньше, что установил браузер Tor в феврале на свой компьютер:
https://ilyachalov.livejournal.com/157003.html

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

На сегодня множество сайтов бесплатных онлайн-библиотек осталось доступно в видимой через обычные браузеры сети. Владельцы этих библиотек удалили тексты тех книг, за которые их сайты могли быть заблокированы по жалобам правообладателей.

Но есть и такие онлайн-библиотеки, которые не стали удалять тексты «проблемных» книг и по решению суда попали в известный реестр Роскомнадзора:

https://nap.rkn.gov.ru/reestr/

Например, сайт fantasy-worlds.org попал в этот список в 2019 году, но продолжает работать. Через обычные браузеры он недоступен (специальные плагины ненадежны и иногда небезопасны, я об этом писал).

Зато через браузер Tor — добро пожаловать:

https://ru.wikipedia.org/wiki/Tor
https://www.torproject.org/ru/

Интерфейс сайта bookcafe.net для чтения книг онлайн

Всегда проверяю попадающиеся мне в интернете бесплатные онлайн-библиотеки на удобство чтения книг онлайн на большом экране настольного компьютера.

Интерфейс 99 % онлайн-библиотек, предназначенный для этих целей, неудобен, некрасив и набит рекламными баннерами. Такая ситуация сложилась еще на заре рунета (в конце 90-х) и сохранилась до сегодняшнего дня.

Недавно наткнулся на сайт bookcafe.net и там нашелся чуть ли не первый вариант интерфейса, который мне понравился:

https://bookscafe.net

Сам сайт практически ничем не отличается от своих собратьев во всех аспектах, кроме интерфейса чтения книг онлайн (разве что стоит отметить очень небольшое количество рекламных баннеров, что является большим плюсом для такого сайта и огромной редкостью).

Что мне понравилось?

Закладки и подгрузка

Текст здесь разбит на страницы, как и в бумажных книгах. На «страницы» — не в смысле, что текст книги располагается на разных HTML-страницах, нет, всё происходит на одной и той же HTML-странице. Просто в местах, в которых происходит смена книжной страницы, стоит надпись «страница 5 из 125», например.

Такое мне раньше встречалось, я и сам так верстал книги на сайт в интернете. Однако, здесь, пока я читаю текст и постепенно прокручиваю страницу вниз, меняется HTML-якорь в адресной строке браузера в тот момент, когда надпись с номером очередной страницы появляется на экране настольного компьютера. HTML-якорь содержит ссылку на это место HTML-страницы. Например:

https://bookscafe.net/read/konan_doyl_artur-vozvraschenie_sherloka_holmsa-154850.html#p2

сменяется на

https://bookscafe.net/read/konan_doyl_artur-vozvraschenie_sherloka_holmsa-154850.html#p3

и так далее.

В тот момент, когда мне нужно по какой-либо причине прекратить чтение, я просто сохраняю текущий адрес с номером нужной страницы книги в виде закладки (Ctrl+D) в браузере.

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

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

Впрочем, такая постепенная подгрузка текста является плюсом только с одной стороны (не нужно ждать загрузки большого текста толстой книги, уменьшается нагрузка на сервер). С другой стороны, становится невозможен поиск по всему тексту книги. Это не нужно, если читаешь какую-нибудь художественную литературу ради развлечения. Но если это какой-либо учебник или справочник, научная литература, то отсутствие полнотекстового поиска недопустимо.

Настройка страницы

Подобную настройку предлагают многие онлайн-библиотеки. Но только тут она меня полностью устроила.

При прокрутке текста книги вниз слева появляются три кнопки: «Наверх» (переход в начало HTML-страницы), «Оглавление» (открыть оглавление книги), «Настройки» (собственно, те самые настройки страницы).

Мои настройки: шрифт «Georgia», размер шрифта: 16, ширина текста: 57 %, выравнивать текст: да.

Вспоминаю высшую математику

Начал читать вторую главу «Физический уровень» книги Таненбаума про компьютерные сети и тут... ба-бах! Ряды Фурье (в оригинале раздел называется «Анализ Фурье»).

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

Высшую математику помню очень плохо, хотя в свое время получал неплохие отметки по этому предмету и в школе, и в университете.

Решил поискать, что есть по этому поводу в интернете. Нашел на хабре статью «Простыми словами о преобразовании Фурье». Цитата оттуда:

Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака.


Кхм... ну да, всё просто (сарказм).

В таких случаях я опускаюсь на уровень ниже, а если и там непонятно, то еще ниже и так далее, пока не станет понятно. Нашел хороший ресурс (автор — Александр Емелин), на котором многие темы высшей математики разъясняются на пальцах:

http://www.mathprofi.ru
Зеркало проекта: http://mathprofi.net
Форум и библиотека проекта: http://mathprofi.com
Паблик проекта: https://vk.com/mathprofiru

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

Мои посты по 1-й главе учебника Таненбаума и 37 заданиям к ней

Посты разбиты по году опубликования.

2020 год

По тексту книги:

1. Компьютерные сети, книга, Таненбаум и Уэзеролл
2. Общественная музыка домена
3. Юмористический монолог Дика Трэйси
4. Применение компьютерных сетей: Таненбаум, 1.1
5. Сетевое оборудование: Таненбаум, 1.2
6. Дейтаграмма VS датаграмма
7. Перевод терминов в технической литературе
8. Timing
9. Сетевое ПО: Таненбаум, 1.3
10. Эталонные модели сетей: Таненбаум, 1.4
11. Создание интернета: государство VS бизнес
12. Переводчик-антигосударственник
13. Примеры сетей: Таненбаум, 1.5
14. Стандартизация сетей: Таненбаум, 1.6
15. Таненбаум, окончание введения: 1.7, 1.8, 1.9

По вопросам-задачам (в оригинале они называются «problems»). Подводящие посты сдвинуты вправо относительно основных и не пронумерованы:

1. Сенбернар и скорость передачи данных
2. Система с разделением времени VS современная ЛВС
3. Пропускная способность и время ожидания
4. Характеристики качества обслуживания
5. Задержка в сети Нью-Йорк-Калифорния
6. Задержка в спутниковой сети
7. Прямая демократия с помощью компьютерных сетей
8. Топология сети, алгебра и комбинаторика


9. Широковещательная подсеть и вероятности
10. Преимущества и недостатки многоуровневой организации сетей
11. Нарушение принципа многоуровневой иерархии протоколов
12. Надежный поток байтов VS надежный поток сообщений
13. Переговоры в сетевых протоколах
14. Связь между службой и протоколом
15. Ошибки передачи, вероятности, среднее
16. Многоуровневая система, сообщения, заголовки
17. Различие между протоколами TCP и UDP
18. Бомбим подсеть
19. Число хостов в интернете
20. Стратегии подтверждений при передаче файла
21. Тайна местоположения мобильника
22. Какова длина бита
23. Передача картинки по сети
24. Сравнение Ethernet и Wi-Fi
25. Международная стандартизация сетевых протоколов
26. Стандарты в системах с постоянной и съемной частями
27, 28. Влияние изменений в службе уровня на другие уровни
29. Время отклика клиента и задержка сети

2021 год

Последовательная и параллельная передача данных
Почему аналоговый сигнал так называется (на примере звука)
Непрерывность аналогового сигнала
Что такое цифровой сигнал
Прерывность цифрового сигнала
Синхронизация при передаче цифрового сигнала
Анализ цифрового сигнала в получателе сигнала (пример)
Сериализация происходит от последовательности
Синхронный и асинхронный режимы передачи цифрового сигнала
Мультиплексирование с разделением по времени

30. Что такое ATM и недостатки его ячеек
31. Компьютерные сети ежедневно, что если они исчезнут?
32. Компьютерная сеть дома и в офисе
33. Программа ping и зависимость задержки от расстояния
34. Чем занимается организация IETF и проект WebRTC
35. Топология интернета
36. Точки обмена интернет-трафиком, пиринг
37. Программа, моделирующая сетевую архитектуру (разбор задания, реализация)

Точки обмена интернет-трафиком, пиринг

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

36. Поищите в Интернете и узнайте некоторые из важных пиринговых точек, используемых для направления пакетов в Интернете в настоящее время.


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

https://ru.wikipedia.org/wiki/Одноранговая_сеть
https://en.wikipedia.org/wiki/Peer-to-peer

В вышеизложенном вопросе речь идет про так называемые «точки обмена интернет-трафиком» (по-английски «Internet eXchange Point», сокращенно «IXP» или «IX»). В книге Таненбаума об этих точках рассказывается в разделе 1.5.1. «Интернет», подраздел «Архитектура Интернета».

https://ru.wikipedia.org/wiki/Точка_обмена_интернет-трафиком
https://en.wikipedia.org/wiki/Internet_exchange_point

Весь интернет, как известно, сегодня состоит из автономных систем (отдельных сетей, управляемых отдельными организациями, например, интернет-провайдерами (по-английски «Internet Service Provider», сокращенно «ISP»)). Чтобы интернет работал, связывая любого клиента одного интернет-провайдера с любым клиентом другого интернет-провайдера, сети интернет-провайдеров должны связываться между собой. Именно для этого существуют упомянутые выше точки обмена интернет-трафиком. Большие IXP представляют собой целые помещения, в которых поставлены роутеры от разных интернет-провайдеров и эти роутеры соединены между собой, обеспечивая соединения между сетями разных интернет-провайдеров.

Собственно, процесс обмена интернет-трафиком в помещениях IXP и называется пирингом (по-английски «peering»).

https://ru.wikipedia.org/wiki/Пиринг
https://en.wikipedia.org/wiki/Peering

Нет необходимости специально искать точки IXP, в которых происходит пиринг. В статьях википедии, посвященных точкам IXP, уже собраны списки таких точек. Кроме этого в англоязычной википедии есть отдельные статьи со списками IXP:

https://en.wikipedia.org/wiki/List_of_Internet_exchange_points
https://en.wikipedia.org/wiki/List_of_Internet_exchange_points_by_size

Примеры точек IXP:

Крупные в России:
https://ru.wikipedia.org/wiki/MSK-IX (Москва)
https://ru.wikipedia.org/wiki/DATAIX (Санкт-Петербург)
https://ru.wikipedia.org/wiki/SPB-IX (Санкт-Петербург)

Крупные на Украине:
https://ru.wikipedia.org/wiki/UA-IX (Киев)
https://ru.wikipedia.org/wiki/DTEL-IX (Киев)

В США (одна из самых крупных в мире):
https://en.wikipedia.org/wiki/Equinix (в разных городах разных стран)

В Нидерландах (упомянута в книге Таненбаума):
https://en.wikipedia.org/wiki/Amsterdam_Internet_Exchange (Амстердам)

Что такое ATM и недостатки его ячеек

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

30. Каковы недостатки использования маленьких клеток фиксированной длины в ATM?


Лично мне англоязычная аббревиатура «ATM» до прочтения этого вопроса была известна в значении «банкомат». Американцы и британцы так называют банкоматы. В этом значении «ATM» расшифровывается как «Automated Teller Machine», что по-русски дословно означает «машина-автоматизированный банковский служащий» или «машина-автоматизированный кассир». Существительное «teller» происходит от глагола «tell» (по-русски «говорить», «рассказывать»), то есть «teller» можно перевести как «рассказчик». Банковский служащий (клерк, кассир, менеджер) обычно нужен, чтобы наладить общение с клиентом, рассказать клиенту об услугах, оказываемых банком, поэтому его, как я понимаю, и называют «teller».

Однако, в рассматриваемом вопросе, исходя из того, что наш контекст — это компьютерные сети, можно сделать вывод, что англоязычная аббревиатура «ATM» означает «Asynchronous Transfer Mode», что на русский можно перевести как «асинхронный способ (режим) передачи данных». В википедии об этом понятии есть статьи:

https://ru.wikipedia.org/wiki/ATM
https://en.wikipedia.org/wiki/Asynchronous_Transfer_Mode

Нужно отметить, что при переводе слова «cell» с английского на русский переводчик книги выбрал значение «клетка», хотя мне в данном контексте чаще встречается перевод этого слова на русский как «ячейка». То есть в вопросе речь идет о размере ячеек в ATM. Ячейками при этом способе передачи данных называют пакеты данных. Каждый пакет, согласно стандарта, имеет фиксированный размер в 53 байта.

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

Почему Таненбаум удалил материал о понятии «ATM» из первой главы? Как я понимаю, потому, что эта технология потеряла свою популярность и сегодня используется только в узких нишах рынка телекоммуникаций. Она проиграла конкуренцию гигабитному Ethernet в 2000-х, об этом рассказано в упомянутой выше статье википедии об ATM.

В рассматриваемой книге есть краткое (на одну-две странички) описание технологии ATM в главе 3 «Канальный уровень» (по-английски «The Data Link Layer»), в подразделе 3.5.2 «ADSL».

Разбираясь, что из себя представляет ATM, я написал несколько постов:
1. Синхронный и асинхронный режимы передачи цифрового сигнала.
2. Мультиплексирование с разделением по времени.

Как я понял, в то время, когда появился ATM, существовали сети, передающие голос (телефонные), и сети передающие данные. ATM придумали, чтобы объединить передачи данных любого вида в один поток. Единый поток данных должен был удовлетворять часто противоречивым требованиям, предъявляемым передачами данных разного вида. Например, передача данных голосового общения и видеоконференций должна проходить в реальном времени, поэтому для таких потоков данных задержки недопустимы, но потеря отдельных пакетов (кусочков данных) неважна. При этом передача, к примеру, файлов могла переносить задержки безболезненно, но потеря отдельных пакетов (кусочков данных) недопустима.

В протоколе ATM данные любого вида делятся на одинаковые кусочки (пакеты, ячейки) по 48 байтов. К каждой такой ячейке прибавляется заголовок размером 5 байтов. Итого размер одной ячейки составляет 53 байта.

Потоки данных из разных каналов для данных разного вида поступают в мультиплексор ATM асинхронно, это означает, что в потоках поступающих данных есть разрывы (в голосовом общении бывают паузы, а при обмене, к примеру, файлами есть паузы между передачей отдельных файлов). Мультиплексор ATM действует по запросу, как я разбирал в описании статистического (асинхронного) мультиплексирования с разделением по времени (асинхронное TDM). Наличие этой асинхронности отражено в названии протокола ATM (первая буква этой аббревиатуры).

Заголовок каждой ячейки содержит номер виртуального канала (соединения), поэтому в ATM возможно объединение преимуществ работы с каналами (для передачи данных в реальном времени, то есть голоса и видео) и с пакетной коммутацией (передача файлов и тому подобного).

Ответ на вопрос. Как известно, в итоге технология ATM проиграла конкуренцию так называемым «мультисервисным сетям связи», которые базируются на интернет-технологиях, включающих в себя протокол IP («internet protocol») и технологию MPLS («multiprotocol label switching»). Если ATM делит данные на короткие пакеты (ячейки) фиксированного размера (53 байта каждый, в том числе 48 байтов полезной нагрузки), то IP-пакеты — это длинные пакеты (до нескольких тысяч байт каждый) переменного размера.

https://ru.wikipedia.org/wiki/Мультисервисная_сеть_связи
https://ru.wikipedia.org/wiki/IP
https://ru.wikipedia.org/wiki/MPLS

https://ru.wikipedia.org/wiki/Maximum_transmission_unit
https://ru.wikipedia.org/wiki/Jumbo-кадр

На момент изобретения ATM передавать длинные пакеты было невыгодно из-за относительно низкой скорости передачи данных. Длинные пакеты вызывали слишком большие задержки в очередях (буферах) маршрутизаторов при передаче данных. Как только скорости передачи данных увеличились (появление гигабитного Ethernet и тому подобного), задержки при передаче длинных пакетов упали до минимума и стало выгоднее передавать длинные пакеты, потому что при передаче коротких ячеек (пакетов) слишком велики накладные расходы (большУю часть канала занимает передача заголовков ячеек, что характерно для передачи данных короткими пакетами). Кроме этого, если пакеты (ячейки) короткие, то на разбивку на пакеты, обработку пакетов при пересылке и обратную сборку из пакетов исходных данных уйдет больше времени по сравнению с применением длинных пакетов.

Кроме вышеизложенного, фиксированный размер ячеек ATM подразумевает необходимость того, чтобы исходные данные можно было разделить без остатка на 48 байт (полезная нагрузка одной ячейки ATM). Очевидно, не любые данные делятся без остатка на 48. Чтобы обеспечить это условие, размер исходных данных «добивается» «пустыми» байтами до нужного размера (по-английски этот процесс называется «padding», а последовательность лишних «пустых» (ничего не означающих) байтов — «pad»). Очевидно, что передача лишних байтов, не несущих никакой информации, как и передача заголовков, уменьшает скорость передачи данных.

100 вопросов писателю Лукьяненко

С удовольствием посмотрел интервью с Сергеем Лукьяненко на youtube-канале Гоблина:
https://www.youtube.com/watch?v=hlpMfx5Iio8

Длительность видеоролика 59 минут 37 секунд. Имя интервьюера — Константин Подстрешный. Рубрика канала называется «100 вопросов». В ее рамках герою интервью последовательно задаются 100 вопросов на разные темы. Время ответа не ограничивается, счетчик вопросов тикает в правом нижнем углу экрана.

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

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

Из российских авторов постсоветского периода в жанре фантастики мне наиболее запомнился именно Сергей Лукьяненко. Последние его книги я не читал, а за первой половиной его творчества следил довольно внимательно.

Из последних прочитанных мной иностранных авторов в жанре фантастики и фэнтези запомнились книжка «Глубина в небе» Вернора Винджа, написанная в 1999 году, и книги Джо Аберкромби (трилогия «Первый закон» 2006-2008 годов и отдельный роман «Лучше подавать холодным» 2009 года). Рекомендую. В новинках не ориентируюсь.

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

Вопрос из книги Таненбаума про компьютерные сети к главе 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) Большая загруженность машины-клиента или большая загруженность машины-сервера. В этом случае пакеты помещаются в очередь, ожидая, пока процессор соответствующей машины освободится. В итоге порождаются дополнительные задержки.

Влияние изменений в службе уровня на другие уровни

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

27. Предположите, что алгоритмы, используемые для реализации операций в уровне k, изменились. Как это воздействует на операции в уровнях k – 1 и k + 1?

28. Предположите, что произошло изменение в службе (набор операций), обеспечиваемой уровнем k. Как это воздействует на службы в уровнях k – 1 и k + 1?


Как обычно, я немного подправил перевод вопросов на русский, а изменения выделил красным цветом.

Если нет понимания смысла этих вопросов, можно почитать мои ответы к вопросам 10 и 14, а также перечитать подразделы 1.3.1 «Иерархия протоколов», 1.3.4 «Примитивы служб», 1.3.5 «Службы и протоколы» книги.

Обсуждаемую ситуацию можно рассматривать на рисунке 1.16 из книги, который мы уже видели:


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

Протокол — это набор правил, описывающих формат и смысл пакетов, которыми обмениваются хосты в рамках конкретного уровня сетевой модели. Протокол используется для реализации примитивов (операций) службы конкретного уровня.

Для вопроса 27 ответ таков: изменение алгоритмов, используемых для реализации операций на уровне k, не повлияет на операции нижележащего (k – 1) и вышележащего (k + 1) уровней, при условии, что состав (набор) операций (по-другому это еще называют «интерфейсом» между уровнями) не изменится.

В принципе, любое изменение в службе уровня в любом случае не повлияет на службу нижележащего уровня, так как каждый уровень обеспечивает службу (сервис) только для вышележащего уровня и поэтому может влиять только на этот вышележащий уровень.

Ответ на вопрос 27 объясняет, как в конкретной сетевой архитектуре можно сменить устаревший протокол на более продвинутый на одном конкретном уровне сетевой модели, не затрагивая другие уровни.

Для вопроса 28 ответ таков: изменение в службе уровня, затрагивающее состав (набор) операций (межуровневый «интерфейс»), повлияет на службу вышележащего (k + 1) уровня, потребуется внести изменения в реализацию службы вышележащего уровня. На службу нижележащего (k – 1) уровня это изменение не повлияет.