Курс обучения DevOps

Logo

Каждая тема включает в себя теоретические знания, вопросы к ним и практические задания

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

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. Могут ли два приложения работать на одном порту?
  3. Как посмотреть, какие приложения занимают те или иные порты?
  4. Как подключиться по SSH? Где запущен SSH-сервер, а где клиент?
  5. Что такое сетевой «пакет» и его TTL?
  6. Какие есть уровни TCP/IP?
  7. Разница между TCP и UDP?
  8. Ping использует UDP или TCP?
  9. Что такое DNS и какой использует протокол?
  10. Типы DNS-записей?
  11. Что такое FQDN?
  12. Как разница между HTTP, HTTPS?
  13. Какие бывают методы HTTP запросов?
  14. В чем разница между GET и POST запросами?
  15. Что такое заголовки в HTTP запросах?
  16. Коды ответа HTTP-запросов?
  17. В чем разница между заголовками X-Forwarded-For и X-Real-IP?
  18. Что такое API и какие они бывают?
  19. Как выглядит IP и маска подсети?
  20. В чем разница между IPv4 и IPv6?
  21. Что такое MAC-адрес?
  22. В чем разница между IP и MAC адресами?
  23. Как работает DHCP?
  24. Что такое и зачем нужен сниффинг трафика?
  25. Что такое Nginx и round-robin балансировка?
  26. Как работает балансировка least-connections?
  27. Разница между VPN и прокси?
  28. Куда ведет IP-адрес 127.0.0.1?
  29. Что такое localhost? Чем отличается от 127.0.0.1?
  30. Как работает TLS? Что такое сертификаты?
  31. Какие стандартные порты SSH, HTTP, HTTPS, DNS?

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

  1. Посмотрите сетевые интерфейсы своей Linux-машины.
  2. Посмотрите, какие порты используются приложениями в вашей системе.
  3. Какой IP-адрес отдает DNS-сервер для career.habr.com?
  4. Какое среднее время ping у сайта instagram.com, а у vk.com?
  5. Сгенерируй пару ключей для SSH.
  6. Отправь HTTP-запрос вида GET к сайту https://t.me, какой код ответа HTTP вы получили и что он значит?
  7. Какой IP-адрес и MAC-адрес вашего компьютера в сети интернет?
  8. Как с помощью curl отправить HTTP запрос вида POST и посмотреть, какие заголовки в ответе вам вернул сервер?