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

Что же это за технология? Название TCP-IP произошло от двух сетевых протоколов: TCP и IP. Конечно, этими двумя протоколами построение сетей не ограничивается, но они являются базовыми в том, что касается именно организации передачи данных. Фактически, TCP-IP есть набор протоколов, позволяющих индивидуальным сетям объединяться для образования

Протокол TCP-IP, описание которого невозможно обозначить только определениями IP и TCP, включает в себя также протоколы UDP, SMTP, ICMP, FTP, telnet, и не только. Эти и другие протоколы TCP-IP обеспечивают наиболее полноценную работу сети Интернет.

Ниже приведем развернутую характеристику каждому протоколу, входящему в общее понятие TCP-IP.

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

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

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

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

1. FTP (File Transfer Protocol) организует перенос файлов и используется для передачи информации между двумя узлами Internet с использованием TCP-соединений в виде бинарного или же простого текстового файла, как поименованной области в памяти компьютера. При этом не имеет никакого значения, где данные узлы расположены и как соединяются между собой.

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

3. ICMP (Internet Control Message Protocol) существует для того, чтобы передавать сообщения об ошибках, возникающих в процессе обмена данными в сети Internet. Однако при этом ICMP-протокол только лишь сообщает об ошибках, но не устраняет причины, которые привели к возникновению этих ошибок.

4. Telnet - который используется для реализации текстового интерфейса в сети с помощью транспорта TCP.

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

Схема передачи данных по протоколу TCP-IP

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

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

4. После подтверждения получения всех пакетов протокол TCP упорядочивает их соответствующим образом и собирает заново в единое целое.

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

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

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

Рисунок 1 – Обобщенная схема сети Интернет

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

Основные ячейки Интернета – локальные вычислительные сети (LAN – Local Area network). Если некоторая локальная сеть непосредственно подключена к Интернету, то каждая рабочая станция этой сети также может подключаться к нему. Существуют также компьютеры, самостоятельно подключенные к Интернету. Они называются хост-компьютерами (host – хозяин).

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

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

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

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

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

Организации, соединенные друг с другом самыми скоростными линиями связи, образуют базовую часть сети, или хребет Интернета Backbon [Бэкбон]. Если поставщик подключен непосредственно к хребту, то скорость передачи информации будет максимальной.

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

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

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

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

Что такое протокол? Как ранее было сказано, протокол - это правила взаимодействия. Например, дипломатический протокол предписывает, как поступать при встрече зарубежных гостей или при проведении приема. Так же сетевой протокол предписывает правила работы компьютерам, которые подключены к сети. Стандартные протоколы заставляют разные компьютеры "говорить на одном языке". Таким образом осуществляется возможность подключения к Интернету разнотипных компьютеров, работающих под управлением различных операционных систем.

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

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

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

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

Протокол IP. Теперь рассмотрим адресный протокол - IP (Internet Protocol). Его суть состоит в том, что у каждого участника Всемирной сети должен быть свой уникальный адрес (IP-адрес). Без этого нельзя говорить о точной доставке ТСР-пакетов на нужное рабочее место. Этот адрес выражается очень просто - четырьмя числами, например: 195.38.46.11. Структуру IP-адреса мы подробнее рассмотрим позже. Она организована так, что каждый компьютер, через который проходит какой-либо TCP-пакет, может по этим четырем числам определить, кому из ближайших «соседей» надо переслать пакет, чтобы он оказался «ближе» к получателю. В результате конечного числа перебросок ТСР-пакет достигает адресата.

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

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

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

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

Стек протоколов TCP/IP включает в себя четыре уровня:

  • прикладной уровень (application layer),
  • транспортный уровень (transport layer),
  • сетевой уровень (internet layer),
  • канальный уровень (link layer).

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

Таблица 1 – Сравнение стека протоколов TCP/IP и эталонной модели OSI

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

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

Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP для WWW, FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие.

В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту, например:

  • HTTP на TCP-порт 80 или 8080,
  • FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд),
  • запросы DNS на порт UDP (реже TCP) 53,

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры протоколов канального уровня - Ethernet, Wi-Fi, Frame Relay, Token Ring, ATM и др.

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

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

Инкапсуляция

Инкапсуляция – упаковка, или вложение, пакетов высокого уровня (возможно, разного протокола) в пакеты одного протокола (нижнего уровня), включая адрес.

Например, когда приложению требуется послать сообщение с помощью TCP, то производится следующая последовательность действий (рис. 2):

Рисунок 2 – Процесс инкапсуляции

  • в первую очередь, приложение заполняет специальную структуру данных, в которой указывает информацию о получателе (сетевой протокол, IP-адрес, порт TCP);
  • передаёт сообщение, его длину и структуру с информацией о получателе обработчику протокола TCP (транспортный уровень);
  • обработчик TCP формирует сегмент, в котором в качестве данных выступает сообщение, а в заголовках находится TCP-порт получателя (а также другие данные);
  • обработчик TCP передаёт сформированный сегмент обработчику IP (сетевой уровень);
  • обработчик IP рассматривает переданный TCP сегмент как данные и предваряет их своим заголовком (в котором, в частности, находится IP-адрес получателя, взятый из той же структуры данных приложения, и номер верхнего протокола;
  • полученный пакет обработчик IP передаёт на канальный уровень, который опять-таки рассматривает данный пакет как «сырые» данные;
  • обработчик канального уровня, аналогично предыдущим обработчикам, добавляет в начало свой заголовок (в котором так же указывается номер протокола верхнего уровня, в нашем случае это 0x0800(IP)) и, в большинстве случаев, добавляет конечную контрольную сумму, тем самым формируя кадр;
  • далее полученный кадр передаётся на физический уровень, который осуществляет преобразование битов в электрические или оптические сигналы и посылает их в среду передачи.

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

Похожая информация.



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Протокол IP

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

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

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

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

Пример:

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

IP: 82.146.47.66

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

IP: 195.34.31.236

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

Протокол TCP

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

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

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

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

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

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

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

Итак, начнем.

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

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

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

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

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

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

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

"адрес дома" = "IP компьютера" "номер квартиры" = "номер порта"

В компьютерных сетях, работающих по протоколам TCP/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 можно использовать имя А преобразованием доменного имени в цифровой IP адрес занимается сервис доменных имен - DNS (Domain Name System).

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

Запрос от нашего компьютера: "Какой IP адрес соответствует имени www.сайт?" Ответ сервера: "82.146.49.55."

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

Например:

IP адрес нашего компьютера: 91.76.65.216 Браузер: Internet Explorer (IE), DNS сервер (стрима): 195.34.32.116 (у вас может быть другой), Страница, которую мы хотим открыть: www.сайт.

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

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

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

Какой IP адрес соответствует имени www.сайт ? - 82.146.49.55 .

Далее наш компьютер устанавливает соединение с портом 80 компьютера 82.146.49.55 и посылает запрос (пакет с запросом) на получение страницы . 80-й порт соответствует веб-серверу. В адресной строке браузера 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 и жмем . Результатом будет список установленных соединений между сокетами нашего компьютера и удаленных узлов.

Например получаем:

Активные подключения

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

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

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

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

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

UNIX , что способствовало росту популярности протокола, так как производители включали TCP/IP в набор программного обеспечения каждого UNIX -компьютера. TCP/IP находит свое отображение в эталонной модели OSI , как это показано на рисунке 3.1 .

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

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


Рис. 3.1.

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

Благодаря своему широкому распространению протокол TCP/IP фактически стал интернет -стандартом. Компьютер , на котором реализована сетевая технология , основанная на модели OSI ( Ethernet или Token Ring ), имеет возможность устанавливать связь с другими устройствами. В "Основы организации сети" мы рассматривали уровни 1 и 2 при обсуждении LAN -технологий. Теперь мы перейдем к стеку OSI и посмотрим, каким образом компьютер устанавливает связь в интернете или в частной сети. В этом разделе рассматривается протокол TCP/IP и его конфигурации.

Что такое TCP/IP

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

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

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


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

TCP и UDР

При пересылке IP-сообщения по сети используется один из протоколов транспортировки: TCP или UDР. TCP (Transmission Control Protocol) составляет первую половину аббревиатуры TCP/IP. Протокол пользовательских дейтаграмм (User Datagram Protocol, UDР) используется вместо ТСР для транспортировки менее важных сообщений. Оба протокола служат для корректного обмена сообщениями в сетях TCP/IP. Между этими протоколами есть одно существенное различие.

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

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


Важно помнить, что для доставки сообщения можно воспользоваться только одним протоколом. Например, при загрузке веб-страницы доставкой пакетов управляет ТСР без всякого вмешательства UDP. С другой стороны, простой протокол передачи файлов (Trivial File Transfer Protocol, TFTP) загружает или отправляет сообщения под контролем протокола UDP.

Используемый способ транспортировки зависит от приложения - это может быть электронная почта, НТТР, приложение, отвечающее за сетевую работу, и так далее. Разработчики сетевых программ используют UDP везде, где только можно, так как этот протокол снижает избыточный трафик. Протокол ТСР прилагает больше усилий для гарантированной доставки и передает гораздо больше пакетов, чем UDP. На рисунке 3.2 представлен список сетевых приложений, и показано, в каких приложениях применяется ТСР, а в каких - UDP. Например, FTP и TFTP делают практически одно и то же. Однако TFTP, в основном, применяется для загрузки и копирования программ сетевых устройств. TFTP может использовать UDP, потому что при неудачной доставке сообщения ничего страшного не происходит, поскольку сообщение предназначалось не конечному пользователю, а администратору сети, уровень приоритета которого гораздо ниже. Другим примером является сеанс голосовой видеосвязи, в котором могут быть задействованы порты как для ТСР-сессий, так и для UDP. Так, сеанс TCP инициируется для обмена данными при установке телефонной связи, в то время как сам телефонный разговор передается посредством UDP. Это связано со скоростью потоковой передачи голоса и видео. В случае потери пакета не имеет смысла повторно посылать его, так как он уже не будет соответствовать потоку данных.


Рис. 3.2.
Формат IP-дейтаграммы

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

Примечание. Пусть вас не вводит в заблуждение величина поля данных в дейтаграмме. Дейтаграмма не перегружена дополнительными данными. Поле данных является на самом деле самым большим полем дейтаграммы.


Рис. 3.3.

Важно помнить, что IP-пакеты могут иметь различную длину. В "Основы организации сети" говорилось о том, что информационные пакеты в сети Ethernet имеют размер от 64 до 1400 байт. В сети Token Ring их длина составляет 4000 байт, в сети ATM - 53 байта.

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

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

  • VER . Версия протокола IP, используемого станцией, где появилось исходное сообщение. Текущей версией IP является версия 4. Это поле обеспечивает одновременное существование различных версий в межсетевом пространстве.
  • HLEN. Поле информирует получающее устройство о длине заголовка, чтобы центральный процессор знал, где начинается поле данных.
  • Service type (Тип сервиса). Код, сообщающий маршрутизатору о типе управления пакетом с точки зрения уровня сервиса (надежность, первоочередность, отсрочка и т. д.).
  • Length (Длина). Общее количество байт в пакете, включая поля заголовка и поле данных.
  • ID, frags и frags offset. Эти поля указывают маршрутизатору, как следует проводить фрагментацию и сборку пакета и как компенсировать различия в размере кадров, которые могут возникать во время прохождения пакета по сегментам локальной сети с различными сетевыми технологиями (Ethernet, FDDI и т.д.).
  • TTL. Аббревиатура для Time to Live (Время жизни) - число, которое уменьшается на единицу при каждой последующей пересылке пакета. Если время жизни становится равным нулю, то пакет прекращает существование. TTL предотвращает возникновение циклов и бесконечное блуждание потерянных пакетов в межсетевом пространстве.
  • Protocol. Протокол транспортировки, который следует использовать для передачи пакета. Чаще всего в этом поле указывается протокол TCP, но могут быть использованы и другие протоколы.
  • Header checksum . Контрольная сумма - это число, которое используется для проверки целостности сообщения. Если контрольные суммы всех пакетов сообщения не совпадают с правильным значением, то это означает, что сообщение было искажено.
  • Source IP address (Адрес отправителя). 32-битный адрес хоста, отправившего сообщение (обычно персональный компьютер или сервер).
  • Destination IP address (Адрес получателя). 32-битный адрес хоста, которому отправлено сообщение (обычно персональный компьютер или сервер).
  • IP options. Используются для тестирования сети или других специальных целей.
  • Padding. Заполняет все неиспользованные (пустые) позиции битов, чтобы процессор мог правильно определить позицию первого бита в поле данных.
  • Data. Полезная нагрузка отправленного сообщения. Например, в поле данных пакета может содержаться текст электронного письма.

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