Протоколы передачи данных tcp ip. Что такое протокол TCP-IP

Основное, что отличает Интернет от других сетей - это ее протоколы — TCP/IP . Вообще, термин TCP/IP обычно означает все, что связано с протоколами взаимодействия между компьютерами в Интернете. Он охватывает целое семейство протоколов, прикладные программы, и даже саму сеть. TCP/IP - это технология межсетевого взаимодействия. Сеть, которая использует технологию TCP/IP, называется «internet» . Если речь идет о глобальной сети, объединяющей множество сетей с технологией TCP/IP, то ее называют Интернет.

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

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

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

Числовой адрес компьютера в Интернете аналогичен почтовому индексу отделения связи. Существует несколько типов адресов Интернета (типы: А, В, С, D, Е), которые по-разному делят адрес на поля номера сети и номера узла, от типа такого деления зависит количество возможных сетей и машин в таких сетях.

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

Одно из достоинств Интернета состоит в том, что протокола IP самого по себе уже вполне достаточно для работы. Однако этот протокол имеет и ряд недостатков:

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

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

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

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

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

13.10.06 5.6K

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

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

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

Основы TCP/IP

TCP/IP — это аббревиатура термина Transmission Control Protocol/Internet Protocol (Протокол управления передачей/Протокол Internet). В терминологии вычислительных сетей протокол — это заранее согласованный стандарт, который позволяет двум компьютерам обмениваться данными. Фактически TCP/IP не один протокол, а несколько. Именно поэтому вы часто слышите, как его называют набором, или комплектом протоколов, среди которых TCP и IP — два основных.

Программное обеспечение для TCP/IP, на вашем компьютере, представляет собой специфичную для данной платформы реализацию TCP, IP и других членов семейства TCP/IP. Обычно в нем также имеются такие высокоуровневые прикладные программы, как FTP (File Transfer Protocol, Протокол передачи файлов), которые дают возможность через командную строку управлять обменом файлами по Сети.

TCP/IP — зародился в результате исследований, профинансированных Управлением перспективных научно-исследовательских разработок (Advanced Research Project Agency, ARPA) правительства США в 1970-х годах. Этот протокол был разработан с тем, чтобы вычислительные сети исследовательских центров во всем мире могли быть объединены в форме виртуальной "сети сетей" (internetwork). Первоначальная Internet была создана в результате преобразования существующего конгломерата вычислительных сетей, носивших название ARPAnet, с помощью TCP/IP.

Причина, по которой TCP/IP столь важен сегодня, заключается в том, что он позволяет самостоятельным сетям подключаться к Internet или объединяться для создания частных интрасетей. Вычислительные сети, составляющие интрасеть, физически подключаются через устройства, называемые маршрутизаторами или IP-маршрутизаторами. Маршрутизатор — это компьютер, который передает пакеты данных из одной сети в другую. В интрасети, работающей на основе TCP/IP, информация передается в виде дискретных блоков, называемых IP-пакетами (IP packets) или IP-дейтаграммами (IP datagrams). Благодаря программному обеспечению TCP/IP все компьютеры, подключенные к вычислительной сети, становятся "близкими родственниками". По существу оно скрывает маршрутизаторы и базовую архитектуру сетей и делает так, что все это выглядит как одна большая сеть. Точно так же, как подключения к сети Ethernet распознаются по 48-разрядным идентификаторам Ethernet, подключения к интрасети идентифицируются 32-разрядными IP-адресами, которые мы выражаем в форме десятичных чисел, разделенных точками (например, 128.10.2.3). Взяв IP-адрес удаленного компьютера, компьютер в интрасети или в Internet может отправить данные на него, как будто они составляют часть одной и той же физической сети.

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

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

Другой важный член комплекта TCP/IP — User Datagram Protocol (UDP, протокол пользовательских дейтаграмм), который похож на TCP, но более примитивен. TCP — "надежный" протокол, потому что он обеспечивает проверку на наличие ошибок и обмен подтверждающими сообщениями чтобы данные достигали своего места назначения заведомо без искажений. UDP — "ненадежный" протокол, ибо не гарантирует, что дейтаграммы будут приходить в том порядке, в котором были посланы, и даже того, что они придут вообще. Если надежность — желательное условие, для его реализации потребуется программное обеспечение. Но UDP по-прежнему занимает свое место в мире TCP/IP, и испльзуется во многих программах. Прикладная программа SNMP (Simple Network Management Protocol, простой протокол управления сетями), реализуемый во многих воплощениях TCP/IP, — это один из примеров программ UDP.

Другие TCP/IP протоколы играют менее заметные, но в равной степени важные роли в работе сетей TCP/IP. Например, протокол определения адресов (Address Resolution Protocol, ARP) ппреобразует IP-адреса в физические сетевые адреса, такие, как идентификаторы Ethernet. Родственный протокол — протокол обратного преобразования адресов (Reverse Address Resolution Protocol, RARP) — выполняет обеспечивает обратное действие, преобразуя физические сетевые адреса в IP-адреса. Протокол управления сообщениями Internet (Internet Control Message Protocol, ICMP) представляет собой протокол сопровождения, который использует IP для обмена управляющей информацией и контроля над ошибками, относящимися к передаче пакетов IP. Например, если маршрутизатор не может передать IP-дейтаграмму, он использует ICMP, с тем чтобы информировать отправителя, что возникла проблема. Краткое описание некоторых других протоколов, которые "прячутся под зонтиком" TCP/IP, приведено во врезке.

Краткое описание протоколов семейства TCP/IP с расшифровкой аббревиатур
ARP (Address Resolution Protocol, протокол определения адресов): конвертирует 32-разрядные IP-адреса в физические адреса вычислительной сети, например, в 48-разрядные адреса Ethernet.

FTP (File Transfer Protocol, протокол передачи файлов): позволяет передавать файлы с одного компьютера на другой с использованием TCP-соединений. В родственном ему, но менее распространенном протоколе передачи файлов — Trivial File Transfer Protocol (TFTP) — для пересылки файлов применяется UDP, а не TCP.

ICMP (Internet Control Message Protocol, протокол управляющих сообщений Internet): позволяет IP-маршрутизаторам посылать сообщения об ошибках и управляющую информацию другим IP-маршрутизаторам и главным компьютерам сети. ICMP-сообщения "путешествуют" в виде полей данных IP-дейтаграмм и обязательно должны реализовываться во всех вариантах IP.

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

IP (Internet Protocol, протокол Internet): низкоуровневый протокол, который направляет пакеты данных по отдельным сетям, связанным вместе с помощью маршрутизаторов для формирования Internet или интрасети. Данные "путешествуют" в форме пакетов, называемых IP-дейтаграммами.

RARP (Reverse Address Resolution Protocol, протокол обратного преобразования адресов): преобразует физические сетевые адреса в IP-адреса.

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

TCP (Transmission Control Protocol, протокол управления передачей): протокол ориентирован на работу с подключениями и передает данные в виде потоков байтов. Данные пересылаются пакетами — TCP-сегментами, — которые состоят из заголовков TCP и данных. TCP — "надежный" протокол, потому что в нем используются контрольные суммы для проверки целостности данных и отправка подтверждений, чтобы гарантировать, что переданные данные приняты без искажений.

UDP (User Datagram Protocol, протокол пользовательских дейтаграмм): протокол, не зависящий от подключений, который передает данные пакетами, называемыми UDP-дейтаграммами. UDP — "ненадежный" протокол, поскольку отправитель не получает информацию, показывающую, была ли в действительности принята дейтаграмма.

Архитектура TCP/IP

Проектировщики вычислительных сетей часто используют семиуровневую модель ISO/OSI (International Standards Organization/Open Systems Interconnect, Международная организация по стандартизации/ Взаимодействие открытых систем), которая описывает архитектуру сетей. Каждый уровень в этой модели соответствует одному уровню функциональных возможностей сети. В самом основании располагается физический уровень, представляющий физическую среду, по которой "путешествуют" данные, — другими словами, кабельную систему вычислительной сети. Над ним имеется канальный уровень, или уровень звена данных, функционирование которого обеспечивается сетевыми интерфейсными платами. На самом верху размещается уровень прикладных программ, где работают программы, использующие служебные функции сетей.

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

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

ISO/OSI TCP/IP _____________________________ __________________________ | Уровень прикладных программ | | | |_____________________________| | _________ _________ | _____________________________ | |Сетевая | |Сетевая | | Уровень | Уровень представления | | |программа| |программа| | прикладных |_____________________________| | |_________| |_________| | программ _____________________________ | | | Уровень сеанса | | | |_____________________________| |__________________________| | | _____________________________ _____|_____________|______ | Транспортный уровень | | TCP UDP | Транспортный |_____________________________| |_____|_____________|______| уровень | | _____________________________ _____|_____________|______ | Сетевой уровень | | | | | Сетевой |_____________________________| | ----> IP <--- | уровень |__________________________| _________ _____________________________ _______| Сетевая |________ | Уровень звена данных | | ARP<->| плата |<->RARP | Уровень |_____________________________| |_______|_________|________| звена | данных _____________________________ | | Физический уровень | _____________|______________ Физический |_____________________________| Кабельные соединения сети уровень

В левой части этой диаграммы показаны уровни модели ISO/OSI. Правая часть диаграммы иллюстрирует корреляцию TCP/IP с этой моделью.

Для иллюстрации роли, которую TCP/IP играет в вычислительных сетях в реальном мире, рассмотрим, что происходит, когда Web-браузер использует HTTP (HyperText Transfer Protocol, протокол передачи гипертекста) для извлечения страницы HTML-данных из Web-сервера, подключенного к Internet. Для формирования виртуального подключения к серверу браузер использует абстракцию программного обеспечения высокого уровня, называемую гнездом (socket). А чтобы извлечь страницу Web, он посылает на сервер команду GET HTTP, записывая ее в гнездо. Программное обеспечение гнезда, в свою очередь, применяет TCP для пересылки битов и байтов, составляющих команду GET на Web-сервер. TCP сегментирует данные и передает отдельные сегменты модулю IP, который пересылает сегменты в дейтаграммах на Web-сервер.

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

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

Краткое заключение

О TCP/IP можно было бы рассказать много больше, но есть три ключевых момента:

* TCP/IP — это набор протоколов, которые позволяют физическим сетям объединяться вместе для образования Internet. TCP/IP соединяет индивидуальные сети для образования виртуальной вычислительной сети, в которой отдельные главные компьютеры идентифицируются не физическими адресами сетей, а IP-адресами.
* В TCP/IP используется многоуровневая архитектура, которая четко описывает, за что отвечает каждый протокол. TCP и UDP обеспечивают высокоуровневые служебные функции передачи данных для сетевых программ, и оба опираются на IP при передаче пакетов данных. IP отвечает за маршрутизацию пакетов до их пункта назначения.
* Данные, перемещающиеся между двумя прикладными программами, работающими на главных компьютерах Internet, "путешествуют" вверх и вниз по стекам TCP/IP на этих компьютерах. Информация, добавленная модулями TCP/IP на стороне отправителя, "разрезается" соответствующими TCP/IP-модулями на принимающем конце и используется для воссоздания исходных данных.

Хорошо Плохо

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

TCP/IP

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

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

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

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

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

  • HTTP;
  • SMTP;

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

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

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

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

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

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

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

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

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

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

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

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

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

TCP или UDP?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Публичные.
  2. Приватные.

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

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

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

IPv4

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

Формат записи: .

IPv6

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

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

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

Пример записи: .

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

  1. Unicast.
  2. Anycast.
  3. Multicast.

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

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

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

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

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

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

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

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

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

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

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

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

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

Адресация

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

  1. Локальные.
  2. Сетевые.
  3. Доменные имена.

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

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

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

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

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

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

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

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

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

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

  1. Ethernet.
  2. WLAN.

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

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

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

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

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

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

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

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

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

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

  • Simplex.
  • Half-duplex.
  • Full Duplex.

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

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

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

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

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

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

Пример - общение по телефону через мобильную сеть.

TCP/IP vs OSI

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

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

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

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

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

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

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

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

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

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

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

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

Все дело в том, что каждый протокол описывает строго отведенные ему правила. Кроме того, протоколы разделены по уровням функциональности, что позволяет работе сетевого оборудования и программного обеспечения становится гораздо проще, прозрачнее и выполнять "свой" круг задач. Для разделения данного набора протоколов по уровням была разработана модель сетевого взаимодействия OSI (англ. Open Systems Interconnection Basic Reference Model, 1978 г., она же - базовая эталонная модель взаимодействия открытых систем). Модель OSI состоит из семи различных уровней. Уровень отвечает за отдельный участок в работе коммуникационных систем, не зависит от рядом стоящих уровней – он только предоставляет определённые услуги. Каждый уровень выполняет свою задачу в соответствии с набором правил, называемым протоколом. Проиллюстрировать работу модели OSI можно следующим рисунком: Как передаются данные?

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

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

Данную модель сетевого взаимодействия еще называют модель DOD (от бурж. Department of Defense - Министерство обороны США). Итак, общее представление о сетевом взаимодействии рассмотрели. Для более глубокого понимания сути вопроса, могу посоветовать скачать и почитать книгу (Вито Амато "Основы организации сетей Cisco Т1 и Т2" ), ниже.

Адресация

В сети, построенной на стеке протоколов TCP/IP каждому хосту (компьютеру или устройству подключенному к сети) присвоен представляет собой 32-битовое двоичное число. Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. В общем случае, IP-адрес делиться на две части : адрес сети (подсети) и адрес хоста :

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

Нетрудно посчитать, что всего в пространстве адресов IP - 128 сетей по 16 777 216 адресов класса A, 16384 сети по 65536 адресов класса B и 2 097 152 сети по 256 адресов класса C, а также 268 435 456 адресов многоадресной рассылки и 134 317 728 зарезервированных адресов. С ростом сети Интернет эта система оказалась неэффективной и была вытеснена CIDR (бесклассовой адресацией), при которой количество адресов в сети определяется маской подсети.

Существует так же классификация IP адресов, как "частные" и "публичные". Под частные (они же локальные сети) сети зарезервированы следующие диапазоны адресов:

  • 10.0.0.0 - 10.255.255.255 (10.0.0.0/8 или 10/8),
  • 172.16.0.0 - 172.31.255.255 (172.16.0.0/12 или 172.16/12),
  • 192.168.0.0 - 192.168.255.255 (192.168.0.0/16 или 192.168/16).
  • 127.0.0.0 - 127.255.255.255 зарезервировано для петлевых интерфейсов (не используется для обмена между узлами сети), т.н. localhost

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

Для каждого из протоколов TCP и UDP стандарт определяет возможность одновременного выделения на хосте до 65536 уникальных портов, идентифицирующихся номерами от 0 до 65535. Соответствие номера порта и службы, использующей этот номер можно посмотреть в файле /etc/services или на сайте http://www.iana.org/assignments/port-numbers. Весь диапазон портов делиться на 3 группы:

  • 0 до 1023, называемые привилегированными или зарезервированными (используются для системных и некоторых популярных программ)
  • 1024 - 49151 называются зарегистрированными портами.
  • 49151 - 65535 называются динамическими портами.

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

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

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

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

Маршрутизация

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

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

Чтобы определить маршрут передачи пакетов , IP использует сетевую часть адреса (маску подсети ). Для определения маршрута, на каждой машине в сети имеется таблица маршрутизации (routing table), которая хранит список сетей и шлюзов для этих сетей. IP "просматривает" сетевую часть адреса назначения в проходящем пакете и если для этой сети есть запись в таблице маршрутизации, то пакет отправляется на соответствующий шлюз.

В Linux ядро операционной системы хранит таблицу маршрутизации в файле /proc/net/route . Просмотреть текущую таблицу маршрутизации можно командой netstat -rn (r - routing table, n - не преобразовывать IP в имена) или route . Первая колонка вывода команды netstat -rn (Destination - назначение) содержит адреса сетей (хостов) назначения . При этом, при указании сети, адрес обычно заканчивается на ноль. Вторая колонка (Gateway) - адрес шлюза для указанного в первой колонке хоста/сети. Третья колонка (Genmask) - маска подсети, для которой работает данный маршрут. Колонка Flags дает информацию об адресе назначения (U - маршрут работает (Up), N - маршрут для сети (network), H - маршрут для хоста и т.п.). Колонка MSS показывает число байтов, которое может быть отправлено за 1 раз, Window - количество фреймов, которое может быть отправлено до получения подтверждения, irtt - статистика использования маршрута, Iface - указывает сетевой интерфейс, используемый для маршрута (eth0, eth1 и т.п.)

Как видно в примере ниже, первая запись (строка) указана для сети 128.17.75, все пакеты для данной сети будут отправлены на шлюз 128.17.75.20, который является IP адресом самого хоста. Вторая запись - это маршрут по умолчанию , который применяется ко всем пакетам, посылаемым в сети, не указанные в данной таблице маршрутизации. Здесь маршрут лежит через хост papaya (IP 128.17.75.98), который можно считать дверью во внешний мир. Данный маршрут должен быть прописан на всех машинах сети 128.17.75, которые должны иметь доступ к другим сетям. Третья запись создана для петлевого интерфейса . Данный адрес используется, если машине необходимо подключиться к самой себе по протоколу TCP/IP. Последняя запись в таблице маршрутизации сделана для IP 128.17.75.20 и направляется на интерфейс lo, т.о. при подключении машины к самой себе на адрес 128.17.75.20, все пакеты будут посылаться на интерфейс 127.0.0.1.

Если хост eggplant пожелает послать пакет хосту zucchini , (соответственно, в пакете будет указан отправитель - 128.17.75.20 и получатель - 128.17.75.37), протокол IP определит на основании таблицы маршрутизации, что оба хоста принадлежат одной сети и пошлет пакет прямо в сеть, где zucchini его получит. Если более подробно сказать.. сетевая карта широковещательно кричит ARP-запросом "Кто такой IP 128.17.75.37, это кричит 128.17.75.20?" все машины, получившие данное послание - игнорируют его, а хост с адресом 128.17.75.37 отвечает "Это я и мой MAC - адрес такой-то...", далее происходит соединение и обмен данными на основе arp таблиц , в которых занесено соответствие IP-MAC адресов. "Кричит", то есть этот пакет посылается всем хостам, это происходит потому что, MAC-адрес получателя указан широковещательный адрес (FF:FF:FF:FF:FF:FF). Такие пакеты получают все хосты сети.

Пример таблицы маршрутизации для хоста eggplant :

# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 128.17.75.0 128.17.75.20 255.255.255.0 UN 1500 0 0 eth0 default 128.17.75.98 0.0.0.0 UGN 1500 0 0 eth0 127.0.0.1 127.0.0.1 255.0.0.0 UH 3584 0 0 lo 128.17.75.20 127.0.0.1 255.255.255.0 UH 3584 0 0 lo

Давайте рассмотрим ситуацию, когда хост eggplant хочет послать пакет хосту, например, pear или еще дальше?.. В таком случае, получатель пакета будет - 128.17.112.21, протокол IP попытается найти в таблице маршрутизации маршрут для сети 128.17.112, но данного маршрута в таблице нет, по этому будет выбран маршрут по умолчанию , шлюзом которого является papaya (128.17.75.98). Получив пакет, papaya отыщет адрес назначения в своей таблице маршрутизации:

# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 128.17.75.0 128.17.75.98 255.255.255.0 UN 1500 0 0 eth0 128.17.112.0 128.17.112.3 255.255.255.0 UN 1500 0 0 eth1 default 128.17.112.40 0.0.0.0 UGN 1500 0 0 eth1 127.0.0.1 127.0.0.1 255.0.0.0 UH 3584 0 0 lo 128.17.75.98 127.0.0.1 255.255.255.0 UH 3584 0 0 lo 128.17.112.3 127.0.0.1 255.255.255.0 UH 3584 0 0 lo

Из примера видно, что papaya подключена к двум сетям 128.17.75, через устройство eth0 и 128.17.112 через устройство eth1 . Маршрут по умолчанию , через хост pineapple , который в свою очередь, является шлюзом во внешнюю сеть.

Соответственно, получив пакет для pear , маршрутизатор papaya увидит, что адрес назначения принадлежит сети 128.17.112 и направит пакет в соответствии со второй записью в таблице маршрутизации.

Таким образом, пакеты передаются от маршрутизатора к маршрутизатору, пока не достигнут адреса назначения.

Стоит отметить, что в данных примерах маршруты

128.17.75.98 127.0.0.1 255.255.255.0 UH 3584 0 0 lo 128.17.112.3 127.0.0.1 255.255.255.0 UH 3584 0 0 lo

Не стандартные. И в современном linux вы такого не увидите.

Резюме

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

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

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

Запрос от нашего компьютера: «Какой IP адрес соответствует имени www.site.com?»
Ответ сервера: «23.45.67.89.»

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

Например:

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

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

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

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

— Какой IP адрес соответствует имени www.site.com?
— 23.45.67.89.

Далее наш компьютер устанавливает соединение с портом 80 компьютера 82.146.49.55 и посылает запрос (пакет с запросом) на получение страницы www.ofnet.ru. 80-й порт соответствует веб-серверу. В адресной строке браузера 80-й порт как правило не пишется, т.к. используется по умолчанию, но его можно и явно указать после двоеточия — http://www.site.com: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 означает, что наша машина обратилась с запросом к веб-серверу (у меня, действительно, открыты страницы в браузере).