4. CTSS (1962), Multics file system (1965), Titan file system (1972), Unix (1974)
5. THE (1968), RC 4000 (1969), Venus (1972), Boss 2 (1975), Solo (1976)
6. OS 6 (1972), Alto (1979), Pilot (1980), Star user interface (1982)
7. WFS file server (1979), Unix United (1982), Amoeba (1990)
## 1 Open shop
Можно сказать, что история операционных систем начинается в 1954 году, когда у первых серийных компьютеров ещё не было операционных систем. Тогда пользователи управляли ими вручную. Доступ к компьютерам был организован поочереди в стиле open shop.
Операторы первых серийных компьютеров 701 были предшествениками современных системных администраторов. Группа по обмену информацией между ними SHARE существует до сих пор. В эру системных операторов компьютер был инструментом специального назначения, наподобие пилы. Переход от системных операторов к системному администратору начался тогда, когда компьютеры превратились в универсальные инструменты.
Сразу стало очевидным, что open shop организация приводит к большому времени простоя процессора. Джордж Рикман вспомнил о вопиющей неэффективности эксплуатации первого компьютера IBM, знаменитого 701: "Каждому пользователю был выделен 15-минутный интервал, из которых обычно он тратил 10 минут на настройку оборудования для выполнения своих вычислений. К тому времени, когда он начинал свои вычисления, для них оставалось только 5 минут или меньше - трата две трети его временного интервала."
Джон Маккарти (1962) сделал аналогичное замечание о компьютере TX-0, который использовался в режиме открытого магазина в Массачусетском технологическом институте. Он добавил: "Если бы TX-0 был компьютером гораздо большего размера и если бы он работал так же, как сейчас, количество пользователей, которых он обслуживал было бы примерно таким же."
@ -40,9 +42,9 @@
Теперь процессорное время тратилось эффективно, его не нужно был запускать во время подготовки программ. Чем длиннее были ленты, тем меньше простаивал главный компьютер. Но большие серии задач значительно увеличили время выполнения с точки зрения пользователей. Обычно требуется несколько часов (или даже день или два), прежде чем они могли получить результаты одного задания. Если задание включало компиляцию программы, единственным выходом в этот день могло быть сообщение об ошибке, вызванное неуместной точкой с запятой.
## 3 Multiprogramming (асинхронный ввод/вывод)
## 3 Multiprogramming/Многозадачность
В 1960-х годах большая основная память, вторичное хранилище с произвольным доступом, каналы данных и аппаратные прерывания радикально изменили операционные системы. Прерывания позволяли процессору имитировать одновременное выполнение нескольких программ и управлять одновременными операциями ввода/вывода. Эта форма параллелизма стала известна как мультипрограммирование.
В 1960-х годах большая основная память, вторичное хранилище с произвольным доступом, каналы данных и аппаратные прерывания радикально изменили операционные системы. Прерывания позволяли процессору имитировать одновременное выполнение нескольких программ и управлять одновременными операциями ввода/вывода. Эта форма параллелизма стала известна как мультипрограммирование (многозадачность).
Мультипрограммирование и вторичное хранилище сделали возможным создание операционных систем, которые обрабатывали непрерывный поток ввода, вычислений и вывода на одном компьютере, используя барабаны (или диски) для хранения больших буферов. Такая схема называлась спулингом/подкачка (Spooling - это акроним “Simultaneous Peripheral Operation On-Line.). Барабаны были удобнее лент, так как заполнялись с одной стороны устройство чтения перфокарт, ас другой считывались основным процессором. Больше не было накладных расходов на монтирование ленты (если только пользовательские программы не обрабатывали свои собственные ленты данных). Большие буферы произвольного доступа позволили использовать приоритетное планирование заданий, например, «кратчайшее задание — следующее» (вместо «первым пришел — первым обслужен»).
@ -58,9 +60,7 @@
Atlas был организован так, чтобы защитить пользовательские программы и системные вызовы друг от друга.
## 4 Timesharing
Операторы первых серийных компьютеров 701 были предшествениками современных системных администраторов. Группа по обмену информацией между ними SHARE существует до сих пор. В эру системных операторов компьютер был инструментом специального назначения, наподобие пилы. Переход от системных операторов к системному администратору начался тогда, когда компьютеры превратились в универсальные инструменты.
## 4 Timesharing/Разделение времени
В 1962 году Джон МакКарти написал следующее:
@ -68,17 +68,19 @@ Atlas был организован так, чтобы защитить поль
Поскольку программы могут выполнять только относительно короткие фрагменты работы между взаимодействиями с людьми, неэкономично постоянно перемещать их туда и обратно во вторичное хранилище. Следовательно, существует потребность в большой первичной памяти. Последнее требование заключается в том, чтобы вторичное хранилище было достаточно большим для хранения пользовательских файлов, чтобы пользователям не приходилось иметь отдельные карты или ленточные устройства ввода-вывода."
Разделение времени значительно снизило цену предоставления вычислительных мощностей.
CTSS 1965 и Multics 1969 были первыми реализациями этой идеи. Также современным ОС от них досталась технология иерархичной файловой системы для вторичного хранилища.
*Посмотреть MULTICS https://www.youtube.com/watch?v=q0yfhZB7VpA или подключиться к menu@tty.livingcomputers.org*
В 1969 Денис Ритчи И Кен Томпсон начали разработку альтернативы Multics о которой стало известно публично в 1974 году. Проект Multics превысил бюджет, безнадёжной отстал от графика, и был свёрнут. Денис: "Мы были немного подавлены большим менталитетом системы, Кен хотел создать что-то простое... Операционная система Multics больше не существовала для нас, но нам нравилось ощущение интерактивной работаы на компьютере, которые она предлагала пользователю." Такие команды как: as, cal, chmod, chown, cmp, cp, date, dc, du, ed были созданы в 1971 году. В 1973 появились два важных нововведения в UNIX: язык С и реализация каналов. Каналы позволили легко комбинировать существующие программы в конвейры обработки данных. К середине 1980 Unix стала стандартом для систем с разделением времени и была установлена практически во всех крупных университетах мира.
В 1969 Денис Ритчи И Кен Томпсон начали разработку альтернативы Multics о которой стало известно публично в 1974 году. Проект Multics превысил бюджет, безнадёжной отстал от графика, и был свёрнут. Денис: "Мы были немного подавлены большим менталитетом системы, Кен хотел создать что-то простое... Операционная система Multics больше не существовала для нас, но нам нравилось ощущение интерактивной работы на компьютере, которые она предлагала пользователю." Такие команды как: as, cal, chmod, chown, cmp, cp, date, dc, du, ed были созданы в 1971 году. В 1973 появились два важных нововведения в UNIX: язык С и реализация каналов. Каналы позволили легко комбинировать существующие программы в конвейры обработки данных. К середине 1980 Unix стала стандартом для систем с разделением времени и была установлена практически во всех крупных университетах мира.
*Включить AT&T Archives: The UNIX Operating System https://www.youtube.com/watch?v=tc4ROCJYbm0*
Примерно в это время системное администрирование стало формироваться как профессия. Считается что такие учебные заведения, как Университет Пердью, Унивеситет штата Нью-Йорк (SUNY) в г. Буффало, Университет штатов [Колорадо, Юта, Мэриленд] стали рассадниками этих специалистов. Это были как сейчас говорят эникейщики, ангелы-хранители компьютеров и их пользователей, готовые починить лазерный принтер, помочь студенту отладить новый драйвер, записать данные на архивные ленты, уговорить пользователей почистить персональные каталоги, чтобы освободить место, найти запчасти по всей стране.
С ростом популярности профессии возникла потребность в документации знаний об администрировании. "Идя навстречу пожеланиям трудящихся" Тим О'Reilly и его команда в конце 80-х начали публиковать документацию по UNIX. В 1989 коду было опубликовано певое издание книги Эви Немет Unix System Adminstration Handbook (в это время появилось множество директорий `/and so on/passwd`, вместо `/etc/`).
С ростом популярности профессии возникла потребность в документации знаний об администрировании. "Идя навстречу пожеланиям трудящихся" Тим О'Reilly и его команда в конце 80-х начали публиковать документацию по UNIX. В 1989 коду было опубликовано первое издание книги Эви Немет Unix System Adminstration Handbook (в это время появилось множество директорий `/and so on/passwd`, вместо `/etc/`).
Спохватившись, AT&T начала судебный процесс, заявив о копировании кода и краже производственных секретов. В результате судебного разбирательства в течение двух лет из кода BSD было удалено три файла из более 18000. К сожалению, это период неопределённости оказал негативное влияние на весь мир UNIX.
В 1987 Танненбаум выпустил небольшой клон системы UNIX - MINIX под лицензией, разрешающий использование только в образовательных целях. Желая получить свободно распространяемую версию UNIX, финский студент Линус Торвальдс написал собтвенную макроядерную систему-клон Linux. Так началась эра Linux.
В 1987 Танненбаум выпустил небольшой клон системы UNIX - MINIX под лицензией, разрешающий использование только в образовательных целях. Желая получить свободно распространяемую версию UNIX, финский студент Линус Торвальдс написал собственную микроядерную систему-клон Linux. Так началась эра Linux.
За это время компьютеры ушли от вида специализированных устройств, проводящих расчёты военного назначения, к универсальным машинам для обработки данных. Это не могло стать возможным без эволюции операционных систем. Администрирование этих систем сформировалось как профессия.
# Архитектура ОС
Наверное к этому моменту у вас уже сложилось представление о том, что такое операционная система. Можно дать два определения ОС. С одной стороны, операционная система - это интерфейс между hardware и software, слой абстракции для прикладных программ и аппаратного обеспечения. С другой стороны, операционная система - это менеджер ресурсов.
Сеть содержит физические провода или радиоволны, устройства соединения, такие как коммутаторы, логические протоколы, такие как TCPIP, пользовательские веб-страницы и электронные письма и многое другое. коммутаторы, логические протоколы TCP/IP, видимые пользователем веб-страницы и электронные письма, и многое другое. В каком-то смысле все это перемешано в единое целое, но на самом деле для удобства и простоты они разделены на несколько логических уровней. Каждый слой решает вполне конкретную задачу и обычно взаимодействует только со слоями, расположенными непосредственно над и под ним.
Сеть содержит физические провода или радиоволны, устройства соединения, такие как коммутаторы, логические протоколы, такие как TCP/IP, пользовательские веб-страницы и электронные письма и многое другое. В каком-то смысле все это перемешано в единое целое, но на самом деле для удобства и простоты они разделены на несколько логических уровней. Каждый слой решает вполне конкретную задачу и обычно взаимодействует только со слоями, расположенными непосредственно над и под ним.
Системные администраторы часто используют словосочетания "сетевой" или "прикладной" уровни в совершенно другом смысле. Ваше сложное веб-приложение может иметь уровень базы данных, уровень хранилища и уровень веб-сервера. Это совершенно правильное использование слова "слой" и вполне уместное в вашем контексте, но имейте в виду, что сетевые специалисты имеют в виду нечто совершенно иное.
@ -21,16 +16,20 @@
Для понимания современной сети, подключенной к Интернету, необходимо всего пять уровней: физический, канальный, сетевой, транспортный и прикладной. Сетевые уровни часто обозначаются часто обозначают номерами.
Далее в каждой секции приводятся релевантные ссылки на уроки мини-курса Ben Eater для углубления в тему.
### 1 Физический
Сети должны по чему-то перемещаться. Если об него можно споткнуться, зацепиться, отломить дурацкий язычок от пластикового разъема на его конце или передать по нему статическое электричество, то это физический уровень. Многие из нас называют физический уровень проводом, хотя это могут быть и радиоволны, и коаксиальный кабель, и любые другие вещи, отличные от типичного провода Ethernet. Если ваш провод соответствует стандарту, определенному для данного типа физического уровня, у вас есть сеть. Если нет, то сеть работать не будет.
Данные в сети должны по чему-то перемещаться. Если об это можно споткнуться, зацепиться, отломить дурацкий язычок от пластикового разъема на его конце или передать по нему статическое электричество, то это физический уровень. Многие из нас называют физический уровень проводом, хотя это могут быть и радиоволны, и коаксиальный кабель, и любые другие вещи, отличные от типичного провода Ethernet. Если ваш провод соответствует стандарту, определенному для данного типа физического уровня, у вас есть сеть. Если нет, то сеть работать не будет.
Большинство серверов подключаются к сети с помощью кабеля Ethernet, обычно по кабелю cat5 или cat6, но иногда и по оптическому волокну. Даже если сервер использует протокол, отличный от Ethernet, например Asynchronous Transfer Mode (ATM), Token Ring, FDDI или другой, он, скорее всего, использует кабель cat5, cat6 или оптическое волокно. Очень и очень старайтесь не подключать серверы к локальной сети по беспроводной сети. (Беспроводные сети очень подвержены ошибкам и помехам на канальном уровне и могут быть перегружены силами, не зависящими от вас и даже не осознаваемыми вами.
Большинство серверов подключаются к сети с помощью кабеля Ethernet, обычно по кабелю cat5 или cat6, но иногда и по оптическому волокну. Даже если сервер использует протокол, отличный от Ethernet, например Asynchronous Transfer Mode (ATM), Token Ring, FDDI или другой, он, скорее всего, использует кабель cat5, cat6 или оптическое волокно. Очень и очень старайтесь избегать подключения серверов к локальной сети по беспроводной сети. Беспроводные сети сильно подвержены ошибкам и помехам на канальном уровне и могут быть подвержены явлениям, не зависящими от вас и даже не осознаваемыми вами.
Физический уровень традиционно не имеет никакого интеллекта. Канальный уровень определяет, как он используется.
// притащить осциллограф, чтобы показать канальный уровень манчестерское кодирование https://www.youtube.com/watch?v=i8CmibhvZ0c
[Sending digital information over a wire | Networking tutorial (1 of 13)](https://www.youtube.com/watch?v=XaGXPObx2Gs&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=1)
[Intro to fiber optics and RF encoding | Networking tutorial (2 of 13)](https://www.youtube.com/watch?v=lUo45NqPyq8&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=2)
[Clock synchronization and Manchester coding | Networking tutorial (3 of 13)](https://www.youtube.com/watch?v=8BhjXqw9MqI&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=3)
[Analyzing actual Ethernet encoding | Networking tutorial (4 of 13)](https://www.youtube.com/watch?v=i8CmibhvZ0c&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=4)
### 2 Канальный
@ -38,14 +37,24 @@
Если вы используете протокол IPv4, то на канальном уровне используются адреса Media Access Control (MAC) и протокол разрешения адресов (ARP). В IPv6 используются MAC-адреса и протокол Neighbor Discovery (ND). Если у вас возникли проблемы с обменом данными с локальной сетью, обратитесь к этим главам и проверьте наличие проблем с ARP или ND.
[The importance of framing | Networking tutorial (5 of 13)](https://www.youtube.com/watch?v=xrVN9jKjIKQ&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=5)
[Frame formats | Networking tutorial (6 of 13)](https://www.youtube.com/watch?v=1XrRT0CmzYw&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=6)
[Lower layers of the OSI model | Networking tutorial (7 of 13)](https://www.youtube.com/watch?v=MGAaTqFct_I&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=7)
### 3 Сетевой
Не является ли все это сетью? Да, но сетевой уровень отображает возможности соединения между хостами. Именно здесь система отвечает на вопросы типа "Как мне добраться до этого другого хоста? Могу ли я попасть на этот другой хост?". Сетевой уровень обеспечивает согласованный интерфейс для сетевых программ, чтобы они могли использовать сеть на любом физическом и канальном уровнях. Отдельный фрагмент сетевых данных называется пакетом.
Не является ли все это сетью? Да, но сетевой уровень отражает возможность соединения между хостами. Именно здесь система отвечает на вопросы типа "Как мне добраться до другого хоста? Могу ли я попасть на другой хост?". Сетевой уровень обеспечивает согласованный интерфейс для сетевых программ, чтобы они могли использовать сеть на любом физическом и канальном уровнях. Отдельный фрагмент сетевых данных называется пакетом.
В Интернете используется протокол Internet Protocol, или IP. Это IP в TCP/IP. Во всех версиях IP каждому узлу присваивается один или несколько уникальных IP-адресов, чтобы любой другой узел в сети мог его найти. Трансляция сетевых адресов (NAT) изменяет правило "уникального адреса", но где-то в вашей сети или в сети вашего провайдера у вас есть глобально уникальный IP-адрес.
Мы рассмотрим подробно далее только версию 4.
[The Internet Protocol | Networking tutorial (8 of 13)](https://www.youtube.com/watch?v=rPoalUa4m8E&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=8)
[ARP: Mapping between IP and Ethernet | Networking tutorial (9 of 13)](https://www.youtube.com/watch?v=aamG4-tH_m8&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=9)
[Looking at ARP and ping packets | Networking tutorial (10 of 13)](https://www.youtube.com/watch?v=xNbdeyEI-nE&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=10)
[Hop-by-hop routing | Networking tutorial (11 of 13)](https://www.youtube.com/watch?v=VWJ8GmYnjTs&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=11)
### 4 Транспортный
Данные, о которых вы заботитесь, передаются на транспортном уровне. Нижние уровни стека существуют для поддержки транспортного уровня. Фрагмент данных транспортного уровня - это сегмент. Три наиболее распространенных протокола транспортного уровня - это протокол управляющих сообщений Интернета (ICMP), протокол управления передачей (TCP) и протокол пользовательских датаграмм (UDP).
@ -55,47 +64,453 @@ ICMP обрабатывает низкоуровневые сообщения о
UDP и TCP обеспечивают передачу прикладных данных между узлами. Они настолько распространены, что набор протоколов Интернета обычно называют TCP/IP. (UDP/TCP/IP слишком громоздки.) UDP, или User Datagram Protocol, предоставляет минимальные услуги, необходимые для передачи данных по сети. Хотя люди шутят, что U в UDP означает "ненадежный", он предназначен для приложений, где надежность обеспечивается приложением, а не сетью. Протокол TCP, или Transmission Control Protocol, включает в себя проверку ошибок, управление перегрузками и повторную передачу потерянных данных, но ему не хватает гибкости и простоты UDP.
В заголовке перечислены их названия согласно теоретической модели ОСИ. Сессионный уровень отвечает за открытие, использование и закрытие соединений транспортного уровня. Уровень представления отвечает за обмен данными между приложениями. На уровне приложения работает протокол передачи данных приложения. На практике всё зависит от поставщика приложения, который может реализовать чёткое разделение ответственности по слоям или смешать всё воедино.
Примерами протоколов высших слоёв являются: HTTP, SMTP, LDAP.
[TCP: Transmission control protocol | Networking tutorial (12 of 13)](https://www.youtube.com/watch?v=4IMc3CaMhyY&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=12)
[TCP connection walkthrough | Networking tutorial (13 of 13)](https://www.youtube.com/watch?v=F27PLin3TV0&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=13)
В заголовке перечислены их названия согласно теоретической модели ОСИ. Сессионный уровень отвечает за открытие, использование и закрытие соединений транспортного уровня. Уровень представления отвечает за обмен данными между приложениями. На уровне приложения работает протокол передачи данных приложения. На практике всё зависит от поставщика приложения, который может реализовать чёткое разделение ответственности по слоям или смешать всё воедино.
Примерами протоколов высших слоёв являются: `HTTP`, `SMTP`, `LDAP`.
[DNS: Why was Facebook down for five hours?](https://www.youtube.com/watch?v=-wMU8vmfaYo&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW&index=14)
# Работа сети на примере
В данном примере отследим путь ICMP пакета по сети из точки A в точку B с топологией сети изображённой ниже. Рёбра этого графа - провода, а узлы - компьютеры или роутеры. Это также пример автономной системы, например автономная система провайдера. Автономная система - группа сетей, находящихся под административным или политическим контролем одного юридического лица.
Ethernet сеть 1 (4 хоста) Ethernet network 2 (5 хостов)
```
Как мы можем отправить информацию от хоста A хосту B? Рассмотрим что произойдёт при запуске команды ping.
### Ethernet
При настройке сетевой карты в системе заполняются 3 параметра: ip адрес хоста, ip адрес шлюза, маска сети. Маска сети - общие первые N бит адреса для хостов сети. Когда пакет посылается хосту B хост A видит, что первые N бит этого адреса отличаются от первых N бит его адреса из локальной сети, и отправляет ethernet пакет c ip пакетом внутри шлюзу. Шлюз - это узел, подключенный к нескольким сетям.
Кадр Ethernet начинается со специальной последовательности Preamble/SFD, которая позволяет принимающей стороне однозначно определить с какого бита в канале связи начинается пакет.
Затем следует MAC адрес назначения. В случае если адрес назначения неизвестен, кадр может быть адресован всем устройствам в локальной сети по адресу ffffffffffff.
Пример заголовка Ethernet кадра для широковещательного запроса - поле Destination Address заполняется единицами.
Чтобы отправить ethernet пакет шлюзу, нужно знать его MAC адрес. Для поиска устройства в локальной сети с заданным IP адресом используется ARP (address resolution protocol) протокол. В сети может быть два типа ARP пакетов: широковещательный запрос с просьбой ответить на вопрос "У кого назначен 192.168.9.1?".
Пример заголовка ARP сообщения (помещается в Payload Ethernet кадра) для установки соответствия между Ethernet адресом и IP адресом
```
| HW Address Type | Protocol Addr Type | HW Address Length | Protocol Addr Len | OP Code |
При запросе поле "Hardware Address of Target" заполняется нулями, а в ARP ответе хост A получит "68:56:35:8e:5b:74". Получив ответ, хост A с этого момента может отправлять ip пакеты шлюзу для его дальнейшей маршрутизации.
ICMP пакет будет вложен в IP пакет, который будет вложен в Ethernet пакет. Однако это не значит, что размер IP пакета должен быть меньше Ethernet пакета. В случае превышения MTU (размера Ethernet пакета), IP пакет будет фрагментирован на несколько Ethernet пакетов.
Задача сетевого уровня обеспечить маршрутизацию пакета от компьютера одной локальной сети до компьютера другой не зависимо от технологий, используемых в локальных сетях. Для этого компьютерам назначается глобальный IP адрес. Количество хостов в IPv4 2^32. Количество хостов в IPv6 2^128. Чтобы эффективно маршрутизировать пакеты между сетями адресное пространство в начале был разделено на блоки разного разметра, называемые классами. Это означало, что первые N бит характеризовали сеть, а оставшиеся хост в сети. Однако фиксированное разделение приводило к неэффективному расходованию адресов, поэтому вскоре вышел стандарт бесклассовой адресации CIDR, который позволял владельцам уже имеющим большие блоки адресов делить их самостоятельно на подсети с помощью маски подсети, которая состояля из единиц в первых N битах.
Чтобы проложить маршрут роутеры между двумя локальными сетями обмениваются информацией, наподобие того как обнаруживают другу друга компьютеры в локальной сети. После обмена информацией о сетях (ip адреса портов роутера с масками подсетей) каждый роутер формирует таблицу маршрутизации. Протоколы маршрутизации внутри автономных систем:
- RIP,
- OSPF,
- EIGRP.
Существует также возможность внести маршрут в данную таблицу вручную.
Таблица говорит, о том какие сети существуют за каждым подключенным портом. Так что, пакет попавший на роутер Самара на порт 1 слева согласно таблице отправляется на порт 2 справа. Аналогичное действие происходит на каждом роутере в цепи Самара-Москва-Питер, пока пакет не попадёт в целевую локальную Ethernet сеть 192.168.20.0. Hop-by-hop маршрутизация фундаметальная характеристика сетевого слоя и IP протокола.
Глобальная сеть Интернет объединяет множество автономных систем. Специфика масштаба маршрутизации между АС требует использования другого оборудования и других протоколов маршрутизации между автономными системами. В данный момент используется в основном BGP.
ICMP используется не только для проверки доступности хостов командой `ping`. Это все возможные типы сообщений и их коды:
- Destination Unreachable Message (3)
- Source Quench Message (4)
- Redirect Message (5)
- Echo or Echo Reply Message (8)
- Time Exceeded Message (11)
- Parameter Problem Message (12)
- Timestamp or Timestamp Reply Message (14)
- Information Request/Information Reply Message (15/16)
Для передачи пользовательских нужно подняться на один уровень выше, на транспортный уровень, до протоколов TCP и UDP.
Протокол TCP является протоколом ориентированным на потоки бит и как следствие требует установки соединения перед передачей данных, разбиение потока бит на пакеты и восстановления потока на принимающей стороне. А это в свою очередь требует от протокола буферизации и сортировки на принимающей стороне, а также детектирования пропущенных пакетов и механизма повторной отправки для таких случаев. Всё это делает протокол более надёжным, но требует дополнительных накладных расходов на контроль за доставкой. Механизм повторной отправки также может привести усугублению ситуации в сети, если пакеты не доставляются из-за перегрузки оборудования большим количеством пакетов.
Протокол UDP является протоколом без гарантии доставки. Используется при доставке аудио и видео данных, так как отдельные потерянные пакеты не сильно влияют на опыт использования, а отстуствие инициализации соединения и контроля за доставкой приводит к меньшим задержкам.
Поддержание TCP-соединения требует запоминания нескольких переменных. Эти переменные хранятся в записи соединения, называемой блоком управления передачей или TCB.
Администратор может назначить их вручную или автоматически с помощью DHCP.
DHCP предназначен для предоставления DHCP-клиентам параметров конфигурации, определенных в RFC «Требования к хосту». После получения параметров через DHCP клиент DHCP должен иметь возможность обмениваться пакетами с любым другим хостом в Интернете.
DHCP состоит из двух компонентов: протокола для доставки специфичных для хоста параметров конфигурации от DHCP-сервера к хосту и механизма выделения сетевых адресов хостам.
Временная диаграмма автоматического получения IP адреса.
Основная функция DNS хранить связь между IP адресом и человеко-читаемым именем. DNS система - это распределённая база данных.
Хост может участвовать в системе доменных имен несколькими способами: в зависимости от того, запускает ли хост программы, извлекающие информацию из доменной системы, серверы имен, отвечающие на запросы других хосты или различные комбинации обеих функций.
Схема работы DNS с точки зрения клиентского хоста:
```
Локальный хост | Хосты сети
|
+---------+ +----------+ | +--------+
| | user queries | |queries | | |
| User |-------------->| |---------|->|Foreign |
| Program | | Resolver | | | Name |
| |<--------------||<--------|--|Server|
| | user responses| |responses| | |
+---------+ +----------+ | +--------+
| A |
cache additions | | references |
V | |
+----------+ |
| cache | |
+----------+ |
```
Пользовательские программы взаимодействуют с пространством доменных имен через Resolver. Формат пользовательских запросов и ответов зависит от хоста и его операционной системы. Пользовательские запросы обычно представляют собой вызовы операционной системы, а Resolver и его кэш являются частью операционной системы хоста. Resolver отвечают на запросы пользователей информацией, которую они получают посредством запросов к внешним серверам имен и локальному кешу.
Запустите прослушивание пакетов на некоторое время в сети на одной из машин командой tcpdump. Какие типы пакетов вы перехватили? Отфильтруйте ARP пакеты, ICMP пакеты, TCP пакеты.
# Задание 5
Повторите топологию сети в симуляторе сетей GNS3 в виртуальной машине `studX-gns3`. Соединения между маршрутизаторами, обозначенными R, являются PPP соединениями. Попробуйте отправить ICMP пакет другим хостам, изучите таблицы arp и маршрутизации до и после отправки пакетов.
Попробуйте подключиться ещё раз. Попробуйте подключиться ещё раз по паролю (добавьте флаг -o PubkeyAuthentication=no к ssh команде).
Попробуйте подключиться ещё раз. Попробуйте подключиться ещё раз по паролю (добавьте флаг `-o PubkeyAuthentication=no` к ssh команде).
### 8.
Сгенерируйте сертификат x.509 и ключ с помощью openssl. Посмотрите содержимое сертификата командой `openssl x509`.
Сгенерируйте самоподписанный сертификат x.509 и ключ с помощью `openssl`. Посмотрите содержимое сертификата командой `openssl x509`.
### 9.
Получите сертификат с помощью утилиты `certbot` https://certbot.eff.org/ или скрипта `acme.sh` https://github.com/acmesh-official/acme.sh от центра сертификации https://letsencrypt.org/. Изучите его содержимое командой `openssl`.
Проверьте, что веб-сервер работает по адресу 193.32.63.170+X, где X ваши идентификатор. Если что-то не работает должным образом, вы можете попытаться выяснить причину в файлах `access.log` и `error.log` в каталоге `/usr/local/nginx/logs` или `/var/log/nginx`.
### 9.
### 9.1
Переведите веб-сервер на https. Измените порт прослушивания на `443 ssl`, сгенерируйте сертификаты и ключ командой openssl в директорию `/data/certs/`. Вам понадобятся следующие параметры в блоке server:
- listen,
- ssl_certificate,
@ -115,6 +115,9 @@ server {
}
```
### 9.2
Переведите веб-сервер на https с сертификатом, полученным утилитой `certbot`` от Letsencrypt.
### 10.1
Одним из частых применений nginx является его настройка в качестве прокси-сервера, что означает сервер, который получает запросы, передает их на проксируемые серверы, получает от них ответы и отправляет их клиентам.
# Руководство для преподавателя. Подготовка среды проведения лабораторных работ
Лабораторные проводятся на виртуальных машинах в системе виртуализации Proxmox. Задания выкладываются в публичный git репозиторий. Для получения новых заданий студенты первоначально скачивают их по ссылке командой `git clone`, а затем в начале каждого урок обновляют их командой `git pull`.
Будем считать, что N - количество студентов умноженное на 1.5, округлённое в большую сторону. X - идентификатор студента от 1 до N.
Будем считать, что `N` - количество студентов умноженное на `1.5`, округлённое в большую сторону. X - идентификатор студента от `1` до `N`.
Создайте N пользователей в Proxmox с именами studX (stud1, stud2, ...). Используйте Realm "Proxmox VE authentication server".
Создайте `N` пользователей в Proxmox с именами `studX` (`stud1`, `stud2`, ...). Используйте Realm "Proxmox VE authentication server".
Загрузите образ debian-11.4.0-amd64-netinst.iso в Proxmox хранилище.
Загрузите образ `debian-11.4.0-amd64-netinst.iso` в Proxmox хранилище.
Для массового создания виртуальных машин рекомендуется использовать возможность Proxmox конвертации виртуальной машины в шаблон. Из шаблона копия создаётся на порядки быстрее по времени, чем при полном клонировании. Следуйте следующим шагам:
1. настройте машину с общими для всех копий настройками,
2. преобразуйте её в шаблон (template),
3. создайте клоны из шаблона и донастройте, если необходимо,
4. сделайте snapshot основных машин, чтобы вы и студенты имели возможность отката до рабочего состояния.
4. сделайте snapshot с именем `initial`основных машин, чтобы вы и студенты имели возможность отката до рабочего состояния.
При наличии нескольких дисков рекомендуется RAID оптимизирующий производительность. Неправильный raid или медленный тип диска может привести к существенному замедлению работы во время установки ОС или пакетов.
Список шаблонов виртуальных машин:
- `stud0-tabularasa-template`
- `stud0-template`
- `stud0-net-[1-2]-template`
- `stud0-troublesome-[1-6]-template`
(TODO Написать скрипт для создания шаблонов.)
(TODO Написать скрипт для создания учётки и виртуалок для студента на основе шаблонов.)
При наличии нескольких дисков рекомендуется RAID оптимизирующий производительность. Неправильный raid или медленный тип диска может привести к существенному замедлению работы во время установки ОС или пакетов.
### Основные виртуальные машины
Данные виртуальные машины предназначены для всех заданий, исключая:
- 00_os_installation,
- 03_networking,
- 12_troubleshooting,
- final_exam.
## 1. Подготовка виртуальной машины к занятиям `01`, `02`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`.
Создайте vlan с доступом в интернет. Например, bond0.499 и мост vmbr499 с параметрами:
- Bridge ports: bond0.499,
- VLAN aware: false,
- IPv4/CIDR: 10.160.179.254/24,
- Gateway (IPv4): 10.160.179.1.
Создайте vlan с доступом в интернет. Например, `bond0.499` и мост `vmbr499`с параметрами:
- Bridge ports: `bond0.499`,
- VLAN aware: `false`,
- IPv4/CIDR: `10.160.179.254/24`,
- Gateway (IPv4): `10.160.179.1`.
До начала занятий создайте N виртуальных машин со следующими характеристиками:
- 1 сокет с 4 ядрами,
- 8 Гб оперативной памяти,
- 16 Гб дискового пространства.
Каждой виртуальной машине назначьте статический IPv4 адрес 10.160.179.10 + X (10.160.179.11, 10.160.179.12, ...). Используйте инструкцию из задания про настройку сети данного учебного модуля.
Каждой виртуальной машине назначьте статический IPv4 адрес `10.160.179.10 + X` (`10.160.179.11`, `10.160.179.12`, ...). Используйте инструкцию из задания про настройку сети данного учебного модуля.
Установите минимальный дистрибутив debian на каждую. Установите пакеты:
- man-db,
- ssh,
- vim,
- tree,
- jq,
- lsof.
```
apt install man-db ssh vim tree jq lsof git mc fail2ban
```
Удалите пакет ifupdown.
Удалите пакет `ifupdown`, так как настройка сети будет производится средствами `systemd-networkd`.
```
apt remove ifupdown
```
Пробросьте порты: 22, 80, 443.
Пробросьте порты: `22`, `80`, `443`.
Организуйте удалённый доступ к машинам по ssh ключу.
Организуйте удалённый доступ к машинам по `ssh` ключу.
### Подготовка к занятию "История операционных систем. Установка Debian"
## 2. Подготовка виртуальной машины к занятиям `00`.
Данные виртуальные машины предназначены для тренировки в установке debian.
Данные виртуальные машины предназначены для тренировки в установке debian в уроке `00`.
До начала занятий создайте N виртуальных машин со следующими характеристиками:
- 1 сокет с 4 ядрами,
- 8 Гб оперативной памяти,
- 32 Гб дискового пространства,
- сетевой интерфейс vmbr499 с доступом в интернет.
- сетевой интерфейс `vmbr499`с доступом в интернет.
Студенты могут назначить статический IPv4: 10.160.179.10 + N + X, Gateway (IPv4): 10.160.179.1.
Студенты могут назначить статический IPv4: `10.160.179.10 + N + X`, Gateway (IPv4): `10.160.179.1`.
Подключите cdrom с образом debian-11.4.0-amd64-netinst.iso.
Подключите cdrom с образом `debian-11.4.0-amd64-netinst.iso`.
### Подготовка к занятию "Настройка сетевого подключения"
## 3. Подготовка виртуальной машины к занятиям `03`.
Данные виртуальные машины предназначены для настройки сетевого интерфейса в конфигурациях systemd. Студентам необходимо работать в индивидуальных vlan для настройки по DHCP и снижению вероятности ошибок при назначении статического адреса.
Данные виртуальные машины предназначены для настройки сетевого интерфейса в конфигурациях `systemd` в уроке `03`. Студентам необходимо работать в индивидуальных vlan для настройки по DHCP и снижению вероятности ошибок при назначении статического адреса.
Создайте N vlan без доступа в интернет. Например, bond0.X и мост vmbrX с параметрами:
- Bridge ports: bond0.X,
- VLAN aware: false.
Создайте `N` vlan без доступа в интернет. Например, `bond0.X` и мост `vmbrX`с параметрами:
- Bridge ports: `bond0.X`,
- VLAN aware: `false`.
Создайте N виртуальных машин studX-net1 и N виртуальных машин studX-net2 для vmbrX. Удалите пакет ifupdown.
Создайте `N` виртуальных машин `studX-net1` и `N` виртуальных машин `studX-net2` для `vmbrX`. Удалите пакет `ifupdown`.
### Подготовка к занятию "Поиск и устранение неисправностей"
## 4. Подготовка виртуальной машины к занятиям `12`.
Данные виртуальные
Создайте N vlan без доступа в интернет: bond0.N+X и мост vmbrN+X с параметрами:
- Bridge ports: bond0.N+X,
- VLAN aware: false.
Создайте `N` vlan без доступа в интернет: `bond0.N+X` и мост `vmbrN+X`с параметрами:
- Bridge ports: `bond0.N+X`,
- VLAN aware: `false`.
Создайте N виртуальных машин troublesome-gwX, играющих роль шлюза для vmbrN+X. Установите минимальный образ debian. Удалите пакет ifupdown. Каждой виртуальной машине назначьте добавьте два сетевых интерфейса. Для первого интерфейса назначьте IPv4 адрес 10.160.179.100 + X (10.160.179.101, 10.160.179.102, ...). Для второго интерфейса назначьте IPv4 адрес 192.168.0.1.
Создайте `N` виртуальных машин `troublesome-gwX`, играющих роль шлюза для `vmbrN+X`. Установите минимальный образ debian. Удалите пакет `ifupdown`. Каждой виртуальной машине назначьте добавьте два сетевых интерфейса. Для первого интерфейса назначьте IPv4 адрес `10.160.179.100 + X` (`10.160.179.101`, `10.160.179.102`, ...). Для второго интерфейса назначьте IPv4 адрес `192.168.0.1`.
Создайте виртуальную машину troublesome. Установите минимальный образ debian. Скопируйте скрипты, приведенные ниже в /sbin/. Превратите машину в шаблон Proxmox.
Создайте виртуальную машину `troublesome`. Установите минимальный образ debian. Скопируйте скрипты, приведенные ниже в `/sbin/`. Превратите машину в шаблон Proxmox.
Для каждого из 6 заданий создайте виртуальную машину из шаблона troublesome: troublesomeX-task1, troublesomeX-task2, ..., troublesomeX-task6. Каждой виртуальной машине назначьте статический IPv4 адрес 192.168.0.1 + номер задания. Для 6 задания настройте беспарольный доступ по ssh от пользователя stud к пользователю mike. Команда `ssh localhost -l mike` должна отработать без ввода пароля. Внесите неисправности, активируя скрипты. Превратите машины в шаблоны.
Для каждого из 6 заданий создайте виртуальную машину из шаблона `troublesome`: `troublesomeX-task1`, `troublesomeX-task2`, ..., `troublesomeX-task6`. Каждой виртуальной машине назначьте статический IPv4 адрес `192.168.0.1 + номер задания`. Для 6 задания настройте беспарольный доступ по ssh от пользователя stud к пользователю mike. Команда `ssh localhost -l mike` должна отработать без ввода пароля. Внесите неисправности, активируя скрипты. Превратите машины в шаблоны.
Создайте N виртуальных машин для каждого задания из шаблонов: troublesomeX-task1, troublesomeX-task2, ..., troublesomeX-task6.
Создайте N виртуальных машин для каждого задания из шаблонов: `troublesomeX-task1`, `troublesomeX-task2`, ..., `troublesomeX-task6`.
Скрипты для внесения неисправностей для заданий.
@ -160,7 +161,7 @@ WantedBy=multi-user.target
chmod 777 /home/stud/.ssh
```
### Подготовка к экзамену
## 5. Подготовка к экзамену
До начала занятий создайте N виртуальных машин со следующими характеристиками:
- 1 сокет с 4 ядрами,
@ -168,4 +169,4 @@ chmod 777 /home/stud/.ssh
- 6 Гб дискового пространства,
- сетевой интерфейс vmbr499.
Подключите cdrom с образом debian-11.4.0-amd64-netinst.iso.
Подключите cdrom с образом `debian-11.4.0-amd64-netinst.iso`.