Факты относящиеся к протоколу tcp. Протокол TCP. Состав и предназначение полей заголовка

За время развития вычислительных сетей было предложено и реализовано много протоколов обмена данными, самыми удачными из которых явились семейство протоколов TCP/IP (Transmission Control Protocol/Internet Protocol – протокол управления передачей/межсетевой протокол).

ТСР/IР – это набор протоколов, состоящий из следующих компонентов:

· межсетевой протокол (Internet Protocol) , обеспечивающий адресацию в сетях (IP-адресацию);

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

· протокол разрешения адресов (Address Resolution Protocol – ARP) , выполняющий преобразование логических сетевых адресов в аппаратные, а также обратный ему RARP (Reverse ARP);

· протокол пользовательских датаграмм (User Datagramm Protocol – UDP) ;

· протокол управления передачей (Transmission Control Protocol – TCP) .

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

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

Прикладной уровень определяет способ общения пользовательских приложений. В системах "клиент-сервер" приложение-клиент должно знать, как посылать запрос, а приложение-сервер должно знать, как ответить на запрос. Этот уровень обеспечивает такие протоколы, как HTTP, FTP, Telnet.

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

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

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

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

На транспортном уровне к полезной информации добавляется заголовок – служебная информация. Для сетевого уровня полезной информацией является уже пакет или датаграмма транспортного уровня. К ним добавляется заголовок сетевого уровня.

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

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

Выводы по теме

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

2. Протокол обмена данными – это подробная инструкция о том, какого типа информация передается по сети, в каком порядке обрабатываются данные, а также набор правил обработки этих данных.

3. В настоящее время почти все сети в мире являются сетями коммутации пакетов.

4. Существуют два принципа организации обмена данными: установление виртуального соединения с подтверждением приема каждого пакета и передача датаграмм.

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

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

7. ТСР/IР – это набор протоколов, состоящий из следующих компонентов: межсетевой протокол (IP), межсетевой протокол управления сообщениями (ICMP), протокол разрешения адресов (ARP), протокол пользовательских датаграмм (UDP) и протокол управления передачей (TCP).

Вопросы для самоконтроля

1. Что понимается под протоколом передачи данных?

2. Охарактеризуйте сети с коммутацией сообщений и коммутацией пакетов.

3. Чем отличается соединение по виртуальному каналу от передачи датаграмм?

4. Какие протоколы образуют модель TCP/IP?

5. Какие уровни входят в сетевую модель TCP/IP?

6. Дайте характеристику всех уровней модели TCP/IP и укажите соответствующие этим уровням протоколы.

7. Соотнесите по уровням модели TCP/IP понятия "пакет" и "кадр". Чем они отличаются?

8. Какой протокол обеспечивает преобразование логических сетевых адресов в аппаратные?

Протокол TCP (Transmission Control Protocol) является протоколом транспортного уровня, обеспечивающим надежную передачу данных в сети. Его транспортный адрес в заголовке IP-сегмента равен 6. Обмен данными осуществляется посредством "TCP-пакетов". В Таблице приведен формат заголовка TCP-пакета.

Порт источника и порт приемника : 16-битовые поля, содержащие номера портов. Существует набор служб, использующих TCP, за которыми закреплены определенные порты: 20/21 - FTP; 22 - SSH; 23 - Telnet; 25 - SMTP; 80,8080 - HTTP, альтернативный порт HTTP; 110 - POP3; 194 - IRC (Internet Relay Chat); 443 - HTTPS (Secure HTTP); 8080 - альтернативный порт HTTP

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

1. Если установлен флаг SYN, то это начальное значение номера последовательности - ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности равный ISN + 1.

2. В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.

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

Смещение данных : содержит длину заголовка TCP-пакета в 32-битовых словах и используется для определения начала расположения данных в TCP-пакете. Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный - 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.

Зарезервировано (6 бит) для будущего использования и должно устанавливаться в ноль. Из них два (5-й и 6-й) уже определены:

· CWR (Congestion Window Reduced) - Поле «Окно перегрузки уменьшено» - флаг установлен отправителем, чтоб указать, что получен пакет с установленным флагом ECE (RFC 3168)

· ECE (ECN-Echo) - Поле «Эхо ECN» - указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети (RFC 3168)

Флаги (управляющие биты) Это поле содержит 6 битовых флагов:

  • URG: бит= 1 означает, что пакет содержит важные (urgent) данные
  • ACK=1 означает, что пакет содержит в поле "номер подтверждения" верные данные.
  • PSH=1 инструктирует получателя протолкнуть данные, накопившиеся в приемном буфере, в приложение пользователя
  • RST=1 Оборвать соединения, сбросить буфер (очистка буфера)
  • SYN= 1 означает, что TCP-пакет представляет собой запрос на установление логического соединения.
  • FIN= 1 означает, что TCP-пакет представляет запрос на закрытие соединения.

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

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

Указательважности : 16-битовое поле, содержащее указатель на первый байт в теле TCP-пакета, начинающий последовательность важных (urgent) данных.

Дополнительные данные заголовка : Протокол TCP определяет три типа дополнительных данных заголовка: конец списка полей дополнительных данных; пусто (No Operation); максимальный размер пакета.

В отличие от протокола UDP, который может сразу же начать передачу пакетов, TCP перед передачей данных устанавливает соединения:

  • Установка соединения
  • Передача данных
  • Завершение соединения

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

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

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

Завершение соединения можно рассмотреть в три этапа:

  1. Посылка серверу от клиента флагов FIN и ACK на завершение соединения.
  2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто.
  3. После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.

Протоколы транспортного уровня, обеспечивающие надежную передачу данных, предполагают подтверждение принимающей стороной правильности полученных данных. Для этого используется принцип "скользящего окна" (sliding window), который заключается в том, что каждая сторона может отправлять партнеру максимум столько байт, сколько партнер указал в поле "размер окна" заголовка TCP-пакета, подтверждающего получение предыдущих данных. Принцип "скользящего окна" обеспечивает опережающую посылку данных с отложенным их подтверждением. Если в течение некоторого времени не будет получено отложенное подтверждение отправленного пакета, то отправляющий TCP-модуль будет вынужден повторить посылку всех TCP-пакетов, начиная с неподтвержденного пакета.

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

Протокол TCP (TransmissionControlProtocol, протокол управления передачей) представляет собой надежный протокол с установлением соединения, являющийся альтернативой UDP, и отвечающий за большинство передач пользовательских данных по сетям TCP/IP, и даже внесший свой вклад в название всего набора протоколов. Протокол TCP, как определено в документе RFC 793, обеспечивает приложения всем диапазоном транспортных услуг, включая подтверждение получения пакетов, отслеживание ошибок и их исправление, а также управление потоком.

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

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

Формат TCP –сообщения

Функции полей TCP-заголовка описаны ниже.

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

Порт назначения (DestinationPort), 2 байта. Указывает номер порта системы назначения, на который должна быть передана информация ТСР-сегментов. Номера портов перечислены в документе "AssignedNumbers", а также в файле SERVICES каждой ТСР/1Р-системы.

Порядковый номер (SequenceNumber), 4 байта. Определяет положение конкретного сегмента по отношению ко всей последовательности данных.

Подтвержденный номер (AcknowledgmentNumber), 4 байта. Задает максимальный номер байта в сегменте, увеличенный на единицу, который подтверждающая система ожидает получить от отправителя. Используется совместно с битом управления АСК.

Смещение данных (DataOffset), 4 бита. Задает длину в 4-байтных словах, TCP-заголовка (который может содержать опции, увеличивающие его размер вплоть до 60 байт).

Зарезервировано (Reserved), 6 битов. Выделено для последующих применений.

Биты управления (ControlBits), 6 битов. Содержит шесть 1-битных флагов, выполняющих перечисленные ниже функции:

URG - показывает, что последовательность содержит срочные данные (urgentdata) и активирует поле указателя срочности;

АСК - отмечает, что сообщение является подтверждением ранее полученных данных и активирует поле номера подтверждения;

PSH - предписывает системе-получателю передать всю информацию текущей последовательности, полученную на данный момент, приложению, идентифицированному полем порта назначения, не дожидаясь поступления остальных фрагментов;

RST - инструктирует систему-получателя отбросить все сегменты текущей последовательности, полученные к настоящему моменту, и начать установление TCP-соединение заново;

SYN - используется во время процедуры установления соединения для синхронизирования нумераторов переданных данных между взаимодействующими системами;

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

Окно (Window), 2 байта. Реализует механизм управления потоком протокола TCP (скользящее окно) путем объявления количества байтов, которое система-получатель может принять от системы-источника.

Контрольная сумма (Checksum), 2 байта. Содержит результат вычисления контрольной суммы с учетом TCP-заголовка, данных, а также псевдозаголовок, составленный из полей IP-адреса источника, протокола, IP-адреса назначения из IP-заголовка плюс длина всего ТСР-сообщения.

Указатель срочности (UrgentPointer), 2 байта. Задействуется совместно с битом URG, определяет данные последовательности, которые должны рассматриваться получателем как срочные.

Опции (Options), переменный размер. Может содержать дополнительные конфигурационные параметры для TCP-соединения вместе с битами выравнивания, требуемыми для того, чтобы привести размер поля до ближайшего значения, кратного 4 байтам. Возможные опции перечислены ниже.

Максимальный размер сегмента (MaximumSegmentSize). Задает размер максимального сегмента, который текущая система может получить от другой системы, соединенной с ней.

Фактормасштабаокна (Window Scale Factor). Используется для увеличения размера поля окна с 2 до 4 байтов.

Временная отметка (Timestamp). Используется для хранения временных отметок пакетов данных, которые система-получатель возвращает отправителю с целью подтверждения. Это позволяет отправителю измерять время путешествия данных в оба конца.

Данные (Data), переменный размер. Может включать в себя сегменты данных, поступившие с вершины протокольного стека, от протоколов Прикладного уровня. В пакетах SYN, АСК и FIN это поле оставляется пустым.

IPX/SPX: Для обеспечения транспортных услуг для операционной системы NovellNetWare, фирмой Novell был создан свой собственный стек протоколов, получивший общее название по наименованию протокола Сетевого уровня - IPX (InternetworkPacketExchange, межсетевой обмен пакетами). По аналогии с TCP/IP этот стек иногда также называют IPX/SPX. Вторая часть этого обозначения соотносится с SPX (SequencedPacketeXchange, последовательный обмен пакетами), протоколом, работающим на Транспортном уровне. Однако, в отличие от комбинации TCP и IP, которая повсеместно встречается в TCP/IP- сетях и предназначена в основном для доставки большого количества трафика, комплекс IPX/SPX в сетях NetWare можно встретить относительно редко.

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

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

Дейтаграммы IPX переносятся внутри стандартных кадров протокола Канального уровня точно так же, как дейтаграммы IP. Протоколы IPX не имеют собственных протоколов Канального уровня. Тем не менее, в большинстве сетей данные IPX инкапсулируются кадрами Ethernet или TokenRing.

IPX базируется на протоколе IDP (InternetworkDatagramPacket, межсетевой обмен дейтаграммами), разработанном для сетевых служб Xerox (XNS, XeroxNetworkServices). IPX обеспечивает базовые транспортные услуги без установления соединения между системами интерсети при широковещательной и однонаправленной передаче. Большая часть обычного трафика между серверами NetWare или между клиентами и серверами переносится посредством дейтаграмм IPX.

Заголовок дейтаграммы IPX имеет длину 30 байтов (для сравнения: размер заголовка IP равен 20 байтам). Назначение полей заголовка перечислено ниже.

Контрольная сумма (Checksum), 2 байта. В оригинальном заголовке IDP это поле содержит значение CRC для дейтаграммы. Так как протоколы Канального уровня сами выполняют проверку контрольных сумм, то данная функция при обработке дейтаграмм IPX не задействована и поле всегда содержит шестнадцатеричное значение ffff.

Длина (Length), 2 байта. Задает размер дейтаграммы в байтах, включая заголовок IPX и поле данных.

Управление доставкой (TransportControl), 1 байт. Это поле также известно как счетчик транзитов (hopcount). Оно фиксирует количество маршрутизаторов, через которые прошла дейтаграмма на пути к месту назначения. Передающая система сбрасывает его в 0, а каждый из маршрутизаторов при обработке дейтаграммы увеличивает значение счетчика на 1. Как только количество транзитных маршрутизаторов достигает 16, последний из них отбрасывает дейтаграмму.

Тип пакета (Packet Туре), 1 байт. Идентифицирует сервис или протокол верхнего уровня, который создал данные, переносимые дейтаграммой. Используются следующие значения:

0 - не определен;

1 - RoutingInformationProtocol (RIP, протокол информации маршрутизации);

4 - ServiceAdvertisingProtocol (SAP, протокол извещения об услугах);

5 - SequencedPacketExchange (SPX, последовательный обмен пакетами);

17 - NetWare Core Protocol (NCP, основнойпротокол NetWare).

Адрессетиназначения (Destination Network Address), 4 байта. Указывает сеть, в которой расположена система-получатель, содержит значение, выделенное администратором или операционной системой во время инсталляции NetWare.

Адрес узла назначения (DestinationNodeAddress), 6 байтов. Определяет сетевой интерфейс компьютера, которому должны быть доставлены данные, представляет собой аппаратный адрес протокола Канального уровня. Широковещательные сообщения передаются с шестнадцатеричным адресом ffffffffffff.

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

0451 - NetWare Core Protocol;

0452 - Service Advertising Protocol;

0453 - Routing Information Protocol;

0456 - диагностический пакет;

0457 - пакет присваивания номера (serializationpacket);

4000-6000 - сокеты, отведенные процессам сервера;

9004 - IPXWAN Protocol.

Адрес сети источника (SourceNetworkAddress), 4 байта. Идентифицирует сеть, в которой находится система, пославшая дейтаграмму. Используется значение, выделенное администратором или операционной системой во время инсталляции NetWare.

Адрес узла источника (SourceNodeAddress), 6 байтов. Содержит аппаратный адрес протокола Канального уровня для сетевого интерфейса компьютера, который отправил дейтаграмму.

Сокет источника (SourceSocket), 2 байта. Определяет процесс, выполняющийся на локальной системе, сформировавший данные пакета. Применяются те же значения, что и для поля сокета назначения.

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

Что же это за технология? Название TCP-IP произошло от двух сетевых протоколов: TCP и IP. Конечно, этими двумя протоколами построение сетей не ограничивается, но они являются базовыми в том, что касается именно организации передачи данных. Фактически, TCP-IP есть набор протоколов, позволяющих индивидуальным сетям объединяться для образования

Протокол TCP-IP, описание которого невозможно обозначить только определениями IP и TCP, включает в себя также протоколы UDP, SMTP, ICMP, FTP, telnet, и не только. Эти и другие протоколы TCP-IP обеспечивают наиболее полноценную работу сети Интернет.

Ниже приведем развернутую характеристику каждому протоколу, входящему в общее понятие TCP-IP.

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

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

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

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

1. FTP (File Transfer Protocol) организует перенос файлов и используется для передачи информации между двумя узлами Internet с использованием TCP-соединений в виде бинарного или же простого текстового файла, как поименованной области в памяти компьютера. При этом не имеет никакого значения, где данные узлы расположены и как соединяются между собой.

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

3. ICMP (Internet Control Message Protocol) существует для того, чтобы передавать сообщения об ошибках, возникающих в процессе обмена данными в сети Internet. Однако при этом ICMP-протокол только лишь сообщает об ошибках, но не устраняет причины, которые привели к возникновению этих ошибок.

4. Telnet - который используется для реализации текстового интерфейса в сети с помощью транспорта TCP.

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

Схема передачи данных по протоколу TCP-IP

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

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

4. После подтверждения получения всех пакетов протокол TCP упорядочивает их соответствующим образом и собирает заново в единое целое.

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

Тем самым протокол TCP-IP снимает необходимость использования повторных передач и ожиданий для прикладных процессов (таких, как Telnet и FTP).

Протокол TCP

TCP или Transmission Control Protocol, используется как надежный протокол, обеспечивающий взаимодействие через взаимосвязанную сеть компьютеров. TCP проверяет, что данные доставляются по назначению и правильно.

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

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

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

Прежде чем рассматривать, как TCP устанавливает соединение с другим хостом TCP, приведем несколько терминов, которые необходимо определить:

Сегмент

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

Дейтаграмма

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

Порядковый номер

Каждый сегмент TCP, отправленный через соединение, имеет назначенное ему число, которое называется "порядковым номером" (sequence number). Оно используется, чтобы гарантировать прибытие данных в правильном порядке.

Чтобы понять, как работает TCP, вкратце рассмотрим структуру заголовка TCP:

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

    URG - указывает, что сегмент содержит срочные данные.

    ACK - указывает, что сегмент содержит номер подтверждения.

    PSH - указывает, что данные нужно протолкнуть к получающему пользователю.

    RST - сбрасывает соединение.

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

    FIN - указывает конец данных.

Для установления соединения TCP использует процесс, называемый "трехфазным квитированием" (Three-Phase Handshake) . Как следует из названия, этот процесс включает три шага:

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

    Сервер отвечает отправкой сегмента с установленными битами SYN и ACK. Этот сегмент содержит начальный порядковый номер сервера (не связанный с порядковым номером клиента) и номер подтверждения, на единицу больший порядкового номера клиента (т.е. равный следующему порядковому номеру, ожидаемому от клиента).

    Клиент должен подтвердить этот сегмент отправкой обратно сегмента с установленным битом ACK. Номер подтверждения будет на единицу больше порядкового номера сервера, а порядковый номер будет равен номеру подтверждения сервера (т. е. на единицу больше начального порядкового номера клиента).

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

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

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

TCP управляет объемом направляемых ему данных, возвращая с каждым подтверждением "размер окна". "Окно" - это объем данных, который может принять получатель. Между прикладной программой и потоком данных в сети располагается буфер данных. "Размер окна" фактически представляет собой разность между размером буфера и объемом сохраненных в нем данных. Это число отправляется в заголовке, чтобы информировать удаленный хост о текущем размере окна. Такой прием называется "скользящим окном" ("Sliding Window") .

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

Протокол дейтаграммы пользователя
User Datagram Protocol очень простой протокол. Как и IP , это надежный протокол без соединений. Вам не нужно устанавливать соединение с хостом для обмена данными с ним, используя UDP , и не существует механизма для обеспечения передаваемых данных.
Блок данных, передаваемых с помощью UDP называется датаграммой. UDP добавляет четыре 16-битных поля заголовка (8 байт) к передаваемым данным. Эти поля: длина поля, поле контрольной суммы, а также источник и номер порта назначения. «Порт», в этом контексте, представляет собой программное обеспечение порта, а не аппаратный порт.
Концепция номера порта является общей для обоих UDP и TCP . Номера портов определяют, какой модуль протокола направляет (или получает) данные. Большинство протоколов имеют стандартные порты, которые обычно используются для этого. Например, протокол Telnet обычно использует порт 23. Simple Mail Transfer Protocol (SMTP), использует порт 25. Использование стандартных номеров портов позволяет клиентам взаимодействовать с сервером без предварительной установки, какой порт использовать.
Номер порта и протокола в поле в заголовка IP дублируют друг друга в какой-то степени, хотя поля протокола не доступны для протоколов более высокого уровня. IP использует поле протокола, чтобы определить, куда должны быть переданы данные на UDP или TCP модули. UDP или TCP используют номер порта, чтобы определить, какой протокол прикладного уровня, должен получать данные.
Несмотря на то, UDP не является надежным, он все еще подходящий выбор для многих приложений. Он используется приложениями в реальном времени, такими как потоковое аудио и видео, где, если данные будут потеряны, то лучше обойтись без него, чем отправить его снова по порядку. Он также используется протоколами, такими как Simple Network Management Protocol (SNMP).
Трансляция
UDP подходит для информационного вещания, поскольку он не требует подключения к открытой связи.Цели широковещательного сообщения определяются отправителем, на указанный в IP-адрес назначения. UDP датаграммы с адресом назначения IP все бинарные 255.255.255.255) и будет получен каждый хост в локальной сети. Обратите внимание на слово местные: дейтаграммы с таким адресом не будут приняты маршрутизатором к Интернету.
Передачи могут быть направлены на конкретные сети. UDP датаграммы с хоста и подсети части IP-адреса, установленные как бинарные транслируются на все узлы на всех подсетях сети, которая соответствует чистой части IP-адреса. Если только принимающая сторона (другими словами, все биты, которые равны нулю в маске подсети) устанавливается в бинарные, то вещание ограничено для всех хостов в подсети, который соответствует остальной части адреса.
Многоадресная рассылка используются для передачи данных в группе хостов, которые выразили желание их получать. Многоадресная UDP датаграмма имеет адрес назначения, в котором первые четыре бита 1110, предоставлены адреса в диапазоне 224.xxx в 239.xxx Остальные биты адреса используются для обозначения группы многоадресной рассылки. Это, скорее, как радио-или телеканал. Так, например, 224.0.1.1 используется для протокола NTP. Если TCP / IP приложения хотят получить многоадресное сообщение, они должны присоединиться к соответствующей группе многоадресной рассылки, что он и делает, передавая адрес группы в стек протоколов.
Широкое вещание, по сути, фильтруют передачу. Multicaster не рассматривает индивидуальные сообщения для каждого хоста, который присоединяется к группе. Вместо этого, сообщения в эфир, и драйвера на каждом хосте решают, следует ли игнорировать их или передать содержимое стеку протоколов.
Это означает, что многоадресные сообщения должны транслироваться по всему Интернету, так как multicaster не знает, какие хосты хотят получать сообщения. К счастью, это не является необходимым. IP использует протокол под названием Internet Group Management Protocol (IGMP), чтобы сообщить маршрутизаторам, какие хосты хотят получать сообщения многоадресной группы, так что сообщения отправляются только туда, где они необходимы.
Протокол управления передачей
Transmission Control Protocol является протоколом транспортного уровня и используется большинством интернет-приложений, такими как Telnet, FTP и HTTP. Это протокол с установлением соединения. Это означает, что два компьютера - один клиент, другой сервер и между ними необходимо установить соединение до того, как данные могут передаваться между ними.
TCP обеспечивает надежность. Приложение, которое использует TCP знает, что он отправляет данные полученные на другом конце, и что он получил их правильно. TCP использует контрольные суммы, как на заголовках,так и на данных. При получении данных, TCP посылает подтверждение обратно к отправителю. Если отправитель не получает подтверждения в течение определенного периода времени, данные отправляются повторно.
TCP включает в себя механизмы обеспечения данных, которые поступают в обратной последовательности, в порядке как они были отправлены. Он также реализует управление потоком, так что отправитель не может подавить приемник данных.
TCP передает данные, используя IP, в блоках, которые называются сегментами. Длина отрезка определяется протоколом. В дополнение к IP-заголовку, каждый сегмент состоит из 20 байт заголовка. Заголовок TCP начинается с 16-битного источника и поля назначения номера порта. Как и UDP , эти поля определяют уровень приложения, которые направлены и на получение данных. IP-адрес и номер порта, вместе взятые однозначно идентифицируют службы, работающие на хозяина, и пары известной как гнездо.
Далее в заголовке идет 32-битный порядковый номер. Это число определяет позицию в потоке данных, что должен занимать первый байт данных в сегменте. Порядковый номер TCP позволяет поддерживать поток данных в правильном порядке, хотя сегменты могут быть получены из последовательности.
Следующее поле представляет собой 32-битное поле, которое используется для передачи обратно отправителю, что данные были получены правильно. Если ACK флаг, которым он обычно и бывает, то это поле содержит положение следующего байта данных, что отправитель сегмента ожидает получить.
В TCP нет необходимости для каждого сегмента данных, которые будут признаны. Значение в поле подтверждения интерпретируется как «все данные до сих пор получены ОК». Это экономит полосу пропускания, когда все данные направляются в одну сторону, уменьшая потребность в признании сегментов. Если данные одновременно отправляються в обоих направлениях, как в полной дуплексной связи, то марки не связаны с расходами,так как сегмент передачи данных в одну сторону может содержать подтверждение для данных, передаваемых по-другому.
Далее в заголовке представляется 16-битное поле, содержащее длину заголовка и флаги. TCP заголовки могут содержать дополнительные поля, так что длина может варьироваться от 20 до 60 байт. Флаги: URG, ACK (который мы уже упоминали), PSH, RST, SYN и FIN. Позже,мы рассмотрим некоторые другие флаги.
Заголовок содержит поле, называемое размером окна, что дает количество байт, которые приемник может принять. Также существует 16-битная контрольная сумма, охватывающая как заголовок,так и данные. Наконец (до дополнительных данных) есть поле называемое «указатель срочности». Когда флаг URG установлен, это значение интерпретируется как смещение порядкового номера. Он определяет начало данных в потоке, которые должны быть обработаны в срочном порядке. Эти данные часто называют данными «вне группы». Пример её использования, когда пользователь нажимает клавишу перерыв, чтобы прервать выход из программы во время Telnet сессии.

Протокол TCP/IP впервые был создан в начале 1970-х годов и использовался для создания сети ARPANET. Технология разрабатывалась в рамках исследовательского проекта, который был нацелен на изучение потенциальной возможности объединения компьютеров в рамках одной локальной или виртуальной сети internetwork.

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

Структура TCP

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

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

Отправка данных по TCP

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

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

За обработку информации компьютером и ее передачу другим составляющим отвечают канальные протоколы, среди которых можно упомянуть Ethernet, ATM, SLIP, IEEE 802.11. Данные каналы обеспечивают не только передачу данных, но и форму доставки адресату. Так, в сетях IEEE 802.11 передача информации осуществляется при помощи беспроводного радиосигнала. При этом сигнал подается с сетевой карты компьютера, также имеющей собственный код MAC. В случае с Ethernet вся передача данных осуществляется при помощи кабельного соединения.

Видео по теме

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

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

Глобальная сеть отличается от локальной, во-первых, более низкими скоростями передачи данных. Работают глобальные сети через протоколы TCP/IP, MPLS, ATM и некоторые других. Наиболее известным из указанных является протокол TCP/IP, который включает в себя подпротоколы разных уровней: прикладной, транспортный, сетевой, физический и канальный.

На прикладном уровне работает большинство программ, обладающих собственными протоколами, которые широко известны обычным пользователям ПК (HTTP, WWW, FTP и т.д.). Данные протоколы обеспечивают визуализацию и отображение необходимой пользователю информации.

Транспортный протокол ответственен за доставку данных именно тому приложению, которое способно их обработать. Он носит название TCP.

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

Физический и канальный уровни ответственны за определение условий и методов передачи информации.

Наиболее известной глобальной сетью является WWW (World Wide Web), которая представляет из себя совокупность серверов, где хранится необходимая для пользователей информация, и компьютеров, которые могут как принимать с серверов информацию, так и загружать ее на них. WWW отличается удобством и простотой использования, а также низкими требованиями к скорости передачи данных. Это позволило развиться данной сети за период чуть больший, чем десятилетие.

Видео по теме

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

Установка соединений в сети интернет происходит по числовым группам в 4 значения, разделенных символом «.» и именуемым IP-адресами. Символьные имена комплекса доменных имен представляют собой службу, призванную облегчить нахождение необходимого IP-адреса в сети.Техническим показателем доменного имени выступает символ «.» в электронном адресе пользователя. Так, в адресе google.com доменным именем будет com.Само доменное имя не способно предоставить доступ к требуемому интернет-ресурсу. Процедура использования мнемонического имени состоит из двух этапов:- IP-адреса по имени в файле hosts, содержащем таблицы соответствия IP-адреса и имени компьютера;- установка соединения с удаленным веб-ресурсом по определенному IP-адресу.Главной задачей сервиса DNS является получение IP-адреса для установки соединения, что делает эту службу вспомогательной по отношению к протоколу TCP/IP.Символ "." является разделителем составляющих доменного имени, хотя для практических целей обычно принимается в качестве обозначения корневого домена, не имеющего собственного обозначения. Корень - все множество хостов интернета - подразделяется на:- первого уровня - gov, edu, com,net;- национальные домены - uk, jp, ch и т.д.;- региональные домены - msk;- корпоративные домены - домены организаций.Сохранение привычной древовидной структуры доменных имен обусловило использование устоявшейся терминологии - корень, узлы дерева, лист. Термин «хост» в данной иерархии присвоен листу, не имеющему под собой ни одного узла. Полным именем хоста становится последовательное перечисление всех промежуточных узлов между корнем и листом, разделяемых символом "." слева направо:ivan.net.abcd.ru, где ru - корень дерева, abcd - название организации, ivan - лист дерева (хост).

Видео по теме

Источники:

  • Система доменных имен Internet в 2018