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

Arthur Kh - Aug 13 '23 - - Dev Community

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

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

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

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

. . . . . . . . . . . . . . . .