Руководство по TCPIP для начинающих


Оглавление (нажмите, чтобы открыть):

TCP/IP

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

В самом низу находятся физический уровень и канальный уровень. Пример — интерфейс Ethernet, описывающий передачу данных по коаксиальному кабелю или витой паре. Протоколы этих уровней обычно реализуются на уровне железа, например в сетевой карте компьютера.

Выше идёт сетевой уровень, где находится протокол IP, описывающий структуру сети и доставку пакетов.

Ещё выше — транспортный уровень, где находится протокол TCP, использующийся для передачи данных. Эти протоколы обычно реализуются на уровне операционной системы.

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

Содержание

IP — протокол, лежащий в основе Интернета, его название так и расшифровывается: Internet Protocol.

В настоящее время используются следующие две версии протокола IP:

  • IPv6 — сравнительно новая (текущая версия спецификации опубликована в декабре 1998 [1] ); IP-адрес имеет разрядность 128 бит и записывается в виде восьми 16-битных полей, с использованием шестнадцатеричной системы счисления и с возможностью сокращения двух и более последовательных нулевых полей до :: ; пример: 2001:db8:42::1337:cafe ;
  • IPv4 — «классическая» (1981 г. [2] ); IP-адрес имеет разрядность 32 бита и записывается в виде четырех десятичных чисел в диапазоне 0 … 255 через точку; пример: 192.0.2.34 .

Каждый узел может напрямую связаться только с узлами своей сети (например: подключенными к тому же сегменту Ethernet), для определения которых используется адрес сети — часть IP-адреса, определяемая маской сети). Связь с узлами других сетей осуществляется через промежуточные узлы — маршрутизаторы.

Посмотреть, как выглядит маршрут пакета от вашего компьютера к другим узлам, можно с помощью команды traceroute (в Linux) или tracert (в Windows).

TCP протокол базируется на IP для доставки пакетов, но добавляет две важные вещи:

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

Протокол TCP предназначен для обмена данными — это «надежный» протокол, потому что:

  1. Обеспечивает надежную доставку данных, так как предусматривает установления логического соединения;
  2. Нумерует пакеты и подтверждает их прием квитанцией, а в случае потери организует повторную передачу;
  3. Делит передаваемый поток байтов на части — сегменты — и передает их нижнему уровню, на приемной стороне снова собирает их в непрерывный поток байтов.

Соединение двух узлов начинается с handshake (рукопожатия):

  1. Узел A посылает узлу B специальный пакет SYN — приглашение к соединению
  2. B отвечает пакетом SYN-ACK — согласием об установлении соединения
  3. A посылает пакет ACK — подтверждение, что согласие получено

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

«Соединение» означает, что узлы помнят друг о друге, нумеруют все пакеты, идущие в обе стороны, посылают подтверждения о получении каждого пакета и перепосылают потерявшиеся по дороге пакеты.

Для узла A это соединение называется исходящим, а для узла B — входящим.

Отметим, что эти термины не имеют никакого отношения к входящему или исходящему трафику. Они показывают только инициатора соединения, то есть направление самого первого пакета (SYN). Любое установленное TCP-соединение симметрично, и пакеты с данными по нему всегда идут в обе стороны.

Когда один из узлов решает, что пора заканчивать соединение, он посылает специальный пакет FIN, после этого узлы прощаются и разрывают соединение.

Сетевой порт — это сетевой ресурс, отображаемый в виде числа (1-65535), которое определяет назначение входящих или исходящих сетевых потоков данных на заданном устройстве.

Если прибегнуть к аналогии, IP адрес — это адрес общежития с вахтёром, а порт — номер комнаты в этом общежитии или фамилия ее жильца.

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

Например, почтовое письмо (пакет данных) имеет информацию об отправителе (порт) и информацию о получателе (фамилия или номер комнаты по конкретному адресу).

Узел назначения («вахтер»), получив пакет («письмо»), смотрит на порт назначения («фамилию или номер комнаты») и передает пакет соответствующему у себя приложению («конкретному жильцу»).

Использование портов позволяет независимо использовать TCP протокол («почтовые услуги») сразу многим приложениям на одном и том же компьютере (общежитии).

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

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

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

Таким образом, сервер:

  • слушает на определённом порту, заранее известном клиенту
  • занимает этот порт всё время, пока не завершит работу
  • об IP-адресе и номере порта клиента узнаёт из приглашения, посланного клиентом
  • заранее знает IP-адрес и порт сервера
  • выбирает у себя произвольный порт, который освобождает после окончания соединения
  • посылает приглашение к соединению

UDP — это ещё один протокол транспортного уровня. Он тоже базируется на IP и тоже использует порты, но в отличие от TCP он не устанавливает соединений и не требует подтверждения получения каждого пакета.

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

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

Большинство прикладных протоколов базируется на TCP.

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

  • HTTP — основной протокол всемирной паутины (TCP-порт 80)
  • SMTP — протокол пересылки почты (TCP-порт 25)
  • FTP — протокол передачи файлов (TCP-порт 21)
  • DNS — протокол сопоставления доменных имен IP-адресам (UDP-порт 53)

Благодаря использованию стандартных портов мы можем набирать в браузере адреса веб серверов и не указывать порт — наши браузеры сами добавляют стандартный номер порта. Например, адрес https://www.example.com/ на самом деле полностью выглядит так: https://www.example.com:80/

Разумеется, стандартный — не значит обязательный. Практически во всех прикладных протоколах можно указать серверу слушать произвольный номер порта. Правда, тогда этот номер уже указывать обязательно, например https://www.example.com:8080/

Порты в диапазоне от 1 до 1023 называются хорошо известными. Службы, которыми используются эти порты, должны быть описаны как RFC и одобрены IESG. Далее идут зарегистрированные порты (1024 — 49151). Вы можете зарегистрировать в IANA (эта организация как раз занимается всем этим) один или несколько из этих портов под свою программу. Оставшиеся порты с 49152 по 65535 можно использовать без какой-либо регистрации.

Чтобы указать на документ, расположенный в сети, используется унифицированный идентификатор ресурса, или URI (англ. Unified Resource Identifier ), например: https://ru.wikibooks.org/wiki/TCP/IP. Первая часть адреса (от начала до двоеточия) называется схемой (в данном случае — https.) Дальше идёт часть, зависящая от схемы.

Идентификаторы ресурсов (URI) в свою очередь делят на включающие информацию о размещении ресурса в сети URL (англ. Unified Resource Locator ), и лишенные таковой URN (англ. Unified Resource Name .) Приведенный выше URI является примером URL; примеры URN: news:m5jgdq$7ig$1@reader1.panix.com, urn:ietf:rfc:2648, urn:isbn:0-13-066102-3, geo:48.2010,16.3695,183.

Ясно, что для получения ресурса по его URN, программное обеспечение должно вначале каким-либо образом определить (или предположить) его наличие на некотором сетевом ресурсе. Так, NNTP-сервер для URN-схемы news: может быть задан переменной окружения NNTPSERVER . Относящиеся к пространству urn:ietf: URN можно преобразовать по образцу: urn:ietf:rfc:2648 → https://tools.ietf.org/html/rfc2648, или же https://www.rfc-editor.org/rfc/rfc2648.txt.

Пожалуйста, добавляйте шаблон <<По алфавиту >> только на титульные страницы.

Стек протоколов TCP/IP: структура, уровни, настройка. Интернет-протоколы

В этой статье будут рассказаны основы модели TCP/IP. Для лучшего понимания описаны основные протоколы и службы. Главное — не торопиться и стараться понимать каждую вещь поэтапно. Все они взаимосвязаны и без понимания одной, трудно будет понять другую. Здесь скомпонована весьма поверхностная информация, так что эту статью смело можно назвать «стеком протоколов TCP/IP для чайников». Однако, многие вещи здесь не так трудны для понимания, как может показаться на первый взгляд.

TCP/IP

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

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

  1. Канальный (Link).
  2. Сетевой (Internet).
  3. Транспортный (Transport).
  4. Прикладной (Application).

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

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

Самые распространенные протоколы:

Каждый протокол определяет собственный порядок и принципы работы с данными.

HTTP (HyperText Transfer Protocol) предназначен для передачи данных. По нему отправляются, например, документы в формате HTML, которые служат основой веб-страницы. Упрощенно схема работы представляется как «клиент – сервер». Клиент отправляет запрос, сервер его принимает, должным образом обрабатывает и возвращает конечный результат.

FTP (File Transfer Protocol) служит стандартом передачи файлов в сети. Клиент посылает запрос на некий файл, сервер ищет этот файл в своей базе и при успешном обнаружении отправляет его как ответ.

SMTP (Simple Mail Transfer Protocol) используется для передачи электронной почты. SMTP-операция включает в себя три последовательных шага:

  1. Определение адреса отправителя. Это необходимо для возвращения писем.
  2. Определение получателя. Этот шаг может повторяться некоторое количество раз при указании нескольких адресатов.
  3. Определение содержимого сообщения и отправка. В качестве служебной информации передаются данные о типе сообщения. Если сервер подтверждает готовность принять пакет, то совершается сама транзакция.

Заголовок (Header)

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

Например, заголовок, вложенный на транспортном уровне, на другой стороне может быть обработан только транспортным уровнем. Другие просто его проигнорируют.

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

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

Протоколы передачи данных:

TCP (Transmission Control Protocol) — самый распространенный протокол. Он отвечает за гарантированную передачу данных. При отправке пакетов контролируется их контрольная сумма, процесс транзакции. Это значит, что информация дойдет «в целости и сохранности» независимо от условий.

UDP (User Datagram Protocol) — второй по популярности протокол. Он также отвечает за передачу данных. Отличительное свойство кроется в его простоте. Пакеты просто отправляются, не создавая особенной связи.

TCP или UDP?

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

Основное преимущество UDP заключается в скорости передачи. TCP является сложным протоколом с множеством проверок, в то время как UDP представляется более упрощенным, а значит, и более быстрым.

Недостаток кроется в простоте. Ввиду отсутствия проверок не гарантируется целостность данных. Таким образом, информация просто отправляется, а все проверки и подобные манипуляции остаются за приложением.

UDP используется, например, для просмотра видео. Для видеофайла не критична потеря небольшого количества сегментов, в то время как скорость загрузки – важнейший фактор.

Однако если необходимо отправить пароли или реквизиты банковской карты, то необходимость использования TCP очевидна. Потеря даже самой мизерной части данных может повлечь за собой катастрофические последствия. Скорость в этом случае не так важна, как безопасность.

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

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

IP-адрес (Internet Protocol address) – логический адрес устройства. Содержит информацию о местоположении устройства в сети. Пример записи: [192.168.33.4].

MAC-адрес (Media Access Control address) – физический адрес устройства. Используется для идентификации. Присваивается сетевому оборудованию на этапе изготовления. Представлен как шестибайтный номер. Например: [08-00-27-AB-0E-25].

Сетевой уровень отвечает за:

  • Определение маршрутов доставки.
  • Передачу пакетов между сетями.
  • Присвоение уникальных адресов.

Маршрутизаторы — устройства сетевого уровня. Они прокладывают путь между компьютером и сервером на основе полученных данных.

Самый популярный протокол этого уровня – IP.

IP (Internet Protocol) — интернет-протокол, предназначенный для адресации в сети. Используется для построения маршрутов, по которым происходит обмен пакетами. Не обладает никакими средствами проверки и подтверждения целостности. Для обеспечения гарантий доставки используется TCP, который использует IP в качестве транспортного протокола. Понимание принципов этой транзакции во многом объясняет основу того, как работает стек протоколов TCP/IP.

Виды IP-адресов

В сетях используются два вида IP-адресов:

Публичные (Public) используются в Интернете. Главное правило – абсолютная уникальность. Пример их использования – маршрутизаторы, каждый из которых имеет свой IP-адрес для взаимодействия с сетью Интернет. Такой адрес называется публичным.

Приватные (Private) не используются в Интернете. В глобальной сети такие адреса не являются уникальными. Пример – локальная сеть. Каждому устройству присваивается уникальный в пределах данной сети IP-адрес.

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

Самая распространенная версия интернет-протокола. Предшествует IPv6. Формат записи — четыре восьмибитных числа, разделенные точками. Через знак дроби указывается маска подсети. Длина адреса — 32 бита. В подавляющем большинстве случаев, когда речь идет об IP-адресе, имеется в виду именно IPv4.

Формат записи: [192.168.7.2/24].

Эта версия предназначается для решения проблем предыдущей версией. Длина адреса — 128 бит.

Основная проблема, которую решает IPv6 – это исчерпание адресов IPv4. Предпосылки начали проявляться уже в начале 80-х годов. Несмотря на то, что эта проблема вступила в острую стадию уже в 2007-2009 годах, внедрение IPv6 очень медленно «набирает обороты».

Главное преимущество IPv6 – более быстрое интернет-соединение. Это происходит из-за того, что для этой версии протокола не требуется трансляции адресов. Выполняется простая маршрутизация. Это является менее затратным и, следовательно, доступ к интернет-ресурсам предоставляется быстрее, чем в IPv4.

Пример записи: [4003:0af3:06s8:11f3:8b4e:09d8:623b:d34f].

Существует три типа IPv6-адресов:

Unicast – тип одноадресных IPv6. При отправке пакет достигает только интерфейса, расположенного на соответствующем адресе.

Anycast относится к групповым IPv6-адресам. Отправленный пакет попадет в ближайший сетевой интерфейс. Используется только маршрутизаторами.

Multicast являются многоадресными. Это значит, что отправленный пакет достигнет всех интерфейсов, находящихся группе мультивещания. В отличие от broadcast, который является «вещанием для всех», multicast вещает лишь определенной группе.

Маска подсети

Маска подсети выявляет из IP-адреса подсеть и номер хоста.

Например, IP-адрес [192.168.38.2] имеет маску [255.255.255.0]. В таком случае формат записи будет выглядеть так [192.168.38.2/24]. Число «24» – это количество бит в маске. Восемь бит равняется одному октету, который также может называться байтом.

Если подробнее, то маску подсети [255.255.255.0] можно представить в двоичной системе счисления таким образом: [11111111.11111111.11111111.00000000]. В ней имеется четыре октета, и запись состоит из «1» и «0». Если сложить количество единиц, то получим в сумме «24». К счастью, считать по единице не обязательно, ведь в одном октете – 8 значений. Видим, что три из них заполнены единицами, складываем [8+8+8+0] и получаем «24».

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

Рассмотрим небольшой пример. Есть IP-адрес [192.168.46.2] и маска подсети [255.255.255.0]. Считаем и записываем: [192.168.46.2/24]. Теперь сопоставляем маску с IP-адресом. Те октеты маски, в которых все значения равны единице (255) оставляют соответствующие им октеты в IP-адресе без изменения. Если же в значении нули (0), то октеты в IP-адресе также становятся нулями. Таким образом, в значении адреса подсети получаем [192.168.46.0].

Подсеть и хост

Подсеть отвечает за логическое разделение. По сути, это устройства, использующие одну локальную сеть. Определяется диапазоном IP-адресов.

Хост – это адрес сетевого интерфейса (сетевой карты). Определяется из IP-адреса с помощью маски. Например: [192.168.15.2/24]. Так как первые три октета — подсеть, то остается [0.0.0.2]. Это и есть номер хоста.

Диапазон адресов хоста – от 0 до 255. Хост под номером «0» является, собственно, адресом самой подсети. А хост под номером «255» является широковещательным.

Адресация

Для адресации в стеке протоколов TCP/IP используются три типа адресов:

Локальными называются MAC-адреса. Они используются для адресации в таких технологиях локальной сети как, например, Ethernet. В контексте TCP/IP слово «локальные» означает, что они действуют лишь в пределах подсети.

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

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

Домен первого уровня представляет конкретную информацию. Общие (.org, .net) не ограничены какими-либо строгими границами. Обратная ситуация — с локальными (.us, .ru). Они, как правило, привязаны территориально.

Домены низших уровней – это все остальное. Он может быть любого размера и содержать любое количество значений.

Например, «www.test.quiz.sg» – корректное доменное имя, где «sg» — локальный домен первого (верхнего) уровня, «quiz.sg» — домен второго уровня, «test.quiz.sg» — домен третьего уровня. Доменные имена также могут называться DNS-именами.

DNS (Domain Name System) устанавливает соответствие между доменными именами и публичным IP-адресом. При наборе доменного имени в строке браузера DNS обнаружит соответствующий IP-адрес и сообщит устройству. Устройство обработает этот машинный код и вернет его в виде веб-страницы.

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

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

Самые распространенные протоколы:

Ethernet – наиболее распространенная технология проводных локальных сетей.

WLAN – локальная сеть на основе беспроводных технологий. Взаимодействие устройств происходит без физических кабельных соединений. Пример самого распространенного метода – Wi-Fi.

Настройка TCP/IP для использования статического IPv4-адреса

Статический IPv4-адрес назначается напрямую в настройках устройства или автоматически при подключении к сети и является постоянным.


Для настройки стека протоколов TCP/IP на использование постоянного IPv4-адреса необходимо ввести в консоль команду ipconfig/all и найти следующие данные.

Далее нужно зайти в свойства нужного соединения, открыть свойства IPv4 и поставить отметки так, как указано на картинке. Найденные ранее данные ввести в соответствующие поля.

Настройка TCP/IP для использования динамического IPv4-адреса

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

Чтобы настроить стек протоколов TCP/IP на использование непостоянного IP-адреса необходимо зайти в свойства нужного соединения, открыть свойства IPv4 и поставить отметки так, как указано.

Способы передачи данных

Данные передаются через физическую среду тремя способами:

Simplex – это односторонняя связь. Передача ведется только одним устройством, в то время как другое только принимает сигнал. Можно сказать, что информация транслируется только в одном направлении.

Примеры симплексной связи:

  • Телевещание.
  • Сигнал от спутников GPS.

Half-duplex – это двусторонняя связь. Однако только один узел может передавать сигнал в определенный момент времени. При такой связи два устройства не могут одновременно использовать один канал. Полноценная двусторонняя связь может быть невозможна физически или приводить к коллизиям. Говорится, что они конфликтуют за среду передачи. Этот режим применяется при использовании коаксиального кабеля.

Пример полудуплексной связи — общение по рации на одной частоте.

Full Duplex – полноценная двусторонняя связь. Устройства могут одновременно транслировать сигнал и производить прием. Они не конфликтуют за среду передачи. Этот режим применяется при использовании технологии Fast Ethernet и соединении с помощью витой пары.

Пример дуплексной связи — общение по телефону через мобильную сеть.

TCP/IP vs OSI

Модель OSI определяет принципы передачи данных. Уровни стека протоколов TCP/IP прямо соответствуют этой модели. В отличие от четырехуровневого TCP/IP имеет 7 уровней:

  1. Физический (Physical).
  2. Канальный (Data Link).
  3. Сетевой (Network).
  4. Транспортный (Transport).
  5. Сеансовый (Session).
  6. Представительский (Presentation).
  7. Прикладной (Application).

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

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

Транспортный уровень остается без изменений. Выполняет одинаковые функции.

Сетевой уровень также не изменен. Выполняет ровно те же задачи.

Канальный уровень в TCP/IP соответствует двум последним уровням OSI. Канальный уровень устанавливает протоколы передачи данных через физическую среду.

Физический представляет собой собственно физическую связь — провода, кабели, электрические сигналы, коннекторы и т.п. В стеке протоколов TCP/IP было решено объединить эти два уровня в один, так как они оба работают с физической средой.

Курс по основам компьютерных сетей на базе оборудования Cisco. Этот курс поможет вам подготовиться к экзаменам CCENT/CCNA, так как за его основу взят курс Cisco ICND1.

1.15 Модель стека протоколов TCP/IP и ее особенности

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей, напомню, что эти записи основаны на программе Cisco ICND1 и помогут вам подготовиться к экзаменам CCENT/CCNA. Продолжаем разговор об эталонных моделях и на этот раз мы рассмотрим модель, которая была разработана путем практических наработок, эта модель называется модель стека протоколов TCP/IP, она похожа на модель OSI 7, но имеются и свои отличия, которые довольно значительны и их стоит обсудить, а также обозначить.

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

Перед началом я хотел бы вам напомнить, что ознакомиться с опубликованными материалами первой части нашего курса можно по ссылке: «Основы взаимодействия в компьютерных сетях».

1.15.1 Введение

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

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

1.15.2 Общий принцип работы модели стека протоколов TCP/IP

