Какой протокол в сети интернет устанавливает правила разбиения сообщения на пакеты

Обновлено: 15.05.2024

Протокол– это набор соглашений и правил, определяющих порядок обмена информацией в компьютерной сети.

Протокол TCP/IP (1974)

q TCP (Transmission Control Protocol)

§ файл делится на пакеты размером не более 1,5 Кб

§ пакеты передаются независимо друг от друга

§ в месте назначения пакеты собираются в один файл

q IP (Internet Protocol)

§ определяет наилучший маршрут движения пакетов

q FTP (File Transfer Protocol) – служба FTP

Иерархия протоколов TCP/IP

Application level
Transport level
Internet level
Network interface
Hardware level

Протоколы TCP/IP широко применяются во всем мире для соединения компьютеров в сеть Internet. Архитектура протоколов TCP предназначена для объединенной сети, состоящей из соединенных друг с другом шлюзами отдельных разнородных компьютерных подсетей. Иерархию управления в TCP/IP-сетях обычно представляют в виде двух уровневой модели, приведенной на рисунке.

1. Этот нижнийуровень hardware описывает ту или иную среду передачи данных

3. Уровень internet (межсетевой) представлен протоколом IP. главная задача — маршрутизация (выбор пути через множество промежуточных узлов) при доставке информации от узла отправителя до узла-адресата. Вторая важная задача протокола IP - сокрытие аппаратно-программных особенностей среды передачи данных и предоставление вышележащим уровням единого унифицированного и аппаратно независимого интерфейса для доставки информации. Достигаемая при этом канальная (аппаратная) независимость и обеспечивает много платформенное применение приложений, работающих над TCP/IP.

4. Протокол IP не обеспечивает транспортную службу в том смысле, что не гарантирует доставку пакетов, сохранение порядка и целостности потока пакетов и не различает логические объекты (процессы), порождающие поток информации. Это задачи других протоколов — TCP и UDP, относящихся к следующемуtransport(транспортному)уровню.TCP и UDP реализуют различные режимы доставки данных. TCP, как говорят, — протокол с установлением соединения. Это означает, что два узла, связывающиеся помощи этого протокола, "договариваются" о том, что будут обме­ниваться потоком данных, и принимают некоторые соглашения об управлении этим потоком. UDP (как, собственно, и IP) является дейтаграммным протоколом, т. е. таким, что каждый блок переда­ваемой информации (пакет) обрабатывается и распространяется от узла к узлу не как часть некоторого потока, а как независимая еди­ница информации — дейтаграмма (datagram).

5. Выше — науровне application (прикладном) — лежат прикладные задачи, такие как обмен, файлами (File Transfer Protocol, FTP) и со­общениями электронной почты (Simple Mail Transfer Protocol, SMTP), терминальный доступ к удаленным серверам (Telnet)

В связи с особой ролью протоколов TCP/IP в сети Internet остановим­ся на них более подробно. Знание этого семейства протоколов поможет узнать, как работает Internet. Передаваемая по сети информация разбива­ется на пакеты — небольшие (не более 1500 символов) порции данных Пакеты посылают независимо друг от друга, а в пункте приема собира­ются в нужной последовательности. Такой режим передачи называется дейтаграммным. Другими словами, протокол TCP/IP распределяет ин­формацию по множеству дейтаграмм, после чего в пункте приема прове­ряет их достоверность и собирает снова. Протокол IP управляет адреса­цией, последовательностью и пересылкой. Протоколы TCP/IP относятся к транспортному уровню Эталонной модели взаимодействия открытых систем и не зависят от протоколов других уровней этой модели. Благода­ря этому протоколы TCP/IP идеально подходят для современной Internet. Когда сорок (или около того) миллионов людей используют в своей ра­боте самые разнообразные системы, значительно удобнее осуществлять проверку ошибок на уровне протокола, который поддерживают все эти системы.

В TCP/IP для проверки правильности пакета используется механизм, который носит название контрольная сумма. Контрольная сумма — это число, помещаемое в дейтаграмму и вычисляемое по специальному алгоритму для всех символов дейтаграммы. Заголовок содержит также номер дейтаграммы в передаваемой последовательности дейтаграмм, служащий для определения порядка дейтаграмм при восстановлении первоначаль­ной информации. После добавления заголовка TCP передает дейтаграм­му протоколу IP.

Протокол IP добавляет к каждой дейтаграмме заголовок адреса. Заго­ловок включает в себя адреса отправителя и получателя каждой дейта­граммы. После этого IP передает дейтаграмму компьютеру-отправителю, использующему собственный протокол (например, протокол Internet Point-to-Point (точка-точка) или сокращенно — РРР), который помещает дейтаграмму в кадр данных.

Пока кадр данных путешествует по Internet, он проходит через не­сколько IP-маршрутизаторов Internet. Каждый маршрутизатор читает ад­рес назначения кадра и выбирает адрес следующего маршрутизатора, ко­торому нужно послать кадр, чтобы тот достиг пункта назначения. Вслед­ствие того, что поток информации в сети никогда не бывает постоян­ным, то разные кадры могут идти через различные маршрутизаторы. Кроме того, некоторые маршрутизаторы могут не работать по какой-либо причи­не. Если маршрутизатор IP обнаруживает, что адрес занят или не работает, то он выбирает альтернативный адрес, по которому и посылает кадр.

Из всего этого следует, что кадры могут прибыть по назначению со­всем не в том порядке, в котором они были отправлены из исходного пункта, следовательно, их нужно проверить и выстроить по порядку.

По­сле того как получающий компьютер принимает кадр, он первым делом проверяет верхний и нижний заголовки кадра, чтобы удостовериться в корректности содержащейся в нем дейтаграммы. IP отвечает за адрес ка­ждой дейтаграммы, а TCP проверяет корректность дейтаграммы. Для этого рассчитывается контрольная сумма, которая сравнивается с исход­ной. Если контрольные суммы не совпадают, то TCP посылает запрос на повторную отправку пакета. После получения и проверки всех дейта­грамм, TCP восстанавливает их порядок, удаляет заголовки и передает информацию получающему компьютеру.

Система IP-адресации.

Для организации всемирной сети нужна хорошая система адресации, которая будет использоваться для направления информации всем адреса­там. Союз Internet установил для адресации всех узлов Internet единый стандарт, называемый адресацией IP. Любой IP-адрес состоит из четырех чисел в интервале от 1 до 254, разделенных точками. Ниже приведен пример IP-адреса: 10.18.49.102. В схемах IP-адресации также могут ис­пользоваться числа 0 и 255, но они зарезервированы для специальных целей. Число 255 используется для направления дейтаграммы всем ком­пьютерам сети IP. Число 0 используется для более точного указания ад­реса. Предположим, что в приведенном выше примере адрес служит для обозначения узла 102 в сети 10.18.49.102. В таком случае адрес 10.18.49.0 будет обозначать только сеть, а 0.0.0.102 будет обозначать один узел.

IP-адрес можно использовать для построения как сетей с несколькими узлами, так и сетей, содержащих миллионы узлов. Для этого Союз Internet определил пять классов сетей, отличающихся друг от друга по размеру.

¨ Класс А: Большие сети с миллионами узлов.
Первый октет (самый ле­вый) обозначает адрес сети. Оставшиеся три — обозначают номер узла.

¨ Класс В: Сети средних размеров с тысячами узлов.
Первые два октета (слева) обозначают адрес сети. Остальные два (справа) — обозначают номер узла.

¨ Класс С: Небольшие сети с несколькими сотнями узлов.

¨ Классы D и E используются для служебных целей

¨ Первые три октета обозначают адрес сети. Последний октет — адрес узла.

За уникальным IP-адресом сети обращайтесь к своему провайдеру Internet. После того как вам будет выделена подсеть, вы должны будете присвоить каждому ее узлу свой IP-адрес. В стандартных сете­вых операционных системах, например Novell InternetWare и Microsoft Windows NT, есть специальные утилиты, с помощью которых можно присвоить сети IP-адрес.

Естественно, довольно тяжело запомнить IP-адреса всех компьютеров сети, не говоря уже обо всей Internet.

Поэтому в 1993 году был создан Информационный центр сети Internet (Internet Network Information Center — InterNIC), который управляет системой доменных имен (Domain Name System — DNS).

Этот механизм предназначен для подстановки легко за­поминающихся символьных имен доменов вместо числовых IP-адресов. Например, сотруднику кафедры компьютерных систем НТУ "КПИ" лег­че запомнить доменное имя comsys.ntu-kpi, чем соответствующий ему IP адрес 10.18.49.102.

После того как вам будет выделен IP-адрес, вы долж­ны выбрать для себя имя домена в приведенном выше примере — соmsys. Выбранное имя домена должно быть уникальным, кроме того, оно не должно быть связано с каким-либо другим адресом Internet. Ваше имя домена добавляется к иерархической базе данных имен доменов. Имя домена состоит из серий символов, разделенных между собой точками. Самая правая часть имени домена обозначает наибольший домен, к ко­торому принадлежит конкретный адрес, а также тип организации, кото­рой принадлежит данный адрес. Например, в имени домена comsys.ntu-kpi.kiev.ua домен .uа обозначает, что этот адрес принадлежит Украине. В странах, расположенных за пределами Соединенных Штатов, обычно ис­пользуются собственные типы доменов, обычно состоящие из двух букв, обозначающих страну. Например, домен .uа - обозначает Украину, .fr — Францию, a .nl — Нидерланды.

Символы, стоящие перед типом домена, служат для обозначения за­регистрированного имени поддомена, относящегося к IP-адресу. В приве­денном примере под домен обозначает город Киев, под домен .ntu-kpi — Национальный технический университет Украины, comsys — кафедру компьютерных систем этого университета.

Для хранения и управления именами доменов используется иерархия серверов имен. На этих серверах хранятся базы данных имен доменов и связанные с ними IP-адреса. Если пользователь сети хочет подключиться к какому-либо Internet-адресу, то он обращается к локальному серверу имен. Этот сервер сначала пытается найти IP-адрес в собственной базе данных. Найдя его, оно возвращает адрес компьютеру, сделавшему за­прос, и тот устанавливает Internet-соединение. Если в локальной базе данных нет соответствующего имени, то сервер передает запрос следую­щему по иерархии серверу. Имя будет передаваться вверх по иерархии до тех пор, пока запрос не дойдет до корневого сервера имен (root name server), который является сервером, содержащим имена доменов и IP-адреса, принадлежащие к доменам определенных типов, например .corn. Корневые серверы имен расположены на территории Соединенных Шта­тов и принадлежат (точнее будет, сказать сопровождаются) InterNIC. Если IP-адрес есть в базе данных корневого сервера, то он возвращается ком­пьютеру, пославшему запрос. В противном случае сервер возвращает со­общение об отсутствии имени домена. Возвращаемые с корневого сервера IP-адреса запоминаются в кэш-памяти локального сервера имен доменов. Это делается для ускорения обращения к часто используемым серверам, поскольку уменьшает коли­чество запросов к корневым серверам имен.

Кроме того, имена доменов включают категорию верхнего уровня.

На­пример, www в начале имени домена обозначает, что сервер поддержива­ет связь по World Wide Web (обычно называют просто Web), которая яв­ляется одной из самых больших категорий Internet-серверов.

Протокол маршрутизации. Протокол IP обеспечивает передачу информации между компьютерами сети. Рассмотрим работу данного протокола по аналогии с передачей информации с помощью обычной почты. Для того чтобы письмо дошло по назначению, на конверте указывается адрес получателя (кому письмо) и адрес отправителя (от кого письмо).

Аналогично передаваемая по сети информация "упаковывается в конверт", на котором "пишутся" IP-адреса компьютеров получателя и отправителя, например "Кому: 198.78.213.185", "От кого: 193.124.5.33". Содержимое конверта на компьютерном языке называется IP-пакетом и представляет собой набор байтов.

IP-пакеты на пути к компьютеру-получателю также проходят через многочисленные промежуточные серверы Интернета, на которых производится операция маршрутизации. В результате маршрутизации IP-пакеты направляются от одного сервера Интернета к другому, постепенно приближаясь к компьютеру-получателю.

Internet Protocol (IP) обеспечивает маршрутизацию IP-пакетов, то есть доставку информации от компьютера-отправителя к компьютеру-получателю.

Определение маршрута прохождения информации. "География" Интернета существенно отличается от привычной нам географии. Скорость получения информации зависит не от удаленности Web-сервера, а от количества промежуточных серверов и качества линий связи (их пропускной способности), по которым передается информация от узла к узлу.

С маршрутом прохождения информации в Интернете можно познакомиться достаточно просто. Специальная программа tracert.exe, которая входит в состав Windows, позволяет проследить, через какие серверы и с какой задержкой передается информация с выбранного сервера Интернет на ваш компьютер.

1. Соединиться с Интернетом, ввести команду [Программы-Сеанс MS-DOS].

3. Через некоторое время появится трассировка передачи информации, то есть список узлов, через которые передается информация на ваш компьютер, и время передачи между узлами.

Трассировка маршрута передачи информации показывает, что сервер www.rambler.ru находится от нас на "расстоянии" 7 переходов, т. е. информация передается через шесть промежуточных серверов Интернета (через серверы московских провайдеров МТУ-Информ и Демос). Скорость передачи информации между узлами достаточно высока, на один "переход" тратится от 126 до 138 мс.

Транспортный протокол. Теперь представим себе, что нам необходимо переслать по почте многостраничную рукопись, а почта бандероли и посылки не принимает. Идея проста: если рукопись не помещается в обычный почтовый конверт, ее надо разобрать на листы и переслать их в нескольких конвертах. При этом листы рукописи необходимо обязательно пронумеровать, чтобы получатель знал, в какой последовательности потом эти листы соединить.

Для того чтобы этого не происходило, на компьютере-отправителе необходимо разбить большой файл на мелкие части, пронумеровать их и транспортировать в отдельных IP-пакетах до компьютера-получателя. На компьютере-получателе необходимо собрать исходный файл из отдельных частей в правильной последовательности.

Transmission Control Protocol (TCP), то есть транспортный протокол, обеспечивает разбиение файлов на IP-пакеты в процессе передачи и сборку файлов в процессе получения.

Интересно, что для IP-протокола, ответственного за маршрутизацию, эти пакеты совершенно никак не связаны между собой. Поэтому последний IP-пакет вполне может по пути обогнать первый IP-пакет. Может сложиться так, что даже маршруты доставки этих пакетов окажутся совершенно разными. Однако протокол TCP дождется первого IP-пакета и соберет исходный файл в правильной последовательности.

Определение времени обмена IP-пакетами. Время обмена IP-пакетами между локальным компьютером и сервером Интернета можно определить с помощью утилиты ping, которая входит в состав операционной системы Windows. Утилита посылает четыре IP-пакета по указанному адресу и показывает суммарное время передачи и приема для каждого пакета.

1. Соединиться с Интернетом, ввести команду [Программы-Сеанс MS-DOS].

3. В окне Сеанс MS-DOS высветится результат пробного прохождения сигнала в четырех попытках. Время отклика характеризует скоростные параметры всей .цепочки линий связи от сервера до локального компьютера.

1. Что обеспечивает целостное функционирование глобальной компьютерной сети Интернет?

IP расшифровывается как Internet Protocol, часто его называют протокол интернет. Но строго говоря это не совсем так, правильный перевод межсетевой протокол или протокол межсетевого взаимодействия.

p, blockquote 1,0,0,0,0 -->

Протокол IP

p, blockquote 2,0,0,0,0 -->

Протокол Ip возник задолго до того, как появилась и стала набирать популярность сеть, которую мы называем интернет. В англоязычной терминологии internetworking означает объединение сетей, и цель протокола ip как раз объединить сети, построенные с помощью разных технологий канального уровня. У этой терминологии словом internet называлась объединенная сеть, а subnet — подсеть или отдельная сеть. Словом Internet с большой буквы сейчас называется самая крупная объединенная сеть построенная по протоколу ip.

p, blockquote 3,0,0,0,0 -->

Место в моделях OSI и TCP/IP

В модели взаимодействия открытых систем и в модели TCP/IP протокол IP, находится на одном и том же уровне — сетевом.

p, blockquote 4,0,0,0,0 -->

Протокол IP в OSI

p, blockquote 5,0,0,0,0 -->

Сетевой уровень стека протоколов TCP/IP включая также и другие протоколы кроме ip. Это ARP, DHCP и ICMP, но для передачи данных используется только протокол ip, остальные протоколы служат для обеспечения корректной работы крупной составной сети.

p, blockquote 6,0,1,0,0 -->

Протокол IP в стеке TCP

p, blockquote 7,0,0,0,0 -->

Сервисы IP

p, blockquote 8,0,0,0,0 -->

IP пакет просто отправляется в сеть в надежде, что он дойдет до получателя, если пакет по каким-то причинам не дошел, не предпринимается никаких попыток оповестить отправителя, и также не предпринимается попыток запросить этот пакет снова. Считается, что ошибка должна быть исправлена протоколами, которые находятся на вышестоящих уровнях.

p, blockquote 9,0,0,0,0 -->

Задачей IP является объединение сети, построенных на основе разных технологий канального уровня, которые могут значительно отличаться друг от друга в одну крупную объединенную сеть, в которой компьютеры могут свободно общаться друг с другом не взирая на различия конкретной сетевой технологии. Вторая важная задача протокола IP, это маршрутизация, то есть поиск маршрута от отправителя к получателю в крупной составной сети через промежуточные узлы маршрутизаторы. Также IP обеспечивает необходимое качество обслуживания.

p, blockquote 10,0,0,0,0 -->

Формат заголовка IP-пакета

Для того чтобы понять, как протокол IP реализует эту задачу, рассмотрим формат заголовка IP пакета.

p, blockquote 11,0,0,0,0 -->

Формат заголовка IP адреса

p, blockquote 12,0,0,0,0 -->

Номер версии

Первое поле номер версии. Сейчас используется две версии протокола IP 4 и 6. Большая часть компьютеров использует IPv4. Длина адреса в этой версии 4 байта. Формат адреса IP версии 4 мы рассматривали подробно. Проблема в том, что адресов IPv4, четыре с небольшим миллиарда, что уже сейчас не хватает для всех устройств в сети, а в будущем точно не хватит. Поэтому была предложена новая версия IPv6 в которой длина IP адреса составляет 16 байт. Сейчас эта версия вводится в эксплуатацию, но процесс занимает очень долгое время.

p, blockquote 13,1,0,0,0 -->

Длина заголовка

Следующее поле длина заголовка. В отличии от Ethernet заголовок IP включает обязательные поля, а также может включать дополнительные поля, которые называются опции. В поле длина заголовка записывается полная длина, как обязательной части, так и опции.

p, blockquote 14,0,0,0,0 -->

Тип сервиса

Следующее поле тип сервиса. Это поле нужно для обеспечения необходимого качества обслуживания, но сейчас на практике используется очень редко.

p, blockquote 15,0,0,0,0 -->

Общая длина

Следующее поле общая длина. Общая длина содержит длину всего IP пакета, включая заголовок и данные. Максимальная длина пакета 65 535 байт, но на практике такие большие пакеты не используются, а максимальный размер ограничен размером кадра канального уровня, а для Ethernet это 1 500 байт. В противном случае для передачи одного IP пакета необходимо было бы несколько кадров канального уровня что неудобно.

p, blockquote 16,0,0,0,0 -->

Идентификатор пакета

Поля идентификатор пакета, флаги и смещение фрагмента используются для реализации фрагментации.

p, blockquote 17,0,0,0,0 -->

Время жизни

Дальше идет поле время жизни. Время жизни Time To Live или TTL — это максимальное время в течение которого пакет может перемещаться по сети. Оно введено для того чтобы пакеты не гуляли по сети бесконечно, если в конфигурации сети возникла какая-то ошибка. Например, в результате неправильной настройке маршрутизаторов в сети, может образоваться петля. Раньше, время жизни измерялось в секундах, но сейчас маршрутизаторы обрабатывают пакет значительно быстрее чем за секунду, поэтому время жизни уменьшается на единицу на каждом маршрутизаторе, и оно измеряется в количествах прохождения через маршрутизаторы по-английски (hop) от слова прыжок. Таким образом название время жизни сейчас стало уже некорректным.

p, blockquote 18,0,0,0,0 -->

Тип протокола

После времени жизни, указывается тип протокола следующего уровня. Это поле необходимо для реализации функции мультиплексирования и демультиплексирования, то есть передачи с помощью протокола IP данных от разных протоколов следующего уровня. В этом поле указывается код протокола следующего уровня, некоторые примеры кодов для TCP код 6, UDP — 17 и ICMP — 1.

p, blockquote 19,0,0,1,0 -->

Контрольная сумма

Затем идет контрольная сумма, которая используется для проверки правильности доставки пакета, если при проверке контрольные суммы обнаруженные ошибки, то пакет отбрасывается, никакой информации отправителю пакета не отправляется. Контрольная сумма рассчитывается только по заголовку IP пакета и она пересчитывается на каждом маршрутизаторе из-за того что данные в заголовке меняются. Как минимум изменяется время жизни пакета, а также могут измениться некоторые опции.

p, blockquote 20,0,0,0,0 -->

IP адрес получателя и отправителя

После контрольной суммы идут IP адрес отправителя, и IP адрес получателя. В IPv4 длина IP адреса четыре байта, 32 бита на этом обязательная часть IP заголовка заканчивается, после этого идут не обязательные поля которые в IP называются опции.

p, blockquote 21,0,0,0,0 -->

Опции

Некоторые примеры опций. Для диагностики работы сети используется опция — записать маршрут, при которой в IP пакет записывается адрес каждого маршрутизатора через которую он проходит.

p, blockquote 22,0,0,0,0 -->

И опция — временные метки, при установке которой, каждый маршрутизатор записывает время прохождения пакеты.

p, blockquote 23,0,0,0,0 -->

Также опции позволяют отказаться от автоматической маршрутизации, и задать маршрут отправитель:

  • Это может быть жесткая маршрутизация, где в пакете явно указывается перечень маршрутизаторов через которые необходимо пройти.
  • И свободные маршрутизации в этом случае указываются только некоторые маршрутизаторы, через которые пакет должен пройти обязательно, также при необходимости он может пройти через другие маршрутизаторы.

Опции в заголовке IP может быть несколько и они могут иметь разный размер. В то же время длина IP заголовка должна быть кратна 32, поэтому при необходимости, в конце IP заголовок заполняются нулями до выравнивание по границе 32 бита. Следует отметить, что сейчас опции в заголовке IP почти не используются.

p, blockquote 25,0,0,0,0 --> p, blockquote 26,0,0,0,1 -->

В статье был рассмотрен протокол IP (Internet Protocol) — протокол межсетевого взаимодействия. Протокол IP является основой интернета. В OSI находится на сетевом уровне.

1. Лекция - Введение. Адресация. Протоколы (IP, TCP, UDP). Порты.

Официальная документация по Internet

Все разработчики должны придерживаться этой документации, но на практике, не всегда так происходит.

Адресация в сети Internet.

Типы адресов.

Физический (MAC-адрес)

Сетевой (IP-адрес)

Символьный (DNS-имя)

Компьютер в сети TCP/IP может иметь адреса трех уровней (но не менее двух):

Локальный адрес компьютера. Для узлов, входящих в локальные сети - это МАС-адрес сетевого адаптера. Эти адреса назначаются производителями оборудования и являются уникальными адресами.

IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования компьютеров и маршрутизаторов.

IPv4 - адрес является уникальным 32-битным идентификатором IP-интерфейса в Интернет.

IP-адреса принято записывать разбивкой всего адреса по октетам (8), каждый октет записывается в виде десятичного числа, числа разделяются точками. Например, адрес


10100000010100010000010110000011
записывается как

Перевод адреса из двоичной системы в десятичную

IP-адрес хоста состоит из номера IP-сети, который занимает старшую область адреса, и номера хоста в этой сети, который занимает младшую часть.

160.81.5. - номер сети

131 - номер хоста

Базовые протоколы (IP, TCP, UDP)

Стек протоколов TCP/IP

TCP/IP - собирательное название для набора (стека) сетевых протоколов разных уровней, используемых в Интернет. Особенности TCP/IP:

Открытые стандарты протоколов, разрабатываемые независимо от программного и аппаратного обеспечения;

Независимость от физической среды передачи;

Система уникальной адресации;

Стандартизованные протоколы высокого уровня для распространенных пользовательских сервисов.

Стек протоколов TCP/IP

Стек протоколов TCP/IP делится на 4 уровня:

Физический и канальный.

Позже была принята 7-ми уровневая модель ISO.

Данные передаются в пакетах. Пакеты имеют заголовок и окончание, которые содержат служебную информацию. Данные, более верхних уровней вставляются, в пакеты нижних уровней.

Пример инкапсуляции пакетов в стеке TCP/IP

Физический и канальный уровень.

Стек TCP/IP не подразумевает использования каких-либо определенных протоколов уровня доступа к среде передачи и физических сред передачи данных. От уровня доступа к среде передачи требуется наличие интерфейса с модулем IP, обеспечивающего передачу IP-пакетов. Также требуется обеспечить преобразование IP-адреса узла сети, на который передается IP-пакет, в MAC-адрес. Часто в качестве уровня доступа к среде передачи могут выступать целые протокольные стеки, тогда говорят об IP поверх ATM, IP поверх IPX, IP поверх X.25 и т.п.

Межсетевой уровень и протокол IP.

Основу этого уровня составляет IP-протокол.

IP (Internet Protocol) – интернет протокол.

Первый стандарт IPv4 определен в RFC-760 (DoD standard Internet Protocol J. Postel Jan-01-1980)

Последняя версия IPv4 - RFC-791 (Internet Protocol J. Postel Sep-01-1981).

Первый стандарт IPv6 определен в RFC-1883 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1995)

Последняя версия IPv6 - RFC-2460 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1998).

Протокол IP доставляет блоки данных от одного IP-адреса к другому.

Программа, реализующая функции того или иного протокола, часто называется модулем, например, “IP-модуль”, “модуль TCP”.

Когда модуль IP получает IP-пакет с нижнего уровня, он проверяет IP-адрес назначения.

Если IP-пакет адресован данному компьютеру, то данные из него передаются на обработку модулю вышестоящего уровня (какому конкретно - указано в заголовке IP-пакета).

Также может потребоваться, на границе сетей с различными характеристиками, разбить IP-пакет на фрагменты (фрагментация), а потом собрать в единое целое на компьютере-получателе.

Структура дейтограммы IP. Слова по 32 бита.

Версия - версия протокола IP (например, 4 или 6)

Длина заг. - длина заголовка IP-пакета.

Тип сервиса (TOS - type of service) - Тип сервиса (подробнее рассмотрен в лекции 8).

TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута (протоколы OSPF и IGRP).

Идентификатор дейтаграммы, флаги (3 бита) и указатель фрагмента - используются для распознавания пакетов, образовавшихся путем фрагментации исходного пакета.

Время жизни (TTL - time to live) - каждый маршрутизатор уменьшает его на 1, что бы пакеты не блуждали вечно.

Протокол - Идентификатор протокола верхнего уровня указывает, какому протоколу верхнего уровня принадлежит пакет (например: TCP, UDP).

Коды некоторые протоколов RFC-1700 (1994)

Протокол IP является маршрутизируемый, для его маршрутизации нужна маршрутная информация.

Маршрутная информация, может быть:

Статической (маршрутные таблицы прописываются вручную)

Динамической (маршрутную информацию распространяют специальные протоколы)

Протоколы динамической маршрутизации:

RIP (Routing Information Protocol) - протокол передачи маршрутной информации, маршрутизаторы динамически создают маршрутные таблицы.

OSPF (Open Shortest Path First) - протокол "Открой кротчайший путь первым", является внутренним протоколом маршрутизации.

IGP (Interior Gateway Protocols) - внутренние протоколы маршрутизации, распространяет маршрутную информацию внутри одной автономной системе.

EGP (Exterior Gateway Protocols) - внешние протоколы маршрутизации, распространяет маршрутную информацию между автономными системами.

BGP (Border Gateway Protocol) - протокол граничных маршрутизаторов.

Другие служебные IP-протоколы

IGMP (Internet Group Management Protocol) - позволяет организовать многоадресную рассылку средствами IP.

RSVP (Resource Reservation Protocol) - протокол резервирования ресурсов.

ARP (Address Resolution Protocol) - протокол преобразования IP-адреса и адреса канального уровня.

Транспортный уровень

Протоколы транспортного уровня обеспечивают прозрачную доставку данных между двумя прикладными процессами. Процесс, получающий или отправляющий данные с помощью транспортного уровня, идентифицируется на этом уровне номером, который называется номером порта. Таким образом, роль адреса отправителя и получателя на транспортном уровне выполняет номер порта (или проще - порт).

Анализируя заголовок своего пакета, полученного от межсетевого уровня, транспортный модуль определяет по номеру порта получателя, какому из прикладных процессов направлены данные, и передает эти данные соответствующему прикладному процессу. Номера портов получателя и отправителя записываются в заголовок транспортным модулем, отправляющим данные; заголовок транспортного уровня содержит также и другую служебную информацию; формат заголовка зависит от используемого транспортного протокола.

На транспортном уровне работают два основных протокола: UDP и TCP.

Первая и последняя версия TCP - RFC-793 (Transmission Control Protocol J. Postel Sep-01-1981).

Посылает запрос на следующий пакет, указывая его номер в поле "Номер подтверждения" (AS). Тем самым, подтверждая получение предыдущего пакета.

Делает проверку целостности данных, если пакет битый посылает повторный запрос.

Структура дейтограммы TCP. Слова по 32 бита.

Длина заголовка - задается словами по 32бита.

Размер окна - количество байт, которые готов принять получатель без подтверждения.

Контрольная сумма - включает псевдо заголовок, заголовок и данные.

Указатель срочности - указывает последний байт срочных данных, на которые надо немедленно реагировать.

URG - флаг срочности, включает поле "Указатель срочности", если =0 то поле игнорируется.

ACK - флаг подтверждение, включает поле "Номер подтверждения, если =0 то поле игнорируется.

PSH - флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.

RST - флаг прерывания соединения, используется для отказа в соединении

SYN - флаг синхронизация порядковых номеров, используется при установлении соединения.

FIN - флаг окончание передачи со стороны отправителя

UDP (Universal Datagram Protocol) - универсальный протокол передачи данных, более облегченный транспортный протокол, чем TCP.

Основные отличия от TCP:

Отсутствует соединение между модулями UDP.

При потере пакета запрос для повторной передачи не посылается

UDP используется если не требуется гарантированная доставка пакетов , например, для потокового видео и аудио, DNS (т.к. данные небольших размеров). Если проверка контрольной суммы выявила ошибку или если процесса, подключенного к требуемому порту, не существует, пакет игнорируется (уничтожается). Если пакеты поступают быстрее, чем модуль UDP успевает их обрабатывать, то поступающие пакеты также игнорируются.

Структура дейтограммы UDP. Слова по 32 бита.


Не все поля UDP-пакета обязательно должны быть заполнены. Если посылаемая дейтаграмма не предполагает ответа, то на месте адреса отправителя могут помещаться нули.

Протокол реального времени RTP

RTP (Real Time Protocol) - транспортный протокол для приложений реального времени.

RTCP (Real Time Control Protocol) - транспортный протокол обратной связи для приложения RTP..

Назначение портов

По номеру порта транспортные протоколы определяют, какому приложению передать содержимое пакетов.

Порты могут принимать значение от 0-65535 (два байта 2^16).

Некоторые заданные порты RFC-1700 (1994)

Программа Ping

Программа для проверки соединения и работы с удаленным хостом.

Программа TraceRoute - позволяет проверить маршрут до удаленного хоста.

Примечание . Строго говоря, задачи выполняют не сами протоколы, а соответствующие программы. Протоколы же представляют собой всего-навсего форматы представления данных того или иного уровня. А программы, выполняющие обработку (синтаксический анализ) данных в соответствии с уровнем, должны осуществлять ее в соответствии с правилами протокола этого уровня.

Существует модель OSI (Open System Interface или модель открытых систем), содержащая 7 уровней протоколов:

Несмотря на, казалось бы, избитость этой темы, все же, некоторые моменты изложены в книгах, интернетных ресурсах как-то туманно. Мы в этой статье постараемся немного прояснить ситуацию.

Модель OSI: схема

Модель OSI является семиуровневой. Однако, зачастую, на практике используются не все семь уровней, а меньше. Например, как правило, протоколы сеансового и представительского уровня, в силу небольшого объема выполняемых задач, объединяются с транспортным или прикладным уровнями. Поэтому, фактически, на практике используется 3…5 уровней протоколов.

Что часто интересует программиста, занимающегося сетевыми технологиями?

Надо сказать, что сетевые технологии в настоящее время, на самом деле, уже давно разделились, как минимум, на три отдельных, не особенно сильно пересекающихся, очень условных области:

Физический уровень

Так как этот уровень имеет дело с электрическими сигналами в виде битов, соответственно, их источником и адресатом являются соответствующие физические сетевые устройства (например, модемы и/или сетевые карты). Эти физические устройства могут быть связаны друг с другом посредством той или иной среды передачи – USB-кабель, оптоволокно, радиоканал и т.п. На физическом уровне вообще не идет речи об IP-адресах, доменах, URL и т.п. Эти абстракции появляются на более высоких уровнях модели OSI.

Здесь играет роль правильность составления кадра из битов, для чего используются различные способы низкоуровневого или физического кодирования: манчестерский код, дифференциальное, потенциальное кодирование, NRZ, БВН и многие другие способы. Физическое кодирование осуществляется в рамках соответствующих стандартов, например, IEEE 802.3 .

Для чего используется физическое кодирование? Для того, чтобы как-то подстраховать сетевую передачу битов (в составе кадра) от ошибок. Вследствие заторов в сети, а также ее возможной неисправности, наличия помех, не все биты кадра могут дойти до адресата. Предположим, клиент (источник) передал в сеть следующие биты:

Если все будет хорошо, то эти и именно эти биты должен бы принять приемник (сервер), находящийся на другом конце сетевого соединения. Но, зачастую, практика вносит свои коррективы. Например, вместо указанной последовательности битов может прийти:

1101100001 0 011

Некоторые биты могут попросту затеряться, а некоторые – добавиться дополнительно взамен потерянных. В итоге - серверу придет не тот кадр, который был отправлен клиентом (источником). Так вот, физическое кодирование и служит для того, чтобы если не полностью избавиться от ошибок передачи кадров битов, то, по крайней мере, свести такие ошибки к минимуму. Если в процессе передачи возникла ошибка (по крайней мере, один бит передан неверно), то передачу кадра, содержащего этот бит, придется повторять – до тех пор, пока не будет передан правильный кадр или до тех пор, пока сетевое соединение не будет прервано.

Канальный уровень

На этом уровне происходит контроль правильности составления кадров (фреймов). Типичный размер фрейма – 1 кБ. При разработке стеков протоколов на канальном уровне осуществляется помехоустойчивое кодирование. К таким способам кодирования относится код Хемминга, блочное кодирование, код Рида-Соломона. В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровней между собой. Это не новый уровень, а просто реализация модели для конкретной операционной системы. Здесь, как и на физическом уровне, также пока нет ни байтов, ни файлов, ни т.п.

Однако, средств контроля правильности кадров, предоставляемых канальным уровнем, не застраховывает ото всех ошибок передачи. Поэтому дополнительные средства контроля используются в сетевых передачах на более вышележащем (транспортном) уровне. Только канального уровня для контроля правильности сетевой передачи недостаточно.

Взаимодействие на канальном уровне осуществляется, также как и на физическом, естественно, между физическими устройствами. Однако, для адресации используются так называемые МАС-адреса (аппаратные адреса). Они имеют следующий примерный вид (в шестнадцатеричном представлении):

Каждый компьютер в сети интернет имеет СВОЙ уникальный аппаратный адрес. МАС-адрес источника и адресата входят в состав кадра, формирующегося на канальном уровне. Отметим, что и здесь никаких IP-адресов, доменных имен и др. нет в помине. Речь идет просто о передаче битовых кадров от сетевого устройства с одним МАС-адресом другому устройству (с другим MAC-адресом). Именно так работает современный интернет в подавляющем большинстве случаев.

Следует иметь в виду, что сервер (компьютер-адресат), получая пакеты от клиента (например, от браузера), естественно, получает и МАС-адрес компьютера, на котором запущен. браузер. Так же, как и его IP-адрес. И если IP-адрес несложно подменить, например, путем соединения с сервером-адресатом через прокси-сервер, то подмена МАС-адреса представляет собой куда более сложное занятие. Ранние версии операционных систем Linux, как правило, позволяли делать такую подмену на пользовательском уровне. Тогда как современные версии это запрещают (надеемся, понятно, почему). Впрочем, конечно, никто никому не мешает заново собрать и перекомпилировать ядро операционной системы, в котором уже предусмотреть такую замену. Однако, сделать это способен далеко не каждый программист. Или же можно использовать такой прокси-сервер, который будет парсить заголовки протоколов канального уровня и записывать в них какой-нибудь другой МАС-адрес.

Поэтому КАЖДЫЙ, кто выходит в интернет со своего компьютера, на котором установлена стандартная операционная система, типа Windows, Linux, MacOS, Android и т.п., неважно, через прокси-сервер или напрямую, должен ясно понимать, что МАС-адрес его компьютера может быть известен серверу-адресату . Если только, повторимся, он не использует такой прокси-сервер, который способен сделать подмену МАС-адреса. В общем же случае ЛЮБОЙ сервер способен точно идентифицировать пользователя - именно по его MAC-адресу. Кстати, этот аргумент когда-нибудь вполне сможет использовать Раскомнадзор, если ему будет дана команда - заблокировать интернет. Тут же в СМИ возникнут статьи на тему: "А Вы знаете, что любой сервер знает о ВАС ВСЁ?". Вот, мол, Раскомнадзор стал настолько заботлив о пользователях интернета, что решил защитить их от него. Причем, отметим, что Яндекс- и Google-метрики - это сущий пустяк по сравнению с этим. Ни Google, ни Яндекс не собирают информацию о МАС-адресах посетителей сайтов. Ну, по крайней мере, с их слов.

Аналогию можно привести в отношении сотовых телефонов. Ведь любой сотовый телефон представляет собой устройство, подключенное к внешней сети (через ближайшую вышку сотовой связи). КАЖДЫЙ сотовый телефон имеет уникальный МАС-адрес, как и компьютер, ноутбук и т.д. Поэтому ЛЮБОЙ сотовый оператор способен в течение нескольких секунд идентифицировать, с какого именно телефона производится звонок (вызов) на конкретную вышку. А телефонный номер здесь, по идее, и не столь важен, сим-карта может быть вообще любая, это не имеет значения. Может возникнуть вопрос: почему же тогда так называемые "правоохранительные" органы зачастую утверждают, что, якобы, "не могут найти" краденые сотовые телефоны? Ответ: потому, что не хотят или не имеют полномочий. Впрочем, может и хотят, и имеют полномочия, но кто-то вышестоящий запрещает им это делать. Другое дело, что ряд сотовых телефонов можно перепрошить, т.е. подменить в них МАС-адрес. Но, разве те, кто воруют телефоны, а также те, кто покупает краденые телефоны - это всегда делают? Как правило, нет. Ибо и те, и другие прекрасно осведомлены о том, что ни с какими такими МАС-адресами никто дела иметь не будет. Ну, за исключением особо важных случаев, конечно (точнее, "особо важных персон"). Там-то, да, будут смотреть не только МАС-адреса, а и многое другое.

Сетевой уровень

На этом уровне протоколов появляется такая сетевая абстракция, как IP-адрес узла сети. Придумана она исключительно для того, чтобы компьютерам (точнее, пользователям компьютеров) проще было взаимодействовать друг с другом. Чтобы на основе IP-адресов можно было выделять классы сетей, осуществлять защиту от доступа и т.п. Хотя, повторимся, все это вполне можно было бы осуществить, используя исключительно МАС-адреса, не пользуясь технологией IP-адресов.

Т.е. еще раз следует подчеркнуть: фактически, связь осуществляется на основе МАС-адресов. Тогда как IP-адреса используются больше для организации сетевого взаимодействия, понятного не только для компьютеров, но и для людей.

Транспортный уровень

На транспортном уровне появляется также такое понятие, как порт (точнее, логический порт). Которого не существовало на нижележащих уровнях. Порт в данном случае – это просто некое целое число из определенного диапазона значений, при помощи которого (а также при помощи IP-адреса узла) происходит адресация между узлами в сетевых соединениях. Наличие конкретного порта, а также IP-адреса – необходимо и достаточно для того, чтобы однозначно адресовать сетевой интерфейс и, соответственно, запрос к нему. Открытый порт на конкретном узле сети соответствует сокету, который находится в режиме прослушивания или, наоборот, приема сетевых запросов.

Итак, на транспортном уровне для облегчения управления взаимодействием узлов сети добавляется порт сокета, открытого на прием или передачу данных.

Прикладной уровень

В общем, дело обстоит следующим образом:

Клиент (например, браузер) начинает открывать страницу, URL которой введен, к примеру, в его адресной строке. Для начала, браузер будет делать запрос в сеть на предмет того – какому IP-адресу соответствует сервер с доменными именем, содержащимся в открываемом URL. Далее, делается запрос (см. выше) о том, каков МАС-адрес узла сети, соответствующий этому IP-адресу. И только после этого, когда браузер получает в свое распоряжение MAC-адрес искомого узла, он и может выполнить запрос к нему.

Строго говоря, описание сетевого взаимодействия немного упрощено и не учитывает, например, прохождение запроса в локальных сетях, роутерах, маршрутизаторах.

Типичная схема передачи сетевого запроса

Инкапсуляция протоколов

Кадр протокола канального уровня

В связи с этим предлагаем взглянуть на схему инкапсуляции протоколов:

или, отображая в виде рисунка:

Схема инкапсуляции сетевых протоколов (предварительно)

Для большей полноты изображения, покажем место IPv4-протокола в кадре канального протокола:

Схема инкапсуляции сетевых протоколов (полностью)

Если данные, содержащиеся в поле данных протокола IPv4, имеют достаточно большой размер (нередко так и бывает, когда по сети передаются большие объемы информации), тогда формируются не один, а несколько кадров в формате канального протокола.

Гриша, если еще актуально: данные протокола НТТР вложены внутрь ТСР-пакетов. Порты разные у НТТР и ТСР и независимые друг от друга.

* тогда на какой МАС-адрес будет отправлять ответ адресат? Для ответа нам не нужен МАК отправителя для этого у нас есть его IP. Мы отправляем ответ в дефолтный шлюз (если для сети отправителя нет особых маршрутов).

Читайте также: