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


Содержание

Протокол TCP/IP

Основу транспортных средств стека протоколов TCP/IP составляет протокол межсетевого взаимодействия — Internet Protocol (IP). К основным функциям протокола IP относятся:

— перенос между сетями различных типов адресной информации в унифицированной форме,

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

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

Протокол, тесно связанный с IP – TCP (Transmission Control Protocol), который используется в аналогичных целях, но на более высоком уровне — транспортном уровне эталонной модели ISO OSI. Часто эти протоколы, по причине их тесной связи, именуют вместе, как TCP/IP. Термин «TCP/IP» обычно означает все, что связано с протоколами TCP и IP. Он охватывает целое семейство протоколов, прикладные программы и даже саму сеть. В состав семейства входят протоколы TCP, UDP, ICMP, telnet, FTP и многие другие. TCP/IP — это технология межсетевого взаимодействия, технология internet.

Сам протокол TCP занимается проблемой пересылки больших объемов информации, основываясь на возможностях протокола IP. TCP делит информацию, которую надо переслать, на несколько частей. Нумерует каждую часть, чтобы позже восстановить порядок. Чтобы пересылать эту нумерацию вместе с данными, он обкладывает каждый кусочек информации своей обложкой — конвертом, который содержит соответствующую информацию. Это и есть TCP-конверт. Получившийся TCP-пакет помещается в отдельный IP-конверт и получается IP-пакет, с которым сеть уже умеет обращаться.

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

Рисунок 7 – Передача информации в сети Интернет

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

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

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

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

Другой стандартный протокол транспортного уровня UDP (User Datagram Protocol) — протокол пользовательских дейтаграмм. Он используется вместо TCP. Здесь данные помещаются не в TCP, а в UDP-конверт, который также помещается в IP-конверт. Этот протокол реализует дейтаграммный способ передачи данных.

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

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

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

Два протокола – TCP и IP – составляют техническую основу функционирования Интернета, поэтому Интернет часто определяют так:

Не нашли то, что искали? Воспользуйтесь поиском:

TCP/IP

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

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

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

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

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

Содержание

IP [ править ]

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 [ править ]

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

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

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

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

TCP-соединение [ править ]

Соединение двух узлов начинается с 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 [ править ]

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

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

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

Прикладные протоколы [ править ]

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

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

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


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

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

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

URI [ править ]

Чтобы указать на документ, расположенный в сети, используется унифицированный идентификатор ресурса, или 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.

Примечания [ править ]

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

Курс по основам компьютерных сетей на базе оборудования 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, то его заголовок, как минимум, будет содержать мак-адрес назначения, мак-адрес источника, тип вышестоящего протокола, а также специальное поле для проверки целостности данных.

Илон Маск рекомендует:  Тег address

Можно выделить следующие протоколы и технологии, которые работают на канальном уровне модели 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, маршрутизации и многом другом.

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

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

В пятом издании книги рассматриваются, в частности, беспроводные сети стандарта 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.

Илон Маск рекомендует:  Что такое код array_splice

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

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 по своей сути просты и напоминают работу советской почты:
Сначала вы пишете письмо, затем кладете его в конверт, заклеиваете, на обратной стороне конверта пишете адреса отправителя и получателя, а потом относите в ближайшее почтовое отделение. Далее письмо проходит через цепочку почтовых отделений до ближайшего почтового отделения получателя, откуда оно тетей-почтальоном доставляется до по указанному адресу получателя и опускается в его почтовый ящик (с номером его квартиры) или вручается лично. Когда получатель письма захочет вам ответить, то он в своем ответном письме поменяет местами адреса получателя и отправителя, и письмо отправиться к вам по той же цепочке, но в обратном направлении.

Адрес отправителя:
От кого: Иванов Иван Иванович
Откуда: Ивантеевка, ул. Большая , д. 8, кв. 25
Адрес получателя:
Кому: Петров Петр Петрович
Куда: Москва, Усачевский переулок, д. 105, кв. 110

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

Адрес отправителя (Source address):
IP: 82.146.49.55
Port: 2049
Адрес получателя (Destination address):
IP: 195.34.32.116
Port: 53
Данные пакета:
.
Конечно же в пакетах также присутствует служебная информация, но для понимания сути это не важно.

Комбинация «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).

Набираем в адресной строке браузера доменное имя www.yandex.ru и жмем . Далее операционная система производит следующие действия:
— Отправляется запрос (точнее пакет с запросом) DNS серверу на сокет 195.34.32.116:53.
Порт 53 соответствует DNS-серверу — приложению, занимающемуся распознаванием имен. А DNS-сервер, обработав наш запрос, возвращает IP-адрес, который соответствует введенному имени. Диалог следующий: Какой IP адрес соответствует имени www.yandex.ru? Ответ: 82.146.49.55.
— Далее наш компьютер устанавливает соединение с портом 80 компьютера 82.146.49.55 и посылает запрос (пакет с запросом) на получение страницы www.yandex.ru. 80-й порт соответствует веб-серверу. В адресной строке браузера 80-й порт не пишется, т.к. используется по умолчанию, но его можно и явно указать после двоеточия — http://www.yandex.ru:80.
— Приняв от нас запрос, веб-сервер обрабатывает его и в нескольких пакетах посылает нам страницу в на языке HTML — языке разметки текста, который понимает браузер. Наш браузер, получив страницу, отображает ее. В результате мы видим на экране главную страницу этого сайта.

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

Все эти знания крайне полезны при общении с техподдержкой — список портов, с которыми вам придется столкнуться:
135-139 — эти порты используются Windows для доступа к общим ресурсам компьютера — папкам, принтерам. Не открывайте эти порты наружу, т.е. в районную локальную сеть и Интернет. Их следует закрыть фаерволлом. Также если в локальной сети вы не видите ничего в сетевом окружении или вас не видят, то вероятно это связано с тем, что фаерволл заблокировал эти порты. Таким образом для локальной сети эти порты должны быть открыты, а для Интернета закрыты.
21 — порт FTP сервера.
25 — порт почтового SMTP сервера. Через него ваш почтовый клиент отправляет письма. IP адрес SMTP сервера и его порт (25-й) следует указать в настройках вашего почтового клиента.
110 — порт POP3 сервера. Через него ваш почтовый клиент забирает письма из вашего почтового ящика. IP адрес POP3 сервера и его порт (110-й) также следует указать в настройках вашего почтового клиента.
80 — порт WEB-сервера.
3128, 8080 — прокси-серверы (настраиваются в параметрах браузера).

Несколько специальных IP адресов:
127.0.0.1 — это localhost, адрес локальной системы, т.е. локальный адрес вашего компьютера.
0.0.0.0 — так обозначаются все IP-адреса.
192.168.xxx.xxx — адреса, которые можно произвольно использовать в локальных сетях, в глобальной сети Интернет они не используются. Они уникальны только в рамках локальной сети. Адреса из этого диапазона вы можете использовать по своему усмотрению, например, для построения домашней или офисной сети.

Что такое маска подсети и шлюз по умолчанию, он же роутер и маршрутизатор? Эти параметры задаются в настройках сетевых подключений. Компьютеры объединяются в локальные сети. В локальной сети компьютеры напрямую «видят» только друг друга. Локальные сети соединяются друг с другом через шлюзы (роутеры, маршрутизаторы). Маска подсети предназначена для определения — принадлежит ли компьютер-получатель к этой же локальной сети или нет. Если компьютер-получатель принадлежит этой же сети, что и компьютер-отправитель, то пакет передается ему напрямую, в противном случае пакет отправляется на шлюз по умолчанию, который далее, по известным ему маршрутам, передает пакет в другую сеть, т.е. в другое почтовое отделение (по аналогии с бумажной почтой). Итак:
TCP/IP — это название набора сетевых протоколов. На самом деле передаваемый пакет проходит несколько уровней. (Как на почте: сначала вы пишете писмо, потом помещаете в конверт с адресом, затем на почте на нем ставится штамп и т.д.).
IP протокол — это протокол так называемого сетевого уровня. Задача этого уровня — доставка ip-пакетов от компьютера отправителя к компьютеру получателю. Помимо собственно данных, пакеты этого уровня имеют ip-адрес отправителя и ip-адрес получателя. Номера портов на сетевом уровне не используются. Какому порту=приложению адресован этот пакет, был ли этот пакет доставлен или был потерян, на этом уровне неизвестно — это не его задача, это задача транспортного уровня.
TCP и UDP — это протоколы так называемого транспортного уровня. Транспортный уровень находится над сетевым. На этом уровне к пакету добавляется порт отправителя и порт получателя.
TCP — это протокол с установлением соединения и с гарантированной доставкой пакетов. Сначала производится обмен специальными пакетами для установления соединения, происходит что-то вроде рукопожатия (-Привет. -Привет. -Поболтаем? -Давай.). Далее по этому соединению туда и обратно посылаются пакеты (идет беседа), причем с проверкой, дошел ли пакет до получателя. Если пакет не дошел, то он посылается повторно («повтори, не расслышал»).
UDP — это протокол без установления соединения и с негарантированной доставкой пакетов. (Типа: крикнул что-нибудь, а услышат тебя или нет — неважно).
Над транспортным уровнем находится прикладной уровень. На этом уровне работают такие протоколы, как http, ftp и пр. Например HTTP и FTP — используют надежный протокол TCP, а DNS-сервер работает через ненадежный протокол UDP.

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


В этом примере 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 ( 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, обеспечивающий гарантированную доставку с установлением виртуального соединения.

Илон Маск рекомендует:  Faq как скопировать все файлы вместе с подкаталогами

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

Основным протоколом этого уровня является протокол 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» стало стандартным в современном Интернете. В сущности, оно характеризует сетевые средства связи, в которых данные передаются по IP-сетям с помощью протокола TCP.

Эта глава включает в себя сведения о том, как настроить протокол TCP/IP в сети на основе ОС QNX Neutrino. Кроме того, она содержит информацию о разрешении неполадок и другие подробности, которые важны с точки зрения системного администрирования. Сеть TCP/IP на основе QNX Neutrino обеспечивает доступ к ресурсам, которые расположены на любом удаленном компьютере, поддерживающем стек протоколов TCP/IP.

Клиенты и серверы

Существуют два типа TCP/IP-хостов: клиенты и серверы. Клиент запрашивает службу TCP/IP, а сервер предоставляет ее. При планировании сети необходимо решить, какие хосты будут серверами, а какие — клиентами.

Например, компьютер, который посылает запросы на соединение через протокол telnet , должен быть настроен как клиент, а компьютер, который принимает эти запросы — как сервер.

В терминологии протокола TCP/IP компьютеры, которые доступны по сети, называются хостами (host) или шлюзами (gateway).

Хост — узел с работающим протоколом TCP/IP, который не пересылает IP-пакеты в другие TCP/IP-сети. Как правило, хост имеет единственный интерфейс (сетевую плату) и является адресатом или источником TCP/IP-пакетов.

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

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

Сервер имен (nameserver) представляет собой базу данных, которая содержит имена и IP-адреса хостов. Доступ к TCP/IP- и интернет-хостам обычно осуществляется через текстовое имя (например, www.qnx.com) и механизм, который преобразует имя в IP-адрес (например, 209.226.137.1).

Самый простой способ создать такую привязку — воспользоваться таблицей в файле /etc/hosts . Этот метод эффективен в сетях небольшого и среднего масштаба. Если сеть включает в себя много хостов или не является внутренней, то необходимо использовать сервер имен (например, для подключения к поставщику услуг Интернета).

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

записью в конфигурационной строке _CS_RESOLVE , которая считывается из конфигурационного файла (по умолчанию /etc/net.cfg );

записью в файле /etc/resolv.conf , например:

Для того чтобы сконфигурировать сеть и задать серверы имен, можно воспользоваться инструментом настройки протокола TCP/IP и коммутируемых соединений графической оболочки Photon под названием phlip . Утилита phlip присваивает значение конфигурационной строке _CS_RESOLVE . Эту конфигурационную строку можно также задавать вручную. Если строка _CS_RESOLVE существует, то она всегда используется для поиска сервера имен вместо файла /etc/resolv.conf .

Более подробные сведения о поиске имен хостов и серверов имен в TCP/IP-сетях см. в разделах /etc/hosts и /etc/resolv.conf справочника по утилитам.

Примечание. Если сервер имен не отвечает, то существует таймаут по 1,5 минуты на каждый сервер. Этот таймаут не может быть изменен, но многие утилиты TCP/IP имеют опцию -n, которую можно использовать, что бы избежать поиска имени.

Маршрутизация определяет, как пакет передается адресату. Существуют следующие категории маршрутизации.

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

Если в сети существует более одного пути к одному и тому же хосту, то, возможно, требуется использовать динамическую маршрутизацию. При динамической маршрутизации информация об изменении состояния сети распространяется с помощью протоколов маршрутизации. Если необходимо реагировать на эти изменения, то следует запустить утилиту routed , которая реализует протоколы RIP ( Routing Information Protocol, протокол маршрутной информации) и RIPv2.

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

Для использования протокола TCP/IP необходимы следующие программные компоненты (рис. 13.1):

io-pkt* — администратор, который обеспечивает поддержку динамически загружаемых сетевых модулей. Он включает полнофункциональный стек TCP/IP основанный на коде base.io-net операционной системы NetBSD ;

сетевые драйверы ( devn-*, devnp-* ) — администраторы, которые реализуют интерфейс с оборудованием.

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

Если используется протокол динамического конфигурирования хостов (D ynamic Host Configuration Protocol , DHCP), то, независимо от версии стека TCP/IP, можно воспользоваться утилитой dhcp.client для того, чтобы автоматически задать конфигурационные параметры, которые предоставляет DHCP-сервер.


Примечание . Программа распознавания устройств автоматически запускает администратор io-pkt* при загрузке операционной системы, а затем загружает полнофункциональный стек TCP/IP и запускает драйверы обнаруженных устройств. Если при загрузке требуется использовать компактный стек или задавать какие-либо параметры (например, включать протокол IPSec ), то необходимо отредактировать файлы распознавания устройств. Более подробные сведения и пример см. в подразд. «Распознавание устройств» раздела 8 .

Рис. 13.1. Компоненты протокола TCP/IP в операционной системе QNX Neutrino

Стек TCP/IP, основан на стеке TCP/IP операционной системы NetBSD и поддерживает схожие с ним возможности. Если для конфигурирования полнофункционального стека не используется утилита phlip (инструмент настройки протокола TCP/IP и коммутируемых соединений графической оболочки Photon), то необходимо воспользоваться утилитами ifconfig и route , как показано далее, поскольку конфигурировать полнофункциональный стек с помощью командно-строковых аргументов по аналогии с компактным стеком нельзя.

Для задания IP-адреса интерфейса следует воспользоваться утилитой ifconfig . Чтобы назначить сетевому интерфейсу IP-адрес 10.0.0.100, необходимо ввести команду:

ifconfig if_name 10.0.0.100

where if_name is the interface name that the driver uses.

Если требуется также указать шлюз, следует ввести команду route :

route add default 10.0.0.1

Эта команда устанавливает IP-адрес шлюза 10.0.0.1 .

Чтобы затем просмотреть сетевую конфигурацию, следует воспользоваться командой netstat (команда netstat -in отображает информацию о сетевых интерфейсах):

Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll

lo0 32976
0 0 0 0 0

lo0 32976 127 127.0.0.1 0 0 0 0 0

en0 1500
00:50:da:c8:61:92 21 0 2 0 0

en 0 1500 10 10.0.0.100 21 0 2 0 0

Чтобы отобразить информацию о таблице маршрутизации в полном стеке, следует воспользоваться командой netstat -rn . Ее результат выглядит так:

Destination Gateway Flags Refs Use Mtu Interface

default 10.0.0.1 UGS 0 0 — en0

10 10.0.0.100 U 1 0 — en0

10.0.0.100 10.0.0.100 UH 0 0 — lo0

127.0.0.1 127.0.0.1 UH 0 0 — lo0

Эта таблица показывает, что маршрут по умолчанию задан и его IP-адрес равен 10.0.0.1 .

Если хост является сервером, то он запускает соответствующий сервис для обслуживания клиентских запросов. Сервер TCP/IP обычно запускает сервис inetd , который также называют «суперсервером Интернета». Сервис inetd можно запустить из файла rc.local (см. описание файла /etc/rc.d/rc.sysinit в разделе 8 ).

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

В сети TCP/IP сервис inetd ожидает соединений через порты со стандартными номерами, которые указаны в файле /etc/inetd.conf . После получения запроса утилита inetd запускает соответствующий серверный сервис. Например, если клиент запрашивает удаленное подключение к хосту с помощью утилиты rlogin , то для обслуживания этого запроса сервер inetd запускает сервис удаленного подключения rlogind . В большинстве случаев клиентские запросы обслуживаются таким способом.

Сервисы, которые может запускать утилита inetd , задаются в конфигурационном файле суперсервера /etc/inetd.conf . Версия этого файла, которая входит в дистрибутив ОС QNX Neutrino, содержит все сервисы TCP/IP, имеющиеся в дистрибутиве, а также некоторые нестандартные службы утилиты pidin . Редактировать файл /etc/inetd.conf необходимо лишь тогда, когда требуется добавить или удалить определения сервисов. Утилита inetd считывает конфигурационную информацию из этого файла при запуске. Файл /etc/inetd.conf включает в себя следующие часто используемые сервисы.

ftpd — передача файлов;

rlogind — удаленный вход в систему;

rshd — удаленный командный интерпретатор;

telnetd — удаленный терминальный сеанс;

tftpd — простейший протокол передачи файлов, который разработан Управлением перспективных исследовательских проектов (DARPA).

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

Запуск сервисов rshd и rlogind открывает доступ к локальному компьютеру извне. Для задания доверенных пользователей необходимо воспользоваться файлом /etc/hosts.equiv или ˜/.rhosts , однако следует быть очень внимательным.

Существуют и другие резидентные сервисы, которые могут работать независимо от сервера inetd (их описания приведены в руководстве «Описание программы. Часть 1. Справочник по утилитам» КПДА.10964-01 13 01):

bootpd — сервер протокола интернет-загрузки;

dhcpd — сервис протокола динамического конфигурирования хостов;

lpd — сервис построчного принтера (см. раздел 14) ;

mrouted — сервис протокола дистанционной векторной групповой многоадресной маршрутизации ( Distance — Vector Multicast Routing Protocol, DVMRP);

named — сервер доменных имен Интернета;

ntpd — сервис сетевого протокола времени ( Network Time Protocol );

routed — сервис протоколов маршрутизации RIP и RIPv2;

rwhod — база данных состояний системы;

slinger — компактный Web -сервер;

Эти сервисы прослушивают свои TCP-порты и управляют собственными транзакциями. Они обычно запускаются при загрузке компьютера и затем работают постоянно. Тем не менее, для экономии системных ресурсов можно запускать сервис bootpd с помощью сервера inetd только при получении запроса на загрузку.

Запуск нескольких экземпляров стека TCP/IP

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

Первый экземпляр стека TCP/IP запускается с помощью вызова утилиты io-pkt* следующим образом:

io-pkt-v4 -del900 pci=0x0

Второй экземпляр стека TCP/IP запускается с помощью вызова утилиты io-pkt* следующим образом:

io-pkt-v4 -i1 -del900 pci=0x1 -ptcpip prefix=/sock2

Чтобы получить PCI-индексы сетевых плат, можно воспользоваться командой pci -vvv . Если используются различные типы сетевых плат, то указывать PCI-индекс не обязательно.

Параметр -i во втором экземпляре стека TCP/IP указывает утилите io-pkt-v4 зарегистрироваться под префиксом io-pkt1 . Параметр prefix указывает на то, что второй стек должен быть зарегистрирован под префиксом /sock2/dev/socket вместо префикса по умолчанию /dev/socket . Приложения, которым необходимо использовать второй стек TCP/IP, должны задать переменную окружения SOCK . Пример :

SOCK=/sock2 telnet 10.59

SOCK=/sock2 netstat -in

SOCK=/sock2 ifconfig en0 192.168.2.10

Если переменная SOCK не задана, то команда использует первый стек TCP/IP.

Динамически назначаемые параметры TCP/IP

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

поставщики сетевых услуг с коммутируемым доступом используют протокол соединения «точка-точка» ( Point — to — Point Protocol, PPP);

поставщики, которые предоставляют широкополосный доступ такими методами, как цифровая абонентская линия ( Digital Subscriber Line , DSL) или кабельное подключение, используют протокол соединения «точка-точка» через среду Ethernet ( Point — to — Point Protocol over Ethernet , PPPoE ) или протокол DHCP;

как правило, в корпоративных сетях используется протокол DHCP .

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

Операционная система QNX Neutrino реализует еще один протокол автоматического конфигурирования под названием AutoIP, который является проектом комитета IETF по автоматической настройке. Этот протокол используется в небольших сетях для назначения хостам IP-адресов, локальных для канала ( link-local ). Протокол AutoIP самостоятельно определяет IP-адрес, локальный для канала, используя схему согласования с другими хостами и не обращаясь к центральному серверу.

Использование протокола PPPoE

Сокращение PPPoE расшифровывается как » Point — to — Point Protocol over Ethernet» (протокол соединения «точка-точка» через среду Ethernet). Этот протокол инкапсулирует данные для передачи через сеть Ethernet с мостовой топологией.

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

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

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

Соединение через протокол PPPoE состоит из клиента и сервера. Клиент и сервер работают с использованием любого интерфейса, который близок к спецификациям Ethernet. Этот интерфейс применяется для выдачи клиентам IP-адресов с привязкой этих IP-адресов к пользователям и, по желанию, к рабочим станциям, вместо аутентификации на основе только рабочей станции. Сервер PPPoE создает соединение «точка-точка» для каждого клиента.


Установка сеанса PPPoE

Для того чтобы создать сеанс PPPoE, следует воспользоваться сервисом pppoed . Модуль io-pkt-* п редоставляет службы протокола PPPoE. Сначала необходимо запустить io-pkt-* с подходящим драйвером . Пример :

Затем следует создать сеанс связи с любым сервером с помощью файла /etc/ppp/pppoe-up для того, чтобы запустить сервис pppd :

После этого следует создать сеанс связи с сервером, который имеет имя PPPOE_GATEWAY :

Когда сеанс PPPoE установлен, сервис pppoed использует сервис pppd для создания соединения «точка-точка» через этот сеанс. Сервис pppd получает локальную конфигурацию протокола TCP/IP от сервера (поставщика услуг Интернета).

Запуск соединения «точка-точка» через сеанс PPPoE

Для установления каналов связи «точка-точка» через протокол TCP/IP программе pppoed необходим сервис pppd . При запуске сервиса pppd необходимо воспользоваться несколькими параметрами, которые специфичны для его работы через сеанс PPPoE. Пример файла /etc/ppp/pppoe-up :

pppd debug /dev/io-net/ppp_en -ac -pc -detach defaultroute \

require-ns mtu 1492 name username

Для работы сервиса pppd с сервисом pppoed обязательны следующие параметры.

/ dev/io-net/ppp_en – устройство, которое создает модуль io-pkt;

— ac -pc — обязательные параметры, которые отключают сжатие пакетов;

— detach — параметр, который не позволяет утилите pppd работать в режиме сервиса. Это дает программе pppoed возможность получить информацию о том, что сеанс утилиты pppd завершен. Данный параметр можно опустить, если воспользоваться параметром scriptdetach сервиса pppoed ;

mtu 1492 — следует задать максимальный размер передаваемых данных, который поддерживается протоколом PPPoE. Этот размер равен разности размера пакета Ethernet и размера служебных данных инкапсуляции протокола PPPoE.

Примечание. Если при подключении сервиса pppoed к некоторым сайтам Интернета возникают проблемы, см. «PPPOE and Path MTU Discovery» в электронном руководстве «Neutrino Technotes».

Использование протокола DHCP

Хост TCP/IP использует протокол DHCP ( Dynamic Host Configuration Protocol , динамический протокол конфигурирования хостов) для получения своих конфигурационных параметров (IP-адреса, шлюза, серверов имен и т. д.) у DHCP-сервера, который содержит конфигурационные параметры всех хостов сети.

Утилита dhcp.client , которая является DHCP-клиентом операционной системы QNX Neutrino, получает эти параметры и автоматически конфигурирует хост для использования Интернета или локальной сети.

Если утилита dhcp.client не может применить конфигурационные параметры, которые предоставлены DHCP-сервером, она передает эти параметры сценарию, который она исполняет. Этот сценарий можно использовать для применения любых параметров, которые не устанавливаются утилитой dhcp.client . Более подробные сведения см. в разделе о dhcp.client справочника по утилитам.

Использование протокола AutoIP

AutoIP представляет собой модуль, который необходимо смонтировать в администратор io-pkt* . Этот модуль используется для быстрого конфигурирования хостов в небольшой сети. Протокол AutoIP назначает своему интерфейсу IP-адрес, локальный для канала, из сети 169.254/16, если этот адрес не используется никаким другим хостом. Преимущество протокола AutoIP состоит в том, что необходимость в центральном конфигурационном сервере отсутствует. Хосты самостоятельно определяют, какие IP-адреса свободны для использования, и отслеживают возникновение конфликтов.

Обычно хост использует протоколы DHCP и AutoIP одновременно. Когда хост впервые подключается к сети, он не располагает информацией о наличии в сети DHCP-сервера. Если запустить программу dhcp.client с параметром –a (использовать IP-адрес как псевдоним), то интерфейсу одновременно присваивается IP-адрес, локальный для канала, и IP-адрес, который выдается протоколом DHCP. Если DHCP-сервер отсутствует, то наступает тайм-аут, в результате которого программа dhcp.client завершается и оставляет активным IP-адрес, локальный для канала. Если позднее DHCP-сервер становится доступным, то утилиту dhcp.client можно перезапустить и применить IP-адрес, который выдает протокол DHCP, без помех для TCP/IP-соединений, использующих IP-адрес, локальный для канала.

Одновременная активность адреса, который назначается протоколом DHCP, и IP-адреса, локального для канала, обеспечивает связь с хостами, которые имеют как IP-адреса, локальные для канала, так и обычные IP-адреса. Более подробные сведения см. в разделах о lsm-autoip.so и dhcp.client в руководстве «Описание программы. Часть 1. Справочник по утилитам» КПДА.10964-01 13 01.

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

Работают ли администратор io-pkt* и драйверы?

$ pidin -P io-pkt-v4 mem

Затем надо выполнить поиск разделяемого объекта протокола TCP/IP в выводе этой команды:

pid tid name prio STATE code data stack

126996 1 sbin/io-pkt-v4-hc 21o SIGWAITINFO 872K 904K 8192(516K)*

126996 2 sbin/io-pkt-v4-hc 21o RECEIVE 872K 904K 8192(132K)

126996 3 sbin/io-pkt-v4-hc 21r RECEIVE 872K 904K 4096(132K)

126996 4 sbin/io-pkt-v4-hc 21o RECEIVE 872K 904K 4096(132K)

126996 5 sbin/io-pkt-v4-hc 20o RECEIVE 872K 904K 4096(132K)

126996 6 sbin/io-pkt-v4-hc 9o RECEIVE 872K 904K 4096(132K)

libc.so.3 @b0300000 444K 16K

devnp-shim.so @b8200000 28K 8192

devn-epic.so @b8209000 40K 4096

lsm-qnet.so @b8214000 168K 36K

Какова информация о серверах имен?

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

getconf _ CS _ RESOLVE

Если конфигурационная строка не используется, то надо ввести команду:

Как имена хостов связаны с IP-адресами?

интернет_адрес официальное_имя_хоста псевдонимы

cat / etc / hosts

Как получить сведения о состоянии сети?

netstat –in — перечисляет интерфейсы, в том числе их MAC- и IP-адреса;

netstat –rn — отображает сетевые таблицы маршрутизации, которые определяют, как стек может связаться с другим хостом. Если путь к другому хосту не существует, то отображается сообщение об ошибке » no route to host «;

netstat –an — отображает информацию о входящих и исходящих TCP/IP-соединениях локальной системы. Эта информация включает в себя состояние соединения или количество данных, которые ожидают передачи по соединению. Кроме того, команда netstat –an отображает IP-адрес и порт локальной и удаленной стороны соединения.

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

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

Если подключение существует, утилита ping отображает приблизительно следующее:

PING isp.com (10.0.0.1): 56 data bytes

64 bytes from 10.0.0.1: icmp seq=0 ttl=255 time=0 ms

64 bytes from 10.0.0.1: icmp seq=1 ttl=255 time=0 ms

64 bytes from 10.0.0.1: icmp seq=2 ttl=255 time=0 ms

64 bytes from 10.0.0.1: icmp seq=3 ttl=255 time=0 ms

64 bytes from 10.0.0.1: icmp seq=4 ttl=255 time=0 ms

64 bytes from 10.0.0.1: icmp seq=5 ttl=255 time=0 ms

64 bytes from 10.0.0.1: icmp seq=6 ttl=255 time=0 ms

Это сообщение продолжает выводиться до тех пор, пока утилита ping не завершится, например, с помощью нажатия комбинации клавиш + .

Как отобразить информацию о контроллере интерфейса?

Следует воспользоваться командой nicinfo :

/ usr / sbin / nicinfo устройство

Примечание . Все пользователи, кроме root , должны указывать полный путь к утилите nicinfo .

Эта утилита отображает информацию о соединении заданного сетевого интерфейса или интерфейса /dev/io-net/en0 (если интерфейс не указан). Эта информация включает в себя число переданных и полученных пакетов, коллизий и других ошибок:

3 COM (90xC) 10BASE-T/100BASE-TX Ethernet Controller

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL