Теория:Сетевая модель TCP/IP

Материал из MikroTik Wiki

Стек протоколов TCP/IP — набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет. Название TCP/IP происходит из двух наиважнейших протоколов семейства — Transmission Control Protocol (TCP) и Internet Protocol (IP), которые были разработаны и описаны первыми в данном стандарте. Также изредка упоминается как модель DOD в связи с историческим происхождением от сети ARPANET из 1970 годов (под управлением DARPA, Министерства обороны США).

В июле 1977 Винт Серф и Боб Кан впервые продемонстрировали передачу данных с использованием TCP по трем различным сетям. Пакет прошел по следующему маршруту: Сан-Франциско — Лондон — Университет Южной Калифорнии. В конце своего путешествия пакет проделал 150 тысяч км, не потеряв ни одного бита. В 1978 году Серф, Постел и Дэни Кохэн решили выделить в TCP две отдельные функции: TCP и протокол Интернета (Internet Protocol, IP). TCP был ответственен за разбивку сообщения на дейтаграммы и соединение их в конечном пункте отправки. IP отвечал за передачу (с контролем получения) отдельных дейтаграмм. Вот так родился современный протокол Интернета. А 1 января 1983 года ARPANET перешла на новый протокол. Этот день принято считать официальной датой рождения Интернета.

Протоколы работают друг с другом в стеке (stack, стопка) — это означает, что протокол, располагающийся на уровне выше, работает «поверх» нижнего, используя механизмы инкапсуляции. Например, протокол TCP работает поверх протокола IP.

Стек протоколов TCP/IP включает в себя четыре уровня:

  • прикладной уровень (application layer),
  • транспортный уровень (transport layer),
  • сетевой уровень (Internet layer),
  • канальный уровень (link layer).

Протоколы этих уровней полностью реализуют функциональные возможности модели OSI. На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных.

Уровни стека TCP/IP

Распределение протоколов по уровням модели TCP/IP
1 Прикладной
(Application layer)
напр., HTTP, RTSP, FTP, DNS
2 Транспортный

(Transport layer)

напр., TCP, UDP, SCTP, DCCP
(RIP, протоколы маршрутизации, подобные OSPF, что работают поверх IP, являются частью сетевого уровня)
3 Сетевой

(Internet layer)

Для TCP/IP это IP
(вспомогательные протоколы, вроде ICMP и IGMP, работают поверх IP, но тоже относятся к сетевому уровню; протокол ARP является самостоятельным вспомогательным протоколом, работающим поверх канального уровня)
4 Канальный

(Link layer)

Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM и MPLS, физическая среда и принципы кодирования информации, T1, E1

Прикладной уровень

На прикладном уровне (Application layer) работает большинство сетевых приложений.

Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP для WWW, FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие.

В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту, например:

  • HTTP на TCP-порт 80 или 8080,
  • FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд),
  • SSH на TCP-порт 22,
  • запросы DNS на порт UDP (реже TCP) 53,
  • обновление маршрутов по протоколу RIP на UDP-порт 520.

Эти порты определены Агентством по выделению имен и уникальных параметров протоколов (IANA).

К этому уровню относятся: DHCP, Echo, Finger, Gopher, HTTP, HTTPS, IMAP, IMAPS, IRC, NNTP, NTP, POP3, POPS, QOTD, RTSP, SNMP, SSH, Telnet, XDMCP.

Транспортный уровень

Протоколы транспортного уровня (Transport layer) могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные.

Протоколы автоматической маршрутизации, логически представленные на этом уровне (поскольку работают поверх IP), на самом деле являются частью протоколов сетевого уровня; например OSPF (IP идентификатор 89).

TCP (IP идентификатор 6) — «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.

UDP (IP идентификатор 17) протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.

UDP обычно используется в таких приложениях, как потоковое видео и компьютерные игры, где допускается потеря пакетов, а повторный запрос затруднён или не оправдан, либо в приложениях вида запрос-ответ (например, запросы к DNS), где создание соединения занимает больше ресурсов, чем повторная отправка.

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

Список портов TCP и UDP

Сетевой уровень

Сетевой уровень (Internet layer) изначально разработан для передачи данных из одной (под)сети в другую. Примерами такого протокола является X.25 и IPC в сети ARPANET.

С развитием концепции глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны, например в протоколе ICMP (используется для передачи диагностической информации IP-соединения) и IGMP (используется для управления multicast-потоками).

ICMP и IGMP расположены над IP и должны попасть на следующий — транспортный — уровень, но функционально являются протоколами сетевого уровня, и поэтому их невозможно вписать в модель OSI.

Пакеты сетевого протокола IP могут содержать код, указывающий, какой именно протокол следующего уровня нужно использовать, чтобы извлечь данные из пакета. Это число — уникальный IP-номер протокола. ICMP и IGMP имеют номера, соответственно, 1 и 2.

К этому уровню относятся: DVMRP, ICMP, IGMP, MARS, PIM, RIP, RIP2, RSVP

Канальный уровень

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

Примеры протоколов канального уровня — Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM и MPLS.

PPP не совсем вписывается в такое определение, поэтому обычно описывается в виде пары протоколов HDLC/SDLC.

MPLS занимает промежуточное положение между канальным и сетевым уровнем и, строго говоря, его нельзя отнести ни к одному из них.

Канальный уровень иногда разделяют на 2 подуровня — LLC и MAC.

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

Сравнение с моделью OSI

Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.

К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между канальным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.

Вот как традиционно протоколы TCP/IP вписываются в модель OSI:

Распределение протоколов по уровням модели OSI
TCP/IP OSI
7 Прикладной Прикладной напр., HTTP, SMTP, SNMP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP
6 Представления напр., XDR, AFP, TLS, SSL
5 Сеансовый напр., ISO 8327 / CCITT X.225, RPC, NetBIOS, PPTP, L2TP, ASP
4 Транспортный Транспортный напр., TCP, UDP, SCTP, SPX, ATP, DCCP, GRE
3 Сетевой Сетевой напр., IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP, ARP
2 Канальный Канальный напр., Ethernet, Token ring, HDLC, PPP, X.25, Frame relay, ISDN, ATM, SPB, MPLS
1 Физический напр., электрические провода, радиосвязь, волоконно-оптические провода, инфракрасное излучение

Обычно в стеке TCP/IP верхние 3 уровня модели OSI (прикладной, представительский и сеансовый) объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.

Описание модели TCP/IP в технической литературе

В модели TCP/IP (в отличие от модели OSI) — физический уровень никак не описывается. Тем не менее, в некоторых учебниках, для лучшего понимания, описывается "гибридная модель TCP/IP - OSI" из 5 уровней, содержащая дополнительный — физический уровень.

Следующая таблица показывает различные вариации в описании модели TCP/IP. Количество уровней варьируется от трёх до семи.

Kurose, Comer, Stallings Tanenbaum RFC 1122, Internet STD 3 (1989) Cisco Academy Mike Padlipsky's 1982 "Arpanet Reference Model" (RFC 871) OSI model
Пять уровней Четыре + 1 уровень Пять уровней Пять уровней Четыре уровня Четыре уровня Три уровня Семь уровней
"Five-layer Internet model" or "TCP/IP protocol suite" "TCP/IP 5-layer reference model" "TCP/IP model" "TCP/IP 5-layer reference model" "Internet model" "Internet model" "Arpanet reference model" OSI model
Application Application Application Application Application (Прикладной) Application Application/Process Application
Presentation
Session
Transport Transport Host-to-host or transport Transport Transport (Транспортный) Transport Host-to-host Transport
Network Internet Internet Internet Internet (Сетевой) Internetwork Network
Data link Data link (Network interface) Network access Data link Link (Канальный) Network interface Network interface Data link
Physical (Hardware) Physical Physical Physical

Некоторые из моделей в приведённой таблицы взяты из учебников, которые являются вторичными источниками и могут расходиться с RFC 1122 и другими IETF первоисточниками.