Tcp что это такое
TCP протокол — что это такое, понятным языком
Каждый из нас знает, что по интернету можно передавать различные данные: голосовые сообщения, видео, документы, различные файлы и многое другое, но не все знают, как же это происходит.
А происходит это все посредством особого набора/стеку правил — TCP/IP, благодаря которому и работает интернет. Он включает в себя протоколы, каждый из которых ответственен за определенную функцию в сети.
Прошлый материал был, как раз посвящен TCP IP, сегодня же мы разберем за что отвечает протокол TCP и что это вообще такое.
TCP протокол
TCP — это транспортный протокол, является частью стека протоколов TCP IP, он выполняет функции управления передачей данных и следит за их сохранностью, считается надежным. Расшифровывается как Transmission Control Protocol (протокол управления передачей).
Это стандарт, который определяет как нужно устанавливать связь и поддерживать ее, чтобы две программы могли обмениваться данными между собой.
Интересно! Существует еще один транспортный протокол UDP, о нем мы поговорим в следующей отдельной статье, там же и разберем, чем они вообще отличаются друг от друга.
Является именно надежным протоколом так как:
1. Использует логическое соединение, благодаря чему обеспечивается надежная доставка данных.
2. Пронумеровывает передаваемые пакеты данных и проверяет их доставку, принимающая сторона высылает подтверждение о получении, в случае потери каких-либо пакетов создается повторная передача.
3. Делит передаваемые данные на части — пакеты данных, затем передает их нижнему уровню, и собирает их, когда они приходят к получателю.
4. Проверяет контрольную сумму передаваемых пакетов, если она отличается — создается новая отправка.
5. Проверяет пакеты на дубликаты, в случае обнаружения таковых — уничтожает.
6. Контролирует скорость передачи.
Заголовок TCP протокола
Весит 20 байт, если нет дополнительных опций, вот как он выглядит:
У каждого TCP сегмента указывается порт источника и назначения, с помощью которых происходит идентификация отправляющего и принимающего приложения. Эти порты вместе с IP адресами уникально идентифицируют каждое соединение. Комбинация IP и порта — это сокет (socket).
Номер последовательности — нумерация каждого отправляемого байта в потоке передаваемых данных. А номер подтверждения — это следующий номер байта после полученного, который ждет получатель. Т.е. передача идет последовательно, например, получатель получил 100-ый байт, следующим ждет 101.
Остальные значения можно понять из самой картинки. Разве, что размер окна — он скользящий, т.е. зависит от качества сети. Если много данных теряется он может уменьшаться и наоборот. Он регулирует количество передаваемых байтов.
А флаги: URG, ACK, PSH и т.д. — описывают дополнительные значения сегмента, так, например, флаг FIN применяется для завершения соединения.
Также, вам может быть интересна статья о том, что такое dns сервер. В ней очень подробно и интересно описано об этой глобальной системе.
Как работает TCP соединение
Соединение отправителя и получателя (два узла) происходит так:
1. Отправитель отсылает получателю специальный пакет, именуемый SYN, т.е. пригашает к соединению
2. Получатель отвечает уже пакетом SYN-ACK, т.е. соглашается
3. Отправитель отсылает спец. пакет ACK, т.е. подтверждает, что согласие получено
На этом TCP-соединение успешно установлено и получатель с отправителем могут спокойно обмениваться информацией. При передаче все пакеты данных нумеруются, отсылаются подтверждения о получении каждого из них, а потерянные пересылаются заново.
TCP порты
На каждом компьютере установлено, как минимум несколько программ. И сразу несколько из них могут обмениваться информацией, как же их различать? Именно для этого и были придуманы TCP порты, это по сути уникальный идентификатор соединения между двумя программами.
Номер порта — это число от 0 до 65535 в 16 битном формате, оно указывает какому именно приложению предназначается определенный пакет данных. Т.е. позволяет различным программам, работающим на одном компьютере, независимо друг от друга отправлять и получать информацию.
Есть целый ряд уже зарезервированных портов, которые являются стандартом:
Также, стоит отметить, что порты данного протокола никак не пересекаются с такими же, но у UDP. Так, например, порт: 1234 не пересечется с таким же, но у UDP.
В заключение
Вот вы и узнали, что это такое, постарался написать, как можно более понятно, без лишних терминов. Главное знать, как это работает и серфинг в интернете станет еще куда интереснее.
Протокол TCP простым и понятным языком — как работает
На этом уровне есть два протокола, протокол UDP, который уже рассматривали и протокол TCP, который является одним из основных протоколов стека TCP/IP и интернет.
TCP — расшифровывается как (Transmission Control Protocol) протокол управления передач. В отличии от UDP, TCP обеспечивает надежную доставку данных. Сервис предоставляемый TCP называются надежная передача потока байт или (reliable byte stream) по-английский. TCP обеспечивает как гарантию доставки данных, так и гарантию сохранения порядка следования сообщений.
Поток байт
От приложения, протокол TCP получает поток байт, который может быть очень большим. Например, вы можете скачивать из интернета файл, который составляет несколько мегабайт или несколько гигабайт. Данные файлы приходят на транспортный уровень в виде одного большого потока байт.
В протоколе TCP поток байт делится на отдельные части, которые называются сегменты. Каждый сегмент отправляется отдельно получателю. Получатель со своей стороны, принимает сегменты, собирает их в один большой поток байт и отправляет этот поток байт приложению.
Гарантия доставки: подтверждение получения
Для того чтобы обеспечить гарантию доставки данных, TCP использует подтверждение получения сообщения. Рассмотрим, как это работает. Отправитель пересылает по сети некоторый сегмент данных, получатель принимает сегмент и посылает отправителю подтверждение, сокращенно ACK от английского Acknowledgment, которая говорит о том что сегмент данных получен. Затем отправляется следующий сегмент данных, снова подтверждение и так далее.
Гарантия доставки: повторная отправка
Что происходит, если произошла ошибка при передаче данных? Сегмент данных потерян в сети, он не доходит до получателя, получатель не отправляет подтверждение сообщения. Отправитель при отправке сегмента устанавливает таймер, который задает время ожидания подтверждения, если в течении этого времени подтверждение не пришло, таймер срабатывает и тот же самый сегмент отправляются повторно.
Предположим, что в этот раз сегмент дошел, получатель отправляет подтверждение, отправитель может передавать следующий сегмент данных.
Протокол TCP: скользящее окно
Работа протокола TCP отличаются от той схемы, которую мы сейчас рассмотрели. Подтверждается не каждый сегмент, а несколько сегментов следующие друг за другом, этот механизм называется скользящее окно.
Варианты подтверждения доставки
Рассмотрим остановку и ожидание. Отправитель передает данные и останавливается ожидая подтверждение. Получатель присылает подтверждение после этого передается следующая порция данных. Снова подтверждение, снова данные и снова подтверждение.
Другой вариант скользящее окно. В этом случае отправитель передает сразу несколько порций данных не дожидаясь подтверждения. Получатель отправляет одно подтверждение которое называется кумулятивное. Это означает, что получатель получил последнюю порцию данных и все предыдущие.
Время передачи сообщения
Почему на транспортном уровне эффективно использовать скользящее окно? Дело в том, что сообщение по сети передается хотя и быстро, но не мгновенно. Поэтому в среде передачи данных может находиться некоторый объем данных, который определяется скоростью передачи данных умноженной на задержку передачи данных. Этот объем небольшой для локальных сетей, где отправитель и получатель находится рядом друг с другом, поэтому задержка небольшая.
В локальных сетях, например Wi-Fi используется метод подтверждения остановка и ожидания. В крупных современных сетях с высокоскоростными каналами связи большой протяженности, например если вы хотите скачать чего-нибудь с американского сайта, такой объем данных может быть очень большой. И в этой ситуации ожидания подтверждения приводит к существенному снижению производительности.
Пример подтверждения доставки
Рассмотрим на примере работу сети.
Скользящее окно
Почему термин называется скользящее окно? Удобно представлять себе окно, которое скользит по потоку байт получаемых от приложений. У есть поток байт, разделенный на отдельные сегменты, часть сегментов уже передана, часть еще не отправлены. Для некоторых сегментов, которые уже переданы, получено подтверждение. И отправлено некоторое количество сегментов соответствующие размеру окна, для которых подтверждение не получено.
Размер окна — это количество байтов данных, которые могут быть переданы без получения подтверждения.
В примере размер окна 8 сегментов. Что происходит, если мы получили очередное подтверждение? Мы можем передвинуть окно дальше по данным, в него попадает новая порция не отправленных данных. Можно отправить эти данные получателю, после этого отправитель останавливается и дожидаются подтверждения получения следующей порции данных. Таким образом, окно скользит вдоль нашего потока байт от приложения.
Тип подтверждения
Есть два типа подтверждения, которые могут использоваться совместно с алгоритмом скользящего окна.
Для устранения этой проблемы предложено выборочное подтверждение. В этом случае получатель подтверждает получение диапазона принятых байт. Он получил первые 500 мегабайт и вторые 500 мегабайт из гигабайта и не получил всего лишь один сегмент. Отправитель вместо вторых 500 мегабайт, повторно передает всего лишь один недостающий сегмент. Выборочное подтверждение эффективно при большом размере окна TCP, но выборочное подтверждение по умолчанию не используется для этого необходимо применение дополнительных полей заголовка TCP, которые называются параметрами.
Порядок следования сообщений
Но подтверждений и повторной отправки данных недостаточно для обеспечения надежной передачи потока байт. Это защищает только от потери сегментов, но не обеспечивает сохранение порядка следования сообщений.
Какие проблемы могут произойти? Протокол IP не сохраняет порядок следования сообщений и поэтому сегменты могут прийти к получателю не в том порядке в котором они были отправлены. Кроме того, некоторые сегменты могут прийти два и более раз. Рассмотрим одну из возможных причин дублирования сегментов.
Дублирование сегментов
Предположим, отправитель передал сегмент данных получателю, получатель этот сегмент принял и передал отправителю подтверждение, но при передаче подтверждения произошла ошибка. Отправитель не получил подтверждение, сработал таймер и тот же самый сегмент данных был отправлен второй раз.
Это один из возможных вариантов, на самом деле, таких вариантов еще очень много, поэтому в протокол TCP встроен механизм защиты от дублирования и нарушение порядка следования сообщений.
Механизм очень простой, все сообщения нумеруются. В TCP нумеруются не сегменты, так как разные сегменты могут иметь разный размер, а байты.
В нашем примере 4 сегмента первый сегмент содержит байты от 0 до 1023, второй от 1024 до 2047 и так далее.
Нумерация байтов
При передаче отправитель включают в сегмент номер первого байта данных, которые в нем содержатся.
Дублирование сегментов
Рассмотрим как решается ситуация с дублированием сегментов.
Соединение TCP
TCP для передачи данных использует соединение. Соединение нужно установить перед тем, как начать передачу данных, а после того как передача данных завершена, соединение разрывается.
Задачи соединения
Установка соединения в TCP
Получатель в ответ передаёт сообщение SYN, куда включает подтверждение получения предыдущего сообщения ACK от слова acknowledge и порядковый номер байта, который он ожидает 7538, потому что на предыдущем этапе был получен байт с номером 7537.
Также отправитель включает в сегмент номер байта в потоке байт 36829. Номера байт в первом сообщении не могут быть всегда нулевыми, они выбираются по достаточно сложным алгоритмам, но для простоты можно представлять себе что эти номера выбираются случайным образом.
На третьем этапе пересылается подтверждение получения предыдущего запроса на установку соединения ACK номер следующего ожидаемого байта 36830, а также номер байта в сообщении. После этого соединение считается установленным и можно передавать данные.
Разрыв соединения в TCP
Протокол TCP предусматривает два варианта разрыва соединения: корректное, с помощью одностороннего разрыва соединения и сообщения FIN и разрыв из-за критической ситуации с помощью сообщения RST.
Рассмотрим, как выполняется корректный разрыв соединения. Сторона, которая хочет разорвать соединение пересылает другой стороне сообщение FIN и в ответ получает сообщение ACK. Однако соединение разорвано только с одной стороны.
Когда другая сторона решила, что данные для передачи у нее закончились, она также передает сообщение FIN в ответ получает сообщение ACK подтверждение. На этом этапе соединение закрыто полностью в обе стороны.
Для разрыва соединения в критической ситуации из-за ошибок в приложении или с оборудованием используется одно сообщение RST. В этом случае соединение закрывается в обе стороны. Хотя сообщение RST предназначено для использования в критических ситуациях, некоторые протоколы используют его для быстрого закрытия соединения.
Заключение
Итак мы рассмотрели протокол TCP — протокол управления передачей данных. TCP обеспечивают надежную передачу потока байт от одного приложения к другому. При этом TCP обеспечивает, как гарантию доставки данных, так и гарантию сохранении порядка следования сообщений.
TCP использует соединение между отправителем и получателем, которое необходимо установить до того, как начнется передача данных, а после завершения передачи соединение необходимо разорвать.
Рассмотрели различные варианты подтверждения сообщений. Остановка и ожидание, которые используются на канальном уровне и скользящее окно которое используется на транспортном уровне в протоколе TCP, для того чтобы повысить производительность передачи данных по протяженным высокоскоростным каналам связи, которые сейчас широко используется в интернет.
Прежде чем передавать данные в TCP, необходимо сначала установить соединение, а после завершения передачи соединение необходимо разорвать. Для установки соединения в TCP используется схема трехкратного рукопожатия. Сначала передается сообщение SYN потом SYN + ACK и на третьем шаге ACK.
Для разрыва соединения возможны две схемы. Корректное закрытие соединения требует корректной отправки обеими сторонами сообщения FIN и получении подтверждения. Разрыв соединения в критической ситуации может быть выполнен быстро, отправкой одного сообщения RST. Таким образом накладные расходы в TCP особенно при передаче небольшого объема данных значительно выше чем в UDP, но соединение и отправка подтверждений позволяют TCP обеспечивать гарантию доставки и гарантию сохранения порядка следования сообщений.
Что такое модель TCP/IP протокола управления передачей данных?
Что такое TCP?
Протокол управления передачей (TCP) — это стандарт связи, который позволяет прикладным программам и вычислительным устройствам обмениваться сообщениями по сети. Он предназначен для отправки пакетов по интернету и обеспечения успешной доставки данных и сообщений по сетям.
TCP является одним из основных стандартов, определяющих правила Интернета, и включен в стандарты, определенные Инженерным советом Интернета (IETF). Это один из наиболее часто используемых протоколов в рамках цифровой сетевой связи, который обеспечивает сквозную доставку данных.
TCP организует данные таким образом, чтобы они могли передаваться между сервером и клиентом. Это гарантирует целостность данных, передаваемых по сети. Перед передачей данных TCP устанавливает соединение между источником и его пунктом назначения, что обеспечивает его функционирование до начала обмена данными. Затем он разбивает большие объемы данных на пакеты меньшего размера, обеспечивая целостность данных на протяжении всего процесса.
В результате TCP используется для передачи данных из высокоуровневых протоколов, которые требуют получения всех данных. К таким протоколам относятся протокол передачи файлов (FTP), «безопасная оболочка» (SSH) и Telnet. Он также используется для отправки и получения электронной почты через протокол для доступа к электронной почте (IMAP), протокол почтового отделения (POP) и простой протокол передачи почты (SMTP), а также для доступа к интернету через протокол передачи гипертекста (HTTP).
Альтернативой TCP является протокол пользовательских датаграмм (UDP), который используется для установления соединений с низкой задержкой между приложениями и ускорения передачи. TCP может быть дорогостоящим сетевым инструментом, так как он включает в себя отсутствующие или поврежденные пакеты и защищает доставку данных с помощью таких средств управления, как подтверждения, запуск соединения и управление потоком.
UDP не обеспечивает ошибочное соединение или последовательность пакетов, а также не сигнализирует о месте назначения до передачи данных, что делает его менее надежным, но и менее дорогим. Таким образом, он является хорошим вариантом для ситуаций, когда время важно, таких как поиск системы доменных имен (DNS), IP-телефония и потоковые мультимедиа.
Что такое IP?
Интернет-протокол (IP) — это метод передачи данных с одного устройства на другое по интернету. Каждое устройство имеет определяющий его уникальный IP-адрес, который позволяет обмениваться данными с другими устройствами, подключенными к интернету.
IP-адрес отвечает за определение того, как приложения и устройства обмениваются пакетами данных друг с другом. Это основной протокол связи, отвечающий за форматы и правила обмена данными и сообщениями между компьютерами в одной или нескольких сетях, подключенных к интернету. Это достигается с помощью пакета протоколов интернета (TCP/IP), группы протоколов связи, разделенных на четыре уровня абстракции.
IP является основным протоколом на уровне интернета TCP/IP. Его основной целью является доставка пакетов данных между исходным приложением или устройством и пунктом назначения с использованием методов и структур, которые размещают теги, такие как адресная информация, в пакетах данных.
TCP или IP: в чем разница?
TCP и IP являются отдельными протоколами, которые работают вместе, чтобы обеспечить доставку данных в предполагаемое место назначения в сети. IP получает и определяет адрес (IP-адрес) приложения или устройства, на которое должны быть отправлены данные. TCP также несет ответственность за передачу данных и обеспечение их доставки на определенное IP-устройство или целевое приложение.
Другими словами, IP-адрес совпадает с номером телефона, назначенным смартфону. TCP — это компьютерная сетевая версия технологии, активирующая звонок смартфона и позволяющая пользователю разговаривать со звонящим. Два протокола часто используются вместе и полагаются друг на друга, чтобы данные имели место назначения и безопасно достигали его, поэтому этот процесс зачастую называют TCP/IP.
Как работает TCP/IP?
Модель TCP/IP была разработана Министерством обороны США для обеспечения точной и правильной передачи данных между устройствами. Она разбивает сообщения на пакеты, чтобы избежать необходимости повторной отправки всего сообщения в случае возникновения проблемы при передачи. Пакеты повторно собираются после того, как они достигают места назначения. Каждый пакет может принимать разные маршруты между источником и компьютером назначения, в зависимости от того, перегружен или недоступен исходный маршрут.
TCP/IP разделяет задачи связи на уровни, которые поддерживают стандартизацию процесса, без необходимости самостоятельного управления оборудованием и программным обеспечением. Пакеты данных должны проходить через четыре слоя перед их получением целевым устройством, затем TCP/IP проходит через слои в обратном порядке, чтобы вернуть сообщение в исходный формат.
В качестве протокола, ориентированного на подключение, TCP устанавливает и поддерживает соединение между приложениями или устройствами, пока они не завершат обмен данными. Он определяет, как исходное сообщение должно быть разбито на пакеты и номера, повторно собирает пакеты и отправляет их на другие устройства в сети, такие как маршрутизаторы, шлюзы безопасности и коммутаторы, а затем на их место назначения. TCP также отправляет и получает пакеты с сетевого уровня, обрабатывает передачу любых потерянных пакетов, управляет потоком и обеспечивает доставку всех пакетов в пункт назначения.
Хорошим примером того, как это работает на практике, является отправка электронного письма с помощью SMTP с сервера электронной почты. Уровень TCP сервера разделяет сообщение на пакеты, нумерует их и пересылает на уровень IP, который затем передает каждый пакет на целевой сервер электронной почты. Когда пакеты поступают, они передаются на уровень TCP для повторной сборки в исходный формат сообщения и передаются на сервер электронной почты, который доставляет сообщение на почтовый ящик пользователя.
TCP/IP использует трехстороннее квитирование для установления соединения между устройством и сервером, что обеспечивает одновременную передачу нескольких соединений сокетов TCP в обоих направлениях. Устройство и сервер должны синхронизировать и подтверждать пакеты до начала обмена данными, после чего они могут вести переговоры, разделять и передавать соединения сокетов TCP.
4 уровня модели TCP/IP
Модель TCP/IP определяет, как устройства должны передавать данные между ними, и обеспечивает связь через сети и большие расстояния. Модель представляет, как данные обмениваются и упорядочиваются по сетям. Она разделена на четыре уровня, которые устанавливают стандарты обмена данными и представляют, как данные обрабатываются и упаковываются при доставке между приложениями, устройствами и серверами.
Четыре слоя модели TCP/IP:
Являются ли ваши пакеты данных частными по TCP/IP?
Пакеты данных, отправленные по TCP/IP, не являются частными. Это означает, что они могут быть видимы или перехвачены. Поэтому крайне важно избегать использования общедоступных сетей Wi-Fi для отправки личных данных и обеспечения шифрования информации. Одним из способов шифрования данных, передаваемых через TCP/IP, является виртуальная частная сеть (VPN).
Что такое мой TCP/IP-адрес?
Для настройки сети может потребоваться TCP/IP-адрес, который, скорее всего, требуется в локальной сети.
Поиск общедоступного IP-адреса — это простой процесс, который можно произвести с помощью различных онлайн-инструментов. Эти инструменты быстро определяют IP-адрес используемого устройства вместе с IP-адресом хоста пользователя, поставщиком интернет-услуг (ISP), удаленным портом и типом используемого браузера, устройства и операционной системы.
Другой способ обнаружения TCP/IP — это страница администрирования маршрутизатора, на которой отображаются текущий общедоступный IP-адрес пользователя, IP-адрес маршрутизатора, маска подсети и другая информация о сети.
Как Fortinet может помочь
Компания Fortinet позволяет организациям безопасно обмениваться данными и передавать их через модель TCP/IP с помощью решений VPN протокола интернет-безопасности (IPsec)/уровня защищенных сокетов (SSL) FortiGate. Высокопроизводительные масштабируемые крипто-VPN Fortinet защищают организации и их пользователей от продвинутых кибератак, таких как атаки типа «человек посередине» (MITM), а также от угрозы потери данных при передаче на высокой скорости. Это крайне важно для передачи данных через TCP/IP, который не защищает пакеты данных во время их передачи.
Решения VPN Fortinet обеспечивают безопасность коммуникаций организаций через интернет, по нескольким сетям и между конечными точками. Это достигается за счет использования технологий IPsec и SSL, использующих аппаратное ускорение Fortinet FortiASIC для обеспечения высокопроизводительной связи и конфиденциальности данных.
VPN Fortinet маскируют IP-адрес пользователя и создают частное соединение для обмена данными независимо от безопасности используемого интернет-соединения. Они устанавливают безопасные соединения путем шифрования данных, передаваемых между приложениями и устройствами. Это устраняет риск того, что конфиденциальные данные будут переданы третьим лицам во время передачи по TCP/IP, а также скроет историю просмотров, IP-адрес, местоположение, веб-активность и другую информацию об устройстве пользователя.
Ответы на вопросы
Для чего используется TCP?
TCP позволяет передавать данные между приложениями и устройствами в сети. Оно предназначено для разбивки сообщения, например сообщения электронной почты, на пакеты данных, чтобы оно было доставлено в пункт назначения как можно быстрее.
Что означает TCP?
TCP — протокол управления передачей, который является стандартом связи для доставки данных и сообщений через сети. TCP — это базовый стандарт, определяющий правила интернета и являющийся общим протоколом, используемым для передачи данных в средствах цифровой сетевой связи.
Что такое TCP и каковы его типы?
TCP — это протокол или стандарт, используемый для обеспечения успешной доставки данных из одного приложения или устройства в другое. TCP является частью протокола управления передачей/протокола интернета (TCP/IP), который является набором протоколов, изначально разработанных Министерством обороны США для поддержки построения интернета. Модель TCP/IP состоит из нескольких типов протоколов, включая протоколы TCP и IP, протокол разрешения адресов (ARP), протокол сообщений управления интернетом (ICMP), протокол разрешения обратных адресов (RARP) и протокол пользовательских данных (UDP).
TCP является наиболее часто используемым из этих протоколов и учетных записей для большинства трафика, используемого в сети TCP/IP. UDP является альтернативой TCP, которая не исправляет ошибок, является менее надежной и имеет меньше расходов, что делает ее идеальной для потоковой передачи.