Skip to the content.

Вернуться к главной странице, списку всех тем

2. Глобальная сеть интернет, правила передачи данных в этой сети

Сеть — это системы, которые позволяют разным устройствам обмениваться информацией между собой (кабеля между компами, Wi-Fi и сетевыми устройствами, которые обрабатывают и отправляют информацию нужным адресатам).

Без сетей было бы сложно представить современный мир. Они позволяют:

Когда два компьютера соединены кабелем или через Wi-Fi, они могут передавать данные друг другу. Если таких соединений много, то получается целая сеть. Например:

Сетевые технологии — это всё те штуки, которые помогают этим устройствам общаться друг с другом. Вот несколько примеров:

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

Примеры основных сетевых протоколов:

TCP/IP (Transmission Control Protocol/Internet Protocol) – это набор протоколов из 4-х уровней, которые обеспечивают передачу данных в интернете. TCP отвечает за надежность передачи данных, а IP – за адресацию, доставку от одного устройства к другому. Когда вы отправляете электронное письмо, оно передается через эти протоколы. Эта модель состоит из четырех уровней:

  1. Уровень приложений (Application Layer) – этот уровень отвечает за взаимодействие пользовательских программ с сетью. Примеры протоколов этого уровня:
    1. HTTP (HyperText Transfer Protocol) – приложение отправляет запрос на сервер, а сервер отвечает данными или сообщением об ошибке. Используется для загрузки веб-страниц и других ресурсов через браузер
    2. FTP (File Transfer Protocol) – протокол для передачи файлов
    3. SMTP (Simple Mail Transfer Protocol) – протокол для отправки электронной почты
  2. Транспортный уровень (Transport Layer) – на этом уровне обеспечивается надежность передачи данных между двумя серверами (их еще называют «хостами»). Основные протоколы:
    1. TCP (Transmission Control Protocol) – обеспечивает надежную передачу данных с контролем ошибок и управлением потоком. Примеры сервисов, где может использоваться данный протокол: соц. сети, при отправке сообщений или других действий мы отправляем запрос и получаем ответ от сервера, что запрос наш принят.
    2. UDP (User Datagram Protocol) – упрощенный протокол без контроля ошибок, используется там, где важна скорость передачи данных, а не надежность. Сетевой протокол, не требующий подтверждения, что сервер принял наш запрос. Данный сетевой протокол мы можем встретить в стриминговых сервисах (YouTube, RuTube, Twitch).
  3. Сетевой уровень (Internet Layer) – этот уровень отвечает за маршрутизацию пакетов (частичка информации, которая передается по сети, в нем есть информация, которую нужно передать, и адрес, куда ее доставить). Ключевой протокол:
    1. IP (Internet Protocol) – основной протокол, обеспечивающий адресацию (куда доставлять) и доставку пакетов от одного сервера к другому через кучу других сетевых устройств и серверов в сети
  4. Канальный уровень (Link Layer) – уровень отвечает за физическую передачу данных между устройствами, подключенными к одной сети. Он включает в себя:
    1. Ethernet – наиболее распространенный стандарт для локальных сетей
    2. Wi-Fi – беспроводной стандарт связи.

Наиболее распространенные коды ответа HTTP:

Допустим, вы хотите открыть сайт github.com в браузере:

  1. Браузер отправляет HTTP-запрос на сервер через приложение.
  2. Запрос передается через транспортный уровень с использованием протокола TCP.
  3. На сетевом уровне данные упаковываются в IP-пакеты и отправляются по маршруту до сервера.
  4. На канальном уровне пакеты передаются через физическое соединение (например, Ethernet).

DNS (Domain Name System) — это система доменных имен, которая переводит удобные для людей имена сайтов (например, example.com) в IP-адреса, понятные компьютерам (например, 192.0.2.123). Когда вы вводите адрес сайта в браузер, ваш компьютер обращается к DNS-серверу (серверу, на котором установлено приложение, которое отвечает на запросы DNS), чтобы узнать соответствующий IP-адрес, после чего происходит подключение к нужному сайту.

SSH нужен для безопасного удалённого доступа к серверам в сети и управления ими (через протокол TCP). Он защищает передаваемые данные от перехвата и несанкционированного доступа благодаря шифрованию с помощью ключей (ключи — это текстовые файлы). В SSH используются два типа ключей:

  1. Открытый ключ: Для вас кто-то копирует этот ключ на все сервера, которыми вы хотите управлять, и он будет использоваться для проверки того, что вы — это вы. Его можно свободно распространять.
  2. Закрытый ключ: Этот ключ остаётся у вас и используется для подтверждения вашей личности при соединении с сервером. Закрытый ключ нужно хранить в безопасности, поскольку он служит доказательством того, что именно вы пытаетесь установить соединение.

TLS (Transport Layer Security) – протокол, шифрует данные при передаче через интернет, чтобы предотвратить её перехват и изменение злоумышленниками. Когда вы видите значок замка рядом с адресом сайта, это значит, что соединение защищено TLS и в этом случае ваши HTTP-запросы к сайту (сайт тоже приложение, которое запущено или еще как говорят «развернуто» на каком-то сервере и умеет отвечать на HTTP-запросы) защищены.

Вопросы

1. Что такое сетевой пакет?

2. Что такое IP-адрес? Зачем он нужен?

3. Что такое сетевой порт?

4. Какие популярные порты ты знаешь и для чего они используются?

5. Что такое SSH и как он примерно работает?

6. Что такое TCP/IP стек?

7. В чем разница между TCP и UDP и ICMP? Когда что использовать?

8. Какие бывают HTTP-методы, заголовки и коды ответа?

9. Что такое DNS и как он работает?

10. Что такое DHCP?

11. Что такое MAC-адрес?

12. Что такое HTTP и HTTPS? В чем ключевая разница?

13. Что такое Веб-сервер (например, Nginx, Apache)?

14. Что такое Браузер (Chrome, Firefox, Safari)?

15. Что такое Клиент и Сервер?

16. Что такое “Облако” (Cloud Computing)?

17. Что такое API (Application Programming Interface)?

18. Что такое Фронтенд (Frontend) и Бэкенд (Backend)?

19. Что такое VPN? Зачем он нужен? Чем отличается от proxy?

20. Что такое Брандмауэр (Firewall)?

Практическая часть

  1. ping + tcpdump: поймать живой пакет
    Выполнить:
    ping -c1 8.8.8.8 | sudo tcpdump -nn -c1 -X icmp
    

    Получим: байт-дамп одного ICMP-пакета, где видно IP-заголовок (0x4500…) и ICMP-полезную нагрузку.

  2. ip addr + ip link: узнать свой IP и MAC
    Выполнить:
    ip addr show
    ip link show
    

    Получим: список интерфейсов, их IPv4/IPv6-адреса и MAC-адреса.

  3. ss -tulpn: увидеть открытые порты
    Выполнить:
    ss -tulpn
    

    Получим: таблицу «порт → PID/имя процесса», например 53/systemd-resolved.

  4. nc TCP vs UDP: ощутить разницу
    Выполнить:
    Терминал-1: nc -l 12345
    Терминал-2: echo "привет TCP" | nc localhost 12345
    Повторить для UDP:
    Терминал-1: nc -u -l 12346
    Терминал-2: echo "привет UDP" | nc -u localhost 12346
    Получим: TCP требует установки соединения, UDP — нет.

  5. ручной HTTP-запрос без браузера
    Выполнить:
    curl -v https://vk.com
    

    Получим: полный ответ сервера со строкой HTTP/1.1 200 OK, заголовками и телом страницы, verbose-вывод TLS handshake, код ответа 418 и зашифрованное соединение.

  6. dig: преобразовать имя в IP
    Выполнить:
    dig ya.ru A
    dig ya.ru AAAA
    

    Получим: секции ANSWER с IPv4- и IPv6-адресами и TTL.

  7. journalctl | grep DHCP: посмотреть, как получили адрес
    Выполнить:
    journalctl -u NetworkManager --since "2 minutes ago" | grep -i dhcp
    

    Получим: строки DHCPACK, IP-адрес, маску, шлюз, DNS.

  8. ufw: включить-выключить правило
    Выполнить:
    sudo ufw allow 12345/tcp
    sudo ufw status
    sudo ufw delete allow 12345/tcp
    

    Получим: список активных правил, потом его изменение.