Общий принцип работы модели стека протоколов TCP/IP очень похож на принцип работы модели OSI 7, разница только в количестве уровней и их функционале. Думаю, что не будет лишним отметить следующее (тут многие могут со мной согласиться): модель OSI 7 более полно описывает взаимодействие компьютерной сети с точки зрения логики ее работы, но ее протоколы абсолютно не прижились в современных реалиях, а модель стека протоколов TCP/IP описывает компьютерную сеть не так полно, зато ее протоколы используются повсеместно.

Вообще модель TCP/IP более удобна для сетевого инженера, здесь более четко описаны его границы ответственности. Давайте посмотрим на структуру модели TCP/IP, которая показана на Рисунке 1.15.1.

Рисунок 1.15.1 Модель стека протоколов TCP/IP

Как видим, отличие модели TCP/IP от OSI 7 заключается в количестве уровней, у эталонной модели их семь, в модели стека протоколов их четыре. В модели TCP/IP объединены первых два уровня модели OSI 7 (канальный и физический), здесь первый уровень называется уровень доступа к сети или канальный уровень. На уровне доступа к сети в модели сетка протоколов TCP/IP работают такие технологии и протоколы как: Ethernet, который есть практически в каждой локальной сети, IEEE 802.11 (Wi-Fi), PPP, в общем и целом на первом уровне модели стека протоколов TCP/IP реализуется функционал физического и канального уровней модели OSI 7.

Второй уровень модели TCP/IP соответствует третьему уровню модели OSI 7, в разных источниках вы можете встретить разные названия третьего уровня: уровень сети Интернет, сетевой уровень, межсетевой уровень. Можно сказать, что это основной и самый интересный для сетевого инженера уровень. Так как на этом уровне определяется логическая адресация узлов сети Интернет и, по сути, этот уровень является конечным для сетевого оборудования, за взаимодействие компьютеров на более высоких уровнях уже отвечают конечные устройства: клиентское и серверное оборудование.

Третий уровень модели TCP/IP имеет такое же название, как и в модели OSI – Транспортный уровень, правда в модели OSI этот уровень в порядке нумерации идет четвертым. Транспортный уровень отвечает за надёжность передачи для конечных устройств поверх ненадежной компьютерной сети, в которой в любой момент могут возникать самые разные проблемы. К тому же транспортный уровень помогает различать компьютерам следующее: какой трафик какое приложение генерирует и какому приложению предназначены те или иные пакеты, это возможно благодаря сокетам. На транспортном уровне для нас будут интересны два протокола: TCP, который обеспечивает надежную передачу с установкой соединения, этот протокол используется для передачи данных типа текст, файлов и так далее, а также протокол UDP, этот протокол без установки соединения и используется он для передачи данных в системах реального времени: аудио и видео связь. Про работу служб с установлением соединения и без вы можете узнать из записи, опубликованной ранее.

Ну а на самом верху модели TCP/IP находится уровень приложений или прикладной уровень, который отвечает за взаимодействие с конечным пользователем. Этот уровень модели TCP/IP включает в себя сразу три уровня модели OSI 7 (сеансовый, представительский и прикладной уровни), что на самом деле очень удобно как для программистов и разработчиков, так и для сетевых инженеров. Программист может писать приложения, не задумываясь об уровнях, сосредоточившись на своих абстракциях, а сетевому инженеру многие вещи верхних уровней просто неинтересны, но об этом чуть позже.

1.15.3 Первый уровень модели TCP/IP или уровень доступа к сети

Первый уровень – это фундамент компьютерной сети, поверх которого строится вся логика взаимодействия. Пожалуй, основной недостаток модели стека протоколов TCP/IP заключается в том, что физический и канальный уровень модели OSI здесь объединены в один под названием уровень доступа к сети или канальный уровень. На мой взгляд, нужно отделять физические процессы, происходящие на первом уровне от логики, которая реализована в канале связи на втором уровне. Хотя тут могут быть возражения в следующем ключе: такие популярные технологии как Ethernet и IEEE 802.11 в контексте модели OSI 7 работают на двух уровнях (канальном и физическом), тогда как в контексте модели TCP/IP эти технологии реализуют свой функционал на одном уровне – уровне доступа.

Итак, на уровне доступа модели TCP/IP решаются физические вопросы, связанные с передачей сигнала в различных средах:

  • максимальный и минимальный допустимые уровни сигнала в среде передачи данных: если с минимальным все более-менее очевидно, то с максимальным немного поясню: с усилением полезного сигнала усиливаются и помехи;
  • какой уровень сигнала нужно принимать за логический ноль (логический ноль – это не отсутствие сигнала), а какой уровень сигнала будет считаться логической единицей;
  • на физическом уровне определяются технические и конструктивные требования к среде передачи данных, например, если передача по медной линии, то тут можно выделить сетевые интерфейсы типа RJ-45 и RJ-11 или, например, витая пара или коаксиальный кабель;
  • данные в чистом виде никогда не передаются по сети, по сети передаются два объединенных сигнала: полезный сигнал с данными (его еще называют модулирующий) и несущий сигнал, процесс объединения этих двух сигналов называется модуляцией, более подробно об этом читайте в книгах, указанных в самой первой теме.

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

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

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

Можно выделить следующие протоколы и технологии, которые работают на канальном уровне модели TCP/IP: Ethernet, IEEE 802.11 WLAN, SLIP, Token Ring, ATM. Первым двум мы выделим по целой части, так как в локальных сетях вы будете чаще всего сталкиваться именно с ними.

Еще на канальном уровне реализуется механизм обнаружения и исправления ошибок при помощи специальных кодов, очень подробно про канальные коды рассказано в книге Бернарда Скляра «Цифровая связь», здесь мы на них не останавливаемся. Из физических устройств, работающих на уровне доступа к сети можно выделить (дополнительно можете почитать про основные физические компоненты компьютерной сети): усилители сигнала, преобразователи сигнала (SFP-модули, медиаконвертеры и т.д.), ретрансляторы, хабы, концентраторы, радио антенны, а также коммутаторы уровня L2, которые будет представлять для нас наибольший интерес, так как их можно и нужно настраивать и у них есть различные по своей полезности механизмы для защиты сети и обеспечения надежности передачи данных.

1.15.4 Второй уровень или уровень сети Интернет

Второй уровень модели TCP/IP называется уровнем сети Интернет, сетевым или межсетевым уровнем. Это один из самых важных уровней для сетевого инженера, так как именно здесь работает протокол IP, отвечающий за логическую адресацию в компьютерных сетях и в сети Интернет, если говорить о частностях. Непосредственно протоколу IP мы уделим целых две части, сначала мы поговорим про версию IPv4, а затем разберемся с версией протокола IPv6. Также на этом уровне работают протоколы динамической маршрутизации, в этом курсе мы разберемся с протоколом RIP, который очень прост, но уже практически нигде не используется. А если будет продолжение, то мы еще будем разбираться с такими замечательными протоколами динамической маршрутизации, как OSPF и EIGRP.

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

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

На межсетевом уровне единица измерения данных или PDU называется пакетом, хотя об этом вы уже догадались, когда я использовал слово IP-пакет. При этом структура заголовка IP-пакета в IPv4 достаточно сильно отличается от структуры пакета в IPv6, как и сами IP-адреса этих протоколов.

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

1.15.5 Третий или транспортный уровень стека протоколов TCP/IP

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

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

Если говорить про протокол TCP, то данные передаваемые по сети при помощи этого протокола называются сегментами, а вот у данных, передаваемых по сети при помощи протокола UDP имеется другое название – датаграммы/дейтаграммы, кому как удобно, второй вариант я использую чаще. Транспортный уровень гарантирует целостность и правильность поступления данных на конечных устройствах, а также помогает компьютерам разобраться кому какие данные принадлежат, работает это примерно так (смотрите на Рисунок 1.15.2): какому-либо приложению назначается определенный TCP/UDP порт или же этот порт генерируется динамически, допустим со стороны клиента этот порт был сгенерирован динамически, а со стороны серверов порт был задан разработчиками или же системным администратором вручную (если интересно, то вот здесь описан принцип взаимодействия клиент-сервер).

Рисунок 1.15.2 Сильно упрощенная схема взаимодействия на транспортном уровне

Итак, получаем, что у клиентского ПК IP-адрес: 192.168.2.3, а также клиентский ПК выдал клиентскому приложению порт с номером 23678 для установки соединения с первым сервером (пусть приложением будет браузер), а для установки со вторым сервером браузер получил порт 23698. Клиентский ПК делает запросы к веб-серверам, находящимся в одной сети с клиентом: у первого сервера IP-адрес: 192.168.2.8, а у второго: 192.168.2.12, при этом порт серверного приложения как в первом, так и во втором случае одинаковый – 80, также хочу обратить внимание на то, что клиентский ПК сообщает серверам разные порты, на которые нужно слать ответы. Таким образом, если клиентский компьютер хочет сделать запрос к первому серверу, то он использует примерно следующую конструкцию для запроса: 192.168.2.8:80, это означает, что запрос был послан машине с IP-адресом 192.168.2.8 на 80 порт, сервер же пошлет ответ, используя вот такую конструкцию 192.168.2.3:23678. Если же запрос идет на 192.168.2.12:80, то ответ будет передан на 192.168.2.3:23698.

Таким образом происходит разделение трафика и компьютер не путается. Вообще, это описание предельно упрощено, более подробно мы будем говорить о протоколах транспортного уровня в отдельной части, так как эта тема довольно большая и требует отдельного разговора, кстати сказать, в курсах Cisco ICND1 и ICND2 достаточно мало времени уделено транспортному уровню. Здесь же стоит добавить что комбинация IP-адрес + порт транспортного уровня обычно называется сокетом, при этом не имеет значения протокол транспортного уровня (TCP или UDP).

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

1.15.6 Четвертый уровень или уровень приложений

Четвертый уровень модели TCP/IP представляет наименьший интерес для сетевого инженера, этот уровень создают и обслуживают: программисты, системные администраторы, devops-инженеры, хотя на уровне приложений есть несколько протоколов, которые важны и нужны сетевому инженеру. Вообще, основная задача прикладного уровня заключается в том, чтобы предоставить пользователю удобный интерфейс для взаимодействия с компьютерами и компьютерными сетями, но это если говорить коротко.

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

  • DHCP – протокол, позволяющий динамически выдавать клиентским машинам IP-адреса и другие данные для подключения к сети;
  • DNS – этот протокол придумали люди с дырявой памятью, которые не хотели запоминать IP-адреса, DNS позволяет преобразовывать IP-адреса в доменные имена сайтов и наоборот, для практики можете разобраться с командой nslookup;
  • SNMP – протокол, который используется во всех системах управления и мониторинга компьютерных сетей;
  • SSH – протокол для безопасного удаленного управления, при использовании SSH данные шифруются;
  • Telnet – еще один протокол удаленного управления, этот протокол реализует простой текстовый сетевой интерфейс.

Вообще этот список можно продолжить, но пока этого нам достаточно. В рамках курса мы разберемся как подключаться к коммутаторам и маршрутизаторам при помощи протоколов Telnet и SSH, научимся управлять соединениями и его параметрами, также мы немного разберемся с протоколами DHCP и DNS, возможно, в дальнейшем знакомство будет продолжено, а вот протокол SNMP мы трогать не будем.

Также стоит отметить следующие протоколы, относящиеся к прикладному уровню модели стека протоколов TCP/IP: RDP для удаленного управления компьютером, SMPT, IMAP, POP3 это всё почтовые протоколы для реализации разного функционала, FTP и SFTP это протоколы для передачи файлов по сети, первый использует протокол TCP, а второй более простой использует UDP.

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

1.15.7 Сравнение моделей OSI 7 и TCP/IP, а также поиск компромисса

Прежде чем перейти к сравнению моделей OSI 7 и TCP/IP, нам следует сказать, что модель стека протоколов TCP/IP использовалась для создания сети ARPANET, которая спустя годы превратилась в тот Интернет, которым мы пользуемся, сеть ARPANET – была исследовательской сетью, финансируемой министерством обороны США, эта сеть объединила сотни университетов и правительственных зданий в единую систему передачи данных при помощи телефонных линий, но с развитием технологий появилась спутниковая связь, радиосвязь, связь при помощи оптических линий и появились проблемы с передачей данных во всем этом зоопарке, разработка моделей передачи данных должна была решить возникшие проблемы и в принципе задача была решена.

Давайте же теперь попробуем сравнить эталонную модель сетевого взаимодействия OSI 7 с моделью стека протоколов TCP/IP и посмотрим, чем практическая модель отличается от теоретической. Для начала обратите внимание на Рисунок 1.15.3.

Рисунок 1.15.3 Сравнение эталонных моделей передачи данных TCP/IP и OSI 7

Слева показана эталонная модель сетевого взаимодействия, а справа вы видите модель стека протоколов TCP/IP. Сначала очевидные вещи: физический и канальный уровень модели OSI 7 соответствует уровню доступа к сети в модели TCP/IP, сетевой и транспортный уровень у обеих моделей совпадают, а вот три верхних уровня модели OSI соответствуют прикладному уровню модели TCP/IP.

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

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

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

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

А вот в первоначальном виде модели стека протоколов TCP/IP не было таких четких границ между тремя вышеописанными сущностями, поэтому реализация протоколов здесь скрыта хуже, чем в модели OSI 7, да и замена одного протокола на другой может происходить более болезненно, чем в модели OSI 7, в общем, на практике не все так гладко.

Еще одним важны отличием моделей TCP/IP и OSI 7 является то, что эталонная модель OSI 7 была разработана раньше, чем ее протоколы появились на бумаге. С одной стороны, это говорит про универсальность модели передачи данных, но с другой стороны: универсальные вещи хуже решают конкретные задачи. Например, простым кухонным ножом можно открыть банку сгущенки, но это гораздо удобнее сделать специальным консервным ножом. Отсюда и основные проблемы эталонной модели: у разработчиков модели OSI не было четкого понимания того, какие функции на каком уровне должны быть реализованы.

Также модель OSI изначально не была рассчитана на то, что когда-нибудь появятся широковещательные сети. Передача данных в сетях, построенных на принципах модели OSI 7, велась от узла к узлу, с вероятностью 99% ваша домашняя сеть и сеть вашего поставщика услуг доступа в Интернет широковещательная. Поэтому разработчикам пришлось вносить коррективы, добавив новый подуровень в модель OSI. Городульки в модели OSI не закончились на канальном уровне, когда на основе модели OSI 7 начали реализовывать первые компьютерные сети, оказалось, что существующие протоколы не соответствуют спецификациям служб, поэтому в модель были добавлены дополнительные подуровни для устранения несоответствия. И в заключении: при разработке модели OSI 7 не был учтен момент интеграции и объединения нескольких небольших сетей в одну большую, предполагалось, что в каждой стране будет одна большая единая сеть, находящаяся под управлением государства.

В TCP/IP все вышло ровным счетом наоборот: сначала были придуманы и реализованы протоколы этой модели, а затем появилась необходимость в том, чтобы создать модель, которая описывает сетевое взаимодействие с использованием этих протоколов. Таким образом протоколы модели стека TCP/IP четко соответствуют уровням и функциям этих уровней. Единственный минус, этот минус не такой значительный для современного мира, заключается в том, что модель стека протоколов TCP/IP не соответствует никаким другим моделям. Минус незначительный, так как большинство компьютерных сетей построены на основе модели TCP/IP и ее протоколов.

Еще одно важное отличие моделей TCP/IP и OSI 7 кроется на сетевом и транспортном уровнях. Модель TCP/IP на сетевом уровне реализуется связь без установления соединения при помощи протокола IP, а на транспортном уровне предлагает два протокола: UPD и TCP. А вот модель OSI 7 предлагает инженерам выбор на сетевом уровне: можно выбрать связь с установлением соединения или без него, а на транспортном уровне есть один протокол, который поддерживает связь только с установлением соединения.

Можно выделить четыре основных пункта, из-за которых критикуют эталонную модель сетевого взаимодействия:

  1. Несвоевременность.
  2. Неудачная технология.
  3. Неудачная реализация.
  4. Неудачная политика распространения.

Этим мы и ограничимся и перейдем к основным недостаткам модели TCP/IP. Во-первых, модель стека протоколов TCP/IP не проводит четких границ между службами, интерфейсами и протоколами, поэтому в модель TCP/IP не всегда легко вписать новые протоколы и технологии. Второй недостаток заключается в том, что при помощи модели TCP/IP можно описать не все сети и не все технологии, например, вы не сможете достаточно полно описать технологию Bluetooth при помощи модели TCP/IP.

Канальный уровень модели TCP/IP на самом деле никакой не уровень и всё, что было описано выше про канальный уровень модели TCP/IP в большей степени подходит для физического и уровня передачи данных модели OSI 7, а не для первого уровня модели TCP/IP. На самом деле канальный уровень модели TCP/IP – это даже не уровень, а интерфейс, позволяющий взаимодействовать сетевому уровню с физической средой передачи данных из этого следует и то, что здесь нет различия между физическим уровнем и канальной логикой, хотя это абсолютно разные вещи.

Итак, из всех вышеописанных недостатков модели TCP/IP для инженеров, обеспечивающих передачу данных по сети, самым важным недостатком является то, что фундаментальный, то есть первый уровень этой модели вовсе никакой не уровень, а интерфейс, а также то, что нет деления на физику и канальную логику. Исходя из этого, а также из того, что модель TCP/IP используется для построения большинства компьютерных сетей, мы можем сделать свою компромиссную модель, которая устранит вышеописанный недостаток и будет удобной для сетевого инженера, эта модель показана на Рисунке 1.15.4.

Рисунок 1.15.4 Компромиссная модель сетевого взаимодействия

Итак, эта модель разделяет уровень доступа к сети на два уровня: физический уровень, описывающий физические параметры среды передачи данных и ее свойства, и канальный уровень, который призван решать задачу объединения бит в кадры, логическое деление ресурсов физической среды, объединение нескольких компьютеров в сеть и надежность передачи данных. Естественно, что эта модель в качестве протоколов должна использовать протоколы модели TCP/IP.

Ее сетевой уровень должен решать задачи объединения нескольких небольших сетей в одну большую. А транспортный уровень должен увеличивать надежность передачи данных по сети, организуя туннельное соединение между конечными участниками обмена данных. Ну а на самом верхнем уровне решаются задачи взаимодействия пользователей с ПК и компьютерной сетью.

1.15.8 Выводы

Подводя итог разговору у модели передачи данных, которая называется модель стека протоколов TCP/IP следует отметить, что в отличие от модели OSI 7, данная модель сформировалась уже после того, как были разработаны и введены в реальный мир ее протоколы и на данные момент большинство компьютерных сетей работают именно по модели стека протоколов TCP/IP. У этой модели есть два минуса: первый заключается в том, что здесь нет четкой границы между протоколом и службой, вторым недостатком является то, что в модели TCP/IP нет явного деления на канальный и физический уровень, здесь канальный уровень представляет собой интерфейс между сетевым уровнем и средой передачи данных.

Мастер Йода рекомендует:  Создаём абсолютно безопасное и надёжное приложение

Второй минус легко исправить самостоятельно, выработав для себя компромиссную модель передачи данных, где есть деление на физический и канальный уровень. Также стоит сказать, что для сетевого инженера наличие на верху модели TCP/IP только прикладного уровня – это скорее плюс, чем минус, формально говоря, в задачи сетевого инженера не входит настройка пользовательских приложений, работающих с сетью, это должны делать системные администраторы, задача сетевого инженера заключает в том, чтобы обеспечить канал связи между точкой А и Б, то есть выполнить необходимые настройки на оборудование, которое работает на уровня от физического до транспортного, модель TCP/IP это демонстрирует четко.

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

Какую книжку по TCP/IP лучше всего прочитать?

Это классика, особенно, вторая книга.

У. Ричард Стивенс — «Протоколы TCP/IP. В подлиннике»
Виктор Олифер, Наталия Олифер — «Компьютерные сети. Принципы, технологии, протоколы.»
Эндрю Таненбаум — «Компьютерные сети»

Вместо книг рекомендую посмотреть курс по сетям. К примеру, можно взять Андрея — https://www.youtube.com/watch?v=OLFA0soYGhw&list=P.

Улучшать знания по сетям, дальше, можно статьями с Хабра, практикой и чтением RFC.

Руководство по TCP/IP для начинающих

.). Выход из системы удаленной машины заставит rlogin вернуть управление вашей локальной операционной системе. 4-12 Инструкция пользователя Опции rlogin. ————- Вы можете задавать три основные опции, когда вызываете rlogin. Эти опции следующие: -ec Опция -e заставляет rlogin использовать символ «c» вместо управляющего символа (

.) для управлением выходом из rlogin. Например: rlogin admin -e! Восклицательный знак означает управляющий символ rlogin. -8 Опция -8 вынуждает rlogin вернуть удаленную информацию и послать 8 бит символов в удаленный конец. Когда вы используете свое пользовательское имя или другое пользовательское имя, вы должны установить эквивалент пользователя для себя на удаленной машине, на которой вы собираетесь регистрироваться. Системный администратор удаленной машины должен подсказать вам как конфигурирована машина. (Эквивалент пользователя описан в главе 2). Использование tidle в тексте. —————————— Если вашим управляющим символом является tidle (

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

). ГЛАВА 5. ПЕРЕДАЧА ФАЙЛОВ. ____________________________________________________________________ Введение 5-1 Работа с ftp 5-2 Виды записи файла для передачи в ftp 5-2 Условия для присвоения имени файлу в ftp 5-2 Вызов ftp 5-3 Опции в ftp 5-3 Использование файла .netrc для автоматической 5-5 регистрации Ограничение для ftp команд 5-6 Описание ftp команд 5-6 Несколько примеров 5-18 Команда rcp 5-21 Вызов rcp 5-21 Опции rcp 5-22 Несколько примеров 5-23 5-1 Инструкция по настройке ВВЕДЕНИЕ. ____________________________________________________________________ Эта глава описывает две программы, которые вы можете использовать для передачи файлов. Эти программы называются ftp(программа передачи файла) и rcp(программа дистанционного копирования).В этой главе дается следующая информация: — Когда и зачем использовать эти команды — Как вызывать и выходить из этих программ — Как использовать опции этих команд — Примеры Команда ftp(TC) делает возможным передачу файла между вашей машиной и другими машинами глобальной сети. Это интеррактивная программа, которая позволяет вам вводить различные команды для перемещения и получения файла. Кроме того, ftp позволяет вам проверять и модифицировать файловые системы машин глобальной сети. Когда вы вызовите ftp, вы будете находиться в интерактивном режиме, пока не выйдите из ftp и не вернетесь в программу, из которой вышли. Программа применяется ftp в широком диапазоне операционных систем. Когда вы работаете в операционной системе UNIX, то вместо ftp команды может быть использована rcp команда, которая работает только в этой операционной системе. 5-2 Инструкция по настройке РАБОТА С ftp. ____________________________________________________________________ Чтобы использовать программу ftp, вам нужно открыть связь между вашей и удаленной машиной, куда или откуда вы хотите переместить файл. Эта программа позволяет вам иметь несколько связей одновременно, хотя вы можете давать команды, которые воздействуют только на одну связь. Многомашинная связь позволяет вам связаться с несколькими машинами за один сеанс работы ftp. Вам нет необходимости вновь регистрироваться на другой машине, когда вы хотите сменить машину для связи. Связь, которая используется в данный момент, называется текущей связью. Виды записи файла для передачи в ftp. ————————————- Программа ftp позволяет использовать два вида записи ASCII или двоичный. Используйте ASCII для текстовых файлов. Двоичный вид используется для двоичных данных, которые должны представлять собой непрерывную последовательность бит. Для связи между UNIX машинами в большинстве случаев может быть использован ASCII код(он задается по умолчанию). Двоичный вид может быть использован для некоторых специальных файлов, например программные объектные модули, если вы используете машины с операционной системой отличной от UNIX. Условия присвоения имени файлу в ftp. ————————————- Если первый символ в имени файла, который задаете в ftp, это дефис (-), то ftp использует стандартный ввод (для чтения) или стандартный вывод (для записи). Если первый символ в имени файла, который вы задаете в ftp, это вертикальный штрих (|), то остальная часть имени воспринимается как команда оболочки. Программа ftp вызывает командный язык с помощью имени файла и затем пользователь использует стандартный ввод или стандартный вывод. Если команда содержит пробелы, они должны быть выделены внутри кавычек. Например: «| ls -ls» Символ (|) может быть внутри и вне кавычек. 5-3 Инструкция по настройке Вызов ftp. ———- Чтобы вызвать ftp из оболочки UNIX, введите команду ftp. Когда команда это выполнено,на вашем экране появится промпт этой команды. Он выглядит следующим образом: ftp> Вы можете указать имя машины, с которой хотите связаться, хотя это необязательно. Следующий пример показывает как записывается имя машины admin: $ ftp admin Машинное имя устанавливается вашим системным администратором. До использования ftp вы можете проверить разрешено ли это имя для вас, распечатав файл /etc/hosts. Когда вы пишете имя машины во время вызова ftp, программа устанавливает машинную связь с этой машиной и разрешает вам передачу файлов. Это эквивалентно использованию команды ftp open для установления связи с машиной, которую вы назвали. Вы можете также вызвать ftp без имени машины, например: $ ftp Если вы не установили имя машины при вызове ftp, вы должны открыть связь с этой машиной в ftp. Это делается используя ftp open команду до того как вы начали передавать файлы. Для более детальной информации по этому вопросу смотри раздел «Описание ftp команд» дальше в этой главе. Опции ftp. ———- Дополнительно при вызове ftp, вы можете задать некоторые опции этой команды. Эти опции помещаются после названия команды ftp, но до имени машины, если оно указывается. Каждая опция состоит из дефиса (-) и одной буквы, например: -v. Каждая опция имеет соответствующую команду того же имени, которая может быть использована внутри ftp. Вам следует различать использование опций и соответствующих ftp команд. Для детальной информации по ftp командам смотри раздел «Описание ftp команд». 5-4 Инструкция по настройке -v Заставляет ftp работать в многословном режиме. В этом режиме сообщения ftp, посланные удаленной машиной в ftp появляются на экране вашего дисплея. Кроме того, если вы используете этот режим после завершения передачи каждого файла появляется статистическое сообщение об этом. Этот режим устанавливается по умолчанию, если ftp выполняется интеррактивно. Если ftp выполняется в командном режиме, многословный режим выключен, тогда его включает опция -v. Вы можете включить этот режим внутри ftp с помощью команды ftp verbose. -d Заставляет ftp работать в режиме отладки. В этом режиме сообщения ftp, посланные ftp в удаленную машину, отображаются на экране вашего дисплея. Если вы не используете эту опцию, информация не отображается. Вы можете также вызвать этот режим в ftp, используя команду ftp debug. -i Эта опция означает неинтеррактивный промпт. -n Предотвращает использование ftp авторегистрации, во время связи с удаленной машиной. Когда установлен режим авторегистрации, ftp идентифицирует вас автоматически на удаленной машине и регистрирует вас на этой машине.(Смотри раздел»Использование файла .netrc файла для автоматической регистрации» далле в этом разделе.) Если вы используете -n опцию для отключения автоматической регистрации, вы должны будете использовать команду ftp user, чтобы вручную зарегистрироваться на удаленной машине. -g Является причиной лишения имен файлов UNIX их расширений, таких как универсальное (*). Если вы не используете эту опцию, ftp расширяет имена файлов с помощью универсального расширения в списке файлов. Вместо этой опции можно использовать команду ftp glob. Ниже даны примеры использования ftp опций: $ ftp -v -d admin Вышеприведенная команда вызывает ftp в многословном и отладочном режиме и побуждает ftp открыть связь с удаленной машиной по имени admin. В отладочном режиме команды, посылаемые к удаленной машине, изображаются на вашем экране. Многословный режим изображает ответы получателя и статистические сведения о полученных байтах информации. 5-5 Инструкция по настройке $ ftp -v -d Вышеприведенная команда вызывает ftp в многословном и отладочном режиме, но не открывает связи с удаленной машиной. $ ftp -n -g admin Вышеприведенная команда вызывает ftp c отменой авторегистрации и универсального расширения, и заставляет открыть связь с удаленной машиной admin. $ ftp -n -d Вышеприведенная команда вызывает ftp с отменой авторегистрации и универсального расширения, не открывая связи с какой-либо машиной. Использование файла .netrc для автоматической регистрации. ———————————————————- Вы можете создать файл по имени .netrc в вашем домашнем директории в качестве дополнительного удобства. Этот файл содержит строки-элементы регистрационных данных для каждой машины, которая вам нужна для автоматической связи. Смотрите netrc(F) для полной информации по этому файлу. Когда вы вызываете ftp, указывая машину, т.е. когда вы одновременно с вызовом открываете связь с машиной, ftp читает файл .netrc. Если есть стока-элемент для этой машины, то ftp автоматически соединяет вашу машину с этой удаленной машиной. Это произойдет без вашего имени и пароля, если вы ввели пароль в этот файл. Если вы открыли связь в многословном режиме, то вы увидите как происходят транзакции. Формат файла состоит из отдельных полей, представленных ключевыми полями: machine имя login имя password пароль где machine,login,password это ключевые слова, за которыми следуют символьные данные, необходимые для регистрации: machine Имя узла. login Пользовательское имя для регистрации. password Пароль пользователя на данном узле.(Пароль пишется в нормальной незашифрованной форме текста). Если вы включили ваш пароль в файл .netrc, то вы должны читать/писать файл, получив разрешение, чтобы предотвратить открытие вашего пароля. 5-6 Инструкция по настройке В противном случае ftp не позволит вам использовать файл. Файловые разрешения должны быть установлены от 400 до 600 для .netrc файла, который включает пароль. Для дополнительной информации по файловым разрешениям смотри документацию по chmod(C).(В записи своего пароля в файл есть определенный риск. Вы должны взвесить все условия безопасности.) Спросите своего администратора обо всех особенностях до использования этого файла. Если вы не введете пароль в файл, ftp спросит вас о нем. Пример записи: machine admin login guido password open где: admin — имя узла, guido — пользователь, который регистрируется в машине admin, open — пароль пользователя guido. Ограничение для ftp команд. ————————— В дополнение к командам, которые используют стандартный протокольные функции ftp TCP/IP предоставляет несколько команд, которые используют функции опций ftp. Такие команды следует использовать только для связи с машинами, работающими в UNIX или UNIX совместимых системах. Команды, чье использование будет описано позже в этой главе, имеют определенные ограничения. Когда происходит коммуникация с удаленной машиной, которая не использует UNIX, вам следует спросить системного администратора поддерживается ли ftp в этой машине до ее использова- ния. Некоторые ftp поддерживают не все опции команд. Программа ftp может предоставить список поддерживаемых команд. Для получения такой информации нужно использовать команду ftp remotehelp после установления связи с удаленной машиной. Описание команд ftp. ——————— Когда на экране появляется промпт ftp, вы можете вводить одну из команд, описанных ниже в этом разделе. После выполнения команды снова появится промпт ftp. В зависимости от того ккакой режми установлен режим многословный или отладочный могут появится дополнительные сообщения. После каждой команды нужно нажимать Return. Выполнение команды не начнется пока вы не нажмете Return. Если вы сделали ошибку при наборе команды, вы можете использовать системную команду построчного редактирования erase(BKSP) или команду символьного редактирования kill(Cancel). 5-7 Инструкция по настройке Вам нет необходимости вводить имя команды полностью, можно вводить определенное количество символов, достаточное для идентификации. В большинстве случаев это один или два символа от названия команды ftp. Этот раздел представляет основные команды, но не все, доступные для ftp. Для полнлглпредставления о командах ftp смотри раздел руководства по ftp(TC). ! Эта команда задерживает ftp и вызывает командный язык (shell) на локальной машине. Любой(ые) символ(ы) после восклицательного знака воспринимаются и выполняются как shell команды. Затем можно вернуться в ftp, выйдя из shell. Все ftp опции и связанные удаленные машины возвращаются в тоже самое состояние, которое было до появления этой команды. Если команда shell напечатана в той же строке, где и !, то выполняется только эта команда. После выполнения команды программа ftp возвращается в командный режим. append Команда append заставляет ftp добавлять содержимое локального файла в конец файла удаленной машины, скоторой вы соединены в данный момент. Когда вы вызываете эту команду, вы можете указать какой файл к какому добавить, например: ftp> append имя локального файла имя файла удаленной машины В другом случае вы можете использовать только имя команды ftp, а затем получить запрос об имени файлов, например: ftp> append (local-file) имя локального файла (remote-file) имя файла удаленной машины Эту команду можно использовать только с теми машинами, что используют UNIX систему или с UNIX совместимыми машинами. ascii Эта команда побуждает ftp преобразовывать файлы в ASCII код. (По умолчанию код всегда ASCII). bell Эта команда приводит к тому, что на вашем терминале появляется сигнал после завершения передачи каждого файла. Чтобы прекратить подачу сигнала, нужно снова набрать эту команду ftp. 5-8 Инструкция по настройке binary Эта команда побуждает ftp передавать файл в двоичном коде. bye По этой команде осуществляется выход из ftp. Эта команда закрывает все открытые связи. cd По этой команде имя директория на удаленной машине заменяется на новое. Вы можете записать новое имя, когда вызываете команду, как показано в примере: ftp > cd /usr/bin В противном случае вы можете использовать только имя команды ftp, тогда машина запросит имя нового директория, например: ftp> cd (remote-directory) /usr/bin close По этой команде закрывается текущая связь. debug Эта команда включает и выключает многословный режим. Если режим включается, то об этом появляется сообщение на вашем дисплее, при выключении сообщений нет. delete По этой команде удаляется файл в удаленной машине, к которой вы подключены в данный момент. Вы можете указать имя файла, который нужно удалить, при вызове ftp команды: ftp> delete имя файла для удаления Если вам больше нравится, то вы можете не указывать имя при вызове команды ftp. Тогда машина вас запросит об имени, например: ftp> delete (remote-file) имя файла для удаления dir Эта команда выдаст вам детальный список директория на удаленной машине, к которой вы подключены.(Сравните с опцией ls, данной ниже). 5-9 Инструкция по настройке Вы можете задать имя директория, который нужно распечатать, при вызове команды ftp. Например: ftp> dir /usr/bin Если вы не указали имя директория, то будет распечатан текущий директорий на удаленной машине. Вы можете также побудить ftp занести результаты выполнения команды в файл до того как он появится на экране. Делается это следующим образом: ftp> dir /usr/bin printfile Вы должны указать имя директория до имени выходного файла (здесь printfile). Таким образом, если вы хотите напечатать текущий директорий в файле, называемом printfile, выполните следующее: ftp> dir . printfile где «.» означает текущий директорий. form Эта команда выводит на экран формат файла, который используется. Обычно поддерживается непечатный формат. get Эта команда копирует файл из удаленной машины, к которой вы в данный момент подсоединены. Этот файл копируется в вашу машину (Используйте команду mget для копирования нескольких файлов одновременно). Когда вы вызываете эту команду, вы можете указать имя файла на удаленной машине и имя в вашей машине, в который вы скопируете файл. Например: ftp> get имя файла удаленной машины имя файла вашей машины Если вы просто укажете имя файла удаленной машины, который нужно скопировать, то файл на вашей машине будет иметь тоже самое имя. Пример: ftp> get имя удаленной машины 5-10 Инструкция по настройке Вы можете записать только команду ftp get. Тогда программа ftp запросит вас об имени файла,например: ftp> get (remote-file) имя файла удаленной машины (local-file) имя файла вашей машины glob Эта команда заставляет ftp запрещать расширение имен файлов UNIX, такое универсальное, как ‘* ‘. Эта команда служит и для запрещения и для разрешения расширения таким образом что, если задать ее повторно, то расширение вновь разрешено. После разрешения расширения расширения ftp ко всем именам файлов добавит расширение при выводе списка файлов. hash Эта команда побуждает ftp выдавать на экране символ ‘# ‘ после каждого блока данных, который посылается удаленной машиной. Размер блоков данных может быть различным в зависимости от версии программного обеспечения. Для того, чтобы увидеть текущее значение, с командой ftp используйте многословный режим. Эта команда включает и выключает выдачу символа ‘#’ на экран ее при повторном наборе. help Эта команда выдает на экран информацию о работе ftp. Если после help задать имя команды, то появится информация об этой команде. Если набрать просто help, то появится информация обо всех командах ftp. lcd Эта команда изменяет рабочий директорий, используемый ftp, на вашей машине. Вы можете задать имя директория, который вам нужен как рабочий, например: ftp> lcd /ysr/deb Если вы не задали имя директория, то будет использоваться ваш домашний директорий. ls Эта команда распечатывает абревиатурный список содержания директория удаленной машины, с которой вы связаны. Вы связаны в данный момент. 5-11 Инструкция по настройке Вы можете задать имя директория, который вы хотите распечатать. Например: ftp> ls /usr/bin Если вы не задали имя, будет распечатан текущий директорий. Можно задать, чтобы результаты выполнения команды были помещены в файл до появления их на дисплее. Это делается ftp, если указать имя файла на вашей машине куда следует поместить листинг директория, например: ftp> ls /usr/bin printfile Имя директория нужно задать до вывода файла (здесь printfile). Например, если вы хотите распечатать текущий директорий в файл с именем printfile: ftp> ls . printfile где «.» ставится, чтобы подчеркнуть, что директорий текущий. mdelete Эта команда удаляет список файлов на удаленной машине, с которой вы связаны в данный момент. Вы можете задать имена файлов для удаления при вызове команды. Например: ftp> mdelete имя 1файла удаленной машины имя 2файла. В противном случае вы можете просто использовать имя команды. Программа ftp запросит вас об имени(ах): ftp> mdelete (remote-files) имя 1файла 2файла. mdir По этой команде выдается список листинг директория удаленной машины и результат помещается в файл вашей машины. Вы можете задать список файлов удаленной машины и имя файла вашей машины, куда поместить результат при вызове команды. Например: ftp> mdir имя 1файла удаленной машины. printfile 5-12 Инструкция по настройке (Заметьте, что последее имя это имя файла вашей машины printfile). Возможно просто использовать имя команды. Тогда программа ftp запросит у вас имя файлов, например: ftp> mdir (remote-files) имя 1файла удаленной машины. printfile local-file printfile?y mget Эта команда копирования одного или более файлов с удаленной машины, к которой вы подключены в данный момент на вашу машину. Файлы после копирования будут иметь теже имена. Вы можете указать список файлов для копирования: ftp> mget имя 1файла удаленной машины имя 2файла. Если вы не задали имена файлов при вызове команды, программа ftp запросит вас о них: ftp> mget (remote-files) имя 1файла удаленной машины имя 2файла . mkdir Эта команда создает директорий на удаленной машине, к которой вы в данный момент подключаетесь. Вы можете задать им директория при вызове команды, например: ftp> mkdir /u/mydir Если вы не задали имя, ftp запросит вас о нем, например: ftp> mkdir (directory-name) имя директория Эта команда поддерживается не всегда. mls Эта команда получает абревиатурный список группы файлов текущего директория на удаленной машине и помещает результат в файл на вашей машине. 5-13 Инструкция по настройке Вы можете задать список файлов удаленной машины и файл вашей машины, куда поместить результат при вызове команды, например: ftp> mls имя 1файла удаленной машины . printfile Вы можете не указывать имена при вызове команды, и тогда прграмма запросит вас о них: ftp> mls (remote-files) имя 1файла удаленной машины. printfile local-file printfile?y mput Эта команда копирует один или более файлов с вашей машины в удаленную машину, с которой вы связаны в данный момент. На удаленной машине файлы будут иметь теже имена. Вы можете задать список фалов при вызове команды,например: ftp> mput 1файл вашей машины 2файл вашей машины. Если вы не указали имена, программа ftp вас об этом запросит: ftp> mput (local-files) имя 1файла вашей машины имя 2файла. nmap Используйте эту команду для установки и отмены механизма преобразования имен файлов. Эта команда полезна при связи с UNIX несовместимыми машинами и в которых используется другой способ именования файлов. Переименовывание файлов локальной машины производится с помощью get и mget команд, а удаленной машины с помощью put и mput команд. Команда mput комплексная. Для более детальной информации по этой команде смотри описание по ftp(TC). ntrans Используйте эту команду для включения и выключения механизма трансляции символов имени файла. Эта команда полезна при связи с UNIX несовместимой удаленной машиной, где применяется другой способ именования файлов. Трансляция имен файлов локальной машины производится с помощью get и mget команд, а удаленной машины с помощью put и mput команд. Команда mtrans комплексная. Для более детальной информации по этой команде смотри описание в в руководстве по ftp(TC). 5-14 Инструкция по настройке open Эта команда устанавливает связь с удаленной машиной, которая предполагается для передачи файлов. При вызове команды вы можете указать имя машины, например: ftp> open admin Если имя не указано, программа запросит его: ftp> open (to) имя машины Если вы указали имя машины при вызове команды, вы можете также указать номер порта на удаленной машине. Если указан порт, то ftp откроет связь через этот порт, если он предпочтительнее того, что задается по умолчанию. Изменения порта делаются в том случае, если вас об этом поросят или это задается системным администратором. Если порт не задан, то программа его не запрашивает. prompt Эта команда предотвращает ваш запрос к ftp о разрешении на переход между файлами в многофайловых командах, таких как mget. Эта команда подключается и отключается при повторном наборе. put Эта команда перемещает файл из вашей машины в удаленную машину, к которой вы в данный момент подключены.(Для передачи нескольких файлов одновременно используйте команду mput). Вы можете задать имя файла вашей машины и имя файла удаленной машины при вызове команды ftp,пример: ftp> put имя вашего файла имя файла удаленной машины или ftp> put имя вашего файла 5-15 Инструкция по настройке Если вы не указали имя файлов(а), то программа вас о них запросит, напрмер: ftp> put (local-file) имя вашего файла (remote-file) имя файла удаленной машины Если вы не укажете имя файла удаленной машины, то команда put создаст файл на удаленной машине под тем же именем, что и на вашей машине. pwd Эта команда вынуждает ftp печатать имя текущего рабочего директория на удаленной машине, с которой вы связаны в данный момент. quit Команда аналогична команде bye, о которой говорилось выше. quote Команда заставляет ftp посылать параметры, которые вы вводите в машину, посылать к удаленной машине для выполнения. Параметры это ftp команды и другие параметры. Те команды, что ftp поддерживает, могут быть отображены на экране с помощью команды remotehelp. Вы можете ввести эту команду при вызове программы ftp, например: ftp> quote NLST Если вы указали только имя команды, ftp спросит вас о командной строке, которую нужно использовать, например: ftp> quote (command-line to send) NLST Эту команду следует использовать только по совету вашего системного администратора. recv Эта команда аналогична команде get, описанной выше. remotehelp Эта команда запрашивает помощь ftp на удаленной машине, с которой вы связаны в данный момент. Эта информация сообщает о том какие команды поддерживает удаленная машина. rename Эта команда переиновывает файл на удаленной машине, с которой вы связаны в текущий момент. 5-16 Инструкция по настройке При вызове команды вы можете использовать имена файлов, напрмер: ftp> rename имя 1файла имя 2файла Если вы использовали только имя команды при вызове программы, то машина запросит имена файлов: ftp> rename (from-name) имя 1файла (to-name) имя 2файла mdir Эта команда удаляет директорий на удаленной машине, с которой вы связаны в данный момент. Вы можете задать имя директория, который следует удалить, при вызове команды, например: ftp> rmdir /u/mydir или вы можете не задавать имя при вызове команды, и машина запросит вас о нем: ftp> rmdir (directory-name) /u/mydir Эта команда не всегда поддерживается. send Эта команда аналогична команде put, описанной выше. sendport Эта команда заставляет ftp запрещать возможность задания порта локальной машины для данных удаленной машины. Эта команда может подключаться и отключаться ее повторным набором. При вызове ftp по умолчанию задается определенный порт. Эту команду следует использовать по совету вашего системного администратора. status Это команда заставляет ftp изображать свой текущий статус на вашем терминале. Статус включает режимы, которые выбраны командами bell,form,hash,glob,port,type. 5-17 Инструкция по настройке type Эта команда устанавливает в каком виде передается файл. Допустимы коды ASCII и двоичный. Эта команда аналогична командам ascii и binary. Если вы не указали тип при вызове команды, то устанавливается ASCII. trace Эта команда заставляет ftp разрешать пакетную трассировку. Эта команда включается и отключается ее повторным набором. Эту команду следует использовать только по совету вашего системного администратора. user Эта команда позволяет вам идентифицировать самого себя на удаленной машине при установлении связи. Эта авторегистра- ция разрешена с опцией -n при вызове ftp. В этом случае данная команда не нужна.(Смотри раздел «Использование файла .netrc для автоматической регистрации» ранее в этой главе). Если автоматическая регистрация запрещена, то используйте эту команду для собственной регистрации и идентификации на удаленной машине. Удаленной машине нужно сообщить три вида информации кто вы: регистрационное имя, пароль и имя ресурса. Имя пользователя требуется для всех машин, пароль и имя ресурса требуются только для некоторых систем. Ваш системный администратор должен сказать что требуется для ваших машин. Он же должен подсказать вам правильное имя, пароль и имя ресурса, который вы хотите использовать. Вы можете ввести всю эту информацию при вызове команды user, например: ftp> user mike cat myaccount Вы можете не указывать всю эту информацию при вызове команды. Тогда программа вас о ней запросит, например: 5-18 Инструкция по настройке ftp> user (usename) mike(имя пользователя) password: Account: myaccount(имя ресурса) Заметьте, что эхо не отражает ваш пароль при его наборе для защиты вашей информации. Если вы не набрали пароль или имя ресурса, то запроса о них не будет. verbose Эта команда заставляет ftp запрещать многословный режим. Эта команда включается и выключается при повторном наборе. В многословном режиме ftp протокольные сообщения, посланные удаленной машиной появляются на вашем терминале. Кроме того, в этом режиме отображается статистика после передачи каждого файла. Если этот режим запрещен, то данная информация не изображается. ? Другое название команды help. Примеры работы ftp. ——————- Этот раздел иллюстрирует как можно использовать ftp. Ниже даны три примера. Вэтих примерах используются три машины, локальная машина с именем HERE и удаленная машина с именем THERE. Описание 1 примера. ——————- Этот пример показывает использование ftp для посылки и приема файлов. Команда ftp вызывается с именем главной машины и происходит автоматическая регистрация пользователя на другой машине, т.к. не используется опция -n. Многословный режим запрещен использованием команды verbose. Пользователь затем изменяет рабочий директорий на удаленной машине на /etc директорий. Т.к. нет опции -d и есть команда verbose, многословный режим запрещен и никаких сообщений, кроме промпта ftp, не появляется. Пользователь, используя команду ls, получает абревиатурный листинг директория /etc машины THERE. команда ftp выдает три файла в каталоге /etc. Команда get passwd затем копирует файл passwd с машины THERE в машину HERE. Файл по имени passwd создается в машине HERE, если было указано имя машины. 5-19 Инструкция по настройке Команда put используется, чтобы скопировать файл по имени wall из текущего рабочего директория локальной машины(HERE) в директорий удаленной машины (THERE) /etc. Этот файл копируется стем же именем, т.к. свое имя не было указано. После окончания передачи, появляется листинг /etc, в котором уже четыре файла, включая wall, который был только что скопирован с машины HERE. Затем используется команда bye, чтобы вернуться в оболочку операционной системы на локальной машине HERE. +——————————————————————+ | $ ftp THERE | | Connected to THERE | | 220 THERE FTP server (Version 4.160 #1) ready | | Name (THERE:stevea): | | Password (THERE:stevea): | | 331 Password required for stevea. | | 230 User stevea logged in. | | ftp> verbose | | Verbose mode off. | | ftp> cd /etc | | ftp> ls | | passwd | | volcopy | | whodo | | ftp> get paswd | | ftp>put wall | | ftp> ls | | passwd | | volcopy | | wall | | whodo | | ftp> bye | | $ | +——————————————————————+ Описание 2 примера. ——————- Этот пример иллюстрирует экранные изображения, которые можно получить, используя несколько опций ftp. После вызова ftp c именем удаленной главной машины, пользователь вызывает команду, которая позволит вернуть режим отладки. После этого команда ftp выдает сообщения на экран, что свидетельствует о разрешении данной опции. Пользователь затем заменяет рабочий директорий на удаленной машине на /etc. Т.к. присутствуют отладочный и многословный режимы, на экране будут появляться сообщения о посылке команд к удаленной машине ( CWD/etc) и ответы, полученные с удаленной машины (250 CWD command successful — команда прошла успешно). Заметьте, что cd команда, которая имеет такуюже форму, как команда изменения директория в UNIX, посылается в виде CDW команды (изменение рабочего директория на удаленной машине). Эта команда применяется ftp вместо cd, чтобы она работала независимо от системной команды. 5-20 Инструкция по настройке Следом за cd командой пользователь ставит pwd команду, чтобы подтвердить изменение рабочего директория. Команды ftp будут изображать на вашем экране сообщения, посылаемые между вашей (локальной) и удаленной машиной, а затем появится текущий рабочий директорий на удаленной машине. Затем пользователь набирает hash опцию, на что появляется сообщение, что данная опция разрешена. Команда get wall myfile приказывает ftp восстановить файл wall и поместить его в файл myfile в текущем рабочем директории на вашей машине. Команда ftp выдаст сообщения, посылаемые между локальной и удаленной машинами о начале передачи и затем печатает hash метку для каждого блока, полученной информации. После завершения передачи на экране появляется статистика, в которой время, потребовавшееся для передачи, и дата передачи файла. После получения файла пользователь закрывает связь командой close и выходит из ftp командой bye. +——————————————————————+ | $ ftp THERE | | Connected to THERE | | 220 THERE FTP server (Version 4.160 #1) ready | | Name (THERE:stevea): | | Password (THERE:stevea): | | 331 Password required for stevea. | | ftp> debug | | Debugging on (debug = 1) | | ftp> cd /etc | | — CDW /etc | | 200 CDW command okay. | | ftp> pwd | | — PWD | | 251 | | ftp> hash | | Hash mark printing on (1024 bytes/hash mark). | | ftp> get wall mefile | | — PORT 3,20,0,2,4,51 | | 200 PORT command okay. | | — RETR wall | | 150 Opening data connection for wall (3.20.0.2.1075)(24384bytes)| | #######################. | | 226 Transfer complete. | | 24550 bytes received in 12.00 seconds (2 Kbytes/s) | | ftp> close | | — QUIT | | 221 Goodbye. | | ftp> bye | | $ | +——————————————————————+ 5-21 Инструкция по настройке КОМАНДА rcp. ____________________________________________________________________ Другая команда,позволяющяя вам копировать файлы между двумя UNIX совместимыми машинами в глобальной сети — это rcp. Эта команда аналогична ftp, но имеет синтаксис более похожий на команду UNIX cp. Эту команду можно использовать только с машинами, имеющими операционную систему UNIX или совмкстимую с UNIX. Вызов rcp. ———- Программа rcp вызывается из оболочки UNIX. Вы должны указать имя файла для копирования и куда его нужно скопировать. Заметьте, что rcp аналогична cp. Вы можете использовать эту программу для копирования файла из своей машины в удаленную или наоборот. Следующий пример показывает как файл по имени remotefile c машины admit был скопирован в файл localfile на вашей машине(локальной машине). Как показано имена файлов соответствуют условностям UNIX. Имена файлов могут иметь одну из трех форм, где имя файла означает файл или директорий. Эти формы следующие: — user@machine:filename — machine:filename — filename где: machine имя машины, которая содержит или будет содержать файл. Если имя файла не пределено, то ваша локальная машина присваивает его себе. user имя пользователя той машины, которую вы указали. Если вы не указали имя пользователя, используется ваше имя на вашей машине. В любом случае вы должны иметь разрешение для вас на машине, на которой расположен нужный вам файл. Администратор удаленной машины может как конфигурирована удаленная машина. 5-22 Инструкция по настройке filename это стандартное имя в UNIX, которое может включать путь в директории. Если имя файла, которое вы указали не начинается со (/), тогда файл помещается или имеется в домашнем директории пользователя. Имя файла может быть универсальным, но эти имена должны быть заключены в кавычки, чтобы предотвратить их расширение операционной системой на вашей локальной машине. Если вы указали только имя директория, доступного rcp командам, то файл(ы), который(е) вы указали для копирования, то файл(ы) копируется в этот директорий с тем же именем. Опции rcp. ———- При вызове команды вы можете указать следующие опции: -r Эта опция разрешает копирование директорий. Если вы задали файл для копирования и это директорий и поставили опцию -r, то скопируется все дерево. Когда задается эта опция, то назначение команды rcp это копирование директория. Если вы не указали эту опцию и хотите скопировать директорий, то в ответ появится сообщение об ошибке. -p Эта опция позволяет предохранить от изменения режима и размеров файла-источника в копиях, игнорируя umask. Когда вы указываете опцию -p, то файл дублируется. Если опции нет, то используется umask. 5-23 Инструкция по настройке Примеры. ——— В следующих примерах используются две удаленные машины сети по имени THERE-C и THERE-C1. Первый пример показывает копирование файла по имени list из текущего директория пользователя в домашний директорий пользователя на машине THERE-C: $ rcp list THERE-C:list Во втором примере копируется директорий c иерархией /net/src на локальной машине в дерево корневого каталога src в домашнем директории на THERE-C: $ rcp -r /net/src THERE-C:src В третьем примере показано как пользователь копирует файл list из домашнего директория пользователя по имени mike на THERE-C в директорий /usr/tmp на THERE-C1. Копия на THERE-C1 принадлежит пользователю по имени deb. $ rcp mike@THERE-C:list deb@THERE-C1:/usr/tmp ГЛАВА 6. ПРОТОКОЛ ВРЕМЕННОЙ СИНХРОНИЗАЦИИ. ____________________________________________________________________ Ведение 6-1 Формат сообщения 6-3 TSP сообщения 6-4 Сообщение о регулировке времени 6-4 Сообщение о подтверждении 6-5 Сообщение-запрос хозяина 6-5 Подтверждение хозяина 6-6 Сообщение об установлении сетевого времени 6-6 Сообщение о действии хозяина 6-7 Сообщение о действии подчиненного 6-7 Сообщение о кандидатуре хозяина 6-8 Сообщение о кандидатуре,посылающей сообщение 6-8 Сообщение об отказе в выборе 6-9 Сообщение о нескольких хозяевах 6-9 Сообщение о конфликте 6-10 Сообщение о выходе 6-10 Сообщение об установке даты 6-11 Сообщение о требовании установки даты 6-11 Сообщение, подтверждающее установку даты 6-12 Сообщение о начале трассировки 6-12 Сообщение об окончании трассировки 6-13 Сообщение о местоположении главного хозяина 6-13 Сообщение о местоположении удаленного хозяина 6-14 Сообщение о проверке 6-14 Сообщение об обнаружении петли 6-15 6-1 Инструкция по настройке ВВЕДЕНИЕ. ____________________________________________________________________ Протокол временной синхронизации (TSP) был разработан для специального использования программой timed(ADMN). Эта программа является локальной областью синхронизатора сетевых часов для UNIX операционной системы с повышенными способностями, которые предоставляет TCP/IP. Программа timed построена на базе DAPRA UDP протокола и в основе имеет схему «хозяин-подчиненный». TSP нужна для двух целей. Первая — это поддержка сообщений для синхронизации часов различных машин в локальной области сети. Вторая — поддержка сообщений для выбора нового хозяина, который выбирается среди подчиненных «временных демонов» (временной демон — это процесс операционной системы, обслуживающий временные функции системы, часы системы), когда по каким-либо причинам хозяин исчезает. Короче говоря, синхронизация программного обеспечения, которое работает в некоторой локальной области сети, состоит из набора демонов (один на машину) и основана на структуре хозяин-подчиненный. Настоящая система сохраняет синхронизацию в пределах 20 миллисекунд, если это поддерживается аппаратно. В противном случае лучшее, что может быть это 1секунда. Демон-хозяин ихмеряет временную разницу между часами, установленными на его машине и всеми другими машинами. Текущее исполнение использует ICMP (Требования к замеру времени) для замера временой разницы между часами разных машин. Время главного компьютера сети является средним между временами, предоставляемыми всеми исправными часами. Часы считаются неисправными, когда значение времени больше, чем на определенную величину превышает некоторый интервал, являющийся разницей между значениями времени в одной и той же сети. Хозяин затем посылает каждому демону-подчиненному значение времени для коррекции своих часов. Этот процесс периодически повторяется. Если выполнена коррекция и временная разница не превышает предельно допустимой, то задержки на синхронизацию будет. Когда машины включены и соединены с сеть, то за временем следит демон-подчиненный. Он спрашивает хозяина о правильном времени и регулирует часы до начала работы пользователей. Таким образом, временной демон регулирует время время сети и устраняет разницу во времени между машинами. Дополнительно демон на машине-шлюзе может играть роль подмастерия. Демон-подмастерье является подчиненным в одной сети, у которой уже есть хозяин и является хозяином в других сетях. Подмастерье, кроме того, отвечает за передачу пакетов от одной сети в другую. Чтобы быть уверенным, что предоставляемый сервис продолжителен и надежен, необходимо выполнить выбор алгоритма, который позволяет выбрать нового хозяина. Такоц выбор приходится делать, если происходит устранение текущего хозяина (например, ошибка при загрузке) или при разъединении сети. 6-2 Инструкция по настройке С помощью этого алгоритма подчиненныей могут определить прекращение работы хозяином; тогда подчиненные выбирают нового хозяина среди самих себя. Важно отметить, что после прекращения работы хозяина расхождение часов происходит постепенно и поэтому нет необходимости выбора хозяина немедленно. Вся работа демонов происходит под управлением TSP протокола. Большинство связей этого протокола не считаются надежными пока не будет послано сообщение. Надежность достигается использованием подтверждений, согласующих чисел и повторных передач, когда теряется сообщение. Когда появляется сообщение о необходимости подтверждения и нет подтверждения после многих попыток, то демон, который посылал сообщение, принимает на себя обязанности адресата. Эта глава не описывает в деталях какова надежность исполнения, но показывает когда сообщения типа запроса являются надежным механизмом связи. Формат сообщений в TSP одинаков для всех типов сообщений; однако в некоторых версиях не используются некоторые поля. Следующий раздел описывает формат сообщения. Последующие разделы описывают в деталях различные типы сообщений, их использование и содержание каждого поля сообщения. ____________________________________________________________________ В следующих версиях timed формат вероятно будет изменен. ____________________________________________________________________ 6-3 Инструкция по настройке ФОРМАТ СООБЩЕНИЯ. ____________________________________________________________________ Все поля измеряются в байтах. Поля следует загружать в систему в порядке возрастания их длины. Структура TSP сообщения следующая: 1. Тип сообщения длиной в один байт. 2. Номер версии в один байт, который определяет версию протокола, которую использует сообщение. 3. Номер числовой последовательности в два байта, который используется для выявления дубликатов сообщений при повторной передаче сообщения. 4. Восемь байт отводится под пакет специфических данных. Это поле содержит два по четыре байта под значение времени и один для использования в зависимости от типа этого пакета. 5. Строка, завершающаяся нулем для размещения 256 символов ASCII с именем машины, посылающей сообщение. 6-4 Инструкция по настройке СООБЩЕНИЯ TSP. ____________________________________________________________________ Следующие разделы описывают типы сообщений, показывая их поля и объсняя их содержание. В целях последующего обсуждения временной демон может считаться в одном из трех состояниях — подчиненный, хозяин или кандидат на выборы хозяином. Раздел передачи сообщений относится ко всем активным демонам. Сообщение о регулировке времени. ——————————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | Секунды для регулировки | +——————————————————————| | Микросекунды для регулировки | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_ADJTIME(1) Хозяин посылает это сообщение подчиненному, чтобы получить разницу между часами подчиненной машины и сетевым временем, которое есть у хозяина. Подчиненный соответственно регулирует время машины. Это сообщение требует подтверждения. 6-5 Инструкция по настройке Подтверждение сообщения. ———————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_ACK (2) Оба и хозяин и подчиненные используют это сообщение только для подтверждения. Оно используется в нескольких различных контекстах. Например, в ответ на сообщение о регулировке времени. Сообщение-запрос хозяина. ————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_MASTERREQ (3) Вновь начинающий работу демон передает это сообщение для выявления хозяина. Никаких других действий оно не выполняет. Сообщение требует ответа хозяина. 6-6 Инструкция по настройке Ответ-подтверждение хозяина. —————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_MASTERACK (4) Хозяин посылает это сообщение, чтобы подтвердить получение запроса к хозяину и сообщения о конфликте. Сообщение об установке сетевого времени. —————————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | Секунды для установки времени | +——————————————————————+ | Микросекунды для установки времени | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_SETTIME (5) Хозяин посылает это сообщение подчиненным демонам для установки времени. Эти данные посылаются вновь начавшим работу демонам или при изменении сетевой даты. Оно содержит время хозяина как время сети. Сообщение требует подтверждения-ответа. Следующим шагом синхронизации будет выявление маленькой временной разницы с задержкой работы в канале связи. 6-7 Инструкция по настройке Сообщение о действии хозяина. —————————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_MASTERUP (6) Хозяин посылает это сообщение для запроса имен активных подчиненных. Подчиненные отвечают в следующем сообщении. Сообщение о действии подчиненного. ———————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_SLAVEUP (7) Подчиненный посылает это сообщение хозяину в ответ на его сообщение, которое указано выше. Это сообщение также посылается, когда начинает работу новый подчиненный для информации хозяина о необходимости его синхронизации. 6-8 Инструкция по настройке Сообщения о кандидатуре хозяина. ——————————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_ELECTION (8) Когда наступает время выбора нового хозяина, подчиненый, могущий быть избранным, посылает это сообщение. Это сообщение свидетельствует о том, что подчиненный хочет быть хозяином. Сообщение о кандидатуре, посылающей сообщение. ———————————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_ACCEPT (9) Это сообщение посылает подчиненный, чтобы получить кандидитуру временного демона, который посылает сообщение о выборе хозяина. Этот кандидат будет добавлен в список кандидатов на хозяина. 6-9 Инструкция по настройке Сообщение об отказе в выборе. —————————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_REFUSE (10) После получения подчиненными кандидатуры демона, он отвечает на их запросы по выборам и посылает отказы в выборе всем, кроме одного. Сообщение от нескольких хозяев. ——————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_CONFLICT (11) Когда два или более хохяина посылают свои запросы, то подчиненный использует это сообщение для уведомления о существовании нескольких хозяев. 6-10 Инструкция по настройке Сообщение о конфликте. ———————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_RESOLVE (12) Хозяин, получив сообщение о наличии сообщения от другого хозяина, посылает это сообщение, чтобы установить кто другой хозяин. Сообщение о выходе. ——————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_QUIT (13) Это сообщение посылается хозяином в трех различных контекстах: — кандидату, который сообщил о своей кандидатуре на хозяина — другому хозяину, когда получено уведомоение о его существовании — другому хозяину, если он обнарежен во время работы Во всех случаях получатель станет подчиненным. Это сообщение требует подтверждения. 6-11 Инструкция по настройке Сообщение об установке даты. —————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | Секунды для установки времени | +——————————————————————+ | Микросекунды для установки времени | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_SETDATE (22) Программа date(1) посылает это сообщение в локальный демон, когда суперпользователь хочет установить дату в сети. Если этот локальный демон является хозяином, то он установит дату. Если он — подчиненный, то он передаст нужную дату хозяину. Сообщение о требовании установки даты. ————————————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | Секунды для установки времени | +——————————————————————+ | Микросекунды для установки времени | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_SETDATEREQ (23) Подчиненный, который получил вышеуказанное сообщение передаст это сообщение хозяину для установки даты. 6-12 Инструкция по настройке Сообщение об установке даты. —————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_DATEACK (16) Хозяин посылает это сообщение подчиненому в подтверждение установки даты. Такое же сообщение посылается локальным демоном программе rdate(ADMN) для уведомления, что дата установлена хозяином. Сообщение о начале трассировки. ——————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_TRACEON (17) Контролирующая программа timedc посылает это сообщение локальному демону, чтобы начать запись в системный файл всех полученных сообщений. 6-13 Инструкция по настройке Сообщение о прекращении трассировки. ———————————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_TRACEOFF (18) Программа timedc посылает это сообщение локальному демону для прекращения записи полученных сообщений. Сообщение о местоположении хозяина. ———————————— Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_MSITE (19) Программа timedc посылает это сообщение локальному демону для выяснения где находится хозяин. 6-14 Инструкция по настройке Сообщение о местоположении удаленного хозяина. ———————————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_MSITEREQ (20) Это сообщение посылает локальный демон для определения местоположения хозяина. Затем он использует подтверждающее сообщение для сообщения этого местоположения в timedc. Проверочное сообщение. ———————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_TEST (21) В целях проверки timedc посылает это сообщение подчиненному. Это устанавливает таймер в конец. 6-15 Инструкция по настройке Сообщение об обнаружении петли. ——————————- Байт 1 | Байт 2 | Байт 3 | Байт 4 +================Ь================Ь================О===============+ | Тип | Номер версии | Номер последовательности | |—————-+—————-+———————————+ | ( не используется ) | +——————————————————————| | ( не используется ) | |——————————————————————+ | Имя машины | |——————————————————————+ | . | +——————————————————————+ Тип: TSP_LOOP (24) Эта программа инициализируется всеми хозяевами для того, чтобы обнаружить петли. Все хозяева следуют этой программе в той сети, где они хозяева. Если хозяин получает эту программу, то это означает, что существует петля, и он пытается скорректировать проблему.

Популярность: 3, Last-modified: Fri, 27 Mar 1998 06:29:39 GMT

Подборка книг по компьютерным сетям

Компьютерные сети — основа Интернета и неотъемлемая часть технологического прогресса. Мы собрали в одной подборке книги, которые помогут как новичкам, так и более опытным специалистам узнать об устройстве Интернета, стеке протоколов TCP/IP, маршрутизации и многом другом.

Компьютерные сети

Книга «Компьютерные сети» Эндрю Таненбаума и Дэвида Уэзеролла уже стала классикой в сфере сетевых технологий. В ней авторы изложили основные концепции компьютерных сетей. Темы идут последовательно, начиная от физического уровня модели сети и заканчивая прикладным уровнем и безопасностью в сетях.

В пятом издании книги рассматриваются, в частности, беспроводные сети стандарта 802.12 и 802.16, сети 3G, технология RFID, CDN (инфраструктура доставки контента), пиринговые сети, потоковое вещание, интернет-телефония и многое другое.

Компьютерные сети: Принципы, технологии, протоколы

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

Мастер Йода рекомендует:  Несколько советов по созданию эффективного сайта!

Компьютерные сети. Нисходящий подход

В отличие от «Компьютерных сетей» Таненбаума, в книге «Компьютерные сети. Нисходящий подход» Джеймса Куроуза и Кита Росса тема рассматривается сверху вниз в модели сетевой архитектуры, начиная от прикладного уровня и заканчивая канальным. Также в книге авторы уделили внимание сетевой безопасности, администрированию вычислительных сетей, беспроводным и мультимедийным сетевым технологиям. Отлично подойдёт новичкам.

Интернет изнутри. Экосистема глобальной сети

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

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

Официальное руководство Cisco по подготовке к сертификационным экзаменам CCNA ICND2 200-105: маршрутизация и коммутация

Опытный преподаватель Уэнделл Одом написал множество книг по компьютерным сетям от издательства Cisco Press, включая книги для подготовки к экзаменам CCNA и по технологиям Cisco QOS, а также принимал участие в написании руководства по подготовке к экзамену CCIE. С 1981 года он работал сетевым инженером, консультантом, системным инженером, инструктором и создателем курсов по компьютерным сетям. Сейчас же он занимается проектированием и разработкой средств сертификации. Его богатый опыт лёг в основу руководства для подготовки к экзамену CCNA ICND2 200-105.

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

TCP/IP. Сетевое администрирование

Книга поможет разобраться с настройкой и сопровождением стека TCP/IP. Сначала рассказывается о том, зачем нужны протоколы, как они работают, как адресация и маршрутизация позволяют передавать данные по сети и как настроить интерфейс, маршрутизацию и DNS. Затем вы ознакомитесь с NFS, NIS и DHCP, научитесь настраивать Samba для работы в гетерогенной сети Unix/Windows и изучите настройку сервера Apache. Две последние главы книги посвящены безопасности сети и устранению различных проблем. В конце книги вы найдёте справочник по sendmail, gated, демону named, свободной реализации DHCP-сервера dhcpd.

Routing TCP/IP

Книга в двух томах «Routing TCP/IP» Дойла Кэррола — библия для всех желающих изучить протокол TCP/IP. Она больше ориентирована на практическую составляющую, поэтому хорошо подойдёт инженерам, стремящимся поскорее использовать в работе TCP/IP. С помощью книги вы узнаете «изнанку» TCP/IP, освоите настройку и устранение ошибок протокола маршрутизации BGP-4, работу с протоколами IPv4 и IPv6 и научитесь настройке и развёртыванию NAT.

Хоть книга и является официальным пособием от Cisco, материал в ней, по большей части, независим от платформы. Книга также станет хорошим помощником при подготовке к сертификационному экзамену CCIE проектировщикам сетей, системным администраторам и инженерам.

IP Routing Fundamentals

IP-маршрутизация является основой межсетевого взаимодействия, и книга «IP Routing Fundamentals» поможет начинающим инженерам с ней разобраться. В справочнике вы найдёте информацию по современным протоколам маршрутизации RIP, IGRP, EIGRP и OSPF, узнаете подробнее о классовой и бесклассовой (CIDR) IP-адресации, а также о маске подсети переменной длины (VLSM), являющейся основой бесклассовой адресации.

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

Internetworking with TCP/IP Volume One


«Internetworking with TCP/IP» — это классическое пособие от Дугласа Комера по протоколам TCP/IP и межсетевому взаимодействию, пережившее уже шестое издание. Книга охватывает множество элементов, включая TCP, IPv4, IPv6, DHCP и DNS. Кроме того, в книге описаны современные тенденции развития компьютерных сетей и Интернета, включая классификацию пакетов, программно-определяемые сети (Software Defined Networking, SDN) и сетевые протоколы, используемые в Интернете вещей (Internet of Things, IoT).

В книге достаточно много теории, объяснённой академическим языком, поэтому руководство не подойдёт для введения в тему. Однако для тех, кто хочет углубиться в межсетевое взаимодействие и работу протоколов TCP/IP, эта книга-бестселлер станет хорошим подспорьем.

TCP/IP Tutorial and Technical Overview

Официальное руководство по стеку протоколов TCP/IP от IBM «TCP/IP Tutorial and Technical Overview» подойдёт как новичкам, стремящимся изучить TCP/IP, так и уже опытным специалистам, которые хотят привести свои навыки работы с TCP/IP в соответствие с действующими стандартами.

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

Computer Networking: Principles, Protocols and Practice

Свободно распространяемая книга «Computer Networking: Principles, Protocols and Practice» Оливьера Бонавентуры (Olivier Bonaventure) служит введением в тему компьютерных сетей. Первая часть книги содержит материал по основным концепциям, включая создание и настройку сети, адресацию, общий доступ к ресурсам и безопасность. Во второй части книги отдельно рассматриваются многие основные протоколы стека TCP/IP: HTTP, TLS, RPC, TCP, UDP, SCTP, IPv6, система доменных имён (DNS) и другое. В конце книги вы найдёте справочник по различным аббревиатурам, встречающимся в стандартах.

А какими книгами по компьютерным сетям пользовались вы? Или какие книги вам рекомендовали ваши знакомые и преподаватели? Делитесь в комментариях.

Статья Начинающим про сети — TCP/IP — Часть 4

al04e

Cyberpunk

Всем привет дорогие друзья! Это 4-ая часть из цикла «Начинающим про сети». Сегодня мы разберемся с TCP/IP, изучим новые протоколы и немного поговорим о атаках которые могут проводить злоумышленники находясь в вашей сети. Так сказать начнем потихоньку разбираться.

Недавно мы уже немного познакомились с протоколами TCP и IP, также слегка затрагивал тему данной сетевой модели. В наше время TCP/IP самая используемая модель. Но модель OSI все же знать нужно. Изучив ее в прошлой части мы можем легко познакомиться с tcp/ip.
Стеки TCP/IP и OSI практически не чем не отличны друг от друга. Давайте взглянем на уровни в tcp/ip и сравним его с OSI:

В OSI уровней 7, а в tcp/ip всего 4. Первые 3 уровня OSI — это все прикладной уровень tcp/ip. Давайте представим такую картину, что вы с какого-либо приложения хотите отправить письмо. Вы написали письмо и нажали на кнопку «Отправить». Информация далее немного измениться для того чтобы сервер понял эту информацию. Тут мы прошли 1-ый уровень модели tcp/ip — прикладной. Спускаемся далее, теперь у нас идет транспортный уровень. На этом уровне работают как раз таки транспортные протоколы — TCP, UDP ..
Также на этом уровне задаются открытые порты — то, куда в дальнейшем передадут информацию(PDU — данные). Теперь информация спускается на еще один уровень ниже — Интернет. На этом уровне идет поиск маршрута, указание идентификатора узла(представим что почтовый сервер у нас в локальной сети). И снова информация спускается на еще один уровень. Это уровень доступа к сети. Ну а тут все просто. Так как мы в локальной сети с почтовым сервером, то нам нужен его физический идентификатор, а именно MAC адрес. Мы знаем его логический адрес и по всей сети посылается широковещательный ARP запрос. Он отправляется всем узлам сети. Каждый из устройств сравнивает логический адрес в ARP запросе и если они схожи, то отсылает ответ. Так мы узнаем MAC. Надеюсь понятна связь IP и MAC адреса в данном случае. После всего этого информация переформировывается в зависимости от компонента сетевой среды и передается на нужное нам устройство. Данный процесс назван инкапсуляцией. Далее, когда информация поступит на почтовый сервер, там произойдет деинкапсуляця. Т.е. информация снова пройдет уровни описанные выше, но только с низу вверх.

Tcp ip расшифровка – Руководство по TCP/IP для начинающих.

Что означает TCP/IP? — Блог веб-программиста

Что такое TCP/IP? Как расшифровывается эта аббревиатура и что она означает? Прочитайте эту статью, чтобы узнать об этом.

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

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

Агентство передовых оборонных исследовательских проектов США разработала набор протоколов Интернета, в 1970-х годах.

Протокол TCP

Протокол управления передачей, (англ. Transmission Control Protocol, сокращенно TCP) работает на транспортном уровне набора протоколов интернета и обеспечивает сетевые компьютеры надежными средствами связи. Электронная почта и передача файлов являются распространенными приложениями по протоколу TCP.

IP

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

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

Протоколы TCP/IP простым языком | webonto.ru

Протоколы TCP/IP основа работы глобальной сети Интернет. Если быть более точным, то TCP/IP это список или стек протоколов, а по сути, набор правил по которым происходит обмен информации (реализуется модель коммутации пакетов).

В этой статье разберем принципы работы стека протоколов TCP/IP и попробуем понять принципы их работы.

Примечание: Зачастую, аббревиатурой TCP/IP называют всю сеть, работающую на основе этих двух протоколов, TCP и IP.

В модель такой сети кроме основных протоколов TCP (транспортный уровень) и IP (протокол сетевого уровня) входят протоколы прикладного и сетевого уровней (смотри фото). Но вернемся непосредственно к протоколам TCP и IP.

Что такое протоколы TCP/IP

TCP — Transfer Control Protocol. Протокол управления передачей. Он служит для обеспечения и установление надежного соединения между двумя устройствами и надежную передачу данных. При этом протокол TCP контролирует оптимальный размер передаваемого пакета данных, осуществляя новую посылку при сбое передачи.

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

Форматы протоколов TCP/IP

Формат IP протокола

Существуют два формата для IP адресов IP протокола.

Формат IPv4. Это 32-битовое двоичное число. Удобная форма записи IP-адреса (IPv4) это запись в виде четырёх групп десятичных чисел (от 0 до 255), разделённых точками. Например: 193.178.0.1.

Формат IPv6. Это 128-битовое двоичное число. Как правило, адреса формата IPv6 записываются в виде уже восьми групп. В каждой группе по четыре шестнадцатеричные цифры разделенные двоеточием. Пример адреса IPv6 2001:0db8:85a3:08d3:1319:8a2e:0370:7889.

Как работают протоколы TCP/IP

Если удобно представьте передаче пакетов данных в сети, как отправку письма по почте.

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

Протокол IP

Каждый компьютер в сети имеют свой уникальный адрес. В глобальной сети Интернет, компьютер имеет этот адрес, который называется IP-адрес (Internet Protocol Address).

По аналогии с почтой, IP- адрес это номер дома. Но номера дома для получения письма недостаточно.

Передаваемая по сети информация передается не компьютером, как таковым, а приложениями, установленными на него. Такими приложениями являются сервер почты, веб-сервер, FTP и т.п. Для идентификации пакета передаваемой информации, каждое приложение прикрепляется к определенному порту. Например: веб-сервер слушает порт 80, FTP слушает порт 21, почтовый SMTP сервер слушает порт 25, сервер POP3 читает почту почтовых ящиков на порте 110.

Таким образом, в адресном пакете в протоколе TCP/IP, в адресатах появляется еще одна строка: порт. Аналог с почтой — порт это номер квартиры отправителя и адресата.

Source address (Адрес отправителя):

Destination address (Адресполучателя):

Стоит запомнить: IP адрес + номер порта — называется «сокет». В примере выше: с сокета 82.146.47.66:2049 пакет отправляется на сокет 195.34.31.236: 53.

Протокол TCP

Протокол TCP это протокол следующего после протокола IP уровня. Предназначен этот протокол для контроля передачи информации и ее целостности.

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

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

Специально для Webonto.ru

Другие статьи раздела

Похожие статьи:

(Просмотров всего: 21 113)

Поделиться ссылкой:

Основы TCP/IP для будущих дилетантов / Habr

Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.
Вторая часть этой статьи, где рассматривается практическое применение изложенных здесь основ: Заметки о Cisco Catalyst: настройка VLAN, сброс пароля, перепрошивка операционной системы IOS

Понятие о стеке протоколов

Задача — передать информацию от пункта А в пункт В. Её можно передавать непрерывно. Но задача усложняется, если надо передавать информацию между пунктами AB и AC по одному и тому же физическому каналу. Если информация будет передаваться непрерывно, то когда С захочет передать информацию в А — ему придётся дождаться, пока В закончит передачу и освободит канал связи. Такой механизм передачи информации очень неудобен и непрактичен. И для решения этой проблемы было решено разделять информацию на порции.

На получателе эти порции требуется составить в единое целое, получить ту информацию, которая вышла от отправителя. Но на получателе А теперь мы видим порции информации как от В так и от С вперемешку. Значит, к каждой порции надо вписать идентификационный номер, что бы получатель А мог отличить порции информации с В от порций информации с С и собрать эти порции в изначальное сообщение. Очевидно, получатель должен знать, куда и в каком виде отправитель приписал идентификационные данные к исходной порции информации. И для этого они должны разработать определённые правила формирования и написания идентификационной информации. Далее слово «правило» будет заменяться словом «протокол».

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

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

Как правило, извлечённые данные в свою очередь сформированы в соответствии с протоколом IP и имеют другой вид идентификационной информации — ip адрес получателя (число размером в 4 байта), ip адрес отправителя и данные. А так же много другой необходимой служебной информации. Данные, сформированные в соответствии с IP протоколом, называются пакетами.

Далее извлекаются данные из пакета. Но и эти данные, как правило, ещё не являются изначально отправляемыми данными. Этот кусок информации тоже составлен в соответствии определённому протоколу. Наиболее широко используется TCP протокол. В нём содержится такая идентификационная информация, как порт отправителя (число размером в два байта) и порт источника, а так же данные и служебная информация. Извлечённые данные из TCP, как правило, и есть те данные, которые программа, работающая на компьютере В, отправляла «программе-приёмнику» на компьютере A.

Вложность протоколов (в данном случае TCP поверх IP поверх Ethernet) называется стеком протоколов.

ARP: протокол определения адреса

Существуют сети классов A, B, C, D и E. Они различаются по количеству компьютеров и по количеству возможных сетей/подсетей в них. Для простоты, и как наиболее часто встречающийся случай, будем рассматривать лишь сеть класса C, ip-адрес которой начинается на 192.168. Следующее число будет номером подсети, а за ним — номер сетевого оборудования. К примеру, компьютер с ip адресом 192.168.30.110 хочет отправить информацию другому компьютеру с номером 3, находящемуся в той же логической подсети. Это значит, что ip адрес получателя будет такой: 192.168.30.3

Важно понимать, что узел информационной сети — это компьютер, соединённый одним физическим каналом с коммутирующим оборудованием. Т.е. если мы отправим данные с сетевого адаптера «на волю», то у них одна дорога — они выйдут с другого конца витой пары. Мы можем послать совершенно любые данные, сформированные по любому, выдуманному нами правилу, ни указывая ни ip адреса, ни mac адреса ни других атрибутов. И, если этот другой конец присоединён к другому компьютеру, мы можем принять их там и интерпретировать как нам надо. Но если этот другой конец присоединён к коммутатору, то в таком случае пакет информации должен быть сформирован по строго определённым правилам, как бы давая коммутатору указания, что делать дальше с этим пакетом. Если пакет будет сформирован правильно, то коммутатор отправит его дальше, другому компьютеру, как было указано в пакете. После чего коммутатор удалит этот пакет из своей оперативной памяти. Но если пакет был сформирован не правильно, т.е. указания в нём были некорректны, то пакет «умрёт», т.е. коммутатор не будет отсылать его куда либо, а сразу удалит из своей оперативной памяти.

Для передачи информации другому компьютеру, в отправляемом пакете информации надо указать три идентификационных значения — mac адрес, ip адрес и порт. Условно говоря, порт — это номер, который, выдаёт операционная система каждой программе, которая хочет отослать данные в сеть. Ip адрес получателя вводит пользователь, либо программа сама получает его, в зависимости от специфики программы. Остаётся неизвестным mac адрес, т.е. номер сетевого адаптера компьютера получателя. Для получения необходимой данной, отправляется «широковещательный» запрос, составленный по так называемому «протоколу разрешения адресов ARP». Ниже приведена структура ARP пакета.

Сейчас нам не надо знать значения всех полей на приведённой картинке. Остановимся лишь на основных.

В поля записываются ip адрес источника и ip адрес назначения, а так же mac адрес источника.

Поле «адрес назначения Ethernet» заполняется единицами (ff:ff:ff:ff:ff:ff). Такой адрес называется широковещательным, и такой фрейм будер разослан всем «интерфейсам на кабеле», т.е. всем компьютерам, подключённым к коммутатору.

Коммутатор, получив такой широковещательный фрейм, отправляет его всем компьютерам сети, как бы обращаясь ко всем с вопросом: «если Вы владелец этого ip адреса (ip адреса назначения), пожалуйста сообщите мне Ваш mac адрес». Когда другой компьютер получает такой ARP запрос, он сверяет ip адрес назначения со своим собственным. И если он совпадает, то компьютер, на место единиц вставляет свой mac адрес, меняет местами ip и mac адреса источника и назначения, изменяет некоторую служебную информацию и отсылает пакет обратно коммутатору, а тот обратно — изначальному компьютеру, инициатору ARP запроса.

Таким образом ваш компьютер узнаёт mac адрес другого компьютера, которому вы хотите отправить данные. Если в сети находится сразу несколько компьютеров, отвечающих на этот ARP запрос, то мы получаем «конфликт ip адресов». В таком случае необходимо изменить ip адрес на компьютерах, что бы в сети не было одинаковых ip адресов.

Построение сетей

Задача построения сетей

На практике, как правило, требуется построить сети, число компьютеров в которой будет не менее ста. И кроме функций файлообмена, наша сеть должна быть безопасной и простой в управлении. Таким образом, при построении сети, можно выделить три требования:

    Простота в управлении. Если бухгалтера Лиду переведут в другой кабинет, ей по-прежнему понадобится доступ к компьютерам бухгалтеров Анны и Юлии. И при неправильном построении своей информационной сети, у администратора могут возникнуть трудности в выдаче Лиде доступа к компьютерам других бухгалтеров на её новом месте.

Обеспечение безопасности. Для обеспечения безопасности нашей сети, права доступа к информационным ресурсам должны быть разграничены. Так же сеть должна быть защищена от угроз раскрытия, целостности и отказа в обслуживании. Подробнее читайте в книге «Атака на Internet» автора Илья Давидович Медведовский, глава «Основные понятия компьютерной безопасности».

Быстродействие сети. При построении сетей есть техническая проблема — зависимость скорости передачи от количества компьютеров в сети. Чем больше компьютеров — тем ниже скорость. При большом количестве компьютеров, быстродействие сети может стать настолько низким, что она станет неприемлемой заказчику.

Из-за чего при большом количестве компьютеров снижается скорость сети? — причина проста: из-за большого количества широковещательных сообщений (ШС). ШС — это сообщение, которое, приходя на коммутатор, отправляется всем хостам сети. Или, грубо говоря, всем компьютерам, находящимся в вашей подсети. Если компьютеров в сети 5, то каждый компьютер будет принимать по 4 ШС. Если их будет 200, то каждый компьютер в такой большой сети будет принимать по 199 ШС.

Существует большое множество приложений, программных модулей и сервисов, которые, для своей работы отправляют в сеть широковещательные сообщения. Описанный в пункте ARP: протокол определения адреса лишь один из множества ШС, отправляемый вашим компьютером в сеть. Например, когда вы заходите в «Сетевое окружение» (ОС Windows), ваш компьютер посылает ещё несколько ШС со специальной информацией, сформированной по протоколу NetBios, что бы просканировать сеть на наличие компьютеров, находящихся в той же рабочей группе. После чего ОС рисует найденные компьютеры в окне «Сетевое окружение» и вы их видите.

Так же стоит заметить, что во время процесса сканирования той или иной программой, ваш компьютер отсылает ни одно широковещательное сообщение, а несколько, к примеру для того, что бы установить с удалёнными компьютерами виртуальные сессии или ещё для каких либо системных нужд, вызванных проблемами программной реализации этого приложения. Таким образом, каждый компьютер в сети для взаимодействия с другими компьютерами вынужден посылать множество различных ШС, тем самым загружая канал связи не нужной конечному пользователю информацией. Как показывает практика, в больших сетях широковещательные сообщения могут составить значительную часть трафика, тем самым замедляя видимую для пользователя работу сети.

Виртуальные локальные сети

Для решения первой и третьей проблем, а так же в помощь решения второй проблемы, повсеместно используют механизм разбиения локальной сети на более маленькие сети, как бы отдельные локальные сети (Virtual Local Area Network). Грубо говоря, VLAN — это список портов на коммутаторе, принадлежащих одной сети. «Одной» в том смысле, что другой VLAN будет содержать список портов, принадлежащих другой сети.

Фактически, создание двух VLAN-ов на одном коммутаторе эквивалентно покупке двух коммутаторов, т.е. создание двух VLAN-ов — это всё равно, что один коммутатор разделить на два. Таким образом происходит разбиение сети из ста компьютеров на более маленькие сети, из 5-20 компьютеров — как правило именно такое количество соответствует физическому местонахождению компьютеров по надобности файлообмена.

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

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

Т.к. наша сеть разбита на VLAN-ы, т.е. на маленькие «как бы сети», пропадает проблема с широковещательными сообщениями.

VLAN-ы, теория

Возможно, фраза «администратору достаточно удалить порт из одного VLAN-а и добавить в другой» могла оказаться непонятной, поэтому поясню её подробнее. Порт в данном случае — это не номер, выдаваемый ОС приложению, как было рассказано в пункте Стек протоколов, а гнездо (место) куда можно присоединить (вставить) коннектор формата RJ-45. Такой коннектор (т.е. наконечник к проводу) прикрепляется к обоим концам 8-ми жильного провода, называемого «витая пара». На рисунке изображён коммутатор Cisco Catalyst 2950C-24 на 24 порта:
Как было сказано в пункте ARP: протокол определения адреса каждый компьютер соединён с сетью одним физическим каналом. Т.е. к коммутатору на 24 порта можно присоединить 24 компьютера. Витая пара физически пронизывает все помещения предприятия — все 24 провода от этого коммутатора тянутся в разные кабинеты. Пусть, к примеру, 17 проводов идут и подсоединяются к 17-ти компьютерам в аудитории, 4 провода идут в кабинет спецотдела и оставшиеся 3 провода идут в только что отремонтированный, новый кабинет бухгалтерии. И бухгалтера Лиду, за особые заслуги, перевели в этот самый кабинет.

Как сказано выше, VLAN можно представлять в виде списка принадлежащих сети портов. К примеру, на нашем коммутаторе было три VLAN-а, т.е. три списка, хранящиеся во flash-памяти коммутатора. В одном списке были записаны цифры 1, 2, 3… 17, в другом 18, 19, 20, 21 и в третьем 22, 23 и 24. Лидин компьютер раньше был присоединён к 20-ому порту. И вот она перешла в другой кабинет. Перетащили её старый компьютер в новый кабинет, или она села за новый компьютер — без разницы. Главное, что её компьютер присоединили витой парой, другой конец которой вставлен в порт 23 нашего коммутатора. И для того, что бы она со своего нового места могла по прежнему пересылать файлы своим коллегам, администратор должен удалить из второго списка число 20 и добавить число 23. Замечу, что один порт может принадлежать только одному VLAN-у, но мы нарушим это правило в конце этого пункта.

Замечу так же, что при смене членства порта в VLAN, администратору нет никакой нужды «перетыкать» провода в коммутаторе. Более того, ему даже не надо вставать с места. Потому что компьютер администратора присоединён к 22-ому порту, с помощью чего он может управлять коммутатором удалённо. Конечно, благодаря специальным настройкам, о которых будет рассказано позже, лишь администратор может управлять коммутатором. О том, как настраивать VLAN-ы, читайте в пункте VLAN-ы, практика [в следующей статье].

Как вы, наверное, заметили, изначально (в пункте Построение сетей) я говорил, что компьютеров в нашей сети будет не менее 100. Но к коммутатору можно присоединить лишь 24 компьютера. Конечно, есть коммутаторы с большим количеством портов. Но компьютеров в корпоративной сети/сети предприятия всё равно больше. И для соединения бесконечно большого числа компьютеров в сеть, соединяют между собой коммутаторы по так называемому транк-порту (trunk). При настройки коммутатора, любой из 24-портов можно определить как транк-порт. И транк-портов на коммутаторе может быть любое количество (но разумно делать не более двух). Если один из портов определён как trunk, то коммутатор формирует всю пришедшую на него информацию в особые пакеты, по протоколу ISL или 802.1Q, и отправляет эти пакеты на транк-порт.

Всю пришедшую информацию — имеется в виду, всю информацию, что пришла на него с остальных портов. А протокол 802.1Q вставляется в стек протоколов между Ethernet и тем протоколом, по которому были сформированные данные, что несёт этот кадр.

В данном примере, как вы, наверное, заметили, администратор сидит в одном кабинете вместе с Лидой, т.к. витая пора от портов 22, 23 и 24 ведёт в один и тот же кабинет. 24-ый порт настроен как транк-порт. А сам коммутатор стоит в подсобном помещении, рядом со старым кабинетом бухгалтеров и с аудиторией, в которой 17 компьютеров.

Витая пара, которая идёт от 24-ого порта в кабинет к администратору, подключается к ещё одному коммутатору, который в свою очередь, подключён к роутеру, о котором будет рассказано в следующих главах. Другие коммутаторы, которые соединяют другие 75 компьютеров и стоят в других подсобных помещениях предприятия — все они имеют, как правило, один транк-порт, соединённый витой парой или по оптоволокну с главным коммутатором, что стоит в кабинете с администратором.

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

Примерно так выглядело построение сетей больших предприятий во времена коммутатора Cisco Catalyst 1900. Вы, наверное, заметили два больших неудобства таких сетей. Во первых, использование транк-порта вызывает некоторые сложности и создаёт лишнюю работу при конфигурировании оборудования. А во вторых, и в самых главных — предположим, что наши «как бы сети» бухгалтеров, экономистов и диспетчеров хотят иметь одну на троих базу данных. Они хотят, что бы та же бухгалтерша смогла увидеть изменения в базе, которые сделала экономистка или диспетчер пару минут назад. Для этого нам надо сделать сервер, который будет доступен всем трём сетям.

Как говорилось в середине этого пункта, порт может находиться лишь в одном VLAN-е. И это действительно так, однако, лишь для коммутаторов серии Cisco Catalyst 1900 и старше и у некоторых младших моделей, таких как Cisco Catalyst 2950. У остальных коммутаторов, в частности Cisco Catalyst 2900XL это правило можно нарушить. При настройке портов в таких коммутаторах, каждый пор может иметь пять режимов работы: Static Access, Multi-VLAN, Dynamic Access, ISL Trunk и 802.1Q Trunk. Второй режим работы именно то, что нам нужно для выше поставленной задачи — дать доступ к серверу сразу с трёх сетей, т.е. сделать сервер принадлежащим к трём сетям одновременно. Так же это называется пересечением или таггированием VLAN-ов. В таком случае схема подключения может быть такой:

Продолжение следует

Вторая часть этой статьи, где рассматривается практическое применение изложенных здесь основ: Заметки о Cisco Catalyst: настройка VLAN, сброс пароля, перепрошивка операционной системы IOS

Об этой статье

Статья опробована на реальных студентах. Я давал им прочитать часть статьи и оценить на понятность. Затем редактировал и упрощал материал до тех пор, пока он ни стал понятен даже самым отпетым двоечникам.

Протокол TCP/IP или как работает Интернет (для чайников)

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

Человек может учиться двумя путями:

  1. Через тупое формальное зазубривание шаблонных способов решения типовых задач (чему сейчас в основном и учат в школе). Такое обучение малоэффективно. Наверняка вам приходилось наблюдать панику и полную беспомощность бухгалтера при смене версии офисного софта — при малейшем изменении последовательности кликов мышки, требуемых для выполнения привычных действий. Или приходилось видеть человека, впадающего в ступор при изменении интерфейса рабочего стола?
  2. Через понимание сути проблем, явлений, закономерностей. Через понимание принципов построения той или иной системы. В этом случае обладание энциклопедическими знаниями не играет большой роли — недостающую информацию легко найти. Главное — знать, что искать. А для этого необходимо не формальное знание предмета, а понимание сути.

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

Принципы работы интернет-протоколов TCP/IP по своей сути очень просты и сильно напоминают работу нашей советской почты.

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

На конверте письма будет написано примерно следующее:

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

Каждый компьютер (он же: узел, хост) в рамках сети Интернет тоже имеет уникальный адрес, который называется IP-адрес (Internet Protocol Address), например: 195.34.32.116. IP адрес состоит из четырех десятичных чисел (от 0 до 255), разделенных точкой. Но знать только IP адрес компьютера еще недостаточно, т.к. в конечном счете обмениваются информацией не компьютеры сами по себе, а приложения, работающие на них. А на компьютере может одновременно работать сразу несколько приложений (например почтовый сервер, веб-сервер и пр.). Для доставки обычного бумажного письма недостаточно знать только адрес дома — необходимо еще знать номер квартиры. Также и каждое программное приложение имеет подобный номер, именуемый номером порта. Большинство серверных приложений имеют стандартные номера, например: почтовый сервис привязан к порту с номером 25 (еще говорят: «слушает» порт, принимает на него сообщения), веб-сервис привязан к порту 80, FTP — к порту 21 и так далее.

Таким образом имеем следующую практически полную аналогию с нашим обычным почтовым адресом:

В компьютерных сетях, работающих по протоколам TCP/IP, аналогом бумажного письма в конверте является пакет, который содержит собственно передаваемые данные и адресную информацию — адрес отправителя и адрес получателя, например:

Конечно же в пакетах также присутствует служебная информация, но для понимания сути это не важно.

Обратите внимание, комбинация: «IP адрес и номер порта» — называется «сокет».

В нашем примере мы с сокета 82.146.49.55:2049 посылаем пакет на сокет 195.34.32.116:53, т.е. пакет пойдет на компьютер, имеющий IP адрес 195.34.32.116, на порт 53. А порту 53 соответствует сервер распознавания имен (DNS-сервер), который примет этот пакет. Зная адрес отправителя, этот сервер сможет после обработки нашего запроса сформировать ответный пакет, который пойдет в обратном направлении на сокет отправителя 82.146.49.55:2049, который для DNS сервера будет являться сокетом получателя.

Как правило взаимодействие осуществляется по схеме «клиент-сервер»: «клиент» запрашивает какую-либо информацию (например страницу сайта), сервер принимает запрос, обрабатывает его и посылает результат. Номера портов серверных приложений общеизвестны, например: почтовый SMTP сервер «слушает» 25-й порт, POP3 сервер, обеспечивающий чтение почты из ваших почтовых ящиков «слушает» 110-порт, веб-сервер — 80-й порт и пр.

Большинство программ на домашнем компьютере являются клиентами — например почтовый клиент Outlook, веб-обозреватели IE, FireFox и пр.

Номера портов на клиенте не фиксированные как у сервера, а назначаются операционной системой динамически. Фиксированные серверные порты как правило имеют номера до 1024 (но есть исключения), а клиентские начинаются после 1024.

Повторение — мать учения: IP — это адрес компьютера (узла, хоста) в сети, а порт — номер конкретного приложения, работающего на этом компьютере.

Однако человеку запоминать цифровые IP адреса трудно — куда удобнее работать с буквенными именами. Ведь намного легче запомнить слово, чем набор цифр. Так и сделано — любой цифровой IP адрес можно связать с буквенно-цифровым именем. В результате например вместо 82.146.49.55 можно использовать имя www.ofnet.ru. А преобразованием доменного имени в цифровой IP адрес занимается сервис доменных имен — DNS (Domain Name System).

Рассмотрим подробнее, как это работает. Ваш провайдер явно (на бумажке, для ручной настройки соединения) или неявно (через автоматическую настройку соединения) предоставляет вам IP адрес сервера имен (DNS). На компьютере с этим IP адресом работает приложение (сервер имен), которое знает все доменные имена в Интернете и соответствующие им цифровые IP адреса. DNS-сервер «слушает» 53-й порт, принимает на него запросы и выдает ответы, например:

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

Набираем в адресной строке браузера доменное имя www.ofnet.ru и жмем . Далее операционная система производит примерно следующие действия:

Отправляется запрос (точнее пакет с запросом) DNS серверу на сокет 195.34.32.116:53. Как было рассмотренно выше, порт 53 соответствует DNS-серверу — приложению, занимающемуся распознаванием имен. А DNS-сервер, обработав наш запрос, возвращает IP-адрес, который соответствует введенному имени.


Диалог примерно следующий:

Далее наш компьютер устанавливает соединение с портом 80 компьютера 82.146.49.55 и посылает запрос (пакет с запросом) на получение страницы www.ofnet.ru. 80-й порт соответствует веб-серверу. В адресной строке браузера 80-й порт как правило не пишется, т.к. используется по умолчанию, но его можно и явно указать после двоеточия — https://www.ofnet.ru:80.

Приняв от нас запрос, веб-сервер обрабатывает его и в нескольких пакетах посылает нам страницу в на языке HTML — языке разметки текста, который понимает браузер.

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

Зачем эти принципы надо понимать?

Например, вы заметили странное поведение своего компьютера — непонятная сетевая активность, тормоза и пр. Что делать? Открываем консоль (нажимаем кнопку «Пуск» — «Выполнить» — набираем cmd — «Ок»). В консоли набираем команду netstat -anи жмем . Эта утилита отобразит список установленных соединений между сокетами нашего компьютера и сокетами удаленных узлов. Если мы видим в колонке «Внешний адрес» какие-то чужие IP адреса, а через двоеточие 25-й порт, что это может означать? (Помните, что 25-й порт соответствует почтовому серверу?) Это означает то, что ваш компьютер установил соединение с каким-то почтовым сервером (серверами) и шлет через него какие-то письма. И если ваш почтовый клиент (Outlook например) в это время не запущен, да если еще таких соединений на 25-й порт много, то, вероятно, в вашем компьютере завелся вирус, который рассылает от вашего имени спам или пересылает номера ваших кредитных карточек вкупе с паролями злоумышленникам.

Также понимание принципов работы Интернета необходимо для правильной настройки файерволла (проще говоря брандмауэра :)). Эта программа (которая часто поставляется вместе с антивирусом), предназначенна для фильтрации пакетов — «своих» и «вражеских». Своих пропускать, чужих не пущать. Например, если ваш фаерволл сообщает вам, что некто хочет установить соединение с каким-либо портом вашего компьютера. Разрешить или запретить?

Ну и самое главное — эти знания крайне полезны при общении с техподдержкой.

Напоследок приведу список портов, с которыми вам, вероятно, придется столкнуться:

Несколько специальных IP адресов:

Что такое маска подсети и шлюз по умолчанию (роутер, маршрутизатор)?

(Эти параметры задаются в настройках сетевых подключений).

Все просто. Компьютеры объединяются в локальные сети. В локальной сети компьютеры напрямую «видят» только друг друга. Локальные сети соединяются друг с другом через шлюзы (роутеры, маршрутизаторы). Маска подсети предназначена для определения — принадлежит ли компьютер-получатель к этой же локальной сети или нет. Если компьютер-получатель принадлежит этой же сети, что и компьютер-отправитель, то пакет передается ему напрямую, в противном случае пакет отправляется на шлюз по умолчанию, который далее, по известным ему маршрутам, передает пакет в другую сеть, т.е. в другое почтовое отделение (по аналогии с советской почтой).

