Что такое tcp и как он работает?

TCP vs self-made UDP. Final fighting

  • Send/recv buffer: для своего протокола можно делать mutable buffer, с TCP будут проблемы с buffer bloat.
  • Congestion control вы можете использовать существующие. У UDP они любые. 
  • Новый Congestion control трудно добавить в TCP, потому что нужно модифицировать acknowledgement, вы не можете это сделать на клиенте.
  • Мультиплексирование — критичная проблема. Случается head-of-line blocking, при потере пакета вы не можете мультиплексировать в TCP. Поэтому HTTP2.0 по TCP не должен давать серьезного прироста.
  • Случаи, когда вы можете получить установку соединения за 0-RTT в TCP крайне редки, порядка 5 %, и порядка 97 % для self-made UDP.

  • IP Migration — не такая важная фича, но в случае сложных подписок и хранения состояния на сервере она однозначно нужна, но в TCP никак не реализована.
  • Nat unbinding не в пользу UDP. В этом случае в UDP надо часто делать ping-pong пакеты.
  • Packet pacing в UDP простой, пока нет оптимизации, в TCP эта опция не работает.
  •  MTU и исправление ошибок и там, и там примерно сравнимы.
  • По скорости TCP, конечно, быстрее, чем UDP сейчас, если вы раздаете тонну трафика. Но зато какие-то оптимизации очень долго доставляются.

Выбираем UDP!

Connection Establishment Phase

Transmission of data is done in full-duplex mode. The connection establishment in TCP is mainly termed as three-way handshaking. Let us understand this with the help of an example: An application program called client wants to make a connection with another application program called server by using the TCP as the transport layer protocol.

Mainly the process starts with the server, the server program mainly tells the TCP that it is ready to accept a connection. This is mainly known as a request for a passive open. Though the server TCP is ready to accept any connection from any machine of the world and it cannot make the connection itself.

SYN

  • This flag is used for the synchronization of sequence numbers.

  • It does not carry any real data.

  • It mainly consumes 1 sequence number.

  • This is mainly used for synchronization in other directions and ACK for the signal received.

  • It does not carry any real data.

  • It also consumes 1 sequence number.

Что такое таблицы маршрутизации

И вот мы плавно добрались и до них. И так.. Что же за таблицы такие.

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

Назначение протокола TCP/IP

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

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

Такая процедура уменьшает объем информации, которую можно передавать в единицу времени, однако позволяет добиться надежности передачи.

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

Контроль ошибок и контроль потока

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

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

Устранение неполадок

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

Неправильная маска подсети. Если сеть использует подсетевую маску, не подлежащую маске по умолчанию для своего класса адресов, и клиент по-прежнему настроен с помощью маски подсети по умолчанию для класса адресов, связь не будет работать с некоторыми соседними сетями, но не с удаленными. Например, если вы создаете четыре подсети (например, в примере подсетей), но используете неправильную подсетевую маску 255.255.255.0 в конфигурации TCP/IP, хосты не смогут определить, что некоторые компьютеры находятся на разных подсетях, чем их собственные. В этой ситуации пакеты, предназначенные для хостов различных физических сетей, которые являются частью одного и того же адреса класса C, не будут отправлены в шлюз по умолчанию для доставки. Распространенным симптомом этой проблемы является то, что компьютер может общаться с хостами, которые находятся в локальной сети, и может общаться со всеми удаленными сетями, за исключением тех сетей, которые находятся поблизости и имеют один и тот же адрес класса A, B или C. Чтобы устранить эту проблему, просто введите правильную подсетевую маску в конфигурации TCP/IP для этого хоста.

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

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

  • Одна физическая сеть имеет несколько маршрутизаторов.
  • Неправильный маршрутизатор настроен как шлюз по умолчанию.

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

TCP

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

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

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

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

2015: Операторы связи выявили проблемы с решениями на основе TCP/IP в сетях 4G

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

Группа по протоколам следующего поколения (ISG NGP) проанализировала проблемы и предложила альтернативные решения. По результатам работы были определены требования к технологиям-кандидатам, которые заключались в сильном уменьшении размеров заголовков, времени обработки пакетов и задержки на сети, но, кроме этого, в совместимости с текущими сетями TCP/IP, SDN и MPLS.

Что такое протокол TCP/IP?

Протокол TCP/IP (Transmission Control Protocol/Internet Protocol) представляет собой стек сетевых протоколов, повсеместно используемый для Интернета и других подобных сетей (например, данный протокол используется и в ЛВС). Название TCP/IP произошло от двух наиболее важных протоколов:

  • IP (интернет протокол) — отвечает за передачу пакета данных от узла к узлу. IP пересылает каждый пакет на основе четырехбайтного адреса назначения (IP-адрес).
  • TCP (протокол управления передачей) — отвечает за проверку корректной доставки данных от клиента к серверу. Данные могут быть потеряны в промежуточной сети. В протоколе TCP добавлена возможность обнаружения ошибок или потерянных данных и, как следствие, возможность запросить повторную передачу, до тех пор, пока данные корректно и полностью не будут получены.

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

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

Принцип работы стека протоколов TCP/IP такой же как и в модели OSI, данные верхних уровней инкапсулируются в пакеты нижних уровней.

Если пакет продвигается по уровню сверху вниз — на каждом уровне добавляется к пакету служебная информация в виде заголовка и возможно трейлера (информации помещенной в конец сообщения). Этот процесс называется инкапсуляция. Служебная информация предназначается для объекта того же уровня на удаленном компьютере. Ее формат и интерпретация определяются протоколами данного уровня.

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

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

Пример инкапсуляции можно представить следующим образом:

Рассмотрим каждые функции уровней

Зачем сравнивать TCP или что с ним не так

  • packet loss — примерно 0,6% пакетов, которые мы отправляем, теряются по пути;
  • reordering — перестановка пакетов местами, в реальной жизни довольно редкое явление, но случается в 0,2% случаев;
  • jitter — когда пакеты отправляются равномерно, а приходят очередями с задержкой примерно в 50 мс.

Как вычислить RTT

RIPE Atlasбеспроводные сети популярны и нестабильны

  • Более 80% пользователей используют беспроводной интернет;
  • Параметры беспроводных сетей динамично меняются в зависимости, например, от того, что пользователь повернул за угол;
  • Беспроводные сети имеют высокие показатели packet loss, jitter, reordering;
  • Фиксированный ассиметричный канал, смена IP-адреса.

TCP в нестабильных сетях

меньше половины канала

  • Беспроводные мобильные сети победили и нестабильны.
  • TCP не до конца утилизирует канал в нестабильных сетях.
  • Потребление контента зависит от скорости интернета: чем выше скорость интернета, тем больше пользователи смотрят, а мы очень любим наших пользователей и хотим, чтобы они смотрели больше.

Transport Layer

Transport layer builds on the network layer in order to provide data transport from a process on a source system machine to a process on a destination system. It is hosted using single or multiple networks, and also maintains the quality of service functions.

It determines how much data should be sent where and at what rate. This layer builds on the message which are received from the application layer. It helps ensure that data units are delivered error-free and in sequence.

Transport layer helps you to control the reliability of a link through flow control, error control, and segmentation or de-segmentation.

The transport layer also offers an acknowledgment of the successful data transmission and sends the next data in case no errors occurred. TCP is the best-known example of the transport layer.

Important functions of Transport Layers:

  • It divides the message received from the session layer into segments and numbers them to make a sequence.
  • Transport layer makes sure that the message is delivered to the correct process on the destination machine.
  • It also makes sure that the entire message arrives without any error else it should be retransmitted.

Сетевые протоколы TCP/IP, NWLink IPX/SPX, NetBEUI

Давайте начнем с того, что вообще такое сетевой протокол и с чем его едят.Сетевой протокол — это набор программно реализованных правил общения между компьютерами. Этакий язык, на котором компьютеры разговаривают друг с другом и передают информацию. Ранее компьютеры были, так сказать, многоязычны и в старых версиях Windows использовался целый набор протоколов, — TCP/IP, NWLink IPX/SPX, NetBEUI. Ныне же пришли к общей договоренности, и стандартом стало использование исключительно протокола TCP/IP, а посему речь далее пойдет именно о нем.

Когда говорят о TCP/IP, то обычно подразумевают под этим именем множество различных.. правил или, скажем, стандартов, которые прописаны с использованием (или под использование) этого протокола. Так, например, есть правила, по которым осуществляется обмен сообщениями между почтовыми серверами и есть правила, по которым конечный пользователь получает в свой ящик письма. Имеются правила для проведения видео-конференций и правила для организации «телефонных» переговоров по Интернету. Фактически, это даже не то чтобы правила.. Скорее этакая грамматика, что ли. Ну знаете, в английском одна структура построения диалогов, в французском другая.. Вот и в TCP/IP нечто подобное, т.е. некая связка различных грамматических правил представляет собой как раз цельный протокол TCP/IP или, точнее говоря, стек протоколов TCP/IP.

Протокол TCP

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

Передача информации через TCP протокол начинается с установления соединения с получателем. Он должен известить о том, что готов получить информацию. Только после этого начинается передача данных. С TCP протоколом вы можете быть уверены, что получатель реален и он готов получить информацию от вас. Это увеличивает надежность передаваемых данных. После завершения процесса, отправитель должен сообщить, что больше информация поступать не будет. Получатель же должен ответить, что он понял это и получил все данные.

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

Он готов работать с любыми сетями, не обращая внимание на их надежность

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

Сколько всего портов TCP?

Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 216-1=65 535.

Соединение TCP

Чтобы установить соединение между двумя процессами на разных компьютерах сети, необходимо знать не только интернет-адреса компьютеров, но и номера тех ТСР-портов (sockets), которые процессы используют на этих компьютерах. Любое TCP-соединение в сети Интернет однозначно идентифицируется двумя IP-адресами и двумя номерами ТСР-портов.

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

Когда протокол 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 RST – это сегмент TCP (обратите внимание, что TCP посылает сообщения сегментами, а НЕ пакетами, что часто неправильно употребляется в среде сетевых администраторов), который показывает, что с соединением что-то не так. RST посылается в следующих случаях:

  • Посылается SYN для несуществующего сервера.
  • TCP хочет прервать соединение.
  • Получен сегмент, для которого не существует соединения.

SCTP[править]

SCTP (Stream Control Transmission Protocol — протокол передачи с управлением потока) — протокол транспортного уровня. Выполняет те же функции, что и протоколы TCP и UDP. Но объединяет при этом их преимущества, лишает недостатков и добавляет новые возможности.

Отличия от протоколов TCP и UDP:

Основные преимущества (пояснения к таблице):

  • Сохранение границ — в протоколе TCP данные передаются непрерывным потоком байт, читаются так же, поэтому программист должен сам следить за тем, как расставлять границы в этом потоке и разделать куски данных. SCTP позволяет ставить границы и обрабатывать данные пакетами, как в UDP. Но при этом гарантирует порядок доставки пакетов, обеспечивает надёжность и ориентирован на соединения. Упорядоченность пакетов, кстати, можно отключить для повышения скорости.
  • Multihoming (многолинейность, множественная адресация, см. иллюстрацию ниже) — SCTP позволяет устанавливать соединение к одному серверу по разным линиям связи (например, по Wi-Fi и по Ethernet). Таким образом, если одна линия связи отвалится (скорей всего Wi-Fi), то соединение не разорвётся. Это так же позволяет передавать данные сразу по нескольким линиям, что увеличивает скорость передачи. Если в TCP одна линия связи оборвётся, то соединение будет потеряно, придётся устанавливать новое.
  • Multithreading (многопоточность) — позволяет передавать несколько потоков в рамках одной ассоциации (ассоциацией в SCTP называется соединение между двумя хостами). Например в TCP данные и служебная информация передаются по одному соединению. Поэтому задержка в получении служебнной информации может быть вызвана текущей передачей данных (например, ACK может не прийти вовремя, поэтому мы пошлём дупликат). Такая проблема называется head-of-line blocking, HOL. Многопоточность позволяет передавать эти данные независимо, что приведёт к лучшему использованию доступных ресурсов.
  • 4-way handshake — протокол TCP подвержен SYN-flood атакам. Злоумышленник шлёт много пакетов в короткое время для запроса TCP соединения (запрос на соединение помечен битом SYN в заголовке, поэтому и SYN-flood). Но при этом не подтверждает установление соединения. Таким образом на сервере образуются полуоткрытые соединения. Они закрываются сами по истечению таймаута. Но цель злоумышленника состоит в том, чтобы создать как можно больше таких соединений, не давая тем самым создавать новые валидные соединения из-за ограничения в их количестве на стороне сервера (сервер не может иметь бесконечное число соединений, а если сделать таймаут на обрыв слишком маленьким, то валидные соединения могут отваливаться раньше времени, что тоже нехорошо, и это всё делает syn-атаки возможными). В SCTP используется не тройное рукопожатие, а четверное (из разряда: «я хочу установить соединение — ты точно хочешь установить соединение? — да, я точно хочу установить соединение — ну тогда ладно»). Таким образом за короткий промежуток времени нельзя создать много новых соединений.

В SCTP не бывает полузакрытых соединений, как в TCP. Если мы закрываем соединение, то сразу в обе стороны.

К сожалению, несмотря на все преимущеста, протокол SCTP не получил пока широкого распространения. Это связано с инертностью (TCP работает, зачем менять?) и сложностью поддержки на аппаратном уровне (например, вся обёртка сетевых протоколов, те же фаерволы, имеют правила в духе «пропускать только UDP, TCP» пакеты; для примера можно вспомнить, как это используется в NAT).

Как работает TCP соединение

Соединение отправителя и получателя (два узла) происходит так:

1. Отправитель отсылает получателю специальный пакет, именуемый SYN, т.е. пригашает к соединению2. Получатель отвечает уже пакетом SYN-ACK, т.е. соглашается3. Отправитель отсылает спец. пакет ACK, т.е. подтверждает, что согласие получено

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

TCP порты

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

Номер порта — это число от 0 до 65535 в 16 битном формате, оно указывает какому именно приложению предназначается определенный пакет данных. Т.е. позволяет различным программам, работающим на одном компьютере, независимо друг от друга отправлять и получать информацию.

Есть целый ряд уже зарезервированных портов, которые являются стандартом:

Также, стоит отметить, что порты данного протокола никак не пересекаются с такими же, но у UDP. Так, например, порт: 1234 не пересечется с таким же, но у UDP.

В заключение

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

TCP-соединение[править]

Соединение двух узлов начинается с handshake (рукопожатия):

  1. Узел A посылает узлу B специальный пакет SYN — приглашение к соединению
  2. B отвечает пакетом SYN-ACK — согласием об установлении соединения
  3. A посылает пакет ACK — подтверждение, что согласие получено

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

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

Для узла A это соединение называется исходящим, а для узла B — входящим.

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

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

Заключение

При всех своих достоинствах протокол интернета IPv4 имеет один критичный недостаток. Количество адресов, созданных с его помощью, не может превысить цифру 4 294 967 296 (минимальный адрес — 0.0.0.0, максимальный — 255.255.255.255). С учетом того, что население земного шара составляет более семи миллиардов человек, а количество всевозможных сетевых устройств растет ежедневно, предельный порог довольно близок. Согласно прогнозу RIPE NCC, в ближайшее время компаниям придется перекупать IP-адреса или ждать, когда они появятся в свободном доступе. Стоимость одного IP-адреса может составить $12-18, при этом минимальный пакет должен состоять не меньше чем из 256 адресов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector