TCP/IP
TCP/IP — сетевая модель передачи данных, представленных в цифровом виде. Модель описывает способ передачи данных от источника информации к получателю. В модели предполагается прохождение информации через четыре уровня, каждый из которых описывается правилом (протоколом передачи). Наборы правил, решающих задачу по передаче данных, составляют стек протоколов передачи данных, на которых базируется Интернет[1][2]. Название TCP/IP происходит из двух важнейших протоколов семейства — Transmission Control Protocol (TCP) и Internet Protocol (IP), которые были первыми разработаны и описаны в данном стандарте. Также изредка упоминается как модель DOD (Department of Defense)[3] в связи с историческим происхождением от сети ARPANET из 1970-х годов (под управлением DARPA, Министерства обороны США[4]).
Набор интернет-протоколов обеспечивает сквозную передачу данных, определяющую, как данные должны пакетироваться, обрабатываться, передаваться, маршрутизироваться и приниматься. Эта функциональность организована в четыре слоя абстракции, которые классифицируют все связанные протоколы в соответствии с объёмом задействованных сетей. От самого низкого до самого высокого уровня — это уровень связи, содержащий методы связи для данных, которые остаются в пределах одного сегмента сети; интернет-уровень, обеспечивающий межсетевое взаимодействие между независимыми сетями; транспортный уровень, обрабатывающий связь между хостами; и прикладной уровень, который обеспечивает обмен данными между процессами для приложений.
Развитием архитектуры Интернета и протоколов в модели TCP/IP занимается открытое международное сообщество проектировщиков IETF.
История[править | править код]
Стек протоколов TCP/IP был создан на основе NCP (Network Control Protocol) группой разработчиков под руководством Винтона Серфа в 1972 году. В июле 1976 года Винт Серф и Боб Кан впервые продемонстрировали передачу данных с использованием TCP по трём различным сетям. Пакет прошёл по следующему маршруту: Сан-Франциско — Лондон — Университет Южной Калифорнии. К концу своего путешествия пакет проделал 150 тысяч км, не потеряв ни одного бита. В 1978 году Серф, Джон Постел и Дэнни Кохэн решили выделить в TCP две отдельные функции: TCP и IP (англ. Internet Protocol, межсетевой протокол). TCP был ответственен за разбивку сообщения на датаграммы (англ. datagram) и соединение их в конечном пункте отправки. IP отвечал за передачу (с контролем получения) отдельных датаграмм. Вот так родился современный протокол Интернета. А с 1 января 1983 года ARPANET перешла на новый протокол. Этот день принято считать официальной датой рождения Интернета.
Формальная спецификация и стандарты[править | править код]
Технические стандарты, лежащие в основе набора TCP/IP протоколов, были переданы Инженерному совету Интернета (IETF).
Характеристикой архитектуры Internet Protocol Suite является широкое разделение на рабочие области для протоколов, составляющих его основную функциональность. Определяющей спецификацией пакета является RFC 1122, которая в общих чертах описывает четыре уровня абстракции[5][6]. Они выдержали испытание временем, поскольку IETF никогда не изменяла эту структуру. Как таковая модель сети TCP/IP предшествует модели OSI, более всеобъемлющей эталонной структуре для общих сетевых систем.
Уровни стека TCP/IP[править | править код]
Стек протоколов TCP/IP включает в себя четыре уровня[6]:
- Прикладной уровень (Application Layer),
- Транспортный уровень (Transport Layer),
- Межсетевой уровень (Сетевой уровень[7]) (Internet Layer),
- Канальный уровень (Network Access Layer).
Протоколы этих уровней полностью реализуют функциональные возможности модели OSI. На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных, благодаря чему, в частности, обеспечивается полностью прозрачное взаимодействие между проводными и беспроводными сетями.
Прикладной (Application Layer) |
напр., HTTP, RTSP, FTP, DNS |
Транспортный
(Transport Layer) |
напр., TCP, UDP, SCTP, DCCP (RIP, протоколы маршрутизации, подобные OSPF, что работают поверх IP, являются частью сетевого уровня) |
Сетевой (Межсетевой)
(Network Layer) |
Для TCP/IP это IP (вспомогательные протоколы, вроде ICMP и IGMP, работают поверх IP, но тоже относятся к сетевому уровню; протокол ARP является самостоятельным вспомогательным протоколом, работающим поверх канального уровня) |
Уровень сетевого доступа (Канальный)
(Link Layer) |
Ethernet, IEEE 802.11, WLAN, SLIP, Token Ring, ATM и MPLS, физическая среда и принципы кодирования информации, T1, E1 |
Прикладной уровень[править | править код]
На прикладном уровне (Application layer) работает большинство сетевых приложений.
Эти программы имеют свои собственные протоколы обмена информацией, например, интернет браузер для протокола HTTP, ftp-клиент для протокола 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).
К этому уровню относятся: 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 используют для определения протокола верхнего уровня число, называемое портом.
Сетевой (межсетевой) уровень[править | править код]
Межсетевой уровень (Network 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 WLAN, SLIP, Token Ring, ATM и MPLS.
PPP не совсем вписывается в такое определение, поэтому обычно описывается в виде пары протоколов HDLC/SDLC.
MPLS занимает промежуточное положение между канальным и сетевым уровнем и, строго говоря, его нельзя отнести ни к одному из них.
Канальный уровень иногда разделяют на 2 подуровня — LLC и MAC.
Кроме того, канальный уровень описывает среду передачи данных (будь то коаксиальный кабель, витая пара, оптическое волокно или радиоканал), физические характеристики такой среды и принцип передачи данных (разделение каналов, модуляцию, амплитуду сигналов, частоту сигналов, способ синхронизации передачи, время ожидания ответа и максимальное расстояние).
При проектировании стека протоколов на канальном уровне рассматривают помехоустойчивое кодирование — позволяющие обнаруживать и исправлять ошибки в данных вследствие воздействия шумов и помех на канал связи.
Сравнение с моделью OSI[править | править код]
В разделе не хватает ссылок на источники (см. рекомендации по поиску). |
Три верхних уровня в модели OSI, то есть уровень приложения, уровень представления и уровень сеанса, отдельно не различаются в модели TCP/IP[4], которая имеет только прикладной уровень над транспортным уровнем. Хотя некоторые чистые приложения протокола OSI, такие как X.400, также объединяют их, нет требования, чтобы стек протокола TCP/IP должен накладывать монолитную архитектуру над транспортным уровнем. Например, протокол NFS-приложений работает через протокол представления данных External Data Representation (XDR), который, в свою очередь, работает по протоколу Remote Procedure Call (RPC). RPC обеспечивает надёжную передачу данных, поэтому он может безопасно использовать транспорт UDP с максимальным усилием.
Различные авторы интерпретировали модель TCP/IP по-разному и не согласны с тем, что уровень связи или вся модель TCP/IP охватывает проблемы первого уровня модели OSI (физический уровень) или предполагается, что аппаратный уровень ниже уровня канала.
Несколько авторов попытались включить слои 1 и 2 модели OSI в модель TCP/IP, поскольку они обычно упоминаются в современных стандартах (например, IEEE и ITU). Это часто приводит к модели с пятью слоями, где уровень связи или уровень доступа к сети разделяются на слои 1 и 2 модели OSI.
Усилия по разработке протокола IETF не касаются строгого расслоения. Некоторые из его протоколов могут не соответствовать чисто модели OSI, хотя RFC иногда ссылаются на неё и часто используют старые номера уровня OSI. IETF неоднократно заявлял, что разработка интернет-протокола и архитектуры не должна соответствовать требованиям OSI. В RFC 3439, адресованном интернет-архитектуре, содержится раздел, озаглавленный «Слой, считающийся вредным».
Например, считается, что уровни сеанса и представления пакета OSI включены в прикладной уровень пакета TCP/IP. Функциональность уровня сеанса можно найти в протоколах, таких как HTTP и SMTP, и более очевидна в таких протоколах, как Telnet и протокол инициации сеанса (SIP). Функциональность уровня сеанса также реализована с нумерацией портов протоколов TCP и UDP, которые охватывают транспортный уровень в наборе TCP/IP. Функции уровня представления реализуются в приложениях TCP/IP со стандартом MIME при обмене данными.
Конфликты очевидны также в оригинальной модели OSI, ISO 7498, когда не рассматриваются приложения к этой модели, например, ISO 7498/4 Management Framework или ISO 8648 Internal Organization of the Network layer (IONL). Когда рассматриваются документы IONL и Management Framework, ICMP и IGMP определяются как протоколы управления уровнем для сетевого уровня. Аналогичным образом IONL предоставляет структуру для «зависимых от подсетей объектов конвергенции», таких как ARP и RARP.
Протоколы IETF могут быть инкапсулированы рекурсивно, о чём свидетельствуют протоколы туннелирования, такие как Инкапсуляция общей маршрутизации (GRE). GRE использует тот же механизм, который OSI использует для туннелирования на сетевом уровне. Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.
К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между канальным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.
Вот как традиционно протоколы TCP/IP вписываются в модель 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 |
2 | Канальный | Канальный | напр., Ethernet, Token ring, HDLC, PPP, X.25, Frame relay, ISDN, ATM, SPB, MPLS, ARP |
1 | Физический | напр., электрические провода, радиосвязь, волоконно-оптические провода, инфракрасное излучение |
Обычно в стеке TCP/IP верхние 3 уровня модели OSI (прикладной, представления и сеансовый) объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.
Описание модели TCP/IP в технической литературе[править | править код]
В модели TCP/IP, в отличие от модели OSI, физический уровень никак не описывается. Тем не менее, в некоторых учебниках[7], для лучшего понимания, описывается «гибридная модель TCP/IP — OSI» из 5 уровней, содержащая дополнительный — физический уровень.
Следующая таблица показывает различные вариации в описании модели TCP/IP. Количество уровней варьируется от трёх до семи.
Kurose[8], Forouzan[9] | Comer[10], Kozierok[11] | Stallings[12] | Tanenbaum[13] | RFC 1122, Internet STD 3 (1989) | Cisco Academy[14] | 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-первоисточниками[15].
См. также[править | править код]
Примечания[править | править код]
- ↑ Модели OSI и TCP/IP Архивная копия от 2 октября 2017 на Wayback Machine. База знаний osLogic.ru
- ↑ Сетевые модели TCP/IP и OSI Архивная копия от 2 октября 2017 на Wayback Machine. Cisco Learning
- ↑ Васильев А. А., Телина И. С., Избачков Ю. С., Петров В. Н. Информационные системы: Учебник для вузов. — СПб.: Питер, 2010. — 544 с. — ISBN 978-5-49807-158-9.
- ↑ 1 2 Эндрю Кровчик, Винод Кумар, Номан Лагари и др. .NET сетевое программирование для профессионалов / пер. с англ. В. Стрельцов. — М.: Лори, 2005. — 400 с. — ISBN 1-86100-735-3. — ISBN 5-85582-170-2.
- ↑ RFC 1122, Requirements for Internet Hosts — Communication Layers, R. Braden (ed.), October 1989.
- ↑ 1 2 Чеппел Л. Титтел Э. TCP/IP. Учебный курс / Перевод с англ. Ю. Гороховский. — СПб.: БВХ-Петербург, 2003. — С. 29. — 976 с. — ISBN 5-94157-315-4.
- ↑ 1 2 Таненбаум Э. «Компьютерные Сети, пятое издание»
- ↑ James F. Kurose, Keith W. Ross, Computer Networking: A Top-Down Approach, 2008, ISBN 0-321-49770-8 . Дата обращения: 18 января 2014. Архивировано 23 января 2016 года.
- ↑ Behrouz A. Forouzan, Data Communications and Networking, 2003 . Дата обращения: 2 октября 2017. Архивировано 12 ноября 2016 года.
- ↑ Douglas E. Comer, Internetworking with TCP/IP: Principles, Protocols and Architecture, Pearson Prentice Hall 2005, ISBN 0-13-187671-6 . Дата обращения: 2 октября 2017. Архивировано 20 февраля 2022 года.
- ↑ Charles M. Kozierok, «The TCP/IP Guide», No Starch Press 2005 . Дата обращения: 20 мая 2022. Архивировано 2 февраля 2022 года.
- ↑ William Stallings, Data and Computer Communications, Prentice Hall 2006, ISBN 0-13-243310-9 . Дата обращения: 2 октября 2017. Архивировано 18 ноября 2016 года.
- ↑ Andrew S. Tanenbaum, Computer Networks, Prentice Hall 2002, ISBN 0-13-066102-3 . Дата обращения: 2 октября 2017. Архивировано 9 ноября 2016 года.
- ↑ Mark A. Dye, Rick McDonald, Antoon W. Rufi, Network Fundamentals: CCNA Exploration Companion Guide, 2007, ISBN 1-58713-208-7 . Дата обращения: 2 октября 2017. Архивировано 28 февраля 2022 года.
- ↑ R. Bush (December 2002), Some Internet Architectural Guidelines and Philosophy, Internet Engineering Task Force, Дата обращения: 18 января 2014
{{citation}}
: Недопустимый|ref=harv
(справка); Неизвестный параметр|coauthors=
игнорируется (|author=
предлагается) (справка) Источник . Дата обращения: 18 января 2014. Архивировано 11 марта 2018 года.
Литература[править | править код]
- Терри Оглтри. Модернизация и ремонт сетей = Upgrading and Repairing Networks. — 4-е изд. — М.: «Вильямс», 2005. — С. 1328. — ISBN 0-7897-2817-6.
- Дуглас Камер. Сети TCP/IP, том 1. Принципы, протоколы и структура = Internetworking with TCP/IP, Vol. 1: Principles, Protocols and Architecture. — М.: «Вильямс», 2003. — С. 880. — ISBN 0-13-018380-6.
- Семенов Ю. А. Протоколы Internet. — 2-е изд., стереотип.. — М.: Горячая линия - Телеком, 2005. — 1100 с. — 1150 экз. — ISBN 5-93517-044-2.
- Паркер Т., Сиян К. TCP/IP. Для профессионалов. — 3-е изд.. — СПб.: Питер, 2004. — 859 с. — 4000 экз. — ISBN 5-8046-0041-9.
Ссылки[править | править код]
- Официальный сайт IANA (англ.)
- IANA — идентификаторы протоколов (англ.)
- IANA — номера портов (англ.)
- RFC 1122 (англ.)
- RFC 793 (англ.) — TCP
- RFC 791 (англ.) — IP