2. Глобальная сеть интернет, правила передачи данных в этой сети
Сеть — это системы, которые позволяют разным устройствам обмениваться информацией между собой (кабеля между компами, Wi-Fi и сетевыми устройствами, которые обрабатывают и отправляют информацию нужным адресатам).
Без сетей было бы сложно представить современный мир. Они позволяют:
- Работать удалённо: сотрудники могут работать из дома, используя общие ресурсы компании.
- Обмениваться данными: можно быстро отправить файл коллеге или другу, даже если он находится за тысячи километров.
- Пользоваться интернет-сервисами: соцсети, онлайн-магазины, стриминговые сервисы — всё это работает благодаря сетям.
Когда два компьютера соединены кабелем или через Wi-Fi, они могут передавать данные друг другу. Если таких соединений много, то получается целая сеть. Например:
- В офисе все компьютеры сотрудников подключены к одной локальной сети, чтобы они могли делиться файлами, печатать документы на одном принтере и пользоваться общим интернетом.
- Интернет — это глобальная сеть, которая объединяет миллиарды устройств по всему миру (по сути, объединяет множество компьютеров вместе кабелями для обмена информацией).
Сетевые технологии — это всё те штуки, которые помогают этим устройствам общаться друг с другом. Вот несколько примеров:
- Wi-Fi: технология беспроводной передачи данных, которую мы используем дома или в кафе, чтобы подключить ноутбук или смартфон к интернету без проводов.
- Ethernet: проводная технология, когда устройства соединяются кабелями.
- Протоколы: правила, по которым передаются данные. Например, HTTP — протокол, который используется при просмотре веб-сайтов.
Представьте, что вы хотите передать сообщение своему другу по сети. Вы можете по-разному передавать данные: начинать с заглавной буквы, а заканчивать точкой или нет. Как другу понять, что это пишете именно вы и, например, что это файл или email? Получается, вам необходимо договариваться о том, каким образом передавать те или иные данные, чтобы и ты, и он понимали друг друга.
Примеры основных сетевых протоколов:
TCP/IP (Transmission Control Protocol/Internet Protocol) – это набор протоколов из 4-х уровней, которые обеспечивают передачу данных в интернете. TCP отвечает за надежность передачи данных, а IP – за адресацию, доставку от одного устройства к другому. Когда вы отправляете электронное письмо, оно передается через эти протоколы. Эта модель состоит из четырех уровней:
- Уровень приложений (Application Layer) – этот уровень отвечает за взаимодействие пользовательских программ с сетью. Примеры протоколов этого уровня:
- HTTP (HyperText Transfer Protocol) – приложение отправляет запрос на сервер, а сервер отвечает данными или сообщением об ошибке. Используется для загрузки веб-страниц и других ресурсов через браузер
- FTP (File Transfer Protocol) – протокол для передачи файлов
- SMTP (Simple Mail Transfer Protocol) – протокол для отправки электронной почты
- Транспортный уровень (Transport Layer) – на этом уровне обеспечивается надежность передачи данных между двумя серверами (их еще называют «хостами»). Основные протоколы:
- TCP (Transmission Control Protocol) – обеспечивает надежную передачу данных с контролем ошибок и управлением потоком. Примеры сервисов, где может использоваться данный протокол: соц. сети, при отправке сообщений или других действий мы отправляем запрос и получаем ответ от сервера, что запрос наш принят.
- UDP (User Datagram Protocol) – упрощенный протокол без контроля ошибок, используется там, где важна скорость передачи данных, а не надежность. Сетевой протокол, не требующий подтверждения, что сервер принял наш запрос. Данный сетевой протокол мы можем встретить в стриминговых сервисах (YouTube, RuTube, Twitch).
- Сетевой уровень (Internet Layer) – этот уровень отвечает за маршрутизацию пакетов (частичка информации, которая передается по сети, в нем есть информация, которую нужно передать, и адрес, куда ее доставить). Ключевой протокол:
- IP (Internet Protocol) – основной протокол, обеспечивающий адресацию (куда доставлять) и доставку пакетов от одного сервера к другому через кучу других сетевых устройств и серверов в сети
- Канальный уровень (Link Layer) – уровень отвечает за физическую передачу данных между устройствами, подключенными к одной сети. Он включает в себя:
- Ethernet – наиболее распространенный стандарт для локальных сетей
- Wi-Fi – беспроводной стандарт связи.
Наиболее распространенные коды ответа HTTP:
- 200 OK («хорошо»)
- 301 Moved Permanently («перемещено навсегда»)
- 307 Temporary Redirect («временное перенаправление»)
- 308 Permanent Redirect («постоянное перенаправление»)
- 400 Bad Request («неправильный, некорректный запрос»)
- 401 Unauthorized («не авторизован»)
- 403 Forbidden («запрещено (не уполномочен)»)
- 404 Not Found («не найдено»)
- 405 Method Not Allowed («метод не поддерживается»)
- 418 I’m a teapot («я — чайник») - шуточный код, им обычно “посылают” куда подальше
- 429 Too Many Requests («слишком много запросов»)
- 499 Client Closed Request (клиент закрыл соединение)
- 500 Internal Server Error («внутренняя ошибка сервера»)
- 502 Bad Gateway («плохой, ошибочный шлюз»)
- 503 Service Unavailable («сервис недоступен»)
- 504 Gateway Timeout («шлюз не отвечает»)
Допустим, вы хотите открыть сайт github.com в браузере:
- Браузер отправляет HTTP-запрос на сервер через приложение.
- Запрос передается через транспортный уровень с использованием протокола TCP.
- На сетевом уровне данные упаковываются в IP-пакеты и отправляются по маршруту до сервера.
- На канальном уровне пакеты передаются через физическое соединение (например, Ethernet).
DNS (Domain Name System) — это система доменных имен, которая переводит удобные для людей имена сайтов (например, example.com) в IP-адреса, понятные компьютерам (например, 192.0.2.123). Когда вы вводите адрес сайта в браузер, ваш компьютер обращается к DNS-серверу (серверу, на котором установлено приложение, которое отвечает на запросы DNS), чтобы узнать соответствующий IP-адрес, после чего происходит подключение к нужному сайту.
SSH нужен для безопасного удалённого доступа к серверам в сети и управления ими (через протокол TCP). Он защищает передаваемые данные от перехвата и несанкционированного доступа благодаря шифрованию с помощью ключей (ключи — это текстовые файлы). В SSH используются два типа ключей:
- Открытый ключ: Для вас кто-то копирует этот ключ на все сервера, которыми вы хотите управлять, и он будет использоваться для проверки того, что вы — это вы. Его можно свободно распространять.
- Закрытый ключ: Этот ключ остаётся у вас и используется для подтверждения вашей личности при соединении с сервером. Закрытый ключ нужно хранить в безопасности, поскольку он служит доказательством того, что именно вы пытаетесь установить соединение.
TLS (Transport Layer Security) – протокол, шифрует данные при передаче через интернет, чтобы предотвратить её перехват и изменение злоумышленниками. Когда вы видите значок замка рядом с адресом сайта, это значит, что соединение защищено TLS и в этом случае ваши HTTP-запросы к сайту (сайт тоже приложение, которое запущено или еще как говорят «развернуто» на каком-то сервере и умеет отвечать на HTTP-запросы) защищены.
Вопросы
- Что такое сетевой порт?
- Могут ли два приложения работать на одном порту?
- Как посмотреть, какие приложения занимают те или иные порты?
- Как подключиться по SSH? Где запущен SSH-сервер, а где клиент?
- Что такое сетевой «пакет» и его TTL?
- Какие есть уровни TCP/IP?
- Разница между TCP и UDP?
- Ping использует UDP или TCP?
- Что такое DNS и какой использует протокол?
- Типы DNS-записей?
- Что такое FQDN?
- Как разница между HTTP, HTTPS?
- Какие бывают методы HTTP запросов?
- В чем разница между GET и POST запросами?
- Что такое заголовки в HTTP запросах?
- Коды ответа HTTP-запросов?
- В чем разница между заголовками X-Forwarded-For и X-Real-IP?
- Что такое API и какие они бывают?
- Как выглядит IP и маска подсети?
- В чем разница между IPv4 и IPv6?
- Что такое MAC-адрес?
- В чем разница между IP и MAC адресами?
- Как работает DHCP?
- Что такое и зачем нужен сниффинг трафика?
- Что такое Nginx и round-robin балансировка?
- Как работает балансировка least-connections?
- Разница между VPN и прокси?
- Куда ведет IP-адрес 127.0.0.1?
- Что такое localhost? Чем отличается от 127.0.0.1?
- Как работает TLS? Что такое сертификаты?
- Какие стандартные порты SSH, HTTP, HTTPS, DNS?
Практическая часть
- Посмотрите сетевые интерфейсы своей Linux-машины.
- Посмотрите, какие порты используются приложениями в вашей системе.
- Какой IP-адрес отдает DNS-сервер для
career.habr.com
?
- Какое среднее время ping у сайта
instagram.com
, а у vk.com
?
- Сгенерируй пару ключей для SSH.
- Отправь HTTP-запрос вида GET к сайту https://t.me, какой код ответа HTTP вы получили и что он значит?
- Какой IP-адрес и MAC-адрес вашего компьютера в сети интернет?
- Как с помощью curl отправить HTTP запрос вида POST и посмотреть, какие заголовки в ответе вам вернул сервер?