Инженер должен был интерпретировать данные, полученные из устройства, и принять соответствующее решение. Понятно, что с увеличением количества сетевых устройств и усложнением сетей такое администрирование становилось все более проблемным.
Для Python написано несколько отличных библиотек и фреймворков, помогающих решать такие задачи. Среди них — Pexpect, Paramiko, Netmiko, NAPALM и Nornir.
В модели OSI, которую мы рассмотрим далее, этими компонентами являются устройства с первых трех уровней, иногда и с четвертого. Это, к примеру, маршрутизаторы и коммутаторы канального и сетевого уровней, которые направляют трафик, а также транспортная инфраструктура вроде оптоволоконных и коаксиальных кабелей, витой пары, а иногда и оборудования для спектрального уплотнения каналов (Dense Wavelength Division Multiplexing, DWDM).
Сначала сосредоточьтесь на приобретении базовых навыков программирования, которые пригодятся вам в любом проекте, включая программирование на Python и REST API. Также уделите внимание таким инструментам, как Git и GitHub, которые помогут вам управлять своим исходным кодом и организовать совместную работу. Уделите время подготовке среды разработки. Попробуйте разные редакторы для написания кода и инструменты для исследования API, такие как Postman и curl. Изучите приемы обработки JSON и XML. Начните исследовать методологии разработки программного обеспечения, такие как разработки через тестирование (Test-Driven Development, TDD) и основные принципы DevOps1.
Пакеты позволяют объединять модули в коллекции. Это еще один уровень организации, обеспечивающий дополнительную защиту пространств имен и возможность повторного использования кода. Чтобы определить пакет, нужно создать каталог с именем, совпадающим с именем пакета, и поместить в него исходные файлы модулей.
Чтобы интерпретатор Python распознавал этот каталог как пакет, добавьте в него файл __init__.py. Его можно оставить пустым. Создадим каталог math_stuff и поместим в него файл __init__.py и модуль subtract.py из предыдущего примера:
Теперь, чтобы обратиться к модулю, нужно указать имя пакета, а за ним через точку имя модуля. Например, math_stuff.subtract:
>>> from math_stuff.subtract import subtract
>>> result = subtract(10, 5)
>>> result
5
>>>
Как видите, модули и пакеты отлично подходят для организации больших коллекций исходных файлов и существенно упрощают повторное использование кода в Python.
Межсетевой протокол (IP) Сетевые инженеры, по их собственному признанию, работают на 3-м, сетевом уровне модели OSI. Протокол IP (Internet Protocol), помимо прочего, устанавливает правила адресации и маршрутизации трафика между конечными узлами. Адресное пространство разделено на две части: сеть и хост. Какая часть сетевого адреса относится к сети, а какая к хосту, определяется маской подсети: часть, относящаяся к сети, обозначается единицами, а часть, относящаяся к хосту, — нулями. В IPv4 принята форма записи адресов через точки — например, 192.168.0.1.
Маску подсети можно записать либо в формате с точками (255.255.255.0), либо с косой чертой, которая указывает, сколько битов отводится сетевой части (/24) (рис. 1.8).
Протокол действует подобно конечному автомату, определяя, когда принимать новые запросы на соединение, когда обслуживать действующий сеанс и когда освобождать ресурсы после закрытия соединения. Каждое TCP-соединение проходит через цепочку состояний, таких как Listen, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT и CLOSED.
Представьте, что вы занимаетесь созданием сервиса видеовещания следующего поколения. Чтобы порадовать своих клиентов идеальным видеопотоком, вам следует разместить свой сервер раздачи потокового видео как можно ближе к ним — либо внутри сети провайдера, либо рядом с ней. Также, чтобы зарезервировать ресурсы и повысить скорость соединения, исходящий сетевой канал серверной фермы должен быть подключен к как можно большему числу интернет-провайдеров, чтобы уменьшить количество транзитных участков. Все соединения должны иметь достаточную пропускную способность, чтобы не увеличивать задержки в периоды пиковых нагрузок. Эти требования привели к появлению граничных дата-центров для пирингового обмена данными между крупными интернет- и контент-провайдерами. Сетевых устройств в них не так много, как в облачных ЦОД, но они тоже могут извлечь пользу из автоматизации сетей в плане надежности, гибкости, безопасности и наблюдаемости.