· Получатель отвечает номером в поле подтверждения получения SYN, который соответствует установленному источником номеру. В поле "номер в последовательности" может также сообщаться номер, который запрашивался источником;
· Источник подтверждает, что принял сегмент получателя и отправляет первую порцию данных.
Графически этот процесс представлен на рисунке.
Рисунок 87 - Установка соединения TCP
После установки соединения источник посылает данные получателю и ждет от него подтверждений о их получении, затем снова посылает данные и т.д., пока сообщение не закончится. Заканчивается сообщение, когда в поле флагов выставляется бит FIN, что означает "нет больше данных".
Потоковый характер протокола определяется тем, что SYN определяет стартовый номер для отсчета переданных байтов, а не пакетов. Это значит, что если SYN был установлен в 0, и было передано 200 байтов, то номер, установленный в следующем пакете будет равен 201, а не 2.
Понятно, что потоковый характер протокола и требование подтверждения получения данных порождают проблему скорости передачи данных. Для ее решения используется "окно" - поле window. Идея применения window достаточно проста: передавать данные не дожидаясь подтверждения об их получения, т.е. источник предает некоторое количество данных, равное window, без ожидания подтверждения об их приеме, и после этого останавливает передачу и ждет подтверждения. Если он получит подтверждение только на часть переданных данных, то он начнет передачу новой порции с номера, следующего за подтвержденным:
Рисунок 88 - Механизм передачи данных по TCP
В данном примере окно установлено в 250 байтов шириной. Это означает, что текущий сегмент - сегмент со смещением относительно SYN, равном 250 байтам. Однако, после передачи всего окна модуль TCP источника получил подтверждение на получение только первых 100 байтов. Следовательно, передача будет начата со 101 байта, а не с 251.
TCP используют TELNET, FTP, а также протокол HTTP.
Принципы построения IP - адресов
IP-адреса определены в том же самом RFC, что и протокол IP. Именно адреса являются той базой, на которой строится доставка сообщений через сеть TCP/IP.
IP-адрес - это 4-байтовая последовательность, каждый байт которой записывается в виде десятичного числа. Каждая точка доступа к сетевому интерфейсу имеет свой IP-адрес.IP-адрес состоит из двух частей: адреса сети и номера хоста. Под хостом понимают один компьютер, подключенный к Сети.
Существует 5 классов IP-адресов:
Рисунок 89 - Классы IP-адресов
Опираясь на эту структуру, можно подсчитать характеристики каждого класса в терминах числа сетей и числа машин в каждой сети.
Таблица 5 Характеристики классов IP-адресов
Класс | Диапазон значений первого октета | Возможное количество сетей | Возможное количество узлов |
А | 1 - 126 | 126 | 16777214 |
B | 128 - 191 | 16382 | 65534 |
C | 192 - 223 | 2097150 | 254 |
D | 224 - 239 | - | 228 |
E | 240 - 247 | - | 227 |
Адреса класса A предназначены для использования в больших сетях общего пользования, адреса класса B - для использования в сетях среднего размера (сети больших компаний, научно-исследовательских институтов, университетов), класса C - в сетях с небольшим числом компьютеров (сети небольших компаний и фирм), адреса класса D используют для обращения к группам компьютеров, а адреса класса E - зарезервированы.
Таблица 6 Выделенные (Зарезервированные) IP-адреса
IP-адрес | Значение |
Все нули | Данный узел сети |
Номер сети | все нули | Данная IP-сеть |
Все нули | номер узла | Узел в данной (локальной) сети |
Все единицы | Все узлы в данной локальной IP-сети |
Номер сети | все единицы | Все узлы указанной IP-сети |
127.0.0.1 | "Петля" |
Адрес 127.0.0.1 предназначен для тестирования программ и взаимодействия процессов в рамках одного компьютера. В большинстве случаев в файлах настройки этот адрес обязательно должен быть указан, иначе система при запуске может зависнуть (как это случается в SCO Unix). Наличие "петли" чрезвычайно удобно с точки зрения использования сетевых приложений в локальном режиме для их тестирования и при разработке интегрированных систем.
Некоторые зарезервированные адреса используются для широковещательных сообщений. Например, номер сети (строка 2) используется для посылки сообщений этой сети (т.е. сообщений всем компьютерам этой сети). Адреса, содержащие все единицы, используются для широковещательных посылок (для запроса адресов, например).
Реальные адреса выделяются организациями, предоставляющими IP-услуги, из выделенных для них пулов IP-адресов.
Важным элементом разбиения адресного пространства Internet являются подсети. Подсеть - это подмножество сети, не пересекающееся с другими подсетями. Сеть организации может быть разбита на фрагменты, каждый из которых будет составлять подсеть. Реально каждая подсеть соответствует физической локальной сети (например, сегменту Ethernet). Подсети придуманы для того, чтобы обойти ограничения физических сетей на число узлов в них и максимальную длину кабеля в сегменте сети.
На рисунке 90 изображен фрагмент сети класса B - 144.206.0.0, состоящий из двух подсетей - 144.206.130.0 и 144.206.160.0. В центре схемы изображена машина шлюз, которая связывает подсети. Эта машина имеет два сетевых интерфейса и, соответственно, два IP-адреса.
Рисунок 90 - Схема разбиения адресного пространства сети на подсети
В принципе, разбивать сеть на подсети необязательно. Можно использовать адреса сетей другого класса (с меньшим максимальным количеством узлов), но при этом возникают неудобства:
· В сети, состоящей из одного сегмента Ethernet, весь адресный пул сети не будет использован, т.к., например, для сети класса С (самой маленькой с точки зрения количества узлов в ней), из 254 возможных адресов можно использовать только 32;
· Все машины за пределами организации, которым разрешен доступ к компьютерам сети данной организации, должны знать шлюзы для каждой из сетей. Структура сети становится открытой во внешний мир, любые изменения структуры могут вызвать ошибки маршрутизации. При использовании подсетей внешним машинам надо знать только шлюз всей сети организации, маршрутизация внутри сети - это ее внутреннее дело.
Разбиение сети на подсети использует ту часть IP-адреса, которая закреплена за номерами хостов. Администратор сети может замаскировать часть IP-адреса и использовать ее для назначения номеров подсетей. Фактически, способ разбиения адреса на две части, теперь будет применятся к адресу хоста из IP-адреса сети, в которой организуется разбиение на подсети.
Маска подсети - это четыре байта, которые накладываются на IP-адрес для получения номера подсети. Например, маска 255.255.255.0 позволяет разбить сеть класса В на 254 подсети по 254 узла в каждой.
К сожалению, подсети не только решают, но также и создают ряд проблем. Например, происходит потеря адресов, но уже не по причине физических ограничений, а по причине принципа построения адресов подсети. Чем шире маска подсети (чем больше места отводится на адрес хоста), тем больше потерь. В ряде случаев приходится выбирать между приобретением еще одной сети или изменением маски, при этом физические ограничения могут быть превышены за счет репитеров, хабов и т. п.
Принцип коммутации пакетов с использованием техники виртуальных каналов
Для глобальных сетей с коммутацией пакетов (Х.25 или Frame Relay), характерна оригинальная техника маршрутизации пакетов (здесь термин “пакет” используется для обозначения пакетов Х.25 и кадров Frame Relay), основанная на понятии “виртуальный канал” и обеспечивающая эффективную передачу долговременных устойчивых потоков данных.
Прежде, чем пакет будет передан через сеть, необходимо установить виртуальное соединение между абонентами сети – терминалами, маршрутизаторами или компьютерами. Существует два типа виртуальных соединений – коммутируемый виртуальный канал и постоянный виртуальный канал. При создании коммутируемого виртуального канала коммутаторы сети настраиваются на передачу пакетов динамически, по запросу абонента, а создание постоянного виртуального канала происходит заранее, причем коммутаторы сети настраиваются вручную администратором, возможно, с привлечением централизованной системы управления сетью.