Протокол надежной доставки сообщений TCP

IP-адресация.

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

IP-адрес имеет длину 4 байта и обычно записывается четырьмя числами, представляющими значения каждого байта в десятичной форме (в диапазоне от 0 до 255), которые отделены друг от друга точками, например: 194.58.110.12.

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

При такой системе можно получить 2564 уникальных адресов, т.е. всего более 4 млрд. Однако не все адреса разрешены. Некоторые значения отдельных байтов используются для своих, служебных целей, поэтому реально возможно чуть более 2 млрд. адресов. Это достаточно большое число, которого пока хватает.

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

Доменный адрес имеет вид нескольких идентификаторов, разделенных точками: feu@sci.smolensk.ru.

Чем правее расположен в адресе домен, тем шире охватываемая им область.

Домен высшего уровня (самый правый) представляет собой либо двухбуквенный шифр страны, либо трехбуквенный код, описывающий род деятельности владельца. Россия – ru, США – us, Германия – de, Англия – uk и т.д.

§ com – коммерческие организации;

§ edu – учебные организации;

§ net – сетевые организации и т.д.

Регистрацией и распределением доменных имен ведает международная организация InterNIC. В ней существует специальная служба WhoIs для поиска владельца домена по имени домена или IP-адресу.

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

 

В стеке протоколов TCP/IP протокол TCP обеспечивает надёжную транспортировку данных между прикладными процессами путем установления логического соединения.

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

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

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

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

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

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

Сообщения протокола TCP называются сегментами и состоят из заголовка и блока данных.

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

 
 


ДЕЙТАГРАММА

В заголовке дейтаграммы содержится информация различного назначения:

§ номер порта источника (идентифицирует процесс-отправитель) и назначения (идентифицирует процесс-получатель), что позволяет передавать данные в обоих направлениях;

§ номер дейтаграммы (позволяет осуществлять сборку дейтограмм на компьютере адресата в правильной последовательности – реконструкция);

§ контрольная сумма (рассчитывается по сегменту) – позволяет проверить, не произошло ли искажение данных при передаче;

§ номер подтверждения приема – указывает, что данные были получены успешно (если данные не получены в нормальном виде, то получатель не отправляет подтверждения приема и отправитель через некоторое время повторит передачу);

§ указатель срочности.

Обобщение:

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


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

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

Основные особенности протокола TCP/IP:

1) является широко опубликованным открытым стандартом и полностью независим от аппаратного и программного обеспечения;

2) может работать в самых разных вычислительных сетях (используется не только для Интернета);

3) данные могут передаваться между различными персональными компьютерами, работающими под управлением разных ОС;

4) протокол имеет надежные и эффективные механизмы доставки данных;

5) является маршрутизированным, т.е. дейтограммы могут направляться по конкретному пути, при этом оптимизирует трафик;

6) используют общую схему адресации.