TCP/IP — сетевая модель передачи данных, представленных в цифровом виде. Модель описывает способ передачи данных от источника информации к получателю. В модели предполагается прохождение информации через четыре уровня, каждый из которых описывается правилом (протоколом передачи). Наборы правил, решающих задачу по передаче данных, составляют стек протоколов передачи данных, на которых базируется Интернет. Название TCP/IP происходит из двух важнейших протоколов семейства — Transmission Control Protocol (TCP, протокол управления передачей) и Internet Protocol (IP, интернет-протокол), которые первыми были разработаны и описаны в данном стандарте.
Набор интернет-протоколов обеспечивает сквозную передачу данных, определяющую, как данные должны пакетироваться, обрабатываться, передаваться, маршрутизироваться и приниматься. Эта функциональность организована в четыре слоя абстракции, которые классифицируют все связанные протоколы в соответствии с объемом задействованных сетей. От самого низкого до самого высокого уровня - это уровень связи, содержащий методы связи для данных, которые остаются в пределах одного сегмента сети (ссылка); интернет-уровень, обеспечивающий межсетевое взаимодействие между независимыми сетями; транспортный уровень, обрабатывающий связь между хостами; и прикладной уровень, который обеспечивает обмен данными между процессами для приложений.
Стек протоколов TCP/IP включает в себя четыре уровня
- Прикладной уровень (Application Layer)
- Транспортный уровень (Transport Layer)
- Межсетевой уровень (Сетевой уровень) (Internet Layer)
- Уровень доступа к сети (Network Access Layer)
На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных, благодаря чему, в частности, обеспечивается полностью прозрачное взаимодействие между проводными и беспроводными сетями.
Уровень Протоколы Описание Application HTTP, FTP, SSH взаимодействие сети и пользователя - на данном уровне работает большинство сетевых приложений. Эти программы имеют свои собственные протоколы обмена информацией, например, интернет браузер для протокола HTTP, ftp-клиент для протокола FTP (передача файлов), почтовая программа для протокола SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие. Transport TCP, UDP определяют, для какого именно приложения предназначены данные - протоколы транспортного уровня (Transport layer) могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные. Network IP, ICMP, IC-MP определения пути передачи данных - межсетевой уровень (Internet layer) изначально разработан для передачи данных из одной сети в другую. На этом уровне работают маршрутизаторы, которые перенаправляют пакеты в нужную сеть путем расчета адреса сети по маске сети. С развитием концепции глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны Link ARP, Ethernet, Wi-Fi отвечает за доставку кадров между устройствами, подключенными к одному сетевому сегменту - канальный (физический) уровень (Link layer) описывает способ кодирования данных для передачи пакета данных на физическом уровне (то есть специальные последовательности бит, определяющих начало и конец пакета данных, а также обеспечивающие помехоустойчивость). Ethernet, например, в полях заголовка пакета содержит указание того, какой машине или машинам в сети предназначен этот пакет. Кроме того, канальный уровень описывает среду передачи данных (будь то коаксиальный кабель, витая пара, оптическое волокно или радиоканал), физические характеристики такой среды и принцип передачи данных (разделение каналов, модуляцию, амплитуду сигналов, частоту сигналов, способ синхронизации передачи, время ожидания ответа и максимальное расстояние).
Протокол верхнего (7-го) уровня сетевой модели OSI, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя иметь доступ к сетевым службам, таким, как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты.
3-й уровень сетевой модели OSI, предназначается для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как маршрутизатор.
Сетевой уровень отвечает на запросы обслуживания от Транспортного уровня и направляет запросы обслуживания на Канальный уровень. (от Transport на Link)
Протоколы данного уровня могут быть разделены на два класса: протоколы с установкой соединения и без него.
- Протоколы с установкой соединения начинают передачу данных с вызова или установки маршрута следования пакетов от источника к получателю. После чего начинают последовательную передачу данных и затем по окончании передачи разрывают связь.
- Протоколы без установки соединения посылают данные, содержащие полную адресную информацию в каждом пакете. Каждый пакет содержит адрес отправителя и получателя. Далее каждое промежуточное сетевое устройство считывает адресную информацию и принимает решение о маршрутизации данных. Письмо или пакет данных передается от одного промежуточного устройства к другому до тех пор, пока не будет доставлено получателю. Протоколы без установки соединения не гарантируют поступление информации получателю в том порядке, в котором она была отправлена, так как разные пакеты могут пройти разными маршрутами. За восстановление порядка данных при использовании сетевых протоколов без установки соединения отвечают транспортные протоколы.
Для того, чтобы общаться по сети, необходимо знать адрес того, с кем общаешься.
У каждого есть такой адрес, IP-адрес (Internet Protocol). Он занимает 4 байта. Обозначается IPv4
.
Пример: IP-адрес spbau.ru
- 194.85.238.98
.
Для всех устройств количество различных IP-адресов не хватает.
Есть запрещенные для использования IP-адреса, каждый из них подходит под один из паттернов:
192.169.*.*
10.*.*.*
172.*.*.*
100.*.*.*
Для чего нужно было вводить запрещенные на использования IP-адреса, если их и так не всем хватает?
В связи с проблемой нехватки IP-адресов было решено ввести
механим различия передачи данных по локальной сети (например, планшет-роутер)
и по внешней сети (например, планшет-vk.com
).
Поэтому для общения по локальной сети используются IP-адреса из запрещенного диапазона.
Они могу называться внутренними, внутрисетевыми, локальными или «серыми».
Английский вариант - private IP adress
Когда Igor через планшет хочет выйти в интернет, роутер преобразует IP-адреса локальной сети в свой IP-адрес. Со стороны внешнего мира кажется, что пакеты идут не от планшета, а от роутера.
Пакеты с разных устройств поступают на роутер, после чего адреса их отправителей подменяются на один общий. Когда приходит ответ на запрос, адрес подменяется обратно и ответ приходит тому, кому надо. Этот механизм называется NAT (Network Address Translation).
Передача информации осуществляется с помощью IP-пакетов, заголовок каждого IP-пакета содержит IP-адреса получателя и отправителя пакета. Каждый пакет обрабатывается маршрутизатором в соответствии с его таблицей маршрутизации. Таблица, в свою очередь, содержит информацию, компьютеру с каким адресом направлять пакеты с тем или иным диапазоном адресов. Например, все пакеты определённого диапазона могут направляться другому маршрутизатору, который «отвечает» за этот сегмент.
Более формально - таблица маршрутизации обычно содержит:
Адрес | Маска сети назначения | Шлюз | Интерфейс | Метрика |
---|---|---|---|---|
адрес сети или узла назначения, либо указание, что маршрут является маршрутом по умолчанию | (для IPv4 -сетей маска /32 (255.255.255.255) позволяет указать единичный узел сети) |
обозначает адрес маршрутизатора в сети, на который необходимо отправить пакет, следующий до указанного адреса назначения | интерфейс, через который доступен шлюз (в зависимости от системы, это может быть порядковый номер, GUID или символьное имя устройства; интерфейс может быть отличен от шлюза, если шлюз доступен через дополнительное сетевое устройство, например, сетевую карту) | числовой показатель, задающий предпочтительность маршрута. Чем меньше число, тем более предпочтителен маршрут (интуитивно представляется как расстояние) |
В ряде случаев маршрутизатор может преобразовывать заголовок пакета, заменяя адреса отправителя и/или получателя пакета. В частности, это происходит при взаимодействии локальной сети (имеющей свои адреса) с глобальной сетью Интернет. Для того, чтобы маршрутизатор мог направлять пакеты с одним глобальным адресом тем или иным получателям в локальной сети, используется таблица NAT, где помимо IP-адресов указываются порты, идентифицирующие приложения, устанавливающие соединение.
Пример таблицы NAT:
"Белый" IP-адрес | "Серый" IP-адрес |
---|---|
209.165.200.226:1444 | 192.168.1.15:1444 |
209.165.200.226:1445 | 192.168.1.26:1444 |
Порт - это натуральное число, записываемое в заголовках протоколов транспортного уровня модели OSI. Используется для определения процесса-получателя пакета в пределах одного хоста.
Обычно на хосте под управлением ОС в пространстве пользователя исполняется несколько процессов, в каждом из которых выполняется какая-либо программа. В случае если несколько программ используют компьютерную сеть, то ОС периодически получает по сети IP-пакет, предназначенный для одной из программ.
Процесс программы, желающей обмениваться данными по сети, может
- потребовать у ОС в своё распоряжение порт с определённым номером. ОС может либо предоставить порт с этим номером, либо отказать программе (например, в случае, когда порт с этим номером уже отдан в распоряжение другому процессу);
- потребовать у ОС в своё распоряжение свободный порт с любым номером. ОС в этом случае сама выберет свободный порт, ещё не занятый никаким процессом, и предоставит его в распоряжение запрашивающей программе.
Если на хосте какой‑либо процесс постоянно использует один номер порта (например, процесс программы, реализующей web-сервер, может использовать порт 80 для приёма и передачи данных), говорят, что порт является «открытым».
Если процесс получил номер порта у ОС («открыл порт») и «держит его открытым» для приёма и передачи данных, говорят, что процесс «прослушивает» порт.
В реальности пользователь подключен к провайдеру, который может быть подключен к более общему провайдеру, и т.д. Тогда при передаче пакета, IP-адрес может заменяться несколько раз. Можно у провайдера купить ”белый” IP-адрес, который можно использовать в интернете, и он подменяться не будет.
Наряду с 4-байтовым протоколом
IPv4
, есть протоколIPv6
. В нем адрес занимает 16 бай- тов, и таких адресов хватит на всех. Но этот протокол не поддерживается почти никакими провайдерами.
У каждого устройства в сети есть еще и маска. Она также, как и IP-адрес, занимает 4 байта. Всегда маска устроена следующим образом: сначала идет определенное число 1, а оставшееся место занимают 0.
Маску можно записывать следующими способами:
- либо в десятичной системе счисления через 4 числа -
255.255.254.0
- либо приписывать к IP-адресу количество единиц -
194.85.248.10/24
Маску используют чтобы определить, лежат ли два устройства в одной сети. Для этого Считают побитовые & адресов с маской и сравнивают результаты.
Наряду с 4-байтовым протоколом
IPv4
, есть протоколIPv6
. В нем адрес занимает 16 бай- тов, и таких адресов хватит на всех. Но этот протокол не поддерживается почти никакими провайдерами.Рассмотрим подробнее, как устроено облачко. От коробочки с антеннами идет провод к маршрутизатору, общему на один дом. От него идет провод к центральному маршрутизатору в районе, итд. У каждого маршрутизатора в этой цепочке есть IP-адрес, маска и шлюз. Когда приходит пакет, маршрутизатор смотрит адрес получателя. Если этот адрес лежит с ним в одной сети, пакет отправляется по адресу. Иначе пакет через шлюз отправляется на следующий маршрутизатор более глобальной сети.
Когда запрос Алисы пришел на сервер ВК, тот формирует ответ и хочет его отправить обратно Алисе. Для этого ему нужен её IP-адрес. Этот адрес был отправлен вместе с запросом. Не забываем, что при передаче запроса, IP-адрес отправителя может меняться.
Таким образом, на уровне Network внешняя обертка содержит IP1 – адрес отправителя и IP2 – адрес получателя.
Протоколы транспортного уровня (Transport layer) могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные.
-
TCP (IP идентификатор 6) — «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.
-
UDP (IP идентификатор 17) протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP. UDP обычно используется в таких приложениях, как потоковое видео и компьютерные игры, где допускается потеря пакетов, а повторный запрос затруднён или не оправдан, либо в приложениях вида запрос-ответ (например, запросы к DNS), где создание соединения занимает больше ресурсов, чем повторная отправка.
второй уровень сетевой модели OSI, предназначенный для передачи данных узлам, находящимся в том же сегменте локальной сети.
Канальный уровень отвечает за доставку кадров между устройствами, подключенными к одному сетевому сегменту.
Кадр - фрагмент данных протокола канального уровня модели OSI, передаваемый по линии связи. Кадр состоит из следующий частей:
Название Размер (байты) Описание Преамбула 7 Последовательность бит, определяющее начало кадра Начало кадра 1 Байт, с которого начинается кадр MAC получателя 6 Адрес сетевой карты получателя MAC отправителя 6 Адрес сетевой карты отправителя ..... ... ... Данные 46 - 1500 Контрольная сумма кадра 4 Используется для проверки целостности данных
Кадры канального уровня не пересекают границ сетевого сегмента. Функции межсетевой маршрутизации и глобальной адресации осуществляются на более высоких уровнях модели OSI, что позволяет протоколам канального уровня сосредоточиться на локальной доставке и адресации.
Как происходит отправка данных на всех уровнях стека протоколов TCP/IP?
ы
Корневой DNS-сервер - это сервер, который отвечает за корневую зону
(.ru
, .com
и т.д.). Всего в мире 13 корневых DNS-серверов. Как и остальные DNS-сервера,
он отвечает на соответствующие DNS-запросы (например, получение IP-адреса по имени хоста (доменному имени)).
Протокот ICMP - сетевой протокол, входящий в стек протоколов TCP/IP. В основном ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных, например, запрашиваемая услуга недоступна, или хост, или маршрутизатор не отвечают.
ICMP-сообщение строится из IP-пакетов, сгенерировавших ICMP-ответ. IP инкапсулирует соответствующее ICMP-сообщение с новым заголовком IP (чтобы отправить ICMP-сообщение обратно отправителю) и передает полученные пакеты дальше.
Например, каждая машина (такая, как маршрутизатор), которая перенаправляет IP-пакеты, уменьшает Time to live (TTL) поля заголовка IP на единицу, если TTL достигает 0, ICMP-сообщение о превышении TTL отправляется на источник пакета.
Использование протокала ICMP:
- ICMP-сообщения (тип 3) генерируются маршрутизатором при отсутствии маршрута к адресату.
- Утилита Ping, служащая для проверки возможности доставки IP-пакетов.
- ICMP-сообщения с типом 5 используются маршрутизаторами для обновления записей в таблице маршрутизации отправителя.
TTL - (Time To Live) - предельный период времени или число итераций или переходов, за который набор данных (пакет) может существовать до своего исчезновения.
Определяет максимальное количество хопов (hop, то есть прыжок, участок между маршрутизаторами), которые пакет может пройти. Наличие этого параметра не позволяет пакету бесконечно ходить по сети. Каждый маршрутизатор при маршрутизации должен уменьшать значение TTL на единицу, но некоторые шлюзы можно настроить, чтобы игнорировать это. Пакеты, не достигшие адресата, но время жизни которых стало равно нулю, уничтожаются, а отправителю посылается сообщение ICMP Time Exceeded