Архитектура семейства протоколов TCP/IP ARP Отвечает за получение MAC адреса хоста, размещенного в текущей сети, по его IP адресу. Использует broadcast. ICMP Посылка сообщений об ошибках, обнаруженных в процессе передачи пакетов. IGMP Информирует маршрутизаторы о наличии в данной сети multicast группы. IP Обеспечивает маршрутизацию пакетов. TCP Обеспечивает соединение между двумя хостами, с гарантируемой доставкой пакетов. UDP Обеспечивает соединение между двумя хостами, при котором не гарантируется доставка пакетов. Address Resolution Protocol (ARP) Для передачи данных по сети хост должен знать MAC адрес хоста, которому передаются данные. Для получения МАС адреса по известному IP адресу служит протокол ARP. Структура ARP пакета Название поля Размер (бит) Описание Hardware Type 2 Идентификатор типа hardware (Ethernet, Token Ring …) Protocol Type 2 Идентификатор протокола (IP – 0x08-00). Hardware Address Length 1 Длина MAC адреса в байтах. (6 для Ethernet и Token Ring). Protocol Address Length 1 Длина адреса для используемого протокола (для IP составляет 4 байта). Operation (Opcode) 2 Содержит тип операции, которая производится. Sender’s Hardware Address 6 MAC адрес отправителя Sender’s IP Address 4 IP адрес отправителя Target’s Hardware Address 6 MAC адрес получателя Target’s IP Address 4 IP адрес получателя Разрешение локального IP адреса 1. ARP запрос возникает всегда, когда хост пытается связаться с другим хостом. Если IP определит, что IP адрес получателя находится в локадьной сети, то сначала хост проверяет наличие этого адреса в собственном кэше ARP. 2. В случае неудачи ARP строит запрос и посылает его широковещательным сообщением всем хостам подсети. Запрос имеет следующую структуру: “Хост с IP адресом a.b.c.d, сообщите мне Ваш MAC адрес”. Запрос также содержит информацию об IP и MAC адресе отправителя. 3. Каждый хост в подсети получает запрос и проверяет на соответствие свой IP адрес. Если он не совпадает с указанным в запросе, то запрос игнорируется. 4. Если IP адрес, указанный в запросе, совпадает с IP адресом хоста, то хост посылает ARP ответ непосредственно отправителю, используя его MAC адрес. И заносит информацию об IP/MAC адресе отправителя в ARP кэш. Разрешение удаленного IP адреса В этом случае инициируется ARP запрос маршрутизатору, который пересылает датаграммы в сеть назначения. 1. Если IP определит, что IP адрес получателя не находится в локадьной сети, то сначала проверяется наличие этого адреса в таблице маршрутизации. В случае неудачи происходит попытка найти MAC адрес default gateway в ARP кэше. 2. Если MAC адрем default gateway не найден, то формируется ARP запрос на определение его MAC адреса. После получения ответа хост посылает информацию через default gateway в сеть назначения. 3. Когда запрос приходит в сеть назначения, то маршрутизатор определяет MAC адрес получателя (см. разрешение локального IP адреса) и посылает ICMP ответ маршрутизатору хоста отправителя. ARP кэш содержит: Динамические адреса – добавляются и удаляются автоматически. Имеют время жизни 10 минут. Если к адресу неи обращений в течении 2 минут, то он удаляется. В противном случае он удаляется через 10 минут. Если при добавлении нового адреса кэш переполнился, то удаляется самый старый адрес для освобождения места для нового. Статические адреса – остаются в кэше до перезагрузки компьютера Адрес широковещательной рассылки (Hardware broadcast address) FFFFFFFFFFFF – позволяет хосту принимать ARP запросы. Не появляется при просмотре ARP кэша. Утилита ARP.EXE позволяет просматривать, добавлять и удалять адреса из ARP кэша. Ключи: -a, -g Просмотр кэша -s Добавление статического адреса -d Удаление адреса Internet Control Message Protocol (ICMP) Структура ICMP пакета Название поля Размер (байт) Описание Type 8 Восьмибитовое поле, содержащее тип ICMP пакета (Echo request, Echo reply …). Code 8 Восьмибитовое поле, содержащее номер функции соответствубщего типа сообщения. Если тип имеет только одну функцию, то значение поля равно 0. Checksum 16 Контрольная сумма. Type Specific Data ... Дополнительные данные, свои для каждого типа пакета. Служит для общения маршрутизатора с хостом, отправляющим или посылающим данные контрольными сообщениями и сообщениями об ошибках. Использует для передачи IP и является его составной частью. Если TCP/IP хост посылает датаграммы другому хосту так часто, что маршрутизаторы не успевают их пересылать, то маршрутизаторы могут посылать сообщения, указывающие хосту замедлить темп передачи датаграмм. Но, если Windows NT компьютер используется как маршрутизатор и не можит отправлять датаграммы с такой частотой, с которой они приходят, то он отбрасывает часть датаграмм не посылая ICMP Source Quench сообщения. Internet Group Management Protocol (IGMP) Информирует маршрутизаторы о наличии в данной сети multicast группы. Информация рассылается по маршрутизаторам, поддерживающим рассылку таких сообщений. Структура IGMP пакета Название поля Размер (бит) Описание Version 4 Версия IGMP (0x1) Type 4 Тип IGMP сообщения. Тип 0x1 называется Host Membership Query и используется маршрутизатором для проверки хоста на принадлежность к данной группе. Тип 0x2 называется Host Membership Report и используется хостом для определения своего членства в группе. Unused 8 0 для отправителя. Получателем игнорируется. Checksum 16 Контрольная сумма заголовка. Group Address 32 Групповой адрес. Internet Protocol (IP) IP не устанавливает непосредственное соединение между хостами, а используют адреса, помещенные в заголовок IP пакета, для передачи их получателям. Выбор пути передачи называется маршрутизацией. IP используют поля в заголовке для фрагментации и восстановления датаграмм Internet, когда это необходимо для их передачи через сети с малым размером пакетов. Не требует подтверждения получения данных. Это означает, что отправитель и получатель не информируются о пропаже пакета или неправильной последовательности получения пакетов. Структура IP пакета: Название поля Размер (бит) Описание Version 4 Версия протокола. Текущая версия 4 (0100). Header Length 8 Количество 32 битных слов в заголовке пакета. Минимальная размер заголовка 20 байт, то есть в Header Length = 0x5. Наличие информации в поле Options может увеличить размер заголовка максимум на 4 байта. Если это поле заполнено не полностью, то заполненные биты покрываются 32 битными словами и незаполненная часть заполняется нулями. Type of Service 8 Желаемое качество обслуживания пакета при его доставке. Total Length 16 Общая длина IP пакета. Identifier 16 Идентификатор пакета. Если пакет фрагментирован, то все фрагменты имеют одинаковый идентификатор. Это необходимо для восстановления исходного пакета. Fragmentation Flags 3 Флаги фрагментации. В настоящее время используется только два бита. Один показывает, фрагментирован пакет или нет, второй говорит о наличии фрагментов, следующих за текущим. Fragment Offset 13 Позиция фрагмента внутри пакета. Если пакет не фрагментирован то 0x0. Time to Live 8 Время в секундах, в течении которого пакет может находиться в сети. Маршрутизаторы уменьшают значение этого поля на то время, которое пакет находится на нем (обычно от 1 до 16). По истечении TTL пакет уничтожается. В NT 4.0 по умолчанию равно 128. Protocol 8 Тип транспортного протокола, используемого при передаче (TCP или UDP) Header Checksum 16 Контрольная сумма. Source Address 32 Идентификатор отправителя пакета. Destination Address 32 Идентификатор получателя пакета. Options and Padding … Переменное число 32 битных слов (максимум 4 байта) используются для дополнительной информации о пакете. Если IP определит, что адрес получателя – локальный, то пакет отправляется непосредственно на хост назначения. В противном случае проверяется таблица маршрутизации на наличие маршрута к хосту назначения. Если маршрут найден, то пакет пересылается по найденному маршруту. В противном случае пакет пересылается на default gateway. После получения маршрутизатором пакета, он передается на обработку IP. IP делает следующее: Уменьшение значение TTL. Если TTL=0, то пакет уничтожается. Фрагментация пакета на более мелкие, если пакет слишком большой для передачи по сети. Если пакет фрагментируется, то IP создает новые заголовки для каждого нового пакета, которые включают в себя: Флаг означающий, что применялась фрагментация Флаг показывающий, что это не последний фрагмент пакета. Смещение фрагмента внутри пакета Пересчитывается контрольная сумма Определяется MAC адреса следующего маршрутизатора Осуществляется пересылка пакета После прибытия пакета получателю IP собирает все фрагменты в единое целое. Порты Сетевые приложения идентифицируют себя, использую номер порта протокола. Порт может использовать номера от 0 до 65536. Для клиентских приложений он назначается операционной системой динамически по запросу сервиса. Для наиболее известных серверных приложений номера портов продопределены (этим занимается Internet Assigned Numbers Authority (IANA)) и не меняются. Например: FTP–21 порт, telnet-23 порт. В NT 4.0 номера предопределенных портов находятся в файле systemroot%\system32\drivers\etc\services. Сокеты Аналог file handle. Конечная точка сетевого соединения. (Переводится как розетка). Для создание приложением сокета необходимо указание следующих параметров: 1. IP адрес хоста 2. Тип сервиса (TCP или UDP) 3. Номер используемого порта Приложение использует сокеты для соединения с сокетами других приложений и передачи данных между ними. Transmission Control Protocol (TCP) Транспортный протокол с гарантированной доставкой пакетов. Данные представляются как поток байтов и могут передаваться в обоих направлениях. Некоторое количество октетов могут упаковываться в сегменты для передачи через системы Internet. Достоверность передачи информации достигается присваиванием каждому сегменту уникального номера в последовательности. Для проверки доставки сегмента используются подтверждения (ACK), которые возвращаются для каждого посланного сегмента. Если подтверждение не получено, то данные посылаюся еще раз через некоторый интервал времени (timeout). Если сегмент пришел поврежденным, то хост уничтожает этот пакет и не посылает подтверждение получения. Структура TCP пакета: Название поля Размер Описание TCP Source Port 2 TCP порт хоста, отправившего пакет. TCP Destination Port 2 TCP порт хоста, получающего пакет. Sequence Number 4 Номер последовательности, соответствующий данному сегменту. Acknowledgment Number 4 Номер последовательности, который хост хочет получить следующим. Data Length 1 Длина TCP сегмента. Reserved 2 Зарезервировано. Flags 1 Флаги. Window 2 Размер окна. Checksum 2 Контрольная сумма. Urgent Pointer 2 Если отправляется срочный пакет (это определяется в поле Flags), то здесь хранится указатель на конец срочных данных в сегменте. TCP соединение инициализируется путем трех обменов данными (Three-way handshake) Назначение: 1. Синхронизация отправки и получения сегментов. 2. Информирование хоста о размере данных, которое он может получить за один раз (windows and segment size). 3. Установка виртуального соединения. Порядок установки соединений: 1. Инициализация запроса на соединения путем посылки сегмента с установленным флагом синхронизации (SYN). 2. Подтверждение установки соединения хостом получателем путем посылки сегмента, содержащего: Включенный флаг синхронизации (SYN); Число, определяющее стартовый номер последовательности сегментов, которую хост будет отправлять; Подтверждение, содержащее номер стартового сегмента получаемых данных 3. Хост, инициирующий соединения, посылает подтверждение приема данных. Аналогичная процедура происходит при закрытии соединения. User Datagram Protocol (UDP) Обеспечивает соединение с негарантированной доставкой пакетов. Используется в приложениях, не требующих подтверждения получения пакетов (NetBIOS name service, NetBIOS datagram service, SNMP) Структура UDP пакета: Название поля Размер Описание UDP Source Port 2 UDP порт хоста, отправившего пакет. UDP Destination Port 2 UDP порт хоста, получающего пакет. Message Length 2 Длина сообщения. Checksum 2 Контрольная сумма. Порты UDP: Порт Обозначение Описание 15 NETSTAT Network status 53 DOMAIN DNS 69 TFTP 137 NETBIOS-NS 138 NETBIOS-DGM 161 SNMP Trivial FTP NetBIOS name service NetBIOS datagram service SNMP network monitor