Напоследок рассмотрим что же означают непонятные термины:

TCP/IP — это название набора сетевых протоколов. На самом деле передаваемый пакет проходит несколько уровней. (Как на почте: сначала вы пишете писмо, потом помещаете в конверт с адресом, затем на почте на нем ставится штамп и т.д.).

IP протокол — это протокол так называемого сетевого уровня. Задача этого уровня — доставка ip-пакетов от компьютера отправителя к компьютеру получателю. По-мимо собственно данных, пакеты этого уровня имеют ip-адрес отправителя и ip-адрес получателя. Номера портов на сетевом уровне не используются. Какому порту, т.е. приложению адресован этот пакет, был ли этот пакет доставлен или был потерян, на этом уровне неизвестно — это не его задача, это задача транспортного уровня.

TCP и UDP — это протоколы так называемого транспортного уровня. Транспортный уровень находится над сетевым. На этом уровне к пакету добавляется порт отправителя и порт получателя.

TCP — это протокол с установлением соединения и с гарантированной доставкой пакетов. Сначала производится обмен специальными пакетами для установления соединения, происходит что-то вроде рукопожатия (-Привет. -Привет. -Поболтаем? -Давай.). Далее по этому соединению туда и обратно посылаются пакеты (идет беседа), причем с проверкой, дошел ли пакет до получателя. Если пакет не дошел, то он посылается повторно («повтори, не расслышал»).

UDP — это протокол без установления соединения и с негарантированной доставкой пакетов. (Типа: крикнул что-нибудь, а услышат тебя или нет — неважно).

Над транспортным уровнем находится прикладной уровень. На этом уровне работают такие протоколы, как http, ftp и пр. Например HTTP и FTP — используют надежный протокол TCP, а DNS-сервер работает через ненадежный протокол UDP.

Как посмотреть текущие соединения?

Текущие соединения можно посмотреть с помощью команды

(параметр n указывает выводить IP адреса вместо доменных имен).

Запускается эта команда следующим образом:

«Пуск» — «Выполнить» — набираем cmd — «Ок». В появившейся консоли (черное окно) набираем команду netstat -an и жмем . Результатом будет список установленных соединений между сокетами нашего компьютера и удаленных узлов.

Имя Локальный адрес Внешний адрес Состояние
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 91.76.65.216:139 0.0.0.0:0 LISTENING
TCP 91.76.65.216:1719 212.58.226.20:80 ESTABLISHED
TCP 91.76.65.216:1720 212.58.226.20:80 ESTABLISHED
TCP 91.76.65.216:1723 212.58.227.138:80 CLOSE_WAIT
TCP 91.76.65.216:1724 212.58.226.8:80 ESTABLISHED

В этом примере 0.0.0.0:135 — означает, что наш компьютер на всех своих IP адресах слушает (LISTENING) 135-й порт и готов принимать на него соединения от кого угодно (0.0.0.0:0) по протоколу TCP.

91.76.65.216:139 — наш компьютер слушает 139-й порт на своем IP-адресе 91.76.65.216.

Третья строка означает, что сейчас установлено (ESTABLISHED) соединение между нашей машиной (91.76.65.216:1719) и удаленной (212.58.226.20:80). Порт 80 означает, что наша машина обратилась с запросом к веб-серверу (у меня, действительно, открыты страницы в браузере).

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

TCP/IP — это… Что такое TCP/IP?

Стек протоколов TCP/IP (англ. Transmission Control Protocol/Internet Protocol) — набор сетевых протоколов разных уровней модели сетевого взаимодействия DOD, используемых в сетях. Протоколы работают друг с другом в стеке (англ. stack, стопка) — это означает, что протокол, располагающийся на уровне выше, работает «поверх» нижнего, используя механизмы инкапсуляции. Например, протокол TCP работает поверх протокола IP.

Стек протоколов TCP/IP основан на модели сетевого взаимодействия DOD и включает в себя протоколы четырёх уровней:

  • прикладного (application),
  • транспортного (transport),
  • сетевого (internet),
  • уровня доступа к среде (network access).

Протоколы этих уровней полностью реализуют функциональные модели OSI. На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных.

Уровни стека TCP/IP

Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.

К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между транспортным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.

Вот как традиционно протоколы TCP/IP вписываются в модель OSI:

Распределение протоколов по уровням модели OSI

7 Прикладной напр. HTTP, SMTP, SNMP, FTP, Telnet, scp, SMB,NFS, RTSP, BGP
6 Представительский напр. XDR, ASN.1, AFP
5 Сеансовый напр. TLS, SSL, ISO 8327 / CCITT X.225, RPC, NetBIOS, ASP
4 Транспортный напр. TCP, UDP, RTP, SCTP, SPX, ATP, DCCP, GRE
3 Сетевой напр. IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP
2 Канальный напр. Ethernet, Token ring, PPP, HDLC, X.25, Frame relay, ISDN, ATM, MPLS, Wi-Fi, ARP, RARP
1 Физический напр. электрические провода, радиосвязь, волоконно-оптические провода

Обычно в стеке TCP/IP верхние 3 уровня (прикладной, представительный и сеансовый) модели OSI объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению. Упрощенно интерпретацию стека TCP/IP можно представить так:

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

5 Прикладной
«7 уровень»
напр. HTTP, FTP, DNS
(RIP, работающий поверх UDP, и BGP, работающий поверх TCP, являются частью сетевого уровня)
4 Транспортный напр. TCP, UDP, RTP, SCTP, DCCP
(протоколы маршрутизации, подобные OSPF, что работают поверх IP, являются частью сетевого уровня)
3 Сетевой Для TCP/IP это IP (IP)
(вспомогательные протоколы, вроде ICMP и IGMP, работают поверх IP, но тоже относятся к сетевому уровню; протокол ARP является самостоятельным вспомогательным протоколом, работающим поверх физического уровня)
2 Канальный Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM и MPLS
1 Физический напр. физическая среда и принципы кодирования информации, T1, E1

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

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

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

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

Примеры протоколов канального уровня — Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM и MPLS.

PPP не совсем вписывается в такое определение, поэтому обычно описывается в виде пары протоколов HDLC/SDLC.

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

Канальный уровень иногда разделяют на 2 подуровня — LLC и MAC.

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

Сетевой уровень изначально разработан для передачи данных из одной (под)сети в другую. Примерами такого протокола является X.25 и IPC в сети ARPANET.

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

ICMP и IGMP расположены над IP и должны попасть на следующий — транспортный — уровень, но функционально являются протоколами сетевого уровня, и поэтому их невозможно вписать в модель OSI.

Пакеты сетевого протокола IP могут содержать код, указывающий, какой именно протокол следующего уровня нужно использовать, чтобы извлечь данные из пакета. Это число — уникальный IP-номер протокола. ICMP и IGMP имеют номера, соответственно, 1 и 2.

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

Протоколы транспортного уровня могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные.

Протоколы автоматической маршрутизации, логически представленные на этом уровне (поскольку работают поверх IP), на самом деле являются частью протоколов сетевого уровня; например OSPF (IP идентификатор 89).

TCP (IP идентификатор 6) — «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.

UDP (IP идентификатор 17) протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.

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

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

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

На прикладном уровне работает большинство сетевых приложений.

Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP для WWW, 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).

Бесспорно, к этому уровню относятся: DHCP, Echo, Finger, Gopher, HTTP, HTTPS, IMAP, IMAPS, IRC, NNTP, NTP, POP3, POPS, QOTD, RTSP, SNMP, SSH, Telnet, XDMCP.

См. также

Ссылки

Литература

  • Терри Оглтри’ Модернизация и ремонт сетей = 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

Модель стека протоколов TCP/IP и ее особенности. Уровни модели TCP/IP и принципы их работы.

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей, напомню, что эти записи основаны на программе Cisco ICND1 и помогут вам подготовиться к экзаменам CCENT/CCNA. Продолжаем разговор об эталонных моделях и на этот раз мы рассмотрим модель, которая была разработана путем практических наработок, эта модель называется модель стека протоколов TCP/IP, она похожа на модель OSI 7, но имеются и свои отличия, которые довольно значительны и их стоит обсудить, а также обозначить.

Мастер Йода рекомендует:  Эффект последней строки, или К чему приводит копипаст

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

Перед началом я хотел бы вам напомнить, что ознакомиться с опубликованными материалами первой части нашего курса можно по ссылке: «Основы взаимодействия в компьютерных сетях».

1.15.1 Введение

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

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

1.15.2 Общий принцип работы модели стека протоколов TCP/IP

Общий принцип работы модели стека протоколов TCP/IP очень похож на принцип работы модели OSI 7, разница только в количестве уровней и их функционале. Думаю, что не будет лишним отметить следующее (тут многие могут со мной согласиться): модель OSI 7 более полно описывает взаимодействие компьютерной сети с точки зрения логики ее работы, но ее протоколы абсолютно не прижились в современных реалиях, а модель стека протоколов TCP/IP описывает компьютерную сеть не так полно, зато ее протоколы используются повсеместно.

Вообще модель TCP/IP более удобна для сетевого инженера, здесь более четко описаны его границы ответственности. Давайте посмотрим на структуру модели TCP/IP, которая показана на Рисунке 1.15.1.

Рисунок 1.15.1 Модель стека протоколов TCP/IP

Как видим, отличие модели TCP/IP от OSI 7 заключается в количестве уровней, у эталонной модели их семь, в модели стека протоколов их четыре. В модели TCP/IP объединены первых два уровня модели OSI 7 (канальный и физический), здесь первый уровень называется уровень доступа к сети или канальный уровень. На уровне доступа к сети в модели сетка протоколов TCP/IP работают такие технологии и протоколы как: Ethernet, который есть практически в каждой локальной сети, IEEE 802.11 (Wi-Fi), PPP, в общем и целом на первом уровне модели стека протоколов TCP/IP реализуется функционал физического и канального уровней модели OSI 7.

Второй уровень модели TCP/IP соответствует третьему уровню модели OSI 7, в разных источниках вы можете встретить разные названия третьего уровня: уровень сети Интернет, сетевой уровень, межсетевой уровень. Можно сказать, что это основной и самый интересный для сетевого инженера уровень. Так как на этом уровне определяется логическая адресация узлов сети Интернет и, по сути, этот уровень является конечным для сетевого оборудования, за взаимодействие компьютеров на более высоких уровнях уже отвечают конечные устройства: клиентское и серверное оборудование.

Третий уровень модели TCP/IP имеет такое же название, как и в модели OSI – Транспортный уровень, правда в модели OSI этот уровень в порядке нумерации идет четвертым. Транспортный уровень отвечает за надёжность передачи для конечных устройств поверх ненадежной компьютерной сети, в которой в любой момент могут возникать самые разные проблемы. К тому же транспортный уровень помогает различать компьютерам следующее: какой трафик какое приложение генерирует и какому приложению предназначены те или иные пакеты, это возможно благодаря сокетам. На транспортном уровне для нас будут интересны два протокола: TCP, который обеспечивает надежную передачу с установкой соединения, этот протокол используется для передачи данных типа текст, файлов и так далее, а также протокол UDP, этот протокол без установки соединения и используется он для передачи данных в системах реального времени: аудио и видео связь. Про работу служб с установлением соединения и без вы можете узнать из записи, опубликованной ранее.

Ну а на самом верху модели TCP/IP находится уровень приложений или прикладной уровень, который отвечает за взаимодействие с конечным пользователем. Этот уровень модели TCP/IP включает в себя сразу три уровня модели OSI 7 (сеансовый, представительский и прикладной уровни), что на самом деле очень удобно как для программистов и разработчиков, так и для сетевых инженеров. Программист может писать приложения, не задумываясь об уровнях, сосредоточившись на своих абстракциях, а сетевому инженеру многие вещи верхних уровней просто неинтересны, но об этом чуть позже.

1.15.3 Первый уровень модели TCP/IP или уровень доступа к сети

Первый уровень – это фундамент компьютерной сети, поверх которого строится вся логика взаимодействия. Пожалуй, основной недостаток модели стека протоколов TCP/IP заключается в том, что физический и канальный уровень модели OSI здесь объединены в один под названием уровень доступа к сети или канальный уровень. На мой взгляд, нужно отделять физические процессы, происходящие на первом уровне от логики, которая реализована в канале связи на втором уровне. Хотя тут могут быть возражения в следующем ключе: такие популярные технологии как Ethernet и IEEE 802.11 в контексте модели OSI 7 работают на двух уровнях (канальном и физическом), тогда как в контексте модели TCP/IP эти технологии реализуют свой функционал на одном уровне – уровне доступа.

Итак, на уровне доступа модели TCP/IP решаются физические вопросы, связанные с передачей сигнала в различных средах:

  • максимальный и минимальный допустимые уровни сигнала в среде передачи данных: если с минимальным все более-менее очевидно, то с максимальным немного поясню: с усилением полезного сигнала усиливаются и помехи;
  • какой уровень сигнала нужно принимать за логический ноль (логический ноль – это не отсутствие сигнала), а какой уровень сигнала будет считаться логической единицей;
  • на физическом уровне определяются технические и конструктивные требования к среде передачи данных, например, если передача по медной линии, то тут можно выделить сетевые интерфейсы типа RJ-45 и RJ-11 или, например, витая пара или коаксиальный кабель;
  • данные в чистом виде никогда не передаются по сети, по сети передаются два объединенных сигнала: полезный сигнал с данными (его еще называют модулирующий) и несущий сигнал, процесс объединения этих двух сигналов называется модуляцией, более подробно об этом читайте в книгах, указанных в самой первой теме.

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

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

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

Можно выделить следующие протоколы и технологии, которые работают на канальном уровне модели TCP/IP: Ethernet, IEEE 802.11 WLAN, SLIP, Token Ring, ATM. Первым двум мы выделим по целой части, так как в локальных сетях вы будете чаще всего сталкиваться именно с ними.

Еще на канальном уровне реализуется механизм обнаружения и исправления ошибок при помощи специальных кодов, очень подробно про канальные коды рассказано в книге Бернарда Скляра «Цифровая связь», здесь мы на них не останавливаемся. Из физических устройств, работающих на уровне доступа к сети можно выделить (дополнительно можете почитать про основные физические компоненты компьютерной сети): усилители сигнала, преобразователи сигнала (SFP-модули, медиаконвертеры и т.д.), ретрансляторы, хабы, концентраторы, радио антенны, а также коммутаторы уровня L2, которые будет представлять для нас наибольший интерес, так как их можно и нужно настраивать и у них есть различные по своей полезности механизмы для защиты сети и обеспечения надежности передачи данных.

1.15.4 Второй уровень или уровень сети Интернет

Второй уровень модели TCP/IP называется уровнем сети Интернет, сетевым или межсетевым уровнем. Это один из самых важных уровней для сетевого инженера, так как именно здесь работает протокол IP, отвечающий за логическую адресацию в компьютерных сетях и в сети Интернет, если говорить о частностях. Непосредственно протоколу IP мы уделим целых две части, сначала мы поговорим про версию IPv4, а затем разберемся с версией протокола IPv6. Также на этом уровне работают протоколы динамической маршрутизации, в этом курсе мы разберемся с протоколом RIP, который очень прост, но уже практически нигде не используется. А если будет продолжение, то мы еще будем разбираться с такими замечательными протоколами динамической маршрутизации, как OSPF и EIGRP.

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

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

На межсетевом уровне единица измерения данных или PDU называется пакетом, хотя об этом вы уже догадались, когда я использовал слово IP-пакет. При этом структура заголовка IP-пакета в IPv4 достаточно сильно отличается от структуры пакета в IPv6, как и сами IP-адреса этих протоколов.

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

1.15.5 Третий или транспортный уровень стека протоколов TCP/IP

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

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

Если говорить про протокол TCP, то данные передаваемые по сети при помощи этого протокола называются сегментами, а вот у данных, передаваемых по сети при помощи протокола UDP имеется другое название – датаграммы/дейтаграммы, кому как удобно, второй вариант я использую чаще. Транспортный уровень гарантирует целостность и правильность поступления данных на конечных устройствах, а также помогает компьютерам разобраться кому какие данные принадлежат, работает это примерно так (смотрите на Рисунок 1.15.2): какому-либо приложению назначается определенный TCP/UDP порт или же этот порт генерируется динамически, допустим со стороны клиента этот порт был сгенерирован динамически, а со стороны серверов порт был задан разработчиками или же системным администратором вручную (если интересно, то вот здесь описан принцип взаимодействия клиент-сервер).

Рисунок 1.15.2 Сильно упрощенная схема взаимодействия на транспортном уровне

Итак, получаем, что у клиентского ПК IP-адрес: 192.168.2.3, а также клиентский ПК выдал клиентскому приложению порт с номером 23678 для установки соединения с первым сервером (пусть приложением будет браузер), а для установки со вторым сервером браузер получил порт 23698. Клиентский ПК делает запросы к веб-серверам, находящимся в одной сети с клиентом: у первого сервера IP-адрес: 192.168.2.8, а у второго: 192.168.2.12, при этом порт серверного приложения как в первом, так и во втором случае одинаковый – 80, также хочу обратить внимание на то, что клиентский ПК сообщает серверам разные порты, на которые нужно слать ответы. Таким образом, если клиентский компьютер хочет сделать запрос к первому серверу, то он использует примерно следующую конструкцию для запроса: 192.168.2.8:80, это означает, что запрос был послан машине с IP-адресом 192.168.2.8 на 80 порт, сервер же пошлет ответ, используя вот такую конструкцию 192.168.2.3:23678. Если же запрос идет на 192.168.2.12:80, то ответ будет передан на 192.168.2.3:23698.

Таким образом происходит разделение трафика и компьютер не путается. Вообще, это описание предельно упрощено, более подробно мы будем говорить о протоколах транспортного уровня в отдельной части, так как эта тема довольно большая и требует отдельного разговора, кстати сказать, в курсах Cisco ICND1 и ICND2 достаточно мало времени уделено транспортному уровню. Здесь же стоит добавить что комбинация IP-адрес + порт транспортного уровня обычно называется сокетом, при этом не имеет значения протокол транспортного уровня (TCP или UDP).

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

1.15.6 Четвертый уровень или уровень приложений

Четвертый уровень модели TCP/IP представляет наименьший интерес для сетевого инженера, этот уровень создают и обслуживают: программисты, системные администраторы, devops-инженеры, хотя на уровне приложений есть несколько протоколов, которые важны и нужны сетевому инженеру. Вообще, основная задача прикладного уровня заключается в том, чтобы предоставить пользователю удобный интерфейс для взаимодействия с компьютерами и компьютерными сетями, но это если говорить коротко.

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

  • DHCP – протокол, позволяющий динамически выдавать клиентским машинам IP-адреса и другие данные для подключения к сети;
  • DNS – этот протокол придумали люди с дырявой памятью, которые не хотели запоминать IP-адреса, DNS позволяет преобразовывать IP-адреса в доменные имена сайтов и наоборот, для практики можете разобраться с командой nslookup;
  • SNMP – протокол, который используется во всех системах управления и мониторинга компьютерных сетей;
  • SSH – протокол для безопасного удаленного управления, при использовании SSH данные шифруются;
  • Telnet – еще один протокол удаленного управления, этот протокол реализует простой текстовый сетевой интерфейс.

Вообще этот список можно продолжить, но пока этого нам достаточно. В рамках курса мы разберемся как подключаться к коммутаторам и маршрутизаторам при помощи протоколов Telnet и SSH, научимся управлять соединениями и его параметрами, также мы немного разберемся с протоколами DHCP и DNS, возможно, в дальнейшем знакомство будет продолжено, а вот протокол SNMP мы трогать не будем.

Также стоит отметить следующие протоколы, относящиеся к прикладному уровню модели стека протоколов TCP/IP: RDP для удаленного управления компьютером, SMPT, IMAP, POP3 это всё почтовые протоколы для реализации разного функционала, FTP и SFTP это протоколы для передачи файлов по сети, первый использует протокол TCP, а второй более простой использует UDP.

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

1.15.7 Сравнение моделей OSI 7 и TCP/IP, а также поиск компромисса

