Материал из PL Engineering
Стек протоколов TCP/IP — собирательное название для сеевых протоколов разных уровней, используемых в сетях. Слово «стек» подразумевает, что протокол TCP работает поверх IP.
В модели OSI данный стек занимает (реализует) все уровни и делится сам на 4 уровня: прикладной, транспортный, межсетевой, уровень доступа к сети (в OSI это уровни — физический, канальный и частично сетевой). На стеке протоколов TCP/IP построено всё взаимодействие пользователей в сети, от программной оболочки до канального уровня модели OSI. По сути это база, на которой завязано всё взаимодействие. При этом стек является независимым от физической среды передачи данных.
Содержание |
Уровни стека TCP/IP
Существуют разногласия в том, как вписать Модель DOD|модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.
К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между транспортным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.
Вот как традиционно протоколы TCP/IP вписываются в модель OSI:
7 | Прикладной | NFS, RTSP, BGP |
6 | Представительный | XDR, ASN.1, Apple Filing Protocol|AFP |
5 | Сеансовый | RPC, NetBIOS, AppleTalk|ASP |
4 | Транспортный | ATP, DCCP, GRE (протокол)|GRE |
3 | Сетевой | RIP, IPX, DDP (протокол)|DDP |
2 | Канальный | PPP, HDLC, X.25, Frame relay, ISDN, ATM, MPLS, Wi-Fi, ARP, RARP |
1 | Физический | напр. Электричество, Радио, Оптоволокно |
Обычно в стеке TCP/IP верхние 3 уровня (Прикладной уровень|прикладной, Представительный уровень|представительный и Сеансовый уровень|сеансовый) модели OSI объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению. Упрощенно интерпретацию стека TCP/IP можно представить так:
4 | Прикладной «7 уровень» | RIP, работающий поверх UDP, и BGP, работающий поверх TCP, являются частью сетевого уровня) |
3 | Транспортный | напр. TCP, UDP, RTP, SCTP, DCCP (протоколы маршрутизации, подобные OSPF, что работают поверх IP, являются частью сетевого уровня) |
2 | Сетевой | Для TCP/IP это IP (IP) (вспомогательные протоколы, вроде ICMP и IGMP работают поверх IP, но являются частью сетевого уровня; ARP не работает поверх IP) |
1 | Физический | E1 |
Физический уровень
Физический уровень описывает среду передачи данных (будь то кабель, Оптоволокно или Радиоканал), физические характеристики такой среды и принцип передачи данных (Разделение каналов, Модуляция|модуляцию, амплитуду сигналов, частоту сигналов, способ синхронизации передачи, время ожидания ответа и максимальное расстояние).
Канальный уровень
Канальный уровень описывает, каким образом передаются Пакет данных|пакеты данных через физический уровень, включая кодирование (то есть специальные последовательности битов, определяющих начало и конец пакета данных). Ethernet, например, в полях Заголовок пакета|заголовка пакета содержит указание того, какой машине или машинам в сети предназначен этот пакет.
Примеры протоколов канального уровня — Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM и MPLS.
PPP (сетевой протокол)|PPP не совсем вписывается в такое определение, поэтому обычно описывается в виде пары протоколов HDLC/SDLC.
MPLS занимает промежуточное положение между канальным и сетевым уровнем и, строго говоря, его нельзя отнести ни к одному из них.
Канальный уровень иногда разделяют на 2 подуровня — LLC и MAC.
Сетевой уровень
Изначально разработан для передачи данных из одной (под)сети в другую. Примерами такого протокола является X.25 и IPC в сети ARPANET.
С развитием концепции Интернет|глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны, например в протоколе ICMP (используется для передачи диагностической информации IP-соединения) и IGMP (используется для управления Multicast-потоками).
ICMP и IGMP расположены над IP и должны попасть на следующий — транспортный — уровень, но функционально являются протоколами сетевого уровня, а поэтому их невозможно вписать в модель OSI.
Пакеты сетевого протокола IP могут содержать код, указывающий, какой именно протокол следующего уровня нужно использовать, чтобы извлечь данные из пакета. Это число — уникальный IP-номер протокола. ICMP и IGMP имеют номера, соответственно, 1 и 2.
Транспортный уровень
Протоколы транспортного уровня могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные.
Протоколы автоматической маршрутизации, логически представленные на этом уровне (поскольку работают поверх IP), на самом деле являются частью протоколов сетевого уровня; например OSPF (IP идентификатор 89).
TCP (IP идентификатор 6) — «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный Поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.
UDP (IP идентификатор 17) протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.
UDP обычно используется в таких приложениях, как потоковое видео и Компьютерные игры, где допускается потеря пакетов, а повторный запрос затруднён или не оправдан, либо в приложениях вида запрос-ответ (например, запросы к DNS), где создание соединения занимает больше ресурсов, чем повторная отправка.
И TCP, и UDP используют для определения протокола верхнего уровня число, называемое Порт .
Прикладной уровень
На прикладном уровне работает большинство сетевых приложений.
Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP для WWW, FTP (передача файлов), SMTP (Электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие.
В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту, например:
- HTTP на TCP-порт 80 или 8080,
- FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд),
- SSH на TCP-порт 22,
- запросы DNS на порт UDP (реже TCP) 53,
- обновление маршрутов по протоколу RIP2|RIP на UDP-порт 520.
Эти порты определены Агентством по выделению имен и уникальных параметров протоколов (IANA).
Бесспорно, к этому уровню относятся: DHCP, Echo, Протокол finger|Finger, Gopher (сетевой протокол)|Gopher, HTTP, HTTPS, IMAP, IMAPS, IRC, NNTP, NTP, POP3, POPS, QOTD, RTSP, SNMP, SSH, Telnet, XDMCP.