Модель OSI, слой за слоем, без лишнего
Практический обзор семи слоев модели OSI с примерами реальных протоколов и подходами к устранению неполадок для каждого слоя.
Большинство объяснений сетевых технологий рассматривают модель OSI как таблицу для заучивания перед экзаменом на сертификат, а потом о ней забывают. Это ошибка. Когда вы начнете устранять реальные проблемы, семь слоев превратятся в мысленный чек-лист: это проблема с кабелем, с маршрутизацией или баг в приложении? Знание того, с каким слоем вы имеете дело, резко сокращает время отладки.
Слой 1: физический
Это собственно среда: медь, оптоволокно, радиоволны. Уровни напряжения, распиновка, типы разъемов (RJ45, SFP+) и модуляция сигнала находятся здесь. Когда порт коммутатора показывает "link down" или вы видите перемежающуюся потерю пакетов, коррелирующую с тем, что кто-то пылесосит рядом с кабельной трассой, вы имеете дело со слоем 1. Инструменты вроде тестера кабелей или ethtool eth0 на Linux покажут вам статус соединения, скорость и настройки дуплекса, прежде чем вы потратите время на отладку чего-то выше.
Слой 2: канальный
Здесь вы встретите MAC-адреса, коммутаторы и фреймы. Ethernet работает на этом слое, как и ARP (технически граница между L2 и L3). VLAN тоже относятся к слою 2. Если хост не может достичь ничего в собственной подсети, но пинг работает на другие машины, напрямую подключенные, проверьте arp -a или ip neigh на устаревшие записи и посмотрите конфигурацию портов коммутатора на несоответствия VLAN. Классическая ошибка: два хоста в одной VLAN, но с разными настройками MTU, вызывающие странные симптомы, похожие на фрагментацию.
Слой 3: сетевой
IP-адреса, маршрутизация и ICMP находятся здесь. Это слой, на котором работают traceroute и ping, и где вы диагностируете, выходит ли пакет вообще из локальной сети. Маршрутизаторы принимают решения о пересылке на основе IP-адреса назначения на этом слое. Когда ping 8.8.8.8 работает, но ping google.com нет, это вообще не проблема слоя 3, это DNS, который находится на слое 7 — хороший пример того, почему соблюдение слоев имеет значение, когда вы сужаете диапазон неполадок.
Слой 4: транспортный
TCP и UDP. Здесь находятся порты, последовательность и надежность (или ее отсутствие). Трёхэтапное рукопожатие TCP, таймеры повторной передачи и масштабирование окна живут здесь. Если curl зависает при попытке подключения, tcpdump -i eth0 port 443 покажет вам, получают ли SYN-пакеты вообще SYN-ACK в ответ. Отсутствие ответа обычно означает, что брандмауэр молча отбрасывает трафик вместо того, чтобы его отклонять — различие, которое важно, когда вы пишете отчет об инциденте.
Слой 5: сеансовый
Этот слой снискал дурную репутацию, потому что на практике он тонкий — много реальных стеков объединяют управление сеансом либо в слой транспорта, либо в слой приложения. TLS resumption и такие вещи как NetBIOS сеансы — это учебные примеры. В современной архитектуре вы потратите здесь меньше времени, чем на любой другой слой, но это все еще полезно концептуально, когда объясняешь, почему разорванное соединение может возобновиться без полного переиспользования.
Слой 6: представления
Кодирование, сжатие и форматирование шифрования технически относятся сюда — думайте наборы символов, форматирование шифрования SSL/TLS (в отличие от самого установления сеанса) и сериализацию данных. На практике большинство инженеров объединяют это либо со слоем 5, либо со слоем 7, когда об этом говорят, потому что граница размыта. Если вы отлаживаете искаженные символы в пейлоаде против разорванного рукопожатия, то это ваше разделение L6/L7.
Слой 7: приложения
HTTP, DNS, SMTP, SSH — протоколы, на которых вы фактически пишете код. Большинство повседневной отладки как разработчика происходит здесь, проверка кодов состояния, заголовков и пейлоадов. Инструменты разработчика браузера, Postman и curl -v все работают на этом слое. Соблазнительно в первую очередь обвинить сеть, когда вызов API не удается, но ответ 500 означает, что запрос прошел через каждый слой ниже хорошо — проблема полностью в логике приложения.
Зачем нужна модель, которую никто не реализует точно
Реальные сети, особенно TCP/IP, не совпадают идеально с семью слоями OSI — TCP/IP имеет четыре слоя в своей собственной справочной модели. Это несовпадение нормально. Ценность OSI не как спецификация реализации, а как общий словарь. Когда коллега говорит "это похоже на проблему слоя 2", вы оба сразу понимаете, что нужно проверить коммутаторы и VLAN вместо того, чтобы спорить о DNS-записях. В этом весь смысл учить это правильно вместо заучивания на тест.
Если такой разбор слой за слоем вам понравился, сегментные материалы Korra Studio по сетям идут дальше в перехват пакетов, упражнения по разбиению на подсети и устранению неполадок правил брандмауэра, которые строятся прямо на этом основании.
Написано с помощью ИИ, проверено и опубликовано Михалом Пильхом (CISSP), Korra Studio.
Это одна заметка из базы знаний Korra Studio — платформа сочетает каждую тему с наставничеством один на один.
Начать бесплатноarrow_forward