Прежде чем перейти к сравнению моделей OSI 7 и TCP/IP, нам следует сказать, что модель стека протоколов TCP/IP использовалась для создания сети ARPANET, которая спустя годы превратилась в тот Интернет, которым мы пользуемся, сеть ARPANET – была исследовательской сетью, финансируемой министерством обороны США, эта сеть объединила сотни университетов и правительственных зданий в единую систему передачи данных при помощи телефонных линий, но с развитием технологий появилась спутниковая связь, радиосвязь, связь при помощи оптических линий и появились проблемы с передачей данных во всем этом зоопарке, разработка моделей передачи данных должна была решить возникшие проблемы и в принципе задача была решена.

Давайте же теперь попробуем сравнить эталонную модель сетевого взаимодействия OSI 7 с моделью стека протоколов TCP/IP и посмотрим, чем практическая модель отличается от теоретической. Для начала обратите внимание на Рисунок 1.15.3.

Рисунок 1.15.3 Сравнение эталонных моделей передачи данных TCP/IP и OSI 7

Слева показана эталонная модель сетевого взаимодействия, а справа вы видите модель стека протоколов TCP/IP. Сначала очевидные вещи: физический и канальный уровень модели OSI 7 соответствует уровню доступа к сети в модели TCP/IP, сетевой и транспортный уровень у обеих моделей совпадают, а вот три верхних уровня модели OSI соответствуют прикладному уровню модели TCP/IP.

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

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

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

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

А вот в первоначальном виде модели стека протоколов TCP/IP не было таких четких границ между тремя вышеописанными сущностями, поэтому реализация протоколов здесь скрыта хуже, чем в модели OSI 7, да и замена одного протокола на другой может происходить более болезненно, чем в модели OSI 7, в общем, на практике не все так гладко.


Еще одним важны отличием моделей TCP/IP и OSI 7 является то, что эталонная модель OSI 7 была разработана раньше, чем ее протоколы появились на бумаге. С одной стороны, это говорит про универсальность модели передачи данных, но с другой стороны: универсальные вещи хуже решают конкретные задачи. Например, простым кухонным ножом можно открыть банку сгущенки, но это гораздо удобнее сделать специальным консервным ножом. Отсюда и основные проблемы эталонной модели: у разработчиков модели OSI не было четкого понимания того, какие функции на каком уровне должны быть реализованы.

Также модель OSI изначально не была рассчитана на то, что когда-нибудь появятся широковещательные сети. Передача данных в сетях, построенных на принципах модели OSI 7, велась от узла к узлу, с вероятностью 99% ваша домашняя сеть и сеть вашего поставщика услуг доступа в Интернет широковещательная. Поэтому разработчикам пришлось вносить коррективы, добавив новый подуровень в модель OSI. Городульки в модели OSI не закончились на канальном уровне, когда на основе модели OSI 7 начали реализовывать первые компьютерные сети, оказалось, что существующие протоколы не соответствуют спецификациям служб, поэтому в модель были добавлены дополнительные подуровни для устранения несоответствия. И в заключении: при разработке модели OSI 7 не был учтен момент интеграции и объединения нескольких небольших сетей в одну большую, предполагалось, что в каждой стране будет одна большая единая сеть, находящаяся под управлением государства.

В TCP/IP все вышло ровным счетом наоборот: сначала были придуманы и реализованы протоколы этой модели, а затем появилась необходимость в том, чтобы создать модель, которая описывает сетевое взаимодействие с использованием этих протоколов. Таким образом протоколы модели стека TCP/IP четко соответствуют уровням и функциям этих уровней. Единственный минус, этот минус не такой значительный для современного мира, заключается в том, что модель стека протоколов TCP/IP не соответствует никаким другим моделям. Минус незначительный, так как большинство компьютерных сетей построены на основе модели TCP/IP и ее протоколов.

Еще одно важное отличие моделей TCP/IP и OSI 7 кроется на сетевом и транспортном уровнях. Модель TCP/IP на сетевом уровне реализуется связь без установления соединения при помощи протокола IP, а на транспортном уровне предлагает два протокола: UPD и TCP. А вот модель OSI 7 предлагает инженерам выбор на сетевом уровне: можно выбрать связь с установлением соединения или без него, а на транспортном уровне есть один протокол, который поддерживает связь только с установлением соединения.

Можно выделить четыре основных пункта, из-за которых критикуют эталонную модель сетевого взаимодействия:

  1. Несвоевременность.
  2. Неудачная технология.
  3. Неудачная реализация.
  4. Неудачная политика распространения.

Этим мы и ограничимся и перейдем к основным недостаткам модели TCP/IP. Во-первых, модель стека протоколов TCP/IP не проводит четких границ между службами, интерфейсами и протоколами, поэтому в модель TCP/IP не всегда легко вписать новые протоколы и технологии. Второй недостаток заключается в том, что при помощи модели TCP/IP можно описать не все сети и не все технологии, например, вы не сможете достаточно полно описать технологию Bluetooth при помощи модели TCP/IP.

Канальный уровень модели TCP/IP на самом деле никакой не уровень и всё, что было описано выше про канальный уровень модели TCP/IP в большей степени подходит для физического и уровня передачи данных модели OSI 7, а не для первого уровня модели TCP/IP. На самом деле канальный уровень модели TCP/IP – это даже не уровень, а интерфейс, позволяющий взаимодействовать сетевому уровню с физической средой передачи данных из этого следует и то, что здесь нет различия между физическим уровнем и канальной логикой, хотя это абсолютно разные вещи.

Итак, из всех вышеописанных недостатков модели TCP/IP для инженеров, обеспечивающих передачу данных по сети, самым важным недостатком является то, что фундаментальный, то есть первый уровень этой модели вовсе никакой не уровень, а интерфейс, а также то, что нет деления на физику и канальную логику. Исходя из этого, а также из того, что модель TCP/IP используется для построения большинства компьютерных сетей, мы можем сделать свою компромиссную модель, которая устранит вышеописанный недостаток и будет удобной для сетевого инженера, эта модель показана на Рисунке 1.15.4.

Рисунок 1.15.4 Компромиссная модель сетевого взаимодействия

Итак, эта модель разделяет уровень доступа к сети на два уровня: физический уровень, описывающий физические параметры среды передачи данных и ее свойства, и канальный уровень, который призван решать задачу объединения бит в кадры, логическое деление ресурсов физической среды, объединение нескольких компьютеров в сеть и надежность передачи данных. Естественно, что эта модель в качестве протоколов должна использовать протоколы модели TCP/IP.

Ее сетевой уровень должен решать задачи объединения нескольких небольших сетей в одну большую. А транспортный уровень должен увеличивать надежность передачи данных по сети, организуя туннельное соединение между конечными участниками обмена данных. Ну а на самом верхнем уровне решаются задачи взаимодействия пользователей с ПК и компьютерной сетью.

1.15.8 Выводы

Подводя итог разговору у модели передачи данных, которая называется модель стека протоколов TCP/IP следует отметить, что в отличие от модели OSI 7, данная модель сформировалась уже после того, как были разработаны и введены в реальный мир ее протоколы и на данные момент большинство компьютерных сетей работают именно по модели стека протоколов TCP/IP. У этой модели есть два минуса: первый заключается в том, что здесь нет четкой границы между протоколом и службой, вторым недостатком является то, что в модели TCP/IP нет явного деления на канальный и физический уровень, здесь канальный уровень представляет собой интерфейс между сетевым уровнем и средой передачи данных.

Второй минус легко исправить самостоятельно, выработав для себя компромиссную модель передачи данных, где есть деление на физический и канальный уровень. Также стоит сказать, что для сетевого инженера наличие на верху модели TCP/IP только прикладного уровня – это скорее плюс, чем минус, формально говоря, в задачи сетевого инженера не входит настройка пользовательских приложений, работающих с сетью, это должны делать системные администраторы, задача сетевого инженера заключает в том, чтобы обеспечить канал связи между точкой А и Б, то есть выполнить необходимые настройки на оборудование, которое работает на уровня от физического до транспортного, модель TCP/IP это демонстрирует четко.

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

Что такое TCP/IP?

TCP/IP, сокращенно от Transmission Control Protocol/Internet Protocol – это набор правил (протоколов), регулирующих связь между всеми компьютерами в Интернете.

Более конкретно, TCP/IP диктует, как информация должна быть упакована (превращена в специальные блоки, называемые пакетами), отправлена и получена. А также указывает, как добраться до места назначения.

TCP/IP был разработан в 1978 году Робертом Каном и Винтоном Серфом.

Как работает TCP/IP?

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

Стандарт интернет-протокола диктует логистику пакетов отправляемых по сетям. Он рассказывает о пакетах, куда им идти и как добраться. IP имеет метод, позволяющий любому компьютеру в Интернете пересылать пакеты на другой компьютер.

А протокол управления передачей отвечает за обеспечение надежной передачи данных через сети, подключенные к Интернету. TCP проверяет пакеты на наличие ошибок, и отправляет запросы на повторные передачи, если ошибки есть.

Три самых распространенных протокола TCP/IP

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

HTTPS – используется между веб-клиентом и веб-сервером для обеспечения безопасной передачи данных. Часто используется для отправки данных о транзакции кредитной карты или других частных данных из браузера на сервер.

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

Протокол TCP/IP

Протокол TCP/IP ( Transmission Control Protocol/Internet Protocol ) представляет собой стек сетевых протоколов, повсеместно используемый для Интернета и других подобных сетей (например, данный протокол используется и в ЛВС). Название TCP/IP произошло от двух наиболее важных протоколов:

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

Основные характеристики TCP/IP:

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

Принцип работы стека протоколов TCP/IP такой же как и в модели OSI, данные верхних уровней инкапсулируются в пакеты нижних уровней.

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

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

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

Пример инкапсуляции можно представить следующим образом:

Рассмотрим каждые функции уровней

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

Приложения, работающие со стеком TCP/IP, могут также выполнять функции представительного уровня и частично сеансового уровня модели OSI.

Распространенными примерами приложений являются программы:

  • Telnet
  • FTP
  • HTTP
  • WWW
  • Протоколы электронной почты (SMTP, POP3)

Для пересылки данных другому приложению, приложение обращается к тому или иному модулю транспортного модуля.

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

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

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

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

Средства транспортного уровня представляют собой функциональную надстройку над сетевым уровнем и решают две основных задачи:

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

В настоящее время в Интернет используются два транспортных протокола – UDP, обеспечивающий негарантированную доставку данных между программами, и TCP, обеспечивающий гарантированную доставку с установлением виртуального соединения.

Сетевой (межсетевой) уровень

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

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

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

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

  • Уничтожит дейтаграмму;
  • Отправить ее дальше к месту назначения, определив маршрут следования, так поступают промежуточные станции – маршрутизаторы.

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

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

Уровень доступа к среде

Функции этого уровня следующие:

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

Рассмотрим инкапсуляцию на примере перехвата пакета протокола HTTP с помощью сниффера wireshark, который работает на прикладном уровне протокола TCP/IP:

Помимо самого перехваченного протокола HTTP, на основании стека TCP/IP сниффер описывает каждый нижележащий уровень. HTTP инкапсулируется в TCP, протокол TCP в IPv4, IPv4 в Ethernet II.

Протоколы TCP/IP интернета. Стек протоколов TCP/IP

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

Мало кто знает, что простой процесс посещения веб-страничек подразумевает незаметную для пользователя, сложную систему действий. Каждый переход по ссылке активирует сотни различных вычислительных операций в сердце компьютера. В их числе передачи запросов, прием ответов и многое другое. За каждое действие в сети отвечают так называемые протоколы TCP/IP. Что они собой представляют?

Любой протокол интернета TCP/IP работает на своем уровне. Иными словами, каждый занимается своим делом. Все семейство TCP/IP протоколов одновременно выполняет колоссальную работу. А пользователь в это время видит только яркие картинки и длинные строки текста.

Понятие стека протоколов

Стек протоколов TCP/IP — это организованный набор основных сетевых протоколов, который иерархическим способом разделен на четыре уровня и представляет собой систему транспортного распределения пакетов по компьютерной сети.

TCP/IP — это наиболее известный стек сетевых протоколов, который используется на данный момент. Принципы стека TCP/IP применяются как в локальных, так и в глобальных сетях.

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

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

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

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

Именно поэтому для сетей TCP/IP был изобретен специальный подход, который и стал отличительной чертой стека протоколов. Было введено понятие — масштабируемость.

Уровни стека протоколов TCP/IP

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

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

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

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

Данный уровень, предоставляет вышестоящему (прикладному) два типа сервиса:

  • Осуществляет гарантированную доставку, с помощью протокола ТСР.
  • Осуществляет доставку по возможности по протоколу UDP.

Чтобы обеспечить гарантированную доставку, согласно протоколу TCP устанавливается соединение, которое позволяет выставлять на пакетах нумерацию на выходе и подтверждать их прием на входе. Нумерация пакетов и подтверждение приема — это так называемая служебная информация. Этот протокол поддерживает передачу в режиме «Дуплекс». Кроме того, благодаря продуманному регламенту протокола, он считается очень надежным.

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

Сетевой уровень или «уровень интернета»: базовый уровень для всей модели TCP/IP. Основной функционал этого уровня идентичен одноименному уровню модели OSI и описывает перемещение пакетов в составной сети, состоящей из нескольких, более мелких подсетей. Он связывает соседние уровни протокола TCP/IP.

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

На этом уровне используются следующие сетевые протоколы TCP/IP: ICMP, IP, RIP, OSPF. Основным, и наиболее популярным на сетевом уровне, конечно же является протокол IP (Internet Protocol). Основной его задачей является передача пакетов от одного роутера к другому до тех пор, пока единица данных не попадет на сетевой интерфейс узла назначения. Протокол IP разворачивается не только на хостах, но и на сетевом оборудовании: маршрутизаторах и управляемых коммутаторах. Протокол IP работает по принципу негарантированной доставки с максимальными усилиями. Т. е., для отправки пакета нет необходимости заранее устанавливать соединение. Такой вариант приводит к экономии трафика и времени на движении лишних служебных пакетов. Пакет направляется в сторону назначения, и вполне возможно, что узел останется недоступным. В таком случае возвращается сообщение об ошибке.

Уровень сетевых интерфейсов: отвечает за то, чтобы подсети с разными технологиями могли взаимодействовать друг с другом и передавать информацию в том же режиме. Реализовано это двумя простыми шагами:

  • Кодирование пакета в единицу данных промежуточной сети.
  • Преобразование информации о месте назначения в стандарты необходимой подсети и отправка единицы данных.

Этот подход позволяет постоянно расширять количество поддерживаемых технологий построения сетей. Как только появляется новая технология, она сразу попадает в стек проколов TCP/IP и позволяет сетям со старыми технологиями передавать данные в сети, построенные с применением более современных стандартов и способов.

Единицы передаваемых данных

За время существования такого явления, как протоколы TCP/IP, установились стандартные термины по части единиц передаваемых данных. Данные при передаче могут дробиться по-разному, в зависимости от технологий, используемых сетью назначения.

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

  • Поток данных — данные, которые поступают на транспортный уровень от протоколов вышестоящего прикладного уровня.
  • Сегмент — фрагмент данных, на которые дробится поток по стандартам протокола TCP.
  • Датаграмма (особо безграмотные произносят как «Дейтаграмма») — единицы данных, которые получаются путем дробления потока с помощью протоколов, работающих без установления соединения (UDP).
  • Пакет — единица данных, производимая посредством протокола IP.
  • Протоколы TCP/IP упаковывают IP-пакеты в передаваемые по составным сетям блоки данных, которые называются кадрами или фреймами.

Типы адресов стека протоколов TCP/IP

Любой протокол передачи данных TCP/IP для идентификации узлов использует один из следующих типов адресов:

  • Локальные (аппаратные) адреса.
  • Сетевые адреса (IP адреса).
  • Доменные имена.

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

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

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

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

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

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

IP-адрес. Формат. Составляющие. Маска подсети

IP адрес — 32-битное число, которое в традиционном представлении записывается в виде чисел, от 1 до 255, разделенных между собой точками.

Вид IP адреса в различных форматах записи:

  • Десятичный вид IP адреса: 192.168.0.10.
  • Двоичный вид того же IP адреса: 11000000.10101000.00000000.00001010.
  • Запись адреса в шестнадцатеричной системе счисления: C0.A8.00.0A.

Между ID сети и номером точки в записи нет разделительного знака, но компьютер способен их разделять. Для этого существует три способа:

  1. Фиксированная граница. При этом способе весь адрес условно делится на две части фиксированной длины побайтно. Таким образом, если под номер сети отдать один байт, тогда мы получим 2 8 сетей по 2 24 узлов. Если границу сдвинуть еще на байт вправо, тогда сетей станет больше — 2 16 , а узлов станет меньше — 2 16 . На сегодняшний день подход считается устаревшим и не используется.
  2. Маска подсети. Маска идет в паре с IP адресом. Маска имеет последовательность значений «1» в тех разрядах, которые отведены под номер сети, и определенное количество нулей в тех местах IP адреса, которые отведены на номер узла. Граница между единицами и нулями в маске — это граница между идентификатором сети и ID узла в IP-адресе.
  3. Метод классов адресов. Компромиссный метод. При его использовании размеры сетей не могут быть выбраны пользователем, однако есть пять классов — А, В, С, D, Е. Три класса — А, В и С — предназначены для различных сетей, а D и Е — зарезервированы для сетей специального назначения. В классовой системе каждый класс имеет свою границу номера сети и ID узла.

Классы IP адресов

К классу А относятся сети, в которых сеть идентифицируется по первому байту, а три оставшихся являются номером узла. Все IP адреса, которые имеют в своем диапазоне значение первого байта от 1 до 126 — это сети класса А. Количественно сетей класса А получается совсем мало, зато в каждой из них может быть до 2 24 точек.

Класс В — сети, в которых два высших бита равны 10. В них под номер сети и идентификатор точки отводится по 16 бит. В результате получается, что количество сетей класса В в большую сторону отличается от количества сетей класса А количественно, но они имеют меньшее количество узлов — до 65 536 (2 16 ) шт.

В сетях класса С — совсем мало узлов — 2 8 в каждой, но количество сетей огромно, благодаря тому, что идентификатор сети в таких структурах занимает целых три байта.

Сети класса D — уже относятся к особым сетям. Он начинается с последовательности 1110 и называется групповым адресом (Multicast adress). Интерфейсы, имеющие адреса класса А, В и С, могут входить в группу и получать вдобавок к индивидуальному еще и групповой адрес.

Адреса класса Е — в резерве на будущее. Такие адреса начинаются с последовательности 11110. Скорее всего, эти адреса будут применяться в качестве групповых, когда наступит нехватка IP адресов в глобальной сети.

Настройка протокола TCP/IP

Далее, на каких системах можно настроить обозначенные протоколы?

Настройка протокола TCP/IP доступна на всех операционных системах. Это — Linux, CentOS, Mac OS X, Free BSD, Windows 7. Протокол TCP/IP требует только наличия сетевого адаптера. Разумеется, серверные операционные системы способны на большее. Очень широко, с помощью серверных служб, настраивается протокол TCP/IP. IP адреса в в обычных настольных компьютерах задаются в настройках сетевых подключений. Там настраивается сетевой адрес, шлюз — IP адрес точки, имеющий выход в глобальную сеть, и адреса точек, на которых располагается DNS сервер.

Протокол интернета TCP/IP может настраиваться в ручном режиме. Хотя не всегда в этом есть необходимость. Можно получать параметры протокола TCP/IP с динамически-раздающего адреса сервера в автоматическом режиме. Такой способ используют в больших корпоративных сетях. На DHCP сервер можно сопоставить локальный адрес к сетевому, и как только в сети появится машина с заданным IP адресом, сервер сразу даст ему заранее подготовленный IP адрес. Этот процесс называется резервирование.

TCP/IP Протокол разрешения адресов

Единственный способ установить связь между MAC-адресом и IP адресом — ведение таблицы. При наличии таблицы маршрутизации каждый сетевой интерфейс осведомлен о своих адресах (локальном и сетевом), однако встает вопрос, как правильно организовать обмен пакетами между узлами, применяя протокол TCP/IP 4.

Для чего был придуман протокол разрешения адресов (ARP)? Для того, чтобы связывать семейство TCP/IP протоколов и других систем адресации. На каждом узле создается таблица соответствия ARP, которая заполняется путем опроса всей сети. Происходит это после каждого выключения компьютера.

ARP таблица

Адрес Локальный адрес Тип записи
172.18.33.79 00E4727F1920 Динамический
172.18.33.80 00E0F7963920 Статический
172.18.33.81 7829F77F1920 Динамический

Так выглядит пример составленной ARP таблицы.

Добавить комментарий