Сетевая модель TCP/IP
Понятие сетевой модели, иногда также называемой сетевой архитектурой или сетевым планом, относится к исчерпывающему набору документов. По отдельности каждый документ описывает одну небольшую, необходимую для сети функцию; в совокупности эти документы определяют всё, что должно выполняться, чтобы компьютерная сеть могла работать. Одни документы определяют протокол, который представляет собой набор логических правил, которым устройства должны следовать при взаимодействии. В других документах определены физические требования к сети. Например, в каком-то документе могут быть определены уровни напряжения и тока, используемые на конкретном кабеле при передаче данных.
Вы можете представлять сетевую модель, как архитектурный проект для строительства дома. Вы конечно можете построить дом без плана. Но, тем не менее, план может гарантировать, что дом имеет правильный фундамент и структуру, позволяющие ему не упасть, и в нем есть правильные скрытые пространства для размещения коммуникаций водопровода, электричества, газа и т.д. Кроме того, множество разных людей, которые строят дом по чертежу (например, строители, электрики, каменщики, маляры и т.д.) знают, что если они следуют плану, их часть работы не должна создавать проблем для других рабочих.
Точно так же вы можете построить свою собственную сеть: написать собственное программное обеспечение, собрать свои собственные сетевые карты и так далее. Однако гораздо проще просто купить и использовать продукты, которые уже соответствуют какой-либо известной сетевой модели или плану. Поскольку производители сетевых продуктов создают их с учетом определенной сетевой модели, их продукты должны хорошо работать вместе.
Как мы пришли к TCP/IP
Сегодня в мире компьютерных сетей используется одна сетевая модель: TCP/IP. Однако мир не всегда был таким простым. Когда-то не существовало сетевых протоколов, включая TCP/IP. Производители создали первые сетевые протоколы; эти протоколы поддерживали только компьютеры конкретного производителя.
Например, IBM, компьютерная компания с самой большой долей на многих рынках в 1970-х и 1980-х годах, опубликовала свою сетевую модель Systems Network Architecture (SNA) в 1974 году. Другие производители также создали свои собственные проприетарные сетевые модели. В результате, если ваша компания покупала компьютеры трех производителей, сетевым инженерам часто приходилось создавать три разные сети на основе сетевых моделей, созданных каждой компанией, а затем каким-то образом соединять эти сети, что значительно усложняло объединенные сети. В левой части рисунка 1 показано общее представление о том, как могла бы выглядеть корпоративная сеть компании в 1980-х годах, до того, как TCP/IP стал обычным явлением в корпоративных объединенных сетях.
Хотя проприетарные сетевые модели, определяемые производителями, часто работают хорошо, наличие открытой сетевой модели, не зависящей от производителя, может способствовать конкуренции и снизить сложность. Международная организация по стандартизации (ISO) взяла на себя задачу создать такую модель, начав еще в конце 1970-х годов работу над так называемой сетевой моделью взаимодействия открытых систем (OSI, Open Systems Interconnection). ISO поставила перед моделью OSI благородную цель: стандартизировать сетевые протоколы передачи данных, чтобы обеспечить связь между всеми компьютерами на всей планете. Во время работы ISO над достижением этой амбициозной и благородной цели в процессе были задействованы участники из большинства технологически развитых стран мира.
Вторая, менее формальная попытка создать открытую, нейтральную по отношению к производителям открытую сетевую модель возникла в результате контракта Министерства обороны США (DoD, Department of Defense). Исследователи из различных университетов вызвались помочь в дальнейшей разработке протоколов, относящихся к исходной работе Министерства обороны США. Эти усилия привели к созданию конкурирующей открытой сетевой модели под названием TCP/IP.
В течение 1990-х годов компании начали добавлять OSI, TCP/IP или и то, и другое в свои корпоративные сети. Однако к концу 1990-х TCP/IP стал основным, и OSI отпала. Центральная часть рисунка 1 показывает общую идею корпоративных сетей того десятилетия – сети, построенные на нескольких сетевых моделях, но включающие TCP/IP.
Сейчас, в двадцать первом веке, доминирует TCP/IP. Проприетарные сетевые модели всё еще существуют, но в основном от них отказались в пользу TCP/IP. Модель OSI, развитие которой частично пострадало из-за более медленного официального процесса стандартизации по сравнению с TCP/IP, так и не добилось успеха на рынке. И TCP/IP, сетевая модель, изначально созданная почти целиком группой добровольцев, стала самой успешной сетевой моделью за всю историю, как показано на правой части рисунка 1.
В данной главе вы прочитаете о некоторых основах TCP/IP. Хотя вы узнаете некоторые интересные факты о TCP/IP, настоящая цель – помочь вам понять, что на самом деле представляет собой сетевая модель или сетевая архитектура, и как она работает.
Обзор сетевой модели TCP/IP
Модель TCP/IP определяет и опирается на большой набор протоколов, которые позволяют компьютерам обмениваться данными. Чтобы определить протокол, TCP/IP использует документы, называемые RFC (Requests For Comments) (вы можете найти эти RFC в Интернете с помощью любой поисковой системы). Модель TCP/IP также позволяет избежать повторения работы, уже проделанной другим органом по стандартизации или консорциумом производителей, просто ссылаясь на стандарты или протоколы, созданные этими группами. Например, Институт инженеров по электротехнике и электронике (IEEE) определяет локальные сети Ethernet; модель TCP/IP не определяет Ethernet в RFC, но в качестве дополнения ссылается на IEEE Ethernet.
Модель TCP/IP создает набор правил, который позволяет всем нам вынуть компьютер (или мобильное устройство) из коробки, подключить все нужные кабели, включить его, подключиться к сети и использовать ее. Вы можете использовать веб-браузер для подключения к любимому веб-сайту, использовать практически любое приложение, и всё это работает. Как? Что ж, операционная система на компьютере реализует части модели TCP/IP. Сетевая карта Ethernet или карта беспроводной локальной сети, встроенная в компьютер, реализует стандарты локальной сети, на которые ссылается модель TCP/IP. Проще говоря, производители, создавшие аппаратное и программное обеспечение, реализовали TCP/IP.
Чтобы помочь людям понять сетевую модель, каждая модель разбивает функции на небольшое количество категорий, называемых уровнями. Каждый уровень включает в себя протоколы и стандарты, относящиеся к своей категории функций. Данное разбиение показано на рисунке 2.
Модель TCP/IP показывает общие термины и уровни, используемые сегодня, когда люди говорят о TCP/IP.
Нижний (физический) уровень фокусируется на том, как передавать биты по каждому отдельному каналу.
Канальный уровень ориентирован на отправку данных по одному типу физического канала: например, сети используют отличающиеся протоколы канала передачи данных для локальных сетей Ethernet по сравнению с беспроводными локальными сетями.
Сетевой (межсетевой) уровень фокусируется на доставке данных по всему пути от исходного компьютера-отправителя до конечного компьютера-получателя.
И два верхних уровня больше ориентированы на приложения, которым необходимо отправлять и получать данные.
ПРИМЕЧАНИЕ. В RFC 1122 используется несколько отличная четырехуровневая оригинальная версия модели TCP/IP (в которой физический и канальный уровни были объединены в уровень сетевого доступа), но и для реальных сетей, и для сегодняшней сертификации CCNA (2020 год, информация из «CCNA 200-301 Official Cert Guide» Уенделла Одома), используйте пятиуровневую модель, показанную здесь на рисунке 2.
Многие из вас уже слышали о нескольких протоколах TCP/IP (примеры, которых перечислены в таблице 1). Большинство протоколов и стандартов в этой таблице будут объяснены позже более подробно.
Уровень модели TCP/IP | Примеры протоколов | |
---|---|---|
Прикладной уровень (уровень приложений) | Система имен | DNS |
Конфигурация узла | BOOTP, DHCP | |
Электронная почта | SMTP, POP, IMAP | |
Передача файлов | FTP, TFTP | |
Веб | HTTP | |
Транспортный уровень | TCP, UDP | |
Сетевой (межсетевой) уровень | IP, NAT | |
Поддержка IP | ICMP | |
Протоколы маршрутизации | OSPF, EIGRP | |
Уровень сетевого доступа (канальный уровень и физический уровень) | ARP, PPP, Ethernet, 802.11 (Wi-Fi) |
Далее в этой главе мы более подробно рассмотрим уровни модели TCP/IP.
В каком порядке выполняются уровни TCP/IP?
Пару дней назад ничего про это не знал. Сейчас есть представление всего по отдельности, но не могу связать в одну картину. Везде информация именно по частным. Вот, спасибо всем, кто откликнется.
Маршрутизаторы (роутеры) умеют работать с IP-адресами (и зачастую даже с TCP/UDP), а устройства, которые не умеют, именуются коммутаторами (свитчами)
Каждый уровень — это дополнительные байты, в которые «заворачивается» пакет. Обычно эти уровни изучают просто для понимания сети. Практически красиво говорить о пакетах можно только с опорой на конкретный массив байт — тогда можно нарисовать что есть что. Практически — обычному пользователю такие данные не нужны.
Спасибо за прекрасный вопрос. К сожалению, развёрнутый ответ занял бы слишком много места, поэтому рекомендую почитать «Компьютерные сети» Олиферов в части IP. Их можно найти в сканированном виде, издание роли не играет. А сокеты — это программная абстракция для связи приложения с системой, и они бывают разные: IP-сокеты (в т.ч. TCP- и UDP-сокеты); raw-сокеты; IPX-сокеты и т.д. и т.д. См. также man 2 socket .
1 ответ 1
Разберем её сверху-вниз. 7 — прикладной уровень (HTTP). HTTP содержит поля, которые позволяют сделать «валидацию» пакета, одно из них Content-Length (не всегда), например, отвечает за то, что пакет целый. Если пакеты все не получены — то приложение знает что пакет битый, и чаще всего битые пакеты не пропускает. Ещё важная функция HTTP протокола в том, что HTTP-пакеты отправляясь по сокету, могут быть разбиты на несколько частей, и именно HTTP протокол может гарантировать что пакет не битый и полный.
4 Дальше HTTP пакет передается через сокет библиотеку. Сокет формирует TCP пакеты. У этого вида пакетов есть «особенность» — нумерация. Длинный пакет разбивается на несколько мелких, и потом пакет собирается обратно. этот механизм обеспечивает библиотека сокета. Но библиотека не проверяет полностью пришел пакет или частично. Вариант что пол-пакета пришло сейчас, а пол-пакета через 5 секунд — норма. Теперь в пакет добавлен порт и контрольная сумма. TCP гарантирует что пакет не битый, но не гарантирует что пакет полный. Детальнее про TCP http://ru.wikipedia.org/wiki/Transmission_Control_Protocol (P.S. WS WebSocket сюда не относится, он выше даного уровня, его тоже в 7-ку)
3 Сетевой уровень. К TCP пакету добавляется одна из IP обверток (IPv4 или IPv6) и передается.. на уровень 2.
2 К пакету подшивается МАС и другая информация, потом пакет отправляется либо компу либо комутатору.
Теперь о маршрутизаторах (коммутаторах).
- хабы (L1) — просто повторяют пакеты всем. Ориентируются только на длинну пакета и номер кабеля отправителя (давно не изготавливаются, сегодня большая редкость).
- неуправляемый комутатор (свич, L2) — повторяют пакеты сначала всем, потом прослеживают на каком кабеле активен мак, и отправляют пакеты конкретному маку на кабель. Ориентируются только по MAC
- управляемый комутатор (свич, L3 комутатор, разг. циско) — может иметь свой ip может не иметь, чаще программируемый, умеет разбирать tcp/ip пакеты. Ориентируясь на маску подсети распределяет пакет в одном из направлений. Понимает ARP протокол, с помощью него корректирует таблицы маков близ-находящихся компов. Ориентируются как по МАС так и по IP.
Думаю интересен вопрос — а как же интернет — если вы отправляете пакет на 123.45.67.89 например, то ваш пакет может пройти и сотню коммутаторов. Первые будут все маски кроме локальных (10.х.х.х и 192.168.х.х 172.16.x.x ссылка часные IP) футболить на кабель провайдеру. Провайдер по первым двум-трем цифррам определяет допустим направление, и отправляет по новому маку — в направление, за тем вырисовывается страна, потом уточняется район, и так далее (при этом вскрывается уровень 3 что б определить IP). Сколько комутаторов проходит пакет — на практике не извесно, поскольку комутаторы блокируют попытки их обнаружить, да и их к-во на один и тот же ip может быть разное. Упустил, в интернете нет адресов 10.х.х.х и определенные программы (прокси) меняют IP адрес на на интернетовский (чаще всего это делает сам провайдер). В интернете передача данных идет по-общим (не локальным) адресам.
На низком уровне соответствие МАС и IP назначается с использованием ARP-протокола. Прямо каждому IP присваивать соответсвие МАС — не нужно, для этого используются маски-подсети. Роутеры хранят по одной паре МАС-IP только близкорасположеных компьютеров, остальное — по маскам.