Протокол TCP — назначение и функционал
На транспортном уровне стека TCP/IP используются два основных протокола: TCP и UDP. Общее представление о функциях транспортного уровня можно получит в соответствующей статьей. В данном тексте речь пойдёт о протоколе TCP (Transmission Control Protocol), который используется для обеспечения надёжной доставки данных на транспортном уровне.
Существуют общие задачи транспортного уровня, с которыми справляется как TCP, так и UDP. Основных задач собственно две: сегментация данных, приходящих с уровня приложений и адресация приложений (передающего и принимающего) при помощи портов. Подробнее об этом можно прочесть в статье, посвященной транспортному уровню.
Помимо этого, TCP обеспечивает:
- Надёжную доставку сегментов.
- Упорядочивание сегментов при получении.
- Работу с сессиями.
- Контроль за скоростью передачи.
Рассмотрим эти возможности более детально.
Надёжная доставка сегментов
Под надёжной доставкой подразумевается автоматическая повторная пересылка недошедших сегментов. Каждый сегмент маркируется при помощи специального поля — порядкового номера (sequence number). После отправки некоторого количества сегментов, TCP на отправляющем узле ожидает подтверждения от получающего, в котором указывается порядковый номер следующего сегмента, который адресат желает получить. В случае, если такое подтверждение не получено, отправка автоматически повторяется. После некоторого количества неудачных попыток, TCP считает, что адресат не доступен, и сессия разрывается.
Таким образом, надёжная доставка не означает, что ваши данные дойдут в случае, если кто-то выдернул кабель из коммутатора. Она означает, что разработчик ПО, использующий TCP на транспортном уровне знает, что если сессия не разорвалась, то всё что он поручил отправить будет доставлено получателю без потерь. Существует множество данных, критичных к потере любой порции информации. Например, если вы скачиваете приложение из интернета, то потеря одного байта будет означать, что вы не сможете воспользоваться тем что скачали. По этой причине многие протоколы уровня приложений используют для транспорта TCP.
Упорядочивание сегментов при получении
Как несложно догадаться, каждый сегмент на нижний уровнях TCP/IP обрабатывается индивидуально. То есть, как минимум, он будет запакован в индивидуальный пакет. Пакеты идут по сети и промежуточные маршрутизаторы в общем случае уже ничего не знают о том, что запаковано в эти пакеты. Часто пакеты с целью балансировки нагрузки могут идти по сети разными путями, через разные промежуточные устройства, с разной скоростью. Таким образом получатель, декапсулировав их, может получить сегменты не в том порядке, в котором они отправлялись.
TCP автоматически пересоберёт их в нужном порядке используя всё то же поле порядковых номеров и передаст после склейки на уровень приложений.
Работа с сессиями
Перед началом передачи полезных данных, TCP позволяет убедиться в том, что получатель существует, слушает нужный отправителю порт и готов принимать данные для этого устанавливается сессия при помощи механизма трёхстороннего рукопожатия (three-way handshake), о котором можно прочесть в соответствующей статье. Далее, в рамках сессии передаются полезные пользовательские данные. После завершения передачи сессия закрывается, тем самым получатель извещается о том, что данных больше не будет, а отправитель извещается о том, что получатель извещён.
Контроль за скоростью передачи
Контроль за скоростью передачи позволяет корректировать скорость отправки данных в зависимости от возможностей получателя. Например, если быстрый сервер отправляет данные медленному телефону, то сервер будет передавать данные с допустимой для телефона скоростью.
Благодаря механизму скользящего окна (sliding window), TCP может работать с сетями разной надёжности. Механизм плавающего окна позволяет менять количество пересылаемых байтов, на которые надо получать подтверждение от адресата. Чем больше размер окна, тем больший объём информации будет передан до получения подтверждения. Для надёжных сетей подтверждения можно присылать редко, чтобы не добавлять трафика, поэтому размер окна в таких сетях автоматически увеличивается. Если же TCP видит, что данные теряются, размер окна автоматически уменьшается. Это связанно с тем, что если мы передали, например, 3 килобайта информации и не получили подтверждения, то мы не знаем, какая конкретно часть из них не дошла и вынуждены пересылать все три килобайта заново. Таким образом, для ненадёжных сетей, размер окна должен быть минимальным.
Механизм скользящего окна позволяет TCP постоянно менять размер окна — увеличивать его пока всё нормально и уменьшать, когда сегменты не доходят. Таким образом, в любой момент времени размер окна будет более или менее адекватен состоянию сети.
Структура TCP
Заголовок TCP сегмента имеет следующую структуру:
- Source port и Destination port — это соответственно номера портов получателя и отправителя, идентифицирующие приложений на отправляющем и принимающем узлах.
- Sequence number и Acknowledgment number — это порядковый номер сегмента и номер подтверждения, которые используются для надёжной доставки. Например, если отправитель шлёт сегмент с SN 100, то получатель может ответить на него ACK 101 SN200, что означает: «Я получил твой сегмент с номером 100 и жду от тебя 101-го, кстати, у меня своя нумерация. Мои номера начинаются с 200» Отправитель, в свою очередь, может ответить SN101 ACK201, что означает «Я получил от тебя сегмент с номером 200, могу принять следующий 201-ый, а вот тебе мой 101-ый сегмент, которого ты ждёшь». Ну и так далее.
- Header length — Это четырёхбитное поле, содержащее в себе длину заголовка TCP сегмента.
- Reserved — 6 зарезервированных на всякий случай бит.
- Control — поле с флагами, которые используются в процессе обмена информацией и описывают дополнительное назначение сегмента. Например, флаг FIN используется для завершения соединений, SYN и ACK — для установки.
- Window — содержит размер окна, о чём было сказано выше.
- Checksumm — контрольная сумма заголовка и данных.
- Urgent — признак важности (срочности) данного сегмента.
- Options — дополнительное необязательное поле, которое может использоваться, например, для тестирования протокола.
- В разделе данных содержатся собственно данные, полученные от протокола уровня приложений, либо их кусок, если данные пришлось разбивать.
Руководство по стеку протоколов TCP/IP для начинающих
Cтек протоколов TCP/IP широко распространен. Он используется в качестве основы для глобальной сети интернет. Разбираемся в основных понятиях и принципах работы стека.
Основы TCP/IP
Разработкой этих протоколов занималось Министерство обороны США, поэтому иногда модель TCP/IP называют DoD (Department of Defence) модель. Если вы знакомы с моделью OSI, то вам будет проще понять построение модели TCP/IP, потому что обе модели имеют деление на уровни, внутри которых действуют определенные протоколы и выполняются собственные функции. Мы разделили статью на смысловые части, чтобы было проще понять, как устроена модель TCP/IP:
Уровневая модель TCP/IP
Выше мы уже упоминали, что модель TCP/IP разделена на уровни, как и OSI, но отличие двух моделей в количестве уровней. Документом, регламентирующим уровневую архитектуру модели и описывающий все протоколы, входящие в TCP/IP, является RFC 1122. Стандарт включает четыре уровня модели TCP/IP, хотя, например, согласно Таненбауму (Таненбаум Э., Уэзеролл Д. Т18 Компьютерные сети. 5-е изд. — СПб.: Питер, 2012. — 960 с.: ил. ISBN 978-5-459-00342-0), в модели может быть пять уровней.
Три верхних уровня — прикладной, транспортный и сетевой — присутствуют как в RFC, так и у Таненбаума и других авторов. А вот стоит ли говорить только о канальном или о канальном и физическом уровнях — нет единого мнения. В RFC они объединены, поскольку выполняют одну функцию. В статье мы придерживаемся официального интернет-стандарта RFC и не выделяем физический уровень в отдельный. Далее мы рассмотрим четыре уровня модели.
Канальный уровень (link layer)
Предназначение канального уровня — дать описание тому, как происходит обмен информацией на уровне сетевых устройств, определить, как информация будет передаваться от одного устройства к другому. Информация здесь кодируется, делится на пакеты и отправляется по нужному каналу, т.е. среде передачи.
Этот уровень также вычисляет максимальное расстояние, на которое пакеты возможно передать, частоту сигнала, задержку ответа и т.д. Все это — физические свойства среды передачи информации. На канальном уровне самым распространенным протоколом является Ethernet, но мы рассмотрим его на примере в конце статьи.
Межсетевой уровень (internet layer)
Каждая индивидуальная сеть называется локальной, глобальная сеть интернет позволяет объединить все локальные сети. За объединение локальных сетей в глобальную отвечает сетевой уровень. Он регламентирует передачу информации по множеству локальных сетей, благодаря чему открывается возможность взаимодействия разных сетей.
Межсетевое взаимодействие — это основной принцип построения интернета. Локальные сети по всему миру объединены в глобальную, а передачу данных между этими сетями осуществляют магистральные и пограничные маршрутизаторы.
Маска подсети и IP-адреса
Маска подсети помогает маршрутизатору понять, как и куда передавать пакет. Подсетью может являться любая сеть со своими протоколами. Маршрутизатор передает пакет напрямую, если получатель находится в той же подсети, что и отправитель. Если же подсети получателя и отправителя различаются, пакет передается на второй маршрутизатор, со второго на третий и далее по цепочке, пока не достигнет получателя.
Протокол интернета — IP (Internet Protocol) используется маршрутизатором, чтобы определить, к какой подсети принадлежит получатель. Свой уникальный IP-адрес есть у каждого сетевого устройства, при этом в глобальной сети не может существовать два устройства с одинаковым IP. Он имеет два подвида, первым был принят IPv4 (IP version 4, версии 4) в 1983 году.
IPv4 предусматривает назначение каждому устройству 32-битного IP-адреса, что ограничивало максимально возможное число уникальных адресов 4 миллиардами (232). В более привычном для человека десятичном виде IPv4 выглядит как четыре блока (октета) чисел от 0 до 255, разделенных тремя точками. Первый октет IP-адреса означает его класс, классов всего 4: A, B, C, D.Рассмотрим, например, IPv4 адрес класса С 223.135.100.7. Первые два октета 223.135 определяют класс, третий — .100 — это номер подсети, а последний означает номер сетевого оборудования. Например, если необходимо отправить информацию с компьютера номер 7 с IPv4 адресом 223.135.100.7 на компьютер номер 10 в той же подсети, то адрес компьютера получателя будет следующий: 223.135.100.10.
В связи с быстрым ростом сети интернет остро вставала необходимость увеличения числа возможных IP-адресов. В 1998 впервые был описан IPv6 (IP version 6, версии 6), который использует 128-битные адреса, и позволяет назначить уникальные адреса для 2128 устройств. Такого количества IPv6 адресов будет достаточно, чтобы назначить уникальный адрес для каждого атома на планете.IPv6 имеет вид восьми блоков по четыре шестнадцатеричных значения, а каждый блок разделяется двоеточием. IPv6 выглядит следующим образом:
2DAB:FFFF:0000:0000:01AA:00FF:DD72:2C4A.
Так как IPv6 адреса длинные, их разрешается сокращать по следующим правилам: ведущие нули допускается опускать, например в адресе выше :00FF: позволяется записывать как :FF:, группы нулей, идущие подряд тоже допустимо сокращать и заменять на двойное двоеточие, например, 2DAB:FFFF::01AA:00FF:DD72:2C4A. Допускается делать не больше одного подобного сокращения в адресе IPv6.
IP предназначен для определения адресата и доставки ему информации, он предоставляет услугу для вышестоящих уровней, но не гарантирует целостность доставляемой информации.
IP способен инкапсулировать другие протоколы, предоставлять место, куда они могут быть встроены. Как было сказано выше, IP — это 32 бита информации, первые 8 бит в заголовке IP — поля для указания номера инкапсулируемого протокола. Для IPv4 первые 8 бит — поле «протокол», для IPv6 — поле «следующий заголовок». Например, ICMP (межсетевой протокол управляющих сообщений) будет обозначен числом 1, а IGMP (межсетевой протокол группового управления) будет обозначен числом 2.
ICMP и IGMP
ICMP используется в качестве поддержки маршрутизаторами и другими сетевыми устройствами. Внутри сети он служит для доставки сообщений об ошибках и операционной информации, сообщающей об успехе или ошибке при связи с другим IP. Например, в ситуациях, когда необходимый сервис не может быть запрошен, или когда не был получен ответ от маршрутизатора или хоста.
ICMP никогда не вызывается сетевыми приложениями пользователя, кроме случаев диагностики сети, к примеру, пинг (ping) или traceroute (tracert). ICMP не передает данные, это отличает его от транспортных TCP и UDP, расположенных на L3, которые переносят любые данные. ICMP работает только с IP четвертой версии, с IPv6 взаимодействует ICMPv6.
Сетевые устройства объединяются в группы при помощи IGMP, используемый хостами и роутерами в IPv4 сетях. IGMP организует multicast-передачу информации, что позволяет сетям направлять информацию только хостам, запросившим ее. Это удобно для онлайн-игр или потоковой передаче мультимедиа. IGMP используется только в IPv4 сетях, в сетях IPv6 используется MLD (Multicast Listener Discovery, протокол поиска групповых слушателей), инкапсулированный в ICMPv6.
Транспортный уровень (transport layer)
Постоянные резиденты транспортного уровня — протоколы TCP и UDP, они занимаются доставкой информации.
TCP (протокол управления передачей) — надежный, он обеспечивает передачу информации, проверяя дошла ли она, насколько полным является объем полученной информации и т.д. TCP дает возможность двум хостам производить обмен пакетами через установку соединения. Он предоставляет услугу для приложений, повторно запрашивает потерянную информацию, устраняет дублирующие пакеты, регулируя загруженность сети. TCP гарантирует получение и сборку информации у адресата в правильном порядке.
UDP (протокол пользовательских датаграмм) — ненадежный, он занимается передачей автономных датаграмм. UDP не гарантирует, что всех датаграммы дойдут до получателя. Датаграммы уже содержат всю необходимую информацию, чтобы дойти до получателя, но они все равно могут быть потеряны или доставлены в порядке отличном от порядка при отправлении.
UDP обычно не используется, если требуется надежная передача информации. Использовать UDP имеет смысл там, где потеря части информации не будет критичной для приложения, например, в видеоиграх или потоковой передаче видео. UDP необходим, когда делать повторный запрос сложно или неоправданно по каким-то причинам.
Протоколы L3 не интерпретируют информацию, полученную с верхнего или нижних уровней, они служат только как канал передачи, но есть исключения. RSVP (Resource Reservation Protocol, протокол резервирования сетевых ресурсов) может использоваться, например, роутерами или сетевыми экранами в целях анализа трафика и принятия решений о его передаче или отклонении в зависимости от содержимого.
Прикладной уровень (application layer)
В модели TCP/IP отсутствуют дополнительные промежуточные уровни (представления и сеансовый) в отличие от OSI. Функции форматирования и представления данных делегированы библиотекам и программным интерфейсам приложений (API) — своего рода базам знаний. Когда службы или приложения обращаются к библиотеке или API, те в ответ предоставляют набор действий, необходимых для выполнения задачи и полную инструкцию, каким образом эти действия нужно выполнять.
Протоколы прикладного уровня действуют для большинства приложений, они предоставляют услуги пользователю или обмениваются данными с «коллегами» с нижних уровней по уже установленным соединениям. Здесь для большинства приложений созданы свои протоколы, например HTTP для передачи гипертекста по сети, SMTP для передачи почты, FTP для передачи файлов, протокол назначения IP-адресов DHCP и прочие.
Зачем нужен порт и что означает термин сокет
Приложения прикладного уровня, общаются также с предыдущим, транспортным, но они видят его протоколы как «черные ящики». Для приема-передачи информации они могут работать с TCP или UDP, но понимают только конечный адрес в виде IP и порта, а не принцип их работы.
IP присваивается каждому компьютеру межсетевым уровнем, но обмен данными происходит не между компьютерами, а между приложениями, установленными на них. Чтобы получить доступ к тому или иному сетевому приложению недостаточно только IP, для идентификации приложений применяют порты. Комбинация IP-адреса и порта называется сокетом или гнездом (socket). Поэтому обмен информацией происходит между сокетами. Нередко слово сокет употребляют как синоним для хоста или пользователя, также сокетом называют гнездо подключения процессора.
Из привилегий у приложений на прикладном уровне можно выделить наличие собственных протоколов для обмена данными, а также фиксированный номер порта для обращения к сети. Администрация адресного пространства интернет (IANA), занимающаяся выделением диапазонов IP-адресов, отвечает еще за назначение сетевым приложениям портов.
Так почтовые приложения, которые общаются по SMTP-протоколу, прослушивают порт 25, почта через POP3 приходит на 110-й, по HTTP принимают сообщения веб-сервера — это порт 80, 21-й зарезервирован за FTP. Порт всегда записывается после IP и отделяется от него двоеточием, выглядит это, например, так: 192.168.1.1:80.
Чтобы не запоминать числовые адреса интернет-серверов была создана DNS — служба доменных имен. DNS всегда слушает на 53 порту и преобразует буквенные имена сетевых доменов в числовые IP-адреса и наоборот. Служба DNS позволяет не запоминать IP — компьютер самостоятельно посылает запрос «какой IP у Selectel.ru?» на 53 порт DNS-сервера, полученного от поставщика услуг интернет.
DNS-сервер дает компьютеру ответ «IP для Selectel.ru — XXX.XXX.XXX.XXX». Затем, компьютер устанавливает соединение с веб-сервером полученного IP, который слушает на порту 80 для HTTP-протокола и на порту 443 для HTTPS. В браузере порт не отображается в адресной строке, а используется по умолчанию, но, по сути, полный адрес сайта Selectel выглядит вот так: https://selectel.ru:443.
Процесс, кодирования данных на прикладном уровне, передача их на транспортном, а затем на межсетевом и, наконец, на канальном уровне называется инкапсуляцией данных. Обратная передача битов информации по иерархии, с канального на прикладной уровни, называют декапсуляцией. Оба процесса осуществляются на компьютерах получателя и отправителя данных попеременно, это позволяет долго не удерживать одну сторону канала занятой, оставляя время на передачу информации другому компьютеру.
Стек протоколов, снова канальный уровень
О канальном уровне модели TCP/IP мы рассказали меньше всего, давайте вернемся еще раз к началу, чтобы рассмотреть инкапсуляцию протоколов и, что значит «стек».
Большинству пользователей знаком протокол Ethernet. В сети, по стандарту Ethernet, устройства отправителя и адресата имеют определенный MAC-адрес — идентификатор «железа». MAC-адрес инкапсулируется в Ethernet вместе с типом передаваемых данных и самими данными. Фрагмент данных, составленных в соответствии с Ethernet называется фреймом или кадром (frame).
MAC-адрес каждого устройства уникален и двух «железок» с одинаковым адресом не должно существовать, хотя порой такое случается, что приводит к сетевым проблемам. Таким образом, при получении сетевой адаптер занимается извлечением полученной информации из кадра и ее дальнейшей обработкой.
После ознакомления с уровневой структурой модели становится понятно, что информация не может передаваться между двумя компьютерами напрямую. Сначала кадры передаются на межсетевой уровень, где компьютеру отправителя и компьютеру получателя назначается уникальный IP. После чего, на транспортном уровне, информация передается в виде TCP-фреймов либо UDP-датаграмм.
На каждом этапе, подобно снежному кому, к уже имеющейся информации добавляется служебная информация, например, порт на прикладном уровне, необходимый для идентификации сетевого приложения. Добавление служебной информации к основной обеспечивают разные протоколы — сначала Ethernet, поверх него IP, еще выше TCP, над ним порт, означающий приложение с делегированным ему протоколом. Такая вложенность называется стеком, названным TCP/IP по двум главным протоколам модели.
Point-to-Point протоколы
Отдельно расскажем о Point-to-Point (от точки к точке, двухточечный) протоколе также известном как PPP. PPP уникален по своим функциям, он применяется для коммуникации между двумя маршрутизаторами без участия хоста или какой-либо сетевой структуры в промежутке. При необходимости, PPP обеспечивает аутентификацию, шифрование, а также сжатие данных. Он широко используется при построении физических сетей, например, кабельных телефонных, сотовых телефонных, сетей по кабелю последовательной передачи и транк-линий (когда один маршрутизатор подключают к другому для увеличения размера сети).
У PPP есть два подвида — PPPoE (PPP по Ethernet) и PPPoA (PPP через асинхронный способ передачи данных — ATM), интернет-провайдеры часто их используют для DSL соединений.
PPP и его старший аналог SLIP (протокол последовательной межсетевой связи) формально относятся к межсетевому уровню TCP/IP, но в силу особого принципа работы, иногда выделяются в отдельную категорию. Преимущество PPP в том, что для установки соединения не требуется сетевая инфраструктура, а необходимость маршрутизаторов отпадает. Эти факторы обуславливают специфику использования PPP протоколов.
Заключение
Стек TCP/IP регламентирует взаимодействие разных уровней. Ключевым понятием в здесь являются протоколы, формирующие стек, встраиваясь друг в друга с целью передать данные. Рассмотренная модель по сравнению с OSI имеет более простую архитектуру.
Сама модель остается неизменной, в то время как стандарты протоколов могут обновляться, что еще дальше упрощает работу с TCP/IP. Благодаря всем преимуществам стек TCP/IP получил широкое распространение и использовался сначала в качестве основы для создания глобальной сети, а после для описания работы интернета.
Что такое TCP?
Протокол управления передачей данных (TCP) является наиболее распространенным протоколом, используемым в Интернете. Он ориентирован на соединение, т.е. данные могут быть отправлены двунаправленно, как только соединение установлено. Протокол управления передачей данных используется чаще, чем протокол User Datagram Protocol (UDP). В отличие от UDP, она включает в себя автоматическую систему проверки ошибок, чтобы убедиться, что каждый пакет доставлен в соответствии с запросом. Протокол User Datagram Protocol, с другой стороны, не предоставляет такую систему, которая требует подтверждения того, что пакетная передача прошла успешно. Эта встроенная проверка ошибок, хотя и более эффективна, но замедляет работу по сравнению с UDP, так как она определяет приоритеты точной передачи данных между системами.
Поэтому TCP очень предпочтительна при передаче большинства типов данных, таких как файлы и веб-страницы, через сетевые системы. UDP, с другой стороны, более идеально подходит для онлайн-медиа и потоковой передачи, поскольку не требует, чтобы все пакеты были функциональными.
Функциональность
Протокол управления передачей работает, когда пользователи загружают веб-страницу в свой веб-браузер, что подразумевает отправку TCP-пакетов с компьютера на адрес хост-сервера веб-сайта. Эти пакеты посылают запрос на получение содержимого страницы сайта с хост-сервера для доступа пользователя. Поток TCP-пакетов отправляется пользователю или оконечному устройству в качестве ответа веб-сервера. Затем веб-браузер отвечает за склеивание этих пакетов для считывания отображаемых данных, чтобы пользователь мог их увидеть. Когда пользователи регистрируются на определенном веб-сайте или размещают комментарии в Интернете, они полагаются на ПТС. Система подразумевает не только отправку пакетов, но и подтверждение того, что эти пакеты также получены. Это гарантировано системой нумерации.
Через систему, получение неверного ответа вызовет повторное получение пакетов, чтобы убедиться, что запрашивающие получатели получат правильные данные, запрошенные для получения. Пакеты, отправляемые в рамках TCP, делают соединение более надежным, так как эти данные отслеживаются, т.е. данные не повреждаются и не теряются при передаче. Вот почему пользователи все еще могут получить полный и бесперебойный файл даже в периоды, когда сеть испытывает икоту или помехи. В некоторых случаях, когда приемник находится в автономном режиме, компьютер посылает сообщение об ошибке, в котором говорится, что он не смог связаться с удаленным узлом.
Эффекты
Протокол управления передачей данных, являющийся одним из наиболее широко используемых протоколов в Интернете, все еще имеет свои плюсы и минусы, как и любой другой используемый протокол. Она по-прежнему обладает потенциалом для оптимизации и совершенствования. Ниже приводятся некоторые из плюсов и минусов ПТС, отмеченные при ее использовании через Интернет.
Преимущества
Это надежно, так как получение и подтверждение пакетов гарантировано. Он также ориентирован на подключение, т.е. требует от конечных точек создания защищенного канала перед передачей сообщений. Пакеты не будут повреждены или утеряны во время транзита, то есть вы получите то, о чем просили.
Недостатки
Известно, что он имеет низкую производительность в беспроводных сетях. Это в первую очередь потому, что беспроводные линии обычно падают пакеты во время транзита из-за «шума» на радиоканале, и что перегруженность сети является индикатором потери пакетов. Поскольку для доставки сообщения требуется полный набор пакетов, это может вызвать короткую задержку в передаче, когда пакеты теряются по пути, что приведет к увеличению времени ожидания загрузки и быстрому времени запаздывания.
Порты и протоколы
Поскольку он ориентирован на подключение, ему требуются порты для простой передачи и передачи данных и других файлов. Ниже приведены некоторые из наиболее распространенных протоколов и их соответствующие порты, используемые в TCP. Некоторые из них часто используются в местных офисах, обеспечивая доступность безопасной передачи данных и файлов в корпоративных сетях.
Протокол передачи файлов (FTP RFC 959: Порты 20/21)
Это один из наиболее часто используемых протоколов в Интернете и даже в частных сетях. Любой, у кого мало знаний о работе в сети, может настроить FTP-сервер. Это обеспечит простое перемещение файлов из одной системы в другую. Управление осуществляется через порт TCP 21, в то время как порт передачи данных — через порт TCP 20.
Протокол передачи гипертекста (RFC 2616: порт 80)
HTTP является одним из наиболее широко используемых протоколов в большинстве сетей и в Интернете. Это основной протокол, используемый веб-браузерами и наиболее часто используемый клиентами во всем мире.
Протокол передачи гипертекста по протоколу SSL/TLS (HTTPS RFC 2818: порт 443)
В сочетании с HTTP, основная роль HTTPS заключается в предоставлении тех же услуг через защищенное соединение, которое осуществляется либо с помощью Secure Sockets Layer, либо с помощью Transport Layer Security.
Защищенная оболочка (RFC 4250-4256: порт 22)
Secure Shell (SSH) — это протокол командного уровня, который в первую очередь управляет используемыми сетевыми устройствами. Это обычно используется в качестве альтернативы Telnet, который не обеспечивает безопасное соединение.
Telnet (RFC 854 — порт 23)
В отличие от Secure Shell, Telnet не обеспечивает защищенное соединение. По сути, он обеспечивает незащищенность. Поскольку он незащищен, большинство сетевых устройств более низкого уровня используют его вместо SSH, что требует дополнительной обработки. Справедливое предупреждение: использование Telnet через публичные сети может показать ваши учетные данные для входа в систему под открытым небом.
Протокол простой почтовой передачи (SMTP — порт 25)
SMTP используется в основном для двух функций. Используя порт 25 TCP, он в основном предназначен для передачи почты (электронной почты) от источника к получателю между почтовыми серверами, а также конечным пользователям для отправки почты в почтовую систему.
История
Первоначально разработанные в рамках исследовательской сети в рамках передовых исследовательских проектов обороны США или DARPA, протоколы управления передачей или ранее известные как Программа управления передачей, были разработаны и запущены в 1974 году учеными Винтоном Грей «Винт» Серфом и Робертом Эллиотом Каном. Позже их назвали «Отцами Интернета». ARPAnet был затем разработан как зрелая система межсетевых протоколов с TCP в качестве основного основного протокола. Написанная в 1973 году, она является первой версией предшественницы современной TCP. Он был пересмотрен и официально задокументирован в запросе на комментарии 675, озаглавленном Спецификация Программы контроля за передачей через Интернет, в декабре 1974 года. Протокол управления передачей данных является одним из наиболее широко используемых протоколов вместе с Интернет-протоколом. С момента своего создания в 1974 году, многие изменения, дополнения и нововведения, внесенные в настоящее время в Запрос комментариев (RFC), привели к тому, что многие из них стали реальностью.
Порты TCP [АйТи бубен]
Порт (port) — натуральное число, записываемое в заголовках протоколов транспортного уровня модели OSI (TCP, UDP, SCTP, DCCP).
Номера портов разделены на три диапазона: стандартные, зарегистрированные и динамические или частные:
В стеке TCP/IP определены 4 уровня.
Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 216-1=65 535.
Чтобы установить соединение между двумя процессами на разных компьютерах сети, необходимо знать не только интернет-адреса компьютеров, но и номера тех ТСР-портов (sockets), которые процессы используют на этих компьютерах. Любое TCP-соединение в сети Интернет однозначно идентифицируется двумя IP-адресами и двумя номерами ТСР-портов.
Протокол TCP умеет работать с поврежденными, потерянными, дублированными или поступившими с нарушением порядка следования пакетами. Это достигается благодаря механизму присвоения каждому передаваемому пакету порядкового номера и механизму проверки получения пакетов.
Когда протокол TCP передает сегмент данных, копия этих данных помещается в очередь повтора передачи и запускается таймер ожидания подтверждения.
Активные TCP соединения с интернетом (w/o servers)
# netstat -nt Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.26.95.251:56981 10.161.85.55:22 ESTABLISHED tcp 0 0 10.26.95.251:44596 10.26.95.226:2193 ESTABLISHED
Для сокетов TCP допустимы следующие значения состояния:
CLOSED Закрыт. Сокет не используется. LISTEN Сокет ожидает входящих соединений. SYN_SENT Активно пытается установить соединение. Cокет в процессе установки соединения. SYN_RECEIVED (SYN_RCVD) Идет начальная синхронизация соединения. Был принят запрос установки соединения из сети. ESTABLISHED Соединение установлено. CLOSE_WAIT Удаленная сторона отключилась; ожидание закрытия сокета. FIN_WAIT_1 Сокет закрыт; соединение закрывается. CLOSING Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения. LAST_ACK Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения. FIN_WAIT_2 Сокет закрыт; ожидание отключения удаленной стороны. TIME_WAIT Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки UNKNOWN Статус сокета неизвестен.
TCP RST – это сегмент TCP (обратите внимание, что TCP посылает сообщения сегментами, а НЕ пакетами, что часто неправильно употребляется в среде сетевых администраторов), который показывает, что с соединением что-то не так. RST посылается в следующих случаях:
Как работает TCP протокол? | Сеть без проблем
Протокол управления передачей (TCP) является одним из самых важных протоколов пакета Internet Protocols. Это наиболее широко используемый протокол для передачи данных в сети связи, такой как Интернет.
- TCP — надежный протокол. То есть, приемник всегда отправляет отправителю положительное или отрицательное подтверждение о пакете данных, так что отправитель всегда имеет яркое представление о том, достигнут ли пакет данных адресату или ему нужно повторно отправить его.
- TCP гарантирует, что данные достигнут назначенного адресата в том же порядке, в котором он был отправлен.
- TCP ориентирован на соединение. TCP требует установления соединения между двумя удаленными точками перед отправкой фактических данных.
- TCP обеспечивает механизм проверки и восстановления ошибок.
- TCP обеспечивает сквозную связь.
- TCP обеспечивает контроль потока и качество обслуживания.
- TCP работает в режиме «точка-точка» Client / Server.
- TCP обеспечивает полный дуплексный сервер, т. Е. Он может выполнять роли как получателя, так и отправителя.
Длина заголовка TCP составляет минимум 20 байтов и максимум 60 байт.
- Source Port (16 бит). Он определяет порт источника процесса приложения на отправляющем устройстве.
- Destination Port (16 бит) — определяет порт назначения процесса приложения на принимающем устройстве.
- Sequence Number (32 бита) — порядковый номер байтов данных сегмента в сеансе.
- Acknowledgement Number (32 бита). Когда установлен флаг ACK, это число содержит следующий порядковый номер ожидаемого байта данных и работает как подтверждение предыдущих полученных данных.
- Data Offset (4 бита). В этом поле подразумеваются как размер заголовка TCP (32-разрядные слова), так и смещение данных в текущем пакете во всем сегменте TCP.
- Reserved (3 бита) — зарезервировано для будущего использования, и все по умолчанию устанавливаются в ноль.
- Флаги (по 1 бит)
- NS — бит Nonce Sum используется сигнальным процессом Явного сообщения о перегрузке.
- CWR. Когда хост получает пакет с установленным битом ECE, он устанавливает, что Congestion Windows Reduced подтверждает, что полученная от ЕС.
- ECE — имеет два значения:
- Если бит SYN очищен до 0, значит, ECE означает, что пакет IP имеет установленный бит CE (перегрузка).
- Если бит SYN установлен в 1, ECE означает, что устройство поддерживает ECT.
- URG — указывает, что поле Urgent Pointer имеет значительные данные и должно обрабатываться.
- ACK — указывает, что поле «Подтверждение» имеет значение. Если ACK очищен до 0, это означает, что пакет не содержит подтверждения.
- PSH — если установлено, это запрос на принимающую станцию на данные PUSH (как только это произойдет) в принимающее приложение без его буферизации.
- RST — флаг сброса. Он используется для отказа от входящего соединения, отклонения сегмента, перезапуска соединения.
- SYN — этот флаг используется для настройки соединения между хостами.
- FIN — этот флаг используется для освобождения соединения, и после этого больше не обменивается данными. Поскольку пакеты с символами SYN и FIN имеют порядковые номера, они обрабатываются в правильном порядке.
- Windows Size — это поле используется для управления потоком между двумя станциями и указывает объем буфера (в байтах), выделенный получателем для сегмента, т. Е. Сколько данных ожидает приемник.
- Checksum — это поле содержит контрольную сумму заголовков, данных и псевдо-заголовков.
- Urgent Pointer. Он указывает на аварийный байт данных, если флаг URG установлен в 1.
- Options — обозначает дополнительные опции, которые не покрываются обычным заголовком. Поле опций всегда описывается в 32-битных словах. Если это поле содержит данные размером менее 32 бит, для заполнения оставшихся битов используется дополнение, чтобы достичь 32-разрядной границы.
Адресация
Связь TCP между двумя удаленными хостами выполняется с помощью номеров портов (TSAP). Номера портов могут варьироваться от 0 до 65535, которые делятся как:
- Порты системы (0 — 1023)
- Порты пользователей (1024 — 49151)
- Частные / динамические порты (49152 — 65535)
Управление подключениями
Связь TCP работает в модели Server / Client. Клиент инициирует соединение, и сервер либо принимает, либо отклоняет его. Для управления подключением используется трехстороннее связывание.
Установка соединения
Клиент инициирует соединение и отправляет сегмент с порядковым номером. Сервер подтверждает это со своим собственным порядковым номером и ACK сегмента клиента, который является еще одним номером последовательности клиентов. Клиент после получения ACK своего сегмента отправляет подтверждение ответа сервера.
Любой из серверов и клиентов может отправлять сегмент TCP с флагом FIN, установленным в 1. Когда принимающая сторона отвечает на это посредством ACKnowlinging FIN, это направление связи TCP закрывается и соединение освобождается.
Управление полосой пропускания
TCP использует концепцию размера окна, чтобы удовлетворить потребность в управлении пропускной способностью. Размер окна сообщает отправителю на удаленном конце, количество сегментов байтов данных, которое может получить приемник с этого конца. TCP использует медленную фазу запуска с использованием размера окна 1 и увеличивает размер окна по экспоненте после каждого успешного сообщения.
Например, клиент использует размер окна 2 и отправляет 2 байта данных. Когда подтверждение этого сегмента получено, размер окна удваивается до 4, а следующий отправленный сегмент отправляется длиной 4 байта данных. Когда получено подтверждение 4-байтового сегмента данных, клиент устанавливает размер окна 8 и т. Д.
Если упущено подтверждение, то есть данные, потерянные в транзитной сети или полученные NACK, размер окна уменьшается до половины, а медленная начальная фаза начинается снова.
Контроль ошибок и контроль потока
TCP использует номера портов, чтобы узнать, какой процесс приложения ему нужен для передачи сегмента данных. Наряду с этим он использует порядковые номера для синхронизации с удаленным хостом. Все сегменты данных отправляются и принимаются с порядковыми номерами. Отправитель знает, какой последний сегмент данных был принят Получателем, когда он получает ACK. Получатель знает о последнем сегменте, отправленном отправителем, ссылаясь на порядковый номер недавно полученного пакета.
Если порядковый номер недавно полученного сегмента не совпадает с порядковым номером, который ожидал приемник, он отбрасывается и NACK отправляется обратно. Если два сегмента поступают с одинаковым порядковым номером, значение временной метки TCP сравнивается для принятия решения.
Мультиплексирование
Способ объединения двух или более потоков данных в один сеанс называется мультиплексированием. Когда клиент TCP инициализирует соединение с сервером, он всегда ссылается на четко определенный номер порта, который указывает на процесс приложения. Сам клиент использует случайный номер порта из частных пулов номеров портов.
Используя TCP Multiplexing, клиент может взаимодействовать с несколькими различными процессами приложения за один сеанс. Например, клиент запрашивает веб-страницу, которая, в свою очередь, содержит различные типы данных (HTTP, SMTP, FTP и т. Д.), Тайм-аут сеанса TCP увеличивается, и сеанс остается открытым на более длительное время, так что накладные расходы на трехстороннюю рукопожатие могут избегать.
Это позволяет клиентской системе получать несколько соединений по одному виртуальному соединению. Эти виртуальные соединения не подходят для серверов, если тайм-аут слишком длинный.
Контроль перегрузок
Когда большое количество данных подается в систему, которая не способна обрабатывать ее, происходит перегрузка. TCP управляет перегрузкой с помощью механизма Window. TCP устанавливает размер окна, говорящий на другом конце, сколько сегмента данных нужно отправить. TCP может использовать три алгоритма управления перегрузкой:
- Аддитивное увеличение, мультипликативное уменьшение
- Медленный старт
- Время ожидания
Управление таймером
TCP использует различные типы таймеров для управления и управления различными задачами:
Таймер сохранения:
- Этот таймер используется для проверки целостности и действительности соединения.
- Когда время ожидания сохраняется, хост отправляет пробник, чтобы проверить, существует ли соединение еще.
Таймер повторной передачи:
- Этот таймер поддерживает сеанс передачи данных с сохранением состояния.
- Если подтверждение отправленных данных не будет получено в течение времени повторной передачи, сегмент данных будет отправлен снова.
Постоянный таймер:
- Сеанс TCP может быть приостановлен хостом, отправив Размер окна 0.
- Чтобы возобновить сеанс, хосту необходимо отправить размер окна с некоторым большим значением.
- Если этот сегмент никогда не достигнет другого конца, оба конца могут ждать друг друга в течение бесконечного времени.
- Когда таймер Persist истекает, хост повторно отправляет свой размер окна, чтобы узнать другой конец.
Persist Timer помогает избежать взаимоблокировок в общении.
Timed-Wait:
- После освобождения соединения один из хостов ждет времени с пометкой времени, чтобы полностью завершить соединение.
- Это делается для того, чтобы убедиться, что другой конец получил подтверждение своего запроса о завершении соединения.
- Выдержка может быть не более 240 секунд (4 минуты).
Восстановление после аварий
TCP — очень надежный протокол. Он предоставляет порядковый номер для каждого байта, отправленного в сегменте. Он обеспечивает механизм обратной связи, т.е. когда хост получает пакет, он привязан к ACK, чтобы ожидал пакет, имеющий следующий порядковый номер (если он не является последним сегментом).
Когда TCP-сервер прерывает связь в середине и перезапускает его процесс, он отправляет трансляцию TPDU всем своим хостам. Затем хосты могут отправить последний сегмент данных, который никогда не был непризнан и продолжен.
Разбираем по косточкам компьютерные сети: HTTP, TCP, REST
Большинство разговоров о компьютерных сетях сводится к набору аббревиатур: HTTP, TCP, REST. Разберёмся в том, как всё устроено.
- Сети подразумевают передачу информации.
- Самый простой способ передачи информации — это текст.
- Протоколы — это наборы соглашений, что обеспечивают передачу данных.
Если не углубляться в сложную терминологию, то хорошим примером передачи информации послужат системы мгновенного обмена сообщениями (англ. IM — Instant messaging). Viber, Skype, Messenger, etc. Все они имеют отдельные серверы и протоколы, оснащены своими особенностями и правилами передачи данных. Теперь разбираемся подробно.
Протокол управления передачей (англ. TCP — Transmission Control Protocol) обеспечивает надежную доставку данных. Сервис TCP так и называется: reliable byte stream (надежная передача потока байт). Этот протокол отвечает за доставку данных и сохранение порядка передаваемых сообщений.
Поток может быть большим. Как же в этом случае работает протокол? Допустим, вы скачиваете файл, который весит несколько Гб. В протоколе поток будет разбиваться на сегменты, и каждый из этих сегментов — отправляться получателю. На стороне получателя все части снова собираются.
Чтобы обеспечить гарантию доставки данных, TCP использует подтверждение получения сообщений. Как это работает?
- От отправителя к получателю «уходит» некий сегмент данных.
- Приняв этот сегмент, получатель посылает отправителю подтверждение (ACK или Acknowledgement).
- Данный процесс повторяется, пока передаются данные.
А вот что происходит, если при передаче произошла ошибка: сегмент теряется в сети, не доходит до получателя, и подтверждение не отправляется. Со стороны отправителя есть таймер, который задает время ожидания подтверждения. По истечении этого времени и за неимением ACK сегмент отправляется повторно.
Вот только в протоколе TCP подтверждаются сразу несколько сегментов, которые отправляются друг за другом (механизм скользящего окна). В противном случае скорость обмена данными была бы ужасающе медленной.
В протоколе TCP также предусмотрена защита от дублирования и нарушения порядка сообщений (сообщения нумеруются).
Мы видим HTTP в каждой ссылке: http://google.com/. Что это значит? HTTP — это протокол передачи гипертекста. Грубо говоря, это тип разметки, которая добавляется в текстовые документы для определенного отображения текста. Например, в HTML используются теги:
Так это выглядит в браузере:
В стеке протоколов HTTP находится на прикладном уровне:
Он использует протокол TCP и порт сервера 80 (для клиента порт генерируется операционной системой).
Режим работы HTTP — запрос-ответ: клиент посылает серверу запрос на передачу web-страницы, после чего сервер пересылает эту страницу клиенту. При этом нет жестко заданного формата пакетов: используется текстовый режим.
REST представляет собой стиль архитектуры ПО для распределенных систем вроде World Wide Web. Используется, как правило, для построения веб-служб. Именно Рой Филдинг, один из авторов HTTP, ввел термин REST в 2000 году.
Это очень простой интерфейс управления данными, в котором не предусмотрены дополнительные внутренние «прослойки». Такой механизм означает передачу информации в точно том же виде, что и сама информация. Грубо говоря, мы не заворачиваем ее в XML, что присуще SOAP, не юзаем AMF, как Flash, etc.
Управление информацией основано на протоколе передачи данных. Наиболее распространенный — HTTP, о котором мы говорили ранее. В этом случае операции над информацией выполняются с помощью GET, PUT, POST, DELETE.
UDP и TCP — в чем разница между этими протоколами?
Обмен данными между устройствами, подключенными к всемирной паутине, осуществляется с помощью набора протоколов TCP/IP. Этот стек использует разный перечень протоколов, включая UDP и TCP. Специалисты, ответственные за разработку и наладку частных/корпоративных сетей, досконально понимают разницу между ними, но с точки зрения простого пользователя назначение этих протоколов, а также разница между ними, вызывает целый ряд вопросов.
Несмотря на то, что протоколы UDP и TCP ориентированы на выполнение одной задачи – передачу данных, между ними существует ряд принципиальных отличий.
- Процесс установки соединения. В UDP в нем нет необходимости, в то время как TCP нуждается в обязательной процедуре начала сеанса, состоящей из трех этапов.
- Гарантия обмена трафиком. TCP отправляет запрос на предмет целостности данных – если в ответ поступает запрос о потерянных пакетах, они будут отправлены повторно. За счет этого обеспечивается абсолютная гарантия целостной передачи. Использование UDP, в свою очередь, может привести к потере некоторого количества пакетов.
- Управление и контроль потока. TCP осуществляет комплексный контроль и управление потоком информации, а в UDP это не нужно.
- Порядок доставки. Специфика TCP заключается в том, что все пакеты отправляются в формате строгой очередности. UDP доставляет сообщения в виде не упорядоченных датаграмм.
- Уведомление о перегрузках. Если в рамках передачи данных возникнут перегрузки, TCP отправит соответствующее уведомление. Протокол UDP не предоставляет какой-либо защиты от перегрузки.
- Сохранение границ переданных сообщений. Протокол TCP хоть и не может сохранить границы переданных сообщений, предоставляет гарантию их целостности. Применение протокола UDP предусматривает сохранение границ каждой пересланной датаграммы.
- Функция сборки и сегментации пакетов передаваемой информации. Поддерживается только в рамках протокола TCP.
- Процедура проверки достижимости. Является обязательной только для протокола TCP, в то время как протокол UDP физически не поддерживает ее.
- Взаимодействие с соединениями полуоткрытого типа. В рамках протокола TCP никогда не происходит повторная синхронизация. А вот протокол UDP устанавливает соединение методом повторной передачи запроса к конечному пользователю.
TCP-протокол – это виртуальный канал, сформированный между двумя или более узлами. Его работоспособность становится возможной, если заранее установить соединение – в противном случае передача информационных пакетов будет невозможной. С помощью протокола TCP реализуется надежная передача большого объема данных к разнообразным пользовательским устройствам.
Чтобы обеспечить надежное соединение, протокол TCP предусматривает трехэтапный запуск сеанса связи. Клиент и сервер должны передавать значения ISN и порта. Еще одна отличительная особенность протокола TCP заключается в использовании контрольной суммы, с помощью которой система проверяет, правильно ли передана информация конечному пользователю.
Протокол TCP используют следующие приложения:
Из этого следует, что протокол TCP пользуется популярностью среди приложений, работающих с массивом данных, разрыв которых нужно полностью исключить. Программы для загрузки файлов, отправки сообщений – это лишь малая часть программного обеспечения, построенного на базе протокола TCP.
В рамках протокола UDP данные передаются между узлами с помощью специальных пакетов данных, не требующих проверки. При этом гарантии их получения не требуется. Данная технология не предусматривает удаление дубликатов пакетов, мониторинг и контроль их текущего расположения.
С одной стороны, специалисты в области компьютерных сетей вполне заслуженно считают UDP ненадежным протоколом. С другой, это не просто важное, а незаменимое решение для приложений, работающих в режиме реального времени, интернет-телевидения, технологии VOIP, игр по сети и так далее. Благодаря возможностям протокола UDP пропадает необходимость проводить первичную проверку соединения, соблюдения целостности и порядка структуры данных. Если какая-либо датаграмма (пакет без проверки) потеряется, происходит ее автоматический сброс. Это положительно сказывается на скорости передачи данных через сеть интернет.
Протокол UDP незаменим для приложений, с помощью которых происходит передача мультимедийной информации, включая интернет-телевидение, интернет-телефонию и так далее. Некоторое количество данных все же может быть потеряно, но это будет сложно заметить на практике. Яркий пример – изменение качества видеоряда и звука в худшую сторону. Вот почему популярные специализированные программы заранее предлагают своим пользователям выбрать оптимальное разрешение.
Из сказанного выше следует, что TCP – это протокол повышенной сложности, работа которого сопровождается большими тратами времени. Причиной этого является механизм синхронизации между узлами. При этом основное преимущество данного протокола заключается в гарантии доставки пакетов, благодаря чему эта функциональность не включается в структуру прикладного протокола.
Кроме того, применение протокола TCP является гарантией надежности доставки. В случае некорректной отправки сообщения пользователь всегда получит соответствующее уведомление в виде окна с информацией о возникшей ошибке.
UDP, в свою очередь, является протоколом, обладающим высокой скоростью передачи данных. Все дело в том, что в его основу заложен минималистичный механизм, без которого не обходится ни одна передача данных. Естественно, для него характерен целый ряд недостатков. Поступление передаваемых данных происходит в хаотичном порядке – не факт, что первый пакет из общего списка не окажется последним.
Гарантии доставки передаваемой информации нет, поэтому не исключено, что в ответ пользователь получит один пакет в виде двух копий. Возникновение подобной ситуации возможно в том случае, если один адрес для отправки сопровождается двумя разными маршрутами.
UDP – протокол, который обеспечивает высокую скорость отправки пакетов данных, но без гарантии их доставки. Если для конечного пользователя важна надежность доставки с сохранением порядка отправки данных, придется переходить на использование протокола TCP. Применение протокола UDP актуально, если проводится групповая и широковещательная передача данных. Вот почему он пользуется большой популярностью в области потокового интернет-видео, а также в игровой индустрии.
Что такое протокол управления передачей (TCP)?
Протокол управления передачей (TCP) — это стандарт связи, который позволяет прикладным программам и вычислительным устройствам обмениваться сообщениями по сети. Он предназначен для отправки пакетов через Интернет и обеспечения успешной доставки данных и сообщений по сети.
TCP является одним из основных стандартов, определяющих правила Интернета, и включен в стандарты, определенные Инженерной группой Интернета (IETF).Это один из наиболее часто используемых протоколов в цифровых сетевых коммуникациях, обеспечивающий сквозную доставку данных.
TCP организует данные таким образом, чтобы их можно было передавать между сервером и клиентом. Это гарантирует целостность данных, передаваемых по сети. Перед передачей данных TCP устанавливает соединение между источником и пунктом назначения, которое, как он гарантирует, остается активным до начала связи. Затем он разбивает большие объемы данных на более мелкие пакеты, обеспечивая при этом целостность данных на протяжении всего процесса.
В результате TCP используется для передачи данных из высокоуровневых протоколов, которым нужны все данные для доставки. К ним относятся протоколы однорангового обмена, такие как протокол передачи файлов (FTP), Secure Shell (SSH) и Telnet. Он также используется для отправки и получения электронной почты через протокол доступа к сообщениям в Интернете (IMAP), протокол почтового отделения (POP) и простой протокол передачи почты (SMTP), а также для доступа в Интернет через протокол передачи гипертекста (HTTP).
Альтернативой TCP является протокол пользовательских дейтаграмм (UDP), который используется для установления соединений с малой задержкой между приложениями и ускорения передачи.TCP может быть дорогим сетевым инструментом, поскольку он включает в себя отсутствующие или поврежденные пакеты и защищает доставку данных с помощью таких элементов управления, как подтверждения, запуск соединения и управление потоком.
UDP не обеспечивает ошибочное соединение или последовательность пакетов, а также не сигнализирует адресату до доставки данных, что делает его менее надежным, но менее дорогостоящим. Таким образом, это хороший вариант для ситуаций, чувствительных ко времени, таких как поиск в системе доменных имен (DNS), передача голоса по интернет-протоколу (VoIP) и потоковая передача мультимедиа.
Интернет-протокол (IP) — это метод отправки данных с одного устройства на другое через Интернет. Каждое устройство имеет IP-адрес, который однозначно идентифицирует его и позволяет ему обмениваться данными с другими устройствами, подключенными к Интернету.
IP отвечает за определение того, как приложения и устройства обмениваются пакетами данных друг с другом. Это основной протокол связи, отвечающий за форматы и правила обмена данными и сообщениями между компьютерами в одной сети или нескольких сетях, подключенных к Интернету.Он делает это через Internet Protocol Suite (TCP / IP), группу протоколов связи, разделенных на четыре уровня абстракции.
IP — это основной протокол на Интернет-уровне TCP / IP. Его основная цель — доставлять пакеты данных между исходным приложением или устройством и местом назначения с использованием методов и структур, которые размещают теги, такие как адресная информация, в пакетах данных.
TCP против IP: в чем разница?
TCP и IP — это отдельные протоколы, которые работают вместе, чтобы гарантировать доставку данных по назначению в сети.IP получает и определяет адрес — IP-адрес — приложения или устройства, на которое должны быть отправлены данные. Затем TCP отвечает за транспортировку данных и обеспечение их доставки в целевое приложение или устройство, определенное IP.
Другими словами, IP-адрес сродни телефонному номеру, присвоенному смартфону. TCP — это компьютерная сетевая версия технологии, используемой для того, чтобы смартфон звонил и позволял пользователю разговаривать с человеком, который ему звонил. Эти два протокола часто используются вместе и полагаются друг на друга, чтобы данные имели место назначения и безопасно дошли до него, поэтому этот процесс часто называют TCP / IP.
Модель TCP / IP была разработана Министерством обороны США для обеспечения точной и правильной передачи данных между устройствами. Он разбивает сообщения на пакеты, чтобы избежать повторной отправки всего сообщения в случае возникновения проблемы во время передачи. Пакеты собираются заново, когда они достигают места назначения. Каждый пакет может проходить по разному маршруту между исходным и целевым компьютером, в зависимости от того, становится ли исходный используемый маршрут перегруженным или недоступным.
TCP / IP разделяет коммуникационные задачи на уровни, которые поддерживают стандартизацию процесса, без того, чтобы поставщики оборудования и программного обеспечения пытались управлять им самостоятельно. Пакеты данных должны пройти через четыре уровня, прежде чем они будут получены устройством назначения, затем TCP / IP проходит через уровни в обратном порядке, чтобы вернуть сообщение в исходный формат.
Как протокол, ориентированный на установление соединения, TCP устанавливает и поддерживает соединение между приложениями или устройствами, пока они не закончат обмен данными.Он определяет, как исходное сообщение должно быть разбито на пакеты, номера и повторно собирает пакеты, и отправляет их на другие устройства в сети, такие как маршрутизаторы, шлюзы безопасности и коммутаторы, а затем отправляет их по назначению. TCP также отправляет и принимает пакеты с сетевого уровня, обрабатывает передачу любых отброшенных пакетов, управляет управлением потоком и гарантирует, что все пакеты достигают места назначения.
Хорошим примером того, как это работает на практике, является отправка электронного письма с помощью SMTP с почтового сервера.Уровень TCP на сервере делит сообщение на пакеты, нумерует их и пересылает на уровень IP, который затем транспортирует каждый пакет на целевой почтовый сервер. Когда пакеты прибывают, они возвращаются на уровень TCP, чтобы преобразовать их в исходный формат сообщения и передать их на сервер электронной почты, который доставляет сообщение в почтовый ящик пользователя.
TCP / IP использует трехстороннее рукопожатие для установления соединения между устройством и сервером, что гарантирует одновременную передачу нескольких соединений TCP-сокетов в обоих направлениях.И устройство, и сервер должны синхронизировать и подтверждать пакеты до начала связи, после чего они могут согласовывать, разделять и передавать соединения сокетов TCP.
TCP против UDP: в чем разница?
Что такое TCP?
TCP / IP помогает определить, как конкретный компьютер должен быть подключен к Интернету и как вы можете передавать данные между ними. Это помогает вам создать виртуальную сеть, когда подключено несколько компьютерных сетей.
TCP / IP означает протокол управления передачей / Интернет-протокол.Он специально разработан как модель, предлагающая высоконадежный сквозной поток байтов по ненадежной межсетевой сети.
Из этого руководства вы узнаете:
Что такое UDP?
UDP — это протокол, ориентированный на дейтаграммы. Он используется для широковещательной и многоадресной передачи по сети. Полная форма UDP — это протокол дейтаграмм пользователя (дейтаграмма — это единица передачи, связанная с сетью с коммутацией пакетов). Протокол UDP работает почти так же, как TCP, но отбрасывает все проверки ошибок, все обратное и -связь и доставляемость.
КЛЮЧЕВЫЕ ОТЛИЧИЯ:
- TCP — это протокол с установлением соединения, тогда как UDP — протокол без установления соединения.
- Скорость TCP ниже, а скорость UDP выше
- TCP использует протокол установления связи, такой как SYN, SYN-ACK, ACK, в то время как UDP не использует протоколы установления связи
- TCP выполняет проверку ошибок, а также восстанавливает ошибки, с другой стороны Кроме того, UDP выполняет проверку ошибок, но отбрасывает ошибочные пакеты.
- TCP имеет сегменты подтверждения, но UDP не имеет сегментов подтверждения.
- TCP тяжелый, а UDP легкий.
Как работает TCP?
TCP-соединение устанавливается с помощью трехстороннего рукопожатия. Это процесс установления и подтверждения соединения. Как только соединение установлено, начинается передача данных, а когда процесс передачи завершается, соединение завершается закрытием установленного виртуального канала.
Как работает UDP?
UDP использует простой метод передачи без подразумеваемых диалогов для подтверждения порядка, надежности или целостности данных.UDP также предполагает, что проверка и исправление ошибок не важны и не выполняются в приложении, чтобы избежать накладных расходов на такую обработку на уровне сетевого интерфейса. Он также совместим с пакетной рассылкой и многоадресной рассылкой.
Особенности TCP
Вот некоторые важные особенности TCP
- Подтверждения доставки
- Повторная передача
- Задержка передачи при перегруженности сети
- Простое обнаружение ошибок
Вот некоторые важные особенности UDP:
- Поддерживает приложения с интенсивной полосой пропускания, допускающие потерю пакетов.
- Меньше задержки.
- Отправляет большое количество пакетов.
- Возможность потери данных
- Разрешает небольшую транзакцию (поиск DNS)
Разница между TCP и UDP
Вот различия между TCP и UDP
TCP | UDP |
Это протокол с установлением соединения. | Это протокол без установления соединения. |
TCP считывает данные как потоки байтов, и сообщение передается на границы сегментов. | UDP-сообщения содержат пакеты, которые были отправлены один за другим. Он также проверяет целостность во время прибытия. |
TCP-сообщения передаются через Интернет с одного компьютера на другой. | Он не основан на соединении, поэтому одна программа может отправлять большое количество пакетов другой. |
TCP переупорядочивает пакеты данных в определенном порядке. | Протокол UDP не имеет фиксированного порядка, потому что все пакеты независимы друг от друга. |
Скорость TCP ниже. | UDP работает быстрее, так как не предпринимается попыток исправления ошибок. |
Размер заголовка составляет 20 байтов | Размер заголовка составляет 8 байтов. |
ПТС большой вес. TCP требуется три пакета для установки сокетного соединения, прежде чем любые пользовательские данные могут быть отправлены. | UDP легкий. Нет отслеживания соединений, упорядочивания сообщений и т. Д. |
TCP выполняет проверку ошибок, а также выполняет исправление ошибок. | UDP выполняет проверку ошибок, но отбрасывает ошибочные пакеты. |
Сегменты подтверждения | Нет сегментов подтверждения |
Использование протокола подтверждения, такого как SYN, SYN-ACK, ACK | Нет подтверждения (протокол без установления соединения) |
TCP является надежным, поскольку он гарантирует доставку данных на маршрутизатор назначения. | Доставка данных в пункт назначения не может быть гарантирована в UDP. |
TCP предлагает расширенные механизмы проверки ошибок, поскольку он обеспечивает управление потоком и подтверждение данных. | UDP имеет только единственный механизм проверки ошибок, который используется для контрольных сумм. |
Применение TCP
Вот плюсы / преимущества использования модели TCP / IP:
- Это поможет вам установить / установить соединение между разными типами компьютеров.
- Работает независимо от операционной системы
- Поддерживает множество протоколов маршрутизации.
- Обеспечивает межсетевое взаимодействие между организациями.
- Может работать независимо.
- Поддерживает несколько протоколов маршрутизации.
- TCP может использоваться для установления соединения между двумя компьютерами.
Применение UDP
- Метод UDP в основном используется чувствительными ко времени приложениями, а также серверами, которые отвечают на небольшие запросы от более крупной клиентской базы.
- UDP совместим с пакетной рассылкой для отправки по всей сети и для многоадресной отправки.
- Он также используется в системе доменных имен, передаче голоса по IP и онлайн-играх.
Преимущества TCP
Вот плюсы / преимущества TCP:
- Он помогает вам устанавливать / устанавливать соединение между компьютерами разных типов.
- Работает независимо от операционной системы.
- Поддерживает множество протоколов маршрутизации.
- Обеспечивает межсетевое взаимодействие между организациями.
- Модель TCP / IP имеет хорошо масштабируемую архитектуру клиент-сервер.
- Может работать независимо.
- Поддерживает несколько протоколов маршрутизации.
- Может использоваться для установления соединения между двумя компьютерами.
Преимущество UDP
Вот плюсы / преимущества UDP:
- Он никогда не ограничивает вас моделью связи на основе соединения; поэтому задержка запуска в распределенных приложениях низкая.
- Получатель пакетов UDP делает их неуправляемыми, что также включает границы блоков.
- Широковещательная и многоадресная передача также доступны с UDP.
- Возможна потеря данных
- Малая транзакция (поиск DNS)
- Приложение с интенсивным использованием полосы пропускания, которое выдерживает потерю пакетов
Недостатки TCP
В этом заключается недостаток использования TCP :
- TCP никогда не завершает передачу без явного запроса всех данных в движении.
- Вы не можете использовать для широковещательной или многоадресной передачи.
- TCP не имеет границ блоков, поэтому вам нужно создать свои собственные.
- TCP предлагает множество функций, которые вам не нужны. Это может привести к потере полосы пропускания, времени или усилий.
- В этой модели транспортный уровень не гарантирует доставку пакетов.
- Заменить протокол в TCP / IP непросто.
- Он не предлагает четкого разделения от своих сервисов, интерфейсов и протоколов.
Недостатки UDP
Вот важные минусы / недостатки UDP:
- В протоколе UDP пакет не может быть доставлен или доставлен дважды.Он может быть доставлен не по порядку, поэтому вы не получите никаких указаний.
- Маршрутизаторы довольно небрежно относятся к UDP, поэтому они никогда не передают его повторно, если он сталкивается.
- UDP не имеет контроля перегрузки и контроля потока, поэтому реализация — это задача пользовательского приложения.
- UDP больше всего любит страдать от потери пакетов
Когда использовать UDP и TCP?
- TCP — идеальный выбор, и даже он имеет связанные накладные расходы. Поэтому, когда большая часть накладных расходов приходится на соединение, ваше приложение остается подключенным в течение любого промежутка времени.
- UDP идеально подходит для использования с мультимедиа, например VoIP.
- Используйте сокеты TCP, когда и клиент, и сервер независимо друг от друга отправляют пакеты в это время; возможна случайная задержка. (например, онлайн-покер).
- Вы должны использовать пользовательский UDP, если и клиент, и сервер могут отдельно отправлять пакеты, и случайная задержка также недопустима. (например, многопользовательские игры).
Что такое TCP (протокол управления передачей)?
TCP (протокол управления передачей) — это стандарт, который определяет, как установить и поддерживать сетевой диалог, через который прикладные программы могут обмениваться данными.TCP работает с Интернет-протоколом (IP), который определяет, как компьютеры отправляют друг другу пакетов данных. Вместе TCP и IP являются основными правилами, определяющими Интернет. Инженерная рабочая группа Интернета ( IETF ) определяет протокол TCP в стандарте Запроса комментариев ( RFC ) номер документа 793.
Как работает протокол управления передачейTCP — это протокол , ориентированный на установление соединения, что означает, что соединение устанавливается и поддерживается до тех пор, пока прикладные программы на каждом конце не закончат обмен сообщениями.Он определяет, как разбивать данные приложения на пакеты, которые могут доставлять сети, отправляет пакеты и принимает пакеты от сетевого уровня, управляет управлением потоком и — поскольку он предназначен для обеспечения безошибочной передачи данных — обрабатывает повторную передачу отброшенных или искаженные пакеты и подтверждает все приходящие пакеты. В модели связи Open Systems Interconnection (OSI) TCP охватывает части уровня 4, транспортного уровня, и части уровня 5, сеансового уровня.
Например, когда веб-сервер отправляет файл HTML клиенту , он использует для этого протокол передачи гипертекста ( HTTP ). Уровень программы HTTP просит уровень TCP установить соединение и отправить файл. Стек TCP делит файл на пакеты данных, нумерует их и затем пересылает их индивидуально на уровень IP для доставки. Хотя каждый пакет в передаче имеет один и тот же IP-адрес источника и назначения , пакеты могут отправляться по нескольким маршрутам.Программный уровень TCP на клиентском компьютере ожидает, пока все пакеты не будут доставлены, затем подтверждает те, которые он получает, и запрашивает повторную передачу тех, которых он не отправляет — на основе отсутствующих номеров пакетов. Затем уровень TCP собирает пакеты в файл и доставляет файл принимающему приложению.
Сравнение модели OSI и модели TCP / IP.Этот процесс обнаружения ошибок — повторная передача и переупорядочивание пакетов после их прибытия — может привести к задержке в потоке TCP.Чрезвычайно чувствительные ко времени приложения, такие как передача голоса по IP ( VoIP ), потоковое видео и игры, обычно полагаются на транспортный процесс, такой как протокол пользовательских дейтаграмм ( UDP ), потому что он снижает задержку и джиттер — вариация задержки — — не беспокоясь о переупорядочении пакетов или повторной передаче недостающих данных.
UDP классифицируется как протокол дейтаграмм или протокол без установления соединения , потому что он не имеет возможности определить, завершили ли оба приложения обмен данными в обоих направлениях.Вместо того, чтобы исправлять недействительные пакеты данных, как это делает TCP, UDP просто отбрасывает эти пакеты и передает их прикладному уровню для более детального обнаружения ошибок.
Какой TCP используется дляTCP используется для организации данных таким образом, чтобы обеспечить безопасную передачу между сервером и клиентом. Это гарантирует целостность данных, отправляемых по сети, независимо от их количества. По этой причине он используется для передачи данных из других протоколов более высокого уровня, которым требуется прибытие всех передаваемых данных.Примеры включают:
- Secure Shell ( SSH ), протокол передачи файлов (FTP), Telnet: для однорангового обмена файлами и, в случае Telnet, входа на компьютер другого пользователя для доступа к файлу.
- Простой протокол передачи почты ( SMTP ), протокол почтового отделения (POP), протокол доступа к сообщениям в Интернете ( IMAP ): для отправки и получения электронной почты
- HTTP: для доступа в Интернет
Все эти примеры существуют на прикладном уровне стека TCP / IP и отправляют данные вниз в TCP на транспортном уровне.
Почему важен TCP ПротоколTCP важен, поскольку он устанавливает правила и стандартные процедуры для передачи информации через Интернет. Он является основой Интернета в том виде, в каком он существует сегодня, и обеспечивает единообразную передачу данных независимо от местоположения, используемого оборудования или программного обеспечения. По этой причине он является гибким и хорошо масштабируемым, что означает, что в него можно вводить новые протоколы, и он будет их учитывать. Он также не является собственностью, то есть им не владеет ни одно лицо или компания.
Расположение в стеке TCP / IPСтек TCP / IP — это модель, которая представляет, как данные организованы и обмениваются по сети с использованием протокола TCP / IP. Он изображает серию уровней, которые представляют способ обработки и упаковки данных с помощью ряда протоколов, когда они проходят от клиента к серверу и наоборот.
Подобно модели OSI, стек представляет собой концептуальную модель для стандартов обмена данными, при этом данные переупаковываются на каждом уровне в зависимости от его функциональности и транспортных протоколов.
Разница между двумя моделями заключается в уровне специфичности. Модель OSI — это более абстрактное представление способа обмена данными, не зависящее от какого-либо протокола. Это структура для общих сетевых систем. Стек TCP / IP более конкретен и состоит из доминирующего набора протоколов, используемых для обмена данными. OSI является абстрактным и более функциональным, тогда как стек TCP / IP конкретен и основан на протоколе. Модель OSI имеет семь уровней, тогда как модель TCP / IP — только четыре.
Запросы поступают на сервер через стек, начиная с уровня приложения в виде данных. Оттуда информация разбивается на пакеты разных типов на каждом уровне. Данных перемещается:
- из приложения на транспортный уровень, где он сортируется по сегментам TCP;
- на уровень Интернета, где он становится дейтаграммой ;
- на уровень сетевого интерфейса, где он снова разбивается на биты и кадры; и
- , наконец, сервер отвечает, и информация проходит вверх по стеку, чтобы попасть на уровень приложения в виде данных.
TCP существует на транспортном уровне с другими протоколами, такими как UDP. Протоколы на этом уровне обеспечивают безошибочную передачу данных источнику, за исключением UDP, поскольку он имеет более ограниченные возможности проверки ошибок. Заголовок дейтаграммы UDP содержит гораздо меньше информации, чем заголовок сегмента TCP, и подвергается гораздо меньшей обработке на транспортном уровне в интересах уменьшения задержки.
Что такое TCP / IP? | Как работают модель и протоколы
Сам по себе отдельный компьютер может выполнять любое количество заданий.Но настоящая мощь компьютеров проявляется, когда они общаются друг с другом. Многие вещи, которые мы думаем о компьютерах — будь то отправка сообщений электронной почты, просмотр Netflix или получение маршрутов, — связаны с общением компьютеров. Эти компьютеры могут быть от разных компаний или даже находиться в разных частях мира, а люди и программы, использующие их, могут использовать разные человеческие и компьютерные языки.
Любое данное взаимодействие может происходить между двумя компьютерными системами или может включать сотни систем.Но, как и передача письма или посылки из рук в руки, каждая транзакция происходит между двумя компьютерами одновременно. Чтобы это произошло, два компьютера должны заранее знать, как они будут взаимодействовать.
Как они начинают разговор?
Чья очередь общаться?
Как каждый компьютер узнает, что его сообщение было передано правильно?
Как они заканчивают разговор?
Компьютеры делают это через протоколы.Протокол — это согласованный набор правил. Говоря человеческим языком, мы используем социальные протоколы, чтобы знать, как вести себя и общаться с другими людьми. У технологий есть свои способы установки правил связи, такие как телеграф с использованием кода Морзе или радио CB с кодами типа «10-4».
То же самое и с компьютерами, но с более жесткими правилами. Когда все компьютеры используют один и тот же протокол, информация может передаваться. Когда они этого не делают, наступает хаос.
Связь была более сложной, когда люди впервые начали обмениваться информацией между компьютерами.У каждого поставщика был свой способ связи между своими компьютерами, но это не позволяло связываться с компьютерами других поставщиков. Вскоре стало ясно, что необходим согласованный стандарт, позволяющий компьютерам всех производителей связываться друг с другом. И этот стандарт — TCP / IP.
Чем отличаются TCP и IP?
TCP и IP — это два отдельных компьютерных сетевых протокола.
IP — это часть, которая получает адрес, на который отправляются данные. TCP отвечает за доставку данных после того, как этот IP-адрес был найден.
Их можно разделить, но нет никакого смысла делать разницу между TCP и IP. Поскольку они так часто используются вместе, «TCP / IP» и «модель TCP / IP» теперь стали общепризнанной терминологией.
Подумайте об этом так: IP-адрес подобен номеру телефона, присвоенному вашему смартфону. TCP — это вся технология, которая заставляет телефон звонить и позволяет вам разговаривать с кем-то по другому телефону.Они отличаются друг от друга, но также бессмысленны друг без друга.
Что именно делает TCP / IP? А как это работает?
TCP / IP был разработан Министерством обороны США, чтобы указать, как компьютеры передают данные с одного устройства на другое. TCP / IP уделяет большое внимание точности и включает несколько шагов для обеспечения правильной передачи данных между двумя компьютерами.
Вот один из способов. Если бы система отправила все сообщение целиком и если бы возникла проблема, все сообщение пришлось бы отправить повторно.Вместо этого TCP / IP разбивает каждое сообщение на пакетов , и эти пакеты затем повторно собираются на другом конце. Фактически, каждый пакет может идти своим маршрутом к другому компьютеру, если первый маршрут недоступен или перегружен.
Кроме того, TCP / IP делит различные коммуникационные задачи на уровней . У каждого слоя своя функция. Перед получением на другом конце данные проходят четыре отдельных уровня (как описано в следующем разделе).Затем TCP / IP проходит через эти уровни в обратном порядке, чтобы собрать данные и передать их получателю.
Назначение уровней состоит в том, чтобы поддерживать стандартизацию, без того, чтобы многочисленным поставщикам оборудования и программного обеспечения приходилось самостоятельно управлять связью. Это похоже на вождение автомобиля: все производители договариваются о том, где находятся педали, поэтому мы можем рассчитывать на это между автомобилями. Это также означает, что определенные уровни могут быть обновлены, например, для повышения производительности или безопасности, без необходимости обновлять все.
Четыре уровня модели TCP / IP
TCP / IP — это протокол передачи данных, который используется в Интернете. Его модель разделена на четыре отдельных слоя. При совместном использовании их также можно назвать набором протоколов.
Слой Datalink
Уровень канала передачи данных (также называемый канальным уровнем, уровнем сетевого интерфейса или физическим уровнем) — это то, что обрабатывает физические части отправки и получения данных с использованием кабеля Ethernet, беспроводной сети, сетевой карты, драйвера устройства в компьютере и т. Д. на.
Уровень Интернета
Интернет-уровень (также называемый сетевым уровнем) управляет перемещением пакетов по сети.
Транспортный уровень
Транспортный уровень — это то, что обеспечивает надежное соединение для передачи данных между двумя устройствами. Он разделяет данные на пакеты, подтверждает пакеты, которые он получил от другого устройства, и гарантирует, что другое устройство подтверждает пакеты, которые оно принимает.
Уровень приложения
Уровень приложений — это группа приложений, которым требуется сетевое взаимодействие.Это то, с чем обычно взаимодействует пользователь, например электронная почта и обмен сообщениями. Поскольку нижние уровни обрабатывают детали коммуникации, приложениям не нужно этим заниматься.
Являются ли мои пакеты данных конфиденциальными?
Нет. Когда пакеты передаются между компьютерами, они уязвимы для просмотра другими. Это одна из причин, по которой вам рекомендуется избегать общедоступных сетей Wi-Fi при отправке данных, которые должны оставаться конфиденциальными, и использовать шифрование.
Если вас это беспокоит, например, если вы отправляете личную или финансовую информацию, вы можете зашифровать свои данные с помощью виртуальной частной сети (VPN).
VPN — лучший способ обеспечить эффективное шифрование данных и защиту пакетов при их перемещении между сетями. Вы можете настроить VPN вручную или, что еще лучше, бесплатно попробовать Avast SecureLine VPN.
Работает ли TCP / IP со всеми типами IP-адресов?
Есть несколько типов IP-адресов. Но какой бы тип IP-адреса вы ни использовали, он использует TCP / IP.
Различия между типами IP-адресации очевидны для вас, как для обычного пользователя, и тот факт, что вам не нужно много знать об этом, является одной из сильных сторон TCP / IP.Обычно эти вопросы решает тот, кто настраивает операционную систему вашего компьютера или мобильное устройство. Но для наглядности:
Статические IP-адреса всегда остаются неизменными. Они похожи на фиксированный адрес вашего дома, неизменный адрес.
Динамические IP-адреса меняются, или, по крайней мере, они предназначены для изменения. Когда компьютерная система использует динамический IP-адрес, она объявляет: «Здесь вы можете меня найти!» в локальную сеть — скорее как «адрес» гостиничного номера, где отель знает, как вас найти.Чтобы узнать больше об этом различии, см. Статические и динамические IP-адреса.
Возможно, вы слышали о городах, население которых растет так быстро, что им приходилось создавать новые коды городов, чтобы вновь прибывшие могли получить номера телефонов. При постоянно увеличивающемся количестве подключенных устройств у TCP / IP была аналогичная проблема — в Интернете в основном заканчивались IP-адреса. Таким образом, новая версия IP-адреса под названием IPv6 была разработана как альтернатива существующим IPv4-адресам.Вот более подробный обзор различий между адресами IPv4 и IPv6.
На самом деле TCP / IP входит в стандартную комплектацию
TCP / IP — наиболее часто используемый набор протоколов в Интернете. Миллионы людей используют его каждый день, даже если не осознают этого.
На подавляющем большинстве компьютеров TCP / IP встроен в стандартную комплектацию. Для настройки вручную ничего делать не нужно. Иногда вам может потребоваться сообщить приложению, какой у вас TCP / IP-адрес.
В некоторых случаях вы можете захотеть скрыть свой IP-адрес, обычно из соображений безопасности.
Как я могу узнать свой TCP / IP-адрес?
Каждое устройство имеет свой собственный TCP / IP-адрес. Обычно устройство может обмениваться данными автоматически, но иногда вам нужно вручную указать свой TCP / IP-адрес. Как вы будете искать свой IP-адрес, зависит от вашей операционной системы.
Шифруйте свои пакеты с помощью VPN
Защита вашего IP-адреса очень важна. Это как ваш номер телефона; вам не обязательно скрывать его от всех, но вы также не хотите кричать номер публично.
Avast SecureLine VPN обеспечивает конфиденциальность вашего IP-адреса и шифрует ваши данные при их передаче, обеспечивая дополнительный уровень безопасности.
Что такое TCP | Структура заголовка для DDoS-соединения
Что такое протокол управления передачей (TCP)
Протокол управления передачей (TCP) — это интернет-стандарт, обеспечивающий успешный обмен пакетами данных между устройствами по сети.TCP является основным протоколом связи для широкого спектра приложений, включая веб-серверы и веб-сайты, приложения электронной почты, FTP и одноранговые приложения.
TCP работает с интернет-протоколом (IP), чтобы указать способ обмена данными в сети. IP отвечает за отправку каждого пакета по назначению, в то время как TCP гарантирует, что байты передаются в том порядке, в котором они были отправлены, без ошибок или пропусков. Вместе эти два протокола называются TCP / IP.
Установление TCP-соединения: трехстороннее рукопожатие
Установление TCP-соединения требует, чтобы и клиент, и сервер участвовали в так называемом трехстороннем рукопожатии.Процесс можно разбить следующим образом:
- Клиент отправляет серверу SYN-пакет — запрос на соединение от порта источника к порту назначения сервера.
- Сервер отвечает пакетом SYN / ACK, подтверждая получение запроса на соединение.
- Клиент получает пакет SYN / ACK и отвечает собственным пакетом ACK.
После установления соединения TCP разбивает передаваемые данные на сегменты, каждый из которых упаковывается в дейтаграмму и отправляется по назначению.
Структура заголовка TCP
TCP оборачивает каждый пакет данных заголовком, содержащим 10 обязательных полей общим размером 20 байтов (или октетов). Каждый заголовок содержит информацию о соединении и текущих отправляемых данных.
Ниже приведены 10 полей заголовка TCP:
- Порт источника — порт отправляющего устройства.
- Порт назначения — порт принимающего устройства.
- Порядковый номер — устройство, инициирующее TCP-соединение, должно выбрать случайный начальный порядковый номер, который затем увеличивается в соответствии с количеством переданных байтов.
- Номер подтверждения — Принимающее устройство поддерживает номер подтверждения, начинающийся с нуля. Он увеличивает это число в соответствии с количеством полученных байтов.
- Смещение данных TCP — определяет размер заголовка TCP, выраженный в 32-битных словах. Одно слово представляет четыре байта.
- Зарезервированные данные — Зарезервированное поле всегда равно нулю.
- Управляющие флаги — TCP использует девять управляющих флагов для управления потоком данных в определенных ситуациях, таких как инициация сброса.
- Размер окна Контрольная сумма TCP — Отправитель генерирует контрольную сумму и передает ее в каждом заголовке пакета. Принимающее устройство может использовать контрольную сумму для проверки ошибок в полученном заголовке и полезной нагрузке.
- Указатель срочности — Если установлен флаг управления URG, это значение указывает смещение от порядкового номера, указывая на последний байт срочных данных.
- Дополнительные данные mTCP — это дополнительные поля для установки максимальных размеров сегмента, выборочных подтверждений и включения масштабирования окна для более эффективного использования сетей с высокой пропускной способностью.
TCP DDoS-уязвимости и методы устранения
TCP уязвим для нескольких типов DDoS-атак, в том числе:
SYN флуд
SYN-лавина происходит на начальном этапе трехстороннего рукопожатия, когда запросы TCP-соединения (SYN-пакеты) отправляются на каждый порт целевой машины быстрее, чем она может обрабатывать запросы. Сервер пытается обработать фальшивые SYN-запросы злоумышленника и перестает отвечать на легитимные TCP-запросы, не позволяя завершить рукопожатие.
Развитие атаки SYN flood.
Это заставляет целевую машину исчерпать все свои доступные порты. Во многих случаях пакеты SYN являются полезной нагрузкой и используются просто для насыщения сетевого канала цели.
Есть несколько способов смягчить последствия SYN-флуда, в том числе:
- Микроблоки — Сервер выделяет микрозапись в своей памяти для каждого запроса SYN вместо полного объекта соединения, тем самым снижая потенциальную нагрузку на ресурсы из-за слишком большого количества запросов.
- Файлы cookie SYN — Сервер использует криптографическое хеширование для проверки запроса TCP перед выделением памяти.
- Файлы cookie RST — Сервер намеренно отправляет неверный ответ после первоначального запроса SYN. Если клиент является легитимным, сервер получает пакет RST, сообщающий серверу, что что-то не так.
- Настройка стека TCP — Вы можете уменьшить время ожидания для освобождения памяти, выделенной для соединения, или выборочно отбрасывать входящие соединения.
Обратите внимание, что в дополнение к «классическому» методу атаки SYN flood, многие злоумышленники DDoS используют поддельные полезные данные SYN для организации общих атак сетевого уровня — тип, который просто нацелен на перегрузку сети с перегрузкой поддельных пакетов. Для смягчения этих атак требуется возможность масштабирования сетевых ресурсов по запросу, например, с помощью облачного решения для смягчения последствий.
STOMP DDoS-атака
STOMP — это текстовый протокол, который позволяет приложениям взаимодействовать с брокерами сообщений с помощью TCP.В DDoS-атаке STOMP злоумышленники используют ботнет для открытия большого количества рукопожатий TCP с приложениями. Затем злоумышленники отправляют нежелательные данные, замаскированные под STOMP TCP-запросы, насыщая сеть. Если сервер подготовлен к синтаксическому анализу запросов STOMP, атака также может исчерпать ресурсы сервера.
Фрагментация TCP (капля)
Атака «слезинка» — это тип атаки с фрагментацией IP, нацеленный на механизм повторной сборки TCP / IP, который происходит после завершения трехстороннего рукопожатия и передачи данных.Злоумышленник намеренно отправляет пакеты данных с дефектными полями смещения сегмента, что мешает получателю правильно собрать фрагментированные данные. Пакеты данных перекрываются и быстро перегружают серверы жертвы.
Предотвращение атак фрагментации TCP требует проверки входящих пакетов с помощью маршрутизаторов, безопасных прокси-серверов или облачной службы защиты от DDoS-атак. Пакеты с неправильной фрагментацией затем обнаруживаются и отбрасываются до того, как достигнут вашего сервера.
Узнайте, как Imperva DDoS Protection может помочь вам в борьбе с DDoS-атаками TCP.
Защита от атак TCP DDoS
Imperva позволяет масштабировать сетевые ресурсы, обеспечивая поглощение TCP-атак любого размера. Наши специализированные решения для многотерабитной очистки используют глубокую проверку пакетов (DPI) для выявления и блокировки вредоносного трафика до того, как он достигнет вашего сервера.
Служба может быть развернута с помощью перенаправления на основе BGP или DNS, в качестве решения всегда или по требованию.
Что такое TCP / IP? | BigCommerce
Определение: TCP / IP (протокол управления передачей / Интернет-протокол), также называемый Internet Protocol Suite, — это основная система связи World Wide Web, которая позволяет каждому подключенному к Интернету устройству взаимодействовать друг с другом. такое устройство одновременно. По сути, это компьютеризированный синтаксис (язык), который установлен на каждом компьютере, как для общедоступных ( Интернет, ), так и частных ( интрасетей и экстрасетей ) сетей.Развитие этого протокола позволило Интернету — и, как следствие, онлайн-торговле — быстро развиваться.
Как это работает
TCP / IP — это двухуровневая программа: более высокий уровень (TCP) разбирает содержимое сообщения на небольшие «пакеты данных», которые затем передаются через Интернет для повторной сборки TCP обратно на принимающем компьютере. в исходную форму сообщения. Нижний уровень (IP) играет роль «диспетчера адресов» и направляет каждый пакет данных в нужное место назначения.IP-адреса проверяются каждым компьютером в сети, чтобы гарантировать пересылку сообщений по мере необходимости.
TCP / IP работает по модели взаимодействия клиент-сервер, что означает, что пользователь первого компьютера (клиент) делает запрос на обслуживание, например перенаправляет веб-страницу, на второй сетевой компьютер или провайдер веб-хостинга (сервер ). TCP / IP также полагается на двухточечную связь, что означает, что связь перемещается с одного хост-компьютера на другой в пределах заранее определенной границы сети.Наконец, TCP / IP называется без состояния , потому что каждый запрос является новым и не связан со всеми предыдущими запросами, что делает сетевые пути свободными для постоянного использования всеми.
TCP / IP и приложения более высокого уровня
Многие приложения более высокого уровня, с которыми предприятия электронной коммерции должны быть знакомы, используют и / или построены на TCP / IP. Эти приложения составляют более высокий уровень языка протокола и часто упаковываются вместе с TCP / IP как единый «набор». Примеры включают:
- HTTP (протокол передачи гипертекста в Интернете)
- FTP (протокол передачи файлов в Интернете)
- Telnet, который позволяет входить в систему с удаленных компьютеров
- SMTP (простой протокол передачи почты)
Доступ в Интернет через аналоговые телефонные модемы будет включать использование одного из двух специальных протоколов: SLIP (последовательный интернет-протокол) или PPP (протокол точка-точка).Функция этих протоколов состоит в том, чтобы «инкапсулировать» пакеты данных в форму, позволяющую отправлять их по коммутируемым телефонным соединениям на модем провайдера доступа.
UDP (протокол пользовательских данных) — это альтернатива TCP, которая иногда используется для очень специализированных целей. Он использует сверхпростую передачу без установления соединения, для которой требуется лишь минимальное количество протоколов. Он в основном используется для соединений между онлайн-приложениями с малой задержкой и устойчивостью к потерям.
Протоколы TCP / IP, используемые при обмене данными маршрутизатора, включают:
- ICMP (протокол управляющих сообщений Интернета)
- IGP (протокол внутреннего шлюза)
- EGP (протокол внешнего шлюза)
- BGP (протокол пограничного шлюза) )
TCP: Как работает протокол управления передачей
Отдельные компоненты или поля заголовка протокола TCP имеют следующее значение:
Порт источника (16 бит): определяет номер порта отправителя.
Порт назначения (16 бит): определяет номер порта приемника.
Порядковый номер (32 бита): порядковый номер указывает первый байт прикрепленных данных полезной нагрузки или отправляется, когда соединение устанавливается или завершается. Он также используется для проверки и сортировки сегментов после передачи.
Номер подтверждения (32 бита): это поле содержит следующий порядковый номер, который ожидает отправитель. Флаг ACK (в поле «Флаги») является предварительным условием действительности.
Смещение (4 бита): поле «Смещение» указывает длину заголовка TCP в 32-битных словах, чтобы выделить начальную точку данных полезной нагрузки. Эта начальная точка варьируется от сегмента к сегменту из-за переменной поля «Параметры».
Зарезервировано (6 бит): Зарезервировано для будущего использования в соответствии с RFC 793 и еще не используется. В этом поле всегда должно быть установлено значение 0.
Флаги (6 бит): шесть возможных одиночных битов в поле «Флаги» разрешают различные действия TCP для организации связи и обработки данных.Следующие флаги либо установлены, либо не установлены для этих действий:
- URG : Флаг «Срочно» сигнализирует приложению TCP, что данные полезной нагрузки должны быть обработаны немедленно до установленного указателя срочности (см. Выше).
- ACK : В сочетании с номером подтверждения флаг ACK подтверждает получение пакетов TCP. Если флаг не установлен, номер подтверждения также недействителен.
- PSH : Флаг «Push» гарантирует, что сегмент TCP будет немедленно пропущен без предварительной отправки в буфер отправителя и получателя.
- RST : Если во время передачи произошла ошибка, для сброса соединения можно использовать пакет TCP с установленным флагом RST.
- SYN : сообщения с установленным флагом SYN представляют собой первый шаг трехстороннего рукопожатия, то есть они инициируют соединение.
- FIN : Флаг «Готово» сигнализирует другой стороне, что отправитель завершает передачу.
Размер окна (16 бит): в этом поле указывается количество байтов, которое отправитель желает получить.
Контрольная сумма (16 бит): протокол управления передачей может надежно обнаруживать ошибки передачи. Для этой цели используется контрольная сумма, вычисленная из заголовка, данных полезной нагрузки и псевдозаголовка.
Указатель срочности (16 бит): указатель срочности указывает позицию первого байта после данных полезной нагрузки, который должен быть срочно обработан. В результате это поле действительно и актуально, только если установлен флаг URG.
Параметры (0–320 бит): используйте поле «Параметры», если вы хотите включить функции TCP, которые не входят в общий заголовок, например, если вы хотите определить максимальный размер сегмента.Длина параметров всегда должна быть кратна 32, в противном случае требуется заполнение нулями.