Про сетевую модель TCP/IP (Transmission Control Protocol/Internet Protocol) любят спрашивать на собеседованиях и в описании вакансий на должность программиста, DevOps-инженера можно часто встретить данную модель.
Название данной модели происходит от двух популярных протоколов: протокол транспортного уровня TCP с подтверждением доставки и логического адреса, IP-адреса.
История и происхождение
Модель TCP/IP была предложена в 1974 году, ещё до модели OSI. В наше время интернет взаимодействует именно по модели TCP/IP а не OSI (Open System Interconnection).
- OSI разрабатывалась Международной организацией по стандартизации (ISO) как теоретическая модель. Её цель — обеспечение совместимости оборудования разных производителей.
- TCP/IP развивалась как основа для практического стека протоколов, стал стандартом для интернета благодаря своей гибкости и способности адаптироваться к реальным потребностям.
1 января 1983 года сеть ARPANET полностью перешла на TCP/IP — эта дата считается днём рождения интернета.
Стоит сказать пару слов про ARPANET — первая в мире компьютерная сеть, разработанная США в 1969 году для военных и исследовательских целей.
TCP/IP
TCP/IP — это набор сетевых протоколов которые описывают на практике взаимодействие устройств в сети. Лежит в основе интернета.
Данная модель состоит из 4 уровней. Сразу видны отличия от модели OSI. В TCP/IP сеансовый уровень и уровень представления интегрированы в прикладной уровень. Подразумевая, что на прикладные программы ложатся функции по обеспечению сеансов связи и представления данных в правильной кодировке. Физический уровень является частью канального. Канальный уровень в TCP/IP также называют уровнем доступа к сети.
Канальный уровень
Отвечает за физическую передачу данных в локальной сети, для идентификации устройств используются MAC-адреса. MAC-адрес есть у каждого устройства по умолчанию, его присваивает на производстве производитель сетевого оборудования, подробнее про MAC-адрес в следующей статье.
Протоколы:
- Ethernet — это протокол, который предоставляет физическую и канальную оболочку для передачи данных, а TCP/IP определяет протоколы, используемые для управления этой передачей.
- Wi-Fi — это протокол по которому передаются данные по сети без проводов (Wireless).
- MAC (Media Access Control) — физический адрес устройства, который изначально вшит производителем в сетевой интерфейс.
- PPP (Point-to-Point Protocol) — является протоколом канального уровня в TCP/IP модели, который используется для установления прямых связей между двумя узлами сети.
Сетевой уровень
Обеспечивает передачу пакетов в глобальной сети (можно ещё сказать обеспечивает маршрутизацию пакетов между сетями). Присваивает устройствам уникальные IP-адреса и определяет оптимальный маршрут передачи данных.
Протоколы:
- IP (IPv4, IPv6) — логический адрес для идентификации устройств в глобальной сети. Есть два вида v4 и v6. В v4 для представления IP используется 32 бита, это позволяет создать 4,3 миллиарда уникальных адресов. В v6 для представления IP используется 128 бит, это позволяет создать 2^128 уникальных адресов, решив тем самым проблему с нехваткой адресов.
- ICMP (Internet Control Message Protocol) — это сетевой протокол для передачи диагностических сообщений между устройствами в сети.
- ARP (Address Resolution Protocol) — это сетевой протокол, предназначенный для определения соответствия между логическим IP-адресом и физическим MAC-адресом.
Транспортный уровень
Необходим для управления передачей данных между прикладными программами.
При отправке данных есть две проблемы:
- Пакеты, отправленные раньше, могут дойти до получателя позже (в неправильном порядке).
- Пакеты могут не дойти до получателя.
TCP гарантирует, что все данные дойдут до получателя в правильном порядке. В этом его главное отличие от UDP. Если подтверждение доставки (ACK) не получено в течение тайм-аута, значит, либо пакет не дошёл до хоста, либо подтверждение потерялось — в любом случае TCP повторяет отправку. TCP используют в приложениях, где надёжность важнее скорости доставки сегментов.
Протоколы:
- TCP (Transmission Control Protocol) — протокол с предварительным установлением соединения, доставка данных с подтверждением получения.
- UDP (User Datagram Protocol) — протокол без предварительного установления соединения, доставка данных без подтверждения получения.
Прикладной уровень
Уровень работы прикладных программ которыми мы каждый день пользуемся. Эти программы имеют свои собственные протоколы обмена информацией
Протоколы:
- HTTP/HTTPS (HyperText Transfer Protocol/Secure) — это протоколы передачи данных в интернете, где HTTPS защищённая версия с шифрованием через SSL/TLS.
- DNS (Domain Name System) — это протокол преобразования доменных имён в IP-адреса и наоборот
- FTP (File Transfer Protocol) — это протокол передачи файлов между компьютерами через сеть, позволяющий загружать и скачивать данные с серверов.
- SMTP (Simple Mail Transfer Protocol) — это сетевой протокол для отправки и маршрутизации электронной почты между серверами и клиентами.
- Telnet — это сетевой протокол для удалённого управления компьютерами и устройствами через текстовый терминал по TCP/IP. В наши дни уже устаревший, так как передаёт данные в открытом виде, без шифрования. Рекомендуется использовать SSH.
- SSH (Secure Shell) — это защищённый сетевой протокол прикладного уровня, предназначенный для безопасного удалённого доступа
В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту, например:
- HTTP на TCP-порт 80 или 8080;
- FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд);
- SSH на TCP-порт 22;
- запросы DNS на порт UDP (реже TCP) 53;
- обновление маршрутов по протоколу RIP на UDP-порт 520.
Про порты и их распределение ответственная организация IANA (Internet Assigned Numbers Authority) — это организация, которая управляет ключевыми ресурсами интернета, включая IP-адреса, домены верхнего уровня и параметры интернет-протоколов.
Понимание сетевой модели TCP/IP помогает нам лучше понять взаимодействие устройств в сетях.
В следующих статьях будут подробно рассмотрены протоколы начиная с прикладного уровня.