Протокол IPv4. Использование протоколов Интернета в 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 все проблемы и детали передачи данных).

IP-адреса (Internet Protocol version 4 , интернет протокол версии 4) – представляют собой основной тип адресов, используемый на сетевом уровне модели OSI , для осуществления передачи пакетов между сетями. IP-адреса состоят из четырех байт, к примеру 192.168.100.111.

Присвоение IP-адресов хостам осуществляется:

Протокол IPv4 разработан в сентябре 1981 года.

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

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

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

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

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

На каком-либо узле сети принимающего дейтаграмму из сети выглядит следующим образом:

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

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

  • Версия - для IPv4 значение поля должно быть равно 4.
  • IHL - (Internet Header Length) длина заголовка IP-пакета в 32-битных словах (dword). Именно это поле указывает на начало блока данных в пакете. Минимальное корректное значение для этого поля равно 5.
  • Тип обслуживания (Type of Service, акроним TOS) - байт, содержащий набор критериев, определяющих тип обслуживания IP-пакетов, представлен на рисунке.

Описание байта обслуживания побитно:

    • 0-2 - приоритет (precedence) данного IP-сегмента
    • 3 - требование ко времени задержки (delay) передачи IP-сегмента (0 - нормальная, 1 - низкая задержка)
    • 4 - требование к пропускной способности (throughput) маршрута, по которому должен отправляться IP-сегмент (0 - низкая, 1 - высокая пропускная способность)
    • 5 - требование к надежности (reliability) передачи IP-сегмента (0 - нормальная, 1 - высокая надежность)
    • 6-7 - ECN - явное сообщение о задержке (управление IP-потоком).
  • Длина пакета - длина пакета в октетах, включая заголовок и данные. Минимальное корректное значение для этого поля равно 20, максимальное 65535.
  • Идентификатор - значение, назначаемое отправителем пакета и предназначенное для определения корректной последовательности фрагментов при сборке пакета. Для фрагментированного пакета все фрагменты имеют одинаковый идентификатор.
  • 3 бита флагов. Первый бит должен быть всегда равен нулю, второй бит DF (don’t fragment) определяет возможность фрагментации пакета и третий бит MF (more fragments) показывает, не является ли этот пакет последним в цепочке пакетов.
  • Смещение фрагмента - значение, определяющее позицию фрагмента в потоке данных. Смещение задается количеством восьми байтовых блоков, поэтому это значение требует умножения на 8 для перевода в байты.
  • Время жизни (TTL) - число маршрутизаторов, которые должен пройти этот пакет. При прохождении маршрутизатора это число уменьшатся на единицу. Если значения этого поля равно нулю то, пакет должен быть отброшен и отправителю пакета может быть послано сообщение Time Exceeded (ICMP код 11 тип 0).
  • Протокол - идентификатор интернет-протокола следующего уровня указывает, данные какого протокола содержит пакет, например, TCP или ICMP.
  • Контрольная сумма заголовка - вычисляется в соответствии с RFC 1071

Перехваченный IPv4 пакет с помощью сниффера Wireshark:

Фрагментация IP пакетов

На пути пакета от отправителя к получателю могут встречаться локальные и глобальные сети разных типов с разными допустимыми размерами полей данных кадров канального уровня (Maximum Transfer Unit – MTU). Так, сети Ethernet могут передавать кадры, несущие до 1500 байт данных, для сетей X.25 характерен размер поля данных кадра в 128 байт, сети FDDI могут передавать кадры размером в 4500 байт, в других сетях действуют свои ограничения. Протокол IP умеет передавать дейтаграммы, длина которых больше MTU промежуточной сети, за счет фрагментирования – разбиения “большого пакета” на некоторое количество частей (фрагментов), размер каждой из которых удовлетворяет промежуточную сеть. После того, как все фрагменты будут переданы через промежуточную сеть, они будут собраны на узле-получателе модулем протокола IP обратно в “большой пакет”. Отметим, что сборку пакета из фрагментов осуществляет только получатель, а не какой-либо из промежуточных маршрутизаторов. Маршрутизаторы могут только фрагментировать пакеты, но не собирать их. Это связано с тем, что разные фрагменты одного пакета не обязательно будут проходить через одни и те же маршрутизаторы.

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

Второй бит поля Флаги (More fragments), если равен единице, указывает на то, что данный фрагмент – не последний в пакете. Если пакет отправляется без фрагментации, флаг “More fragments” устанавливается в 0, а поле Смещение фрагмента – заполняется нулевыми битами.

Если первый бит поля Флаги (Don’t fragment) равен единице, то фрагментация пакета запрещена. Если этот пакет должен быть передан через сеть с недостаточным MTU, то маршрутизатор вынужден будет его отбросить (и сообщить об этом отправителю посредством протокола ICMP). Этот флаг используется в случаях, когда отправителю известно, что у получателя нет достаточно ресурсов по восстановлению пакетов из фрагментов.

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

На рисунке показана структура IP-адреса разных классов.

Если адрес начинается с 0, то сеть относят к классу А и номер сети занимает один байт, остальные 3 байта интерпретируются как номер узла в сети. Сети класса А имеют номера в диапазоне от 1 до 126. (Номер 0 не используется, а номер 127 зарезервирован для специальных целей, о чем будет сказано ниже.) Сетей класса А немного, зато количество узлов в них может достигать 2 24 , то есть 16 777 216 узлов.

Если первые два бита адреса равны 10, то сеть относится к классу В. В сетях класса В под номер сети и под номер узла отводится по 16 бит, то есть по 2 байта. Таким образом, сеть класса В является сетью средних размеров с максимальным числом узлов 2 16 , что составляет 65 536 узлов.

Если адрес начинается с последовательности 110, то это сеть класса С. В этом случае под номер сети отводится 24 бита, а под номер узла - 8 бит. Сети этого класса наиболее распространены, число узлов в них ограничено 2 8 , то есть 256 узлами.

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

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

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

Большие сети получают адреса класса А, средние - класса В, а маленькие - класса С.

Использование масок в IP адресации

Для того, чтобы получить тот или иной диапазон IP-адресов предприятиям предлагалось заполнить регистрационную форму, в которой перечислялось текущее число ЭВМ и планируемое увеличение количества вычислительных машин и в итоге предприятию выдавался класс IP – адресов: A, B, C, в зависимости от указанных данных в регистрационной форме.

Данный механизм выдачи диапазонов IP-адресов работал штатно, это было связано с тем, что поначалу в организациях было небольшое количество ЭВМ и соответственно небольшие вычислительные сети. Но в связи с дальнейшим бурным ростом интернета и сетевых технологий описанный подход к распределению IP-адресов стал выдавать сбои, в основном связанные с сетями класса «B». Действительно, организациям, в которых число компьютеров не превышало нескольких сотен (скажем, 500), приходилось регистрировать для себя целую сеть класса «В» (так как класс «С» только для 254 компьютеров, а класс «В» - 65534). Из-за чего доступных сетей класса «В» стало, просто на просто, не хватать, но при этом большие диапазоны IP-адресов пропадали зря.

Традиционная схема деления IP-адреса на номер сети (NetID) и номер узла (HostID) основана на понятии класса, который определяется значениями нескольких первых бит адреса. Именно потому, что первый байт адреса 185.23.44.206 попадает в диапазон 128-191, мы можем сказать, что этот адрес относится к классу В, а значит, номером сети являются первые два байта, дополненные двумя нулевыми байтами - 185.23.0.0, а номером узла - 0.0.44.206.

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

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

Для стандартных классов сетей маски имеют следующие значения:

  • класс А - 11111111. 00000000. 00000000. 00000000 (255.0.0.0);
  • класс В - 11111111. 11111111. 00000000. 00000000 (255.255.0.0);
  • класс С - 11111111. 11111111.11111111. 00000000 (255.255.255.0).

Снабжая каждый IP-адрес маской, можно отказаться от понятий классов адресов и сделать более гибкой систему адресации. Например, если рассмотренный выше адрес 185.23.44.206 ассоциировать с маской 255.255.255.0, то номером сети будет 185.23.44.0, а не 185.23.0.0, как это определено системой классов.

Расчет номера сети и номера узла с помощью маски:

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

  • IP-адрес 129.64.134.5 - 10000001. 01000000.10000110. 00000101
  • Маска 255.255.128.0 - 11111111.11111111.10000000. 00000000

Если игнорировать маску, то в соответствии с системой классов адрес 129.64.134.5 относится к классу В, а значит, номером сети являются первые 2 байта - 129.64.0.0, а номером узла - 0.0.134.5.

Если же использовать для определения границы номера сети маску, то 17 последовательных единиц в маске, «наложенные» (логическое умножение) на IP-адрес, определяют в качестве номера сети в двоичном выражении число:

или в десятичной форме записи - номер сети 129.64.128.0, а номер узла 0.0.6.5.

Существует также короткий вариант записи маски, называемый префиксом или короткой маской. В частности сеть 80.255.147.32 с маской 255.255.255.252, можно записать в виде 80.255.147.32/30, где «/30» указывает на количество двоичных единиц в маске, то есть тридцать бинарных единиц (отсчет ведется слева направо).

Для наглядности в таблице отображается соответствие префикса с маской:

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

Особые IP адреса

В протоколе IP существует несколько соглашений об особой интерпретации IP-адресов:

  • 0.0.0.0 - представляет адрес шлюза по умолчанию, т.е. адрес компьютера, которому следует направлять информационные пакеты, если они не нашли адресата в локальной сети (таблице маршрутизации);
  • 255.255.255.255 – широковещательный адрес. Сообщения, переданные по этому адресу, получают все узлы локальной сети, содержащей компьютер-источник сообщения (в другие локальные сети оно не передается);
  • «Номер сети».«все нули» – адрес сети (например 192.168.10.0);
  • «Все нули».«номер узла» – узел в данной сети (например 0.0.0.23). Может использоваться для передачи сообщений конкретному узлу внутри локальной сети;
  • Если в поле номера узла назначения стоят только единицы, то пакет, имеющий такой адрес, рассылается всем узлам сети с заданным номером сети. Например, пакет с адресом 192.190.21.255 доставляется всем узлам сети 192.190.21.0. Такая рассылка называется широковещательным сообщением (broadcast). При адресации необходимо учитывать те ограничения, которые вносятся особым назначением некоторых IP-адресов. Так, ни номер сети, ни номер узла не может состоять только из одних двоичных единиц или только из одних двоичных нулей. Отсюда следует, что максимальное количество узлов, приведенное в таблице для сетей каждого класса, на практике должно быть уменьшено на 2. Например, в сетях класса С под номер узла отводится 8 бит, которые позволяют задавать 256 номеров: от 0 до 255. Однако на практике максимальное число узлов в сети класса С не может превышать 254, так как адреса 0 и 255 имеют специальное назначение. Из этих же соображений следует, что конечный узел не может иметь адрес типа 98.255.255.255, поскольку номер узла в этом адресе класса А состоит из одних двоичных единиц.
  • Особый смысл имеет IP-адрес, первый октет которого равен 127.х.х.х. Он используется для тестирования программ и взаимодействия процессов в пределах одной машины. Когда программа посылает данные по IP-адресу 127.0.0.1, то образуется как бы «петля». Данные не передаются по сети, а возвращаются модулям верхнего уровня как только что принятые. Поэтому в IP-сети запрещается присваивать машинам IP-адреса, начинающиеся со 127. Этот адрес имеет названиеloopback. Можно отнести адрес 127.0.0.0 ко внутренней сети модуля маршрутизации узла, а адрес 127.0.0.1 - к адресу этого модуля на внутренней сети. На самом деле любой адрес сети 127.0.0.0 служит для обозначения своего модуля маршрутизации, а не только 127.0.0.1, например 127.0.0.3.

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

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

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

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

Введение. 1

Эталонная модель OSI 2

Анатомия модели TCP/IP. 4

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

Межхостовой уровень . 4

Межсетевой уровень . 4

Уровень сетевого доступа . 5

Преимущества TCP/IP. 5

Уровни и протоколы TCP / IP . 6

Модель TCP/IP. 6

Семейство протоколов TCP/IP. 6

Протокол IP. 7

Задачи протокола IP . 8

Протокол ТСР. 8

Задачи протокола ТСР . 8

Протокол UDP. 8

Задачи протокола UDP . 9

World Wide Web. 14

Заключение. 17

Приложение. 19

Список используемой литературы.. 20

Введение

В общем случае термин TCP/IP обозначает целое семейство протоколов: TCP (Transmission Control Protocol/Internet Protocol) для надежной доставки данных, UDP (User Datagram Protocol) для негарантированной доставки, IP (Internet Protocol) и других прикладных служб.

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

Благодаря протоколу TCP/IP Интернет стал тем, чем он является сегодня. В результате Интернет произвел в нашем стиле жизни и работы почти такие же революционные изменения, как печатный станок, электричество и компьютер. Без популярных протоколов и служб – таких, как HTTP, SMTP и FTP – Интернет был бы просто большим количеством компьютеров, связанных в бесполезный клубок.

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

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

В своей курсовой работе я описываю общий обзор семейства протоколов TCP/IP, основные принципы их работы и задачи, краткая история World Wide Web и HTTP.

Эталонная модель OSI

Международная организация по стандартизации (ISO, International Organization for Standardization) разработала эталонную модель взаимодействия открытых систем (OSI, Open Systems Interconnection) в 1978/1979 годах для упрощения открытого взаимодействия компьютерных систем. Открытым называется взаимодействие, которое может поддерживаться в неоднородных средах, содержащих системы разных поставщиков. Модель OSI устанавливает глобальный стандарт, определяющий состав функциональных уровней при открытом взаимодействии между компьютерами.

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

Эталонная модель TCP / IP

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

Гибкость эталонной модель TCP/IP по сравнению с эталонной моделью OSI продемонстрирована на рисунке.

Анатомия модели TCP/IP

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

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

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

Межхостовой уровень

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

В настоящее время межхостовой уровень состоит из двух протоколов: протокола управления передачей TCP и протокола пользовательских дейтаграмм UDP. С учетом того, что Интернет становится все более транзакционно-ориентированным, был определен третий протокол, условно названный протоколом управления транзакциями/передачей T/TCP (Transaction/Transmission Control Protocol). Тем не менее, в большинстве прикладных сервисов Интернета на межхостовом уровне используются протоколы TCP и UDP.

Межсетевой уровень

Межсетевой уровень IPv4 состоит из всех протоколов и процедур, позволяющих потоку данных между хостами проходить по нескольким сетям. Следовательно, пакеты, в которых передаются данные, должны быть маршрутизируемыми. За маршрутизируемость пакетов отвечает протокол IP (Internet Protocol).

Межсетевой уровень должен поддерживать маршрутизацию и функции управления маршрутами. Эти функции предоставляются внешними протоколами, которые называются протоколами маршрутизации. К их числу относятся протоколы IGP (Interior Gateway Protocols) и EGP (Exterior Gateway Protocols).

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

Уровень сетевого доступа состоит из всех функций, необходимых для физического подключения и передачи данных по сети. В эталонной модели OSI (Open Systems Interconnection) этот набор функций разбит на два уровня: физический и канальный. Эталонная модель TCP/IP создавалась после протоколов, присутствующих в ее названии, и в ней эти два уровня были слиты воедино, поскольку различные протоколы IP останавливаются на межсетевом уровне. Протокол IP предполагает, что все низкоуровневые функции предоставляются либо локальной сетью, либо подключением через последовательный интерфейс.

Преимущества TCP/IP

Протокол TCP/IP обеспечивает возможность межплатформенных сетевых взаимодействий (то есть связи в разнородных сетях). Например, сеть под управлением Windows NT/2000 может содержать рабочие станции Unix и Macintosh, и даже другие сети более низкого порядка. TCP/IP обладает следующими характеристиками:

o Хорошие средства восстановления после сбоев.

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

o Устойчивость к ошибкам.

o Независимость от платформы реализации.

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

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

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

o Открытие и закрытие сеанса.

o Управление пакетами.

o Управление потоком данных.

o Обнаружение и обработка ошибок.

Модель TCP/IP

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

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

Семейство протоколов IP состоит из нескольких протоколов, часто обозначаемых общим термином “TCP/IP”:

o IP – протокол межсетевого уровня;

o TCP – протокол межхостового уровня, обеспечивающий надежную доставку;

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

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

Протокол IP (Internet Protocol) является основным протоколом для всего набора TCP/IP и используется для управления рассылкой TCP/IP-пакетов по сети Internet.

Функционируя на сетевом уровне модели OSI, протокол IP относится к протоколам без установления соединения. Перед IP не ставится задача надежной доставки сообщений от отправителя к получателю.

IP – протокол выполняет несколько задач, среди которых основные: адресация, упаковка, фрагментация и маршрутизация.

Адресация. Протокол IP отвечает за доставку TCP/IP – пакетов до их конечного назначения и адрес назначения не меняется в процессе прохождения пакета по маршруту.

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

Фрагментация. Размер IP – дейтаграмм, используемых для передачи данных транспортного уровня, зависит от применяемого протокола канального уровня. Сети Ethernet, например, могут переносить дейтаграммы размером до 1500 байт, а Token Ring способны поддерживать максимальный размер пакетов, равный 17914 байт. Система, передающая дейтаграммы, ограничивает размер пакета величиной максимально передаваемого блока (MTU – maximum transfer unit) конкретной сети, которая представляет собой наибольший размер кадра, транспортировку которого может осуществлять протокол канального уровня.

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

Фрагментация реализуется, если разрешённая длина пакета нижнего уровня недостаточна для размещения первичного пакета, при этом осуществляется «нарезка» пакетов, затем маршрутизатор направляет каждый фрагмент дальше, но уже в изолированном пакете с собственным IP заголовком, аналогично при возврате на первичный уровень пакет должен быть дефрагментирован.

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

Фрагментация нежелательна, но это – необходимое зло.


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

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

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

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

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

Протокол ICMP - Internet Control Message Protocol – протокол контроля сообщений в сети Internet.

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

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

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

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

· TCP/IP-системы не вырабатывают ICMP-сообщения об ошибках в ответ на другие ICMP-сообщения об ошибках. Без подобной оговорки две системы могут обмениваться ICMP-сообщениями об ошибках в обоих направлениях до бесконечности.

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

· TCP/IP-системы никогда не посылают ICMP-сообщения об ошибках в ответ на широковещательные или групповые сообщения.