Конспект лекции 12. Модель TCP/IP.
Описание
Модель TCP/IP - сетевая модель для управления передачей данных, которые представлены в цифровом виде.
Эта модель описывает способ передачи данных от одного устройства к другому.
Документом, регламентирующим уровневую архитектуру модели и описывающий все протоколы, входящие в TCP/IP, является RFC 1122.
Проблематика
Модель OSI имеет замечательную теоретическую проработку, но именно из-за большого количества теории она не может существовать в реальности: много уровней и задач сильно перегружают архитектуру, и задача построения компьютерной сети начинает требовать много ресурсов.
Для того, чтобы облегчить и обобщить задачу построения КС, была придумана модель TCP/IP. Название происходит от самых используемых протоколов этой модели.
Эта модель была принята как стандарт де-факто (негласно). Не смотря на это, данная модель является основой для архитектуры сети Интернет.
История...
Стек протоколов TCP/IP был создан на основе NCP (Network Control Protocol) группой разработчиков под руководством Винтона Серфа в 1972 году. В июле 1976 года Винт Серф и Боб Кан впервые продемонстрировали передачу данных с использованием TCP по трём различным сетям. Пакет прошёл по следующему маршруту: Сан-Франциско — Лондон — Университет Южной Калифорнии. К концу своего путешествия пакет проделал 150 тысяч км, не потеряв ни одного бита. В 1978 году Серф, Джон Постел и Дэнни Кохэн[en] решили выделить в TCP две отдельные функции: TCP и IP (англ. Internet Protocol, межсетевой протокол). TCP был ответственен за разбивку сообщения на датаграммы (англ. datagram) и соединение их в конечном пункте отправки. IP отвечал за передачу (с контролем получения) отдельных датаграмм. Вот так родился современный протокол Интернета. А с 1 января 1983 года ARPANET перешла на новый протокол. Этот день принято считать официальной датой рождения Интернета.
Выделяемые уровни
На рисунке представлена модель TCP/IP в сравнении с моделью OSI.
Уровень доступа к сети (или Канальный уровень)
Канальный уровень описывает способ кодирования данных для передачи пакета данных на физическом уровне (то есть специальные последовательности бит, определяющих начало и конец пакета данных, а также обеспечивающие помехоустойчивость). Ethernet, например, в полях заголовка пакета содержит указание того, какой машине или машинам в сети предназначен этот пакет (MAC-адрес).
Канальный уровень иногда разделяют на 2 подуровня — LLC и MAC.
- Logical Link Control (верхний) - подуровень управления логической связью. В его задачи входит управление передачей данных и обеспечение проверки и правильности передачи информации.
- Media Access Control (нижний) - подуровень управления доступом к физической среде. Обеспечивает адресацию и механизмы управления доступом к каналам.
Кроме того, канальный уровень описывает среду передачи данных.
Уровень сети Интернет (или Межсетевой уровень)
Межсетевой уровень предназначен для передачи пакета из одной сети в другую.
На этом уровне работают маршрутизаторы, которые перенаправляют пакеты в нужную сеть путём расчёта адреса сети по маске сети.
Межсетевое взаимодействие — это основной принцип построения интернета. Локальные сети по всему миру объединены в глобальную, а передачу данных между этими сетями осуществляют магистральные и пограничные маршрутизаторы.
Транспортный уровень
Протоколы транспортного уровня могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные. Два главных транспортных протокола - TCP и UDP.
- TCP - «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.
- UDP - протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.
На транспортном уровне появляется понятие «порт». Для передачи данных между процессами устройства (например, передача сообщения из одного приложения «вконтакте» другому приложению «вконтакте») недостаточно знать только IP-адрес и его маску. Ещё необходимо знать, какому процессу адресован пакет данных.
Для передачи пакетов между процессами было принято выделить на каждом хосте виртуальные порты, которые могут прослушиваться процессами.
Порт - это число от 0 до 65535, которое присваивается процессу на время. Порт чем-то похож на кабинку, которую можно занять определённой программе (ну а совокупность портов можно представить как гостиницу).
Порт порт так же может определять, какой протокол используется на прикладном уровне.
Порты выделяются как для TCP, так и для UDP (т.е. порты для одного протокола не пересекаются с портами другого).
Прикладной уровень предназначен для работы сетевых приложений. Для обмена информацией они используют свои протоколы, например: протокол HTTP для обмена гипертекстовой разметкой, протокол FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие.
В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту, например:
- HTTP на TCP-порт 80 или 8080;
- FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд);
- SSH на TCP-порт 22;
- запросы DNS на порт UDP (реже TCP) 53.
С этим уровнем взаимодействует пользователь. Поэтому протоколы на этом уровне могут разрабатывать и прикладные программисты.
Стек протоколов
Стек - это структурированный последовательно набор значений. В нашем случае, это структурированный список протоколов модели.
Для удобства определим протоколы по каждому уровню.
- Нижний уровень сетевых интерфейсов включает в себя Ethernet, Wi-Fi и DSL (модем). Данные сетевые технологии формально не входят в состав стека, но крайне важны в работе интернета в целом.
- Основной протокол сетевого уровня – IP (Internet Protocol). Это маршрутизированный протокол, частью которого является адресация сети (IP-адрес). Здесь также работают такие дополнительные протоколы, как ICMP, ARRP и DHCP. Они обеспечивают работу сетей.
- 7.На транспортном уровне расположились TCP – протокол, обеспечивающий передачу данных с гарантией доставки, и UDP – протокол для быстрой передачи данных, но уже без гарантии.
- Прикладной уровень – это HTTP (для web), SMTP (передача почты), DNS (назначение IP-адресам понятных доменных имен), FTP (передача файлов). Протоколов на прикладном уровне стека TCP/IP больше, но приведённые можно назвать самыми значимыми для рассмотрения.
Протоколы этих уровней полностью реализуют функциональные возможности модели OSI. На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных, благодаря чему, в частности, обеспечивается полностью прозрачное взаимодействие между проводными и беспроводными сетями.
Таким образом, любой пакет содержит в себе стек используемых протоколов, который собирается при отправке, и в обратном порядке разбирается (подобно структуре «стек» в программировании).