~/blog/blogposted

$ cat ./osnovy-setej.md

Когда я только пришёл в девопс, сети казались магией: тык — и сайт открылся. Потом пришло осознание, что это просто цепочка адресов и договорённостей. Разберём её по кусочкам.

IP-адрес — адрес вашей квартиры в интернете

Каждое устройство в сети имеет IP-адрес. IPv4-адрес — это 4 числа от 0 до 255 через точку, например 192.168.1.10. Четыре числа = четыре байта = 32 бита. Поэтому IPv4-сетей станет меньше, чем устройств — поэтому придумали IPv6 (128 бит, вида 2001:db8::1), но пока живём на IPv4.

Посмотреть свои адреса на Linux:

ip addr          # все интерфейсы
ip -4 addr show  # только IPv4

MAC vs IP: паспорт и фан-зона

  • MAC-адрес — шлётся оборудованию на заводе, живёт в сетевой карте. Неизменен и не пересекает маршрутизаторы. Это паспорт.
  • IP-адрес — выдаётся при подключении к сети и может меняться. Его знают все, кто хочет до нас достучаться. Это имя в фан-зоне.

Пакет несёт оба: IP — куда доставить в принципе, MAC — кому передать в конкретном куске провода.

Маска подсети — кто сосед, а кто за шлагбаумом

Маска 255.255.255.0 (или /24) говорит: первые три октета — адрес сети, последний — адрес хоста внутри неё. Свои = та же подсеть. Чужие = надо идти через шлюз.

ip addr | grep /       # увидите 192.168.1.10/24
  • /24 — 254 хоста, повседневная локальная сеть
  • /16 — 65 534 хоста, большая внутренняя сеть
  • /32 — один адрес, точка-точка

Шлюз (gateway) — дверь в большой мир

Если адресат не в нашей подсети, пакет отдаётся шлюзу по умолчанию — обычно роутеру. Он смотрит на IP и передаёт пакет дальше по маршрутной таблице.

ip route show   # default via 192.168.1.1 dev eth0
traceroute 8.8.8.8   # покажет весь путь через маршрутизаторы

DNS — телефонная книга интернета

Люди запоминают bazil.pw, маршрутизаторы — 29.0.252.78 (гипотетически). DNS превращает имя в IP. Каждая зона делегирована: корневые серверы → .pwbazil.pw → конкретный сервер.

dig +short bazil.pw       # быстрый ответ A-записи
nslookup bazil.pw         # чуть подробнее
dig bazil.pw MX           # почтовые записи

Если DNS падает — сайт «не работает», хотя сервер жив. Классика.

TCP vs UDP: курьер с подтверждением и почтовый голубь

TCP UDP
Доставка гарантирует, повторяет потерянные не гарантирует
Порядок сохраняет не сохраняет
Скорость медленнее быстрее
Примеры HTTP, SSH, почта DNS, стриминг, игры, VoIP

TCP — это диалог: SYN → SYN-ACK → ACK, потом поток данных и подтверждения. UDP — выстрелил и забыл.

Порты — двери в сервис

IP нашёл машину, порт — какую программу на ней. ssh живёт на 22, HTTP на 80, HTTPS на 443, DNS на 53.

ss -tlnp                 # какие TCP-порты слушает ваша машина
curl -s -o /dev/null -w '%{http_code}' https://bazil.pw   # проверить, что сайт отдаёт 200

Шпаргалка по диагностике

ping -c3 8.8.8.8     # жива ли сеть в принципе
dig +short example.com   # резолвится ли имя
traceroute example.com   # где теряются пакеты
ss -tunap            # что слушает / куда подключено
curl -v https://site  # как идёт HTTPS-рукопожатие

Прочитайте вывод — там всё, что нужно для 80% дежурств: адрес, маршрут, порт и ответ сервера. Учёба на реальной сети — лучший способ, bazil.pw всегда готов пингнуться.