DEV Community

Cover image for "Мобильная" разработка. [Как работает интернет и схема работы клиент-серверных приложений]
Arthur Kh
Arthur Kh

Posted on • Edited on • Originally published at masterarthur.xyz

1 1 1 1

"Мобильная" разработка. [Как работает интернет и схема работы клиент-серверных приложений]

Для написания практически любого программного обеспечения очень важно понимать, как вообще работает Интернет.

Как работает интернет

Интернет - это глобальная сеть компьютеров, соединённых между собой. Каждый раз, когда мы посещаем веб-сайт, отправляем электронное письмо или смотрим видео в сети, мы используем различные протоколы и технологии, которые обеспечивают работу интернета. Давайте разберём, как это работает на примере простого запроса к веб-сайту.

IP: Интернет-протокол

IP usage

IP (Internet Protocol) – это основной протокол, который регулирует передачу данных в сети Интернет. Все устройства, подключённые к Интернету, имеют уникальный IP-адрес, состоящий или из четырёх чисел, разделённых точками (127.0.0.1 в четвёртой версии протокола - IPv4), или из более сложной комбинации (2001:db8:3333:4444:CCCC:DDDD:EEEE:FFFF в шестой версии - IPv6). IP-адрес позволяет определить местоположение устройства в глобальной сети и гарантировать доставку данных непосредственно к этому устройству.

DNS

domain exmaple

Когда мы вводим имя веб-сайта в адресной строке браузера (например, "google.com"), система именования доменов (DNS) переводит это имя в IP-адрес. Это необходимо для того чтобы узнать, к какому именно серверу следует обратиться.

TCP/IP и UDP: основные протоколы передачи данных

tcp-udp

Когда речь заходит о передаче данных в интернете, наиболее важными и часто используемыми протоколами являются TCP/IP и UDP.

TCP (Transmission Control Protocol) - это надёжный, ориентированный на соединение протокол, который гарантирует доставку пакетов данных и их правильный порядок. TCP разбивает данные на пакеты, отправляет их, а затем ждёт подтверждение получения от получателя. Если пакет был потерян или поврежден, TCP будет повторно отправлять его. Благодаря этому механизму TCP гарантирует надежность и целостность передачи данных.

IP (Internet Protocol), со своей стороны, занимается маршрутизацией и доставкой пакетов данных между отправителем и получателем. Каждый пакет содержит IP-адреса отправителя и получателя, которые необходимы, чтобы пакет достиг нужного адресата.

UDP (User Datagram Protocol) - это ещё один важный протокол передачи данных с иным принципом действия. В отличие от TCP, UDP не гарантирует доставку или порядок пакетов. Тем не менее, он быстрее и требует меньше ресурсов при передаче, так как не устанавливает постоянное соединение и не ожидает подтверждений о доставке. Из-за этой особенности UDP часто используется в приложениях, где скорость важнее надежности, например, в потоковой передаче видео или голоса.

Таким образом, в зависимости от требований к надёжности и скорости передачи разработчики могут выбирать между TCP и UDP для своих приложений.

HTTP: Протокол передачи гипертекста

http headers

HTTP (HyperText Transfer Protocol) является основой веба. Этот протокол определяет, как запросы и ответы должны быть сформированы и переданы между браузерами и веб-серверами. Когда вы вводите URL в браузере, он отправляет HTTP-запрос к соответствующему серверу, который, в свою очередь, возвращает HTTP-ответ, обычно в виде веб-страницы.

Все HTTP-запросы и ответы содержат заголовки, которые сообщают дополнительную информацию, такую как тип содержимого, статус ответа и другие метаданные. HTTP также может быть использован и для других форм передачи данных, а не только для одного HTML.

HTTPS: Защищенный протокол передачи гипертекста

HTTPS (HyperText Transfer Protocol Secure) - это расширение стандартного HTTP, обеспечивающее шифрование данных между браузером пользователя и веб-сервером. Основное преимущество использования HTTPS - обеспечение конфиденциальности и целостности данных пользователей.

В основе работы HTTPS лежит технология SSL (Secure Sockets Layer) или её более новый вариант TLS (Transport Layer Security). Эти протоколы используют асимметричное и симметричное шифрование для защиты данных во время их передачи.

Когда вы посещаете сайт, использующий HTTPS, в адресной строке вашего браузера появляется значок замка. Это означает, что соединение с сайтом защищено. Кроме того, если кликнуть на этот значок, можно получить информацию о сертификате безопасности сайта. Этот сертификат гарантирует, что сайт действительно является настоящим и что все данные, передаваемые между вами и сайтом, шифруются и защищены от посторонних глаз.

Сегодня HTTPS стал стандартом для многих сайтов, особенно для тех, которые обрабатывают конфиденциальную информацию, такую как пароли, данные кредитных карт и личную информацию пользователей.

URL/URI: Универсальные указатели ресурсов

URL

URL (Uniform Resource Locator) и URI (Uniform Resource Identifier) часто используются как синонимы, хотя между ними есть небольшие различия. В основном URI является общим термином, который может идентифицировать любой ресурс, в то время как URL является подмножеством URI и указывает, как получить доступ к ресурсу.

Простым языком, URL - это сам веб-адрес, который вы вводите в браузер. Он состоит из нескольких частей: протокол (например, "http"), доменное имя (например, "example.com") и, возможно, путь к конкретному ресурсу на этом сайте (например, "/page1.html").

Важность URL заключается в том, что он предоставляет ясную и структурированную информацию о том, где находится определенный ресурс в сети Интернет и как получить к нему доступ.

Другие протоколы верхнего уровня

  • FTP (File Transfer Protocol): этот протокол используется для передачи файлов между компьютерами в сети. FTP может работать в "активном" или "пассивном" режимах, которые определяют, как устанавливается соединение.
  • SMTP (Simple Mail Transfer Protocol): SMTP используется для отправки электронной почты. Когда вы отправляете письмо, ваш почтовый клиент использует SMTP, чтобы передать его почтовому серверу.
  • POP3 (Post Office Protocol, version 3) и IMAP (Internet Message Access Protocol): это протоколы, которые используются почтовыми клиентами для получения сообщений с почтовых серверов. IMAP позволяет нескольким устройствам синхронизировать состояние почтового ящика, тогда как POP3 просто загружает письма на локальное устройство.
  • DNS (Domain Name System): хотя DNS часто не рассматривается как протокол верхнего уровня в строгом смысле, его функции жизненно важны для работы Интернета. DNS преобразует человеко-читаемые доменные имена (например, "example.com") в IP-адреса, которые компьютеры используют для идентификации друг друга в сети.
  • SSH (Secure Shell): протокол для безопасного удаленного управления системами и передачи данных. SSH шифрует своё соединение, чтобы предотвратить перехват или подмену передаваемых данных.
  • Telnet: Это старый протокол для удаленного управления системами, предшественник SSH. Сегодня его использование считается небезопасным, так как данные передаются в открытом виде без шифрования.

Эти протоколы представляют лишь малую часть множества протоколов, использующихся в сети Интернет. Однако именно они играют ключевую роль в повседневной работе многих интернет-сервисов.

Клиент-серверные приложения

client-server

С течением времени и по мере развития информационных технологий общепринятым способом организации и взаимодействия IT-систем стала клиент-серверная архитектура. В её основе лежит простая, но мощная концепция: разделение задач между поставщиком ресурсов (сервером) и его потребителем (клиентом). Подобное разделение позволяет создавать гибкие, масштабируемые и эффективные системы. В мире, где число устройств и приложений, подключённых к Интернету, растёт с каждым днем, понимание принципов работы клиент-серверных приложений становится ключевым для любого IT-специалиста, а потому необходимо сейчас и нам.

Что такое клиент-серверное приложение?

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

Преимущества клиент-серверной архитектуры

  • Распределение ресурсов: серверы могут быть оптимизированы для выполнения определенных задач, в то время как клиенты могут быть настроены на максимальную производительность пользовательского интерфейса.
  • Масштабируемость: добавление новых клиентов или усиление серверной части не требует изменений во всей системе.
  • Централизованное управление: серверные компоненты могут легко обновляться и поддерживаться, что позволяет проводить обновления без какого-либо воздействия на клиентов.

Как работают клиент-серверные приложения?

  1. Запрос: клиент отправляет запрос на сервер. Это может быть запрос на получение данных, обновление информации или выполнение какой-либо операции.
  2. Обработка: сервер получает запрос, обрабатывает его - например, извлекает данные из базы данных или выполняет какую-либо логику.
  3. Ответ: после обработки запроса сервер отправляет ответ обратно клиенту. Клиент интерпретирует этот ответ и предоставляет соответствующую информацию пользователю или выполняет соответствующее действие.

Примеры клиент-серверных приложений

  • Веб-приложения: ваш браузер действует как клиент, запрашивая веб-страницы и ресурсы с веб-серверов.
  • Электронная почта: приложения электронной почты получают и отправляют сообщения через серверы электронной почты.
  • Базы данных: клиентские приложения часто запрашивают данные у серверов баз данных.

Обязательно подписывайтесь на мой аккаунт dev.to и Telegram канал, скоро будет ещё больше контента: https://t.me/MainArthur

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay