Сегодня мы начнём с TCP. Ранее в главе, посвящённой уровням, мы упомянули важный момент. На сетевом уровне и ниже речь идёт скорее о соединениях между хостами, то есть вашему компьютеру необходимо знать, где находится другой компьютер, чтобы подключиться к нему. Однако сетевое взаимодействие часто представляет собой межпроцессное, а не межмашинное взаимодействие. Поэтому протокол TCP вводит понятие порта. Порт может быть занят только одним процессом, что обеспечивает прямое взаимодействие между прикладными процессами, работающими на разных хостах.
Задача транспортного уровня — обеспечить прямую связь между прикладными процессами, работающими на разных хостах, поэтому его также называют сквозным протоколом. Транспортный уровень скрывает основные сведения о сети, позволяя прикладному процессу видеть, что между двумя объектами транспортного уровня существует логический сквозной канал связи.
TCP (Transmission Control Protocol) — это протокол с установлением соединения. Это означает, что прежде чем одно приложение сможет начать отправку данных другому, два процесса должны установить соединение. Соединение — это логически связанный процесс, обеспечивающий надежную передачу и упорядоченный прием данных. Во время соединения между исходным и конечным узлами устанавливается соединение путем обмена серией управляющих пакетов и согласования некоторых параметров и правил, обеспечивающих успешную передачу данных.
Что такое TCP? (Mylinking'sСетевой краниСетевой брокер пакетовможет обрабатывать как TCP, так и UDP-пакеты)
TCP (протокол управления передачей) — это ориентированный на соединение, надежный протокол связи транспортного уровня на основе потока байтов.
Ориентированный на соединение: Ориентированное на соединение означает, что TCP-соединение является сквозным, то есть связью типа «один к одному», в отличие от UDP, который может отправлять сообщения нескольким хостам одновременно, поэтому связь типа «один ко многим» не может быть реализована.
Надежный: Надежность TCP гарантирует надежную доставку пакетов получателю независимо от изменений в сетевом соединении, что делает формат пакета протокола TCP более сложным, чем у UDP.
На основе потока байтов: Потоковая природа протокола TCP позволяет передавать сообщения любого размера и гарантирует порядок сообщений: даже если предыдущее сообщение не было получено полностью, и даже если последующие байты были получены, TCP не будет передавать их на прикладной уровень для обработки и автоматически отбрасывает дублирующиеся пакеты.
После того, как хосты A и B установили соединение, приложению достаточно использовать виртуальную линию связи для отправки и получения данных, обеспечивая тем самым передачу данных. Протокол TCP отвечает за управление такими задачами, как установление, отключение и удержание соединения. Следует отметить, что здесь мы говорим, что виртуальная линия означает только установление соединения, а соединение по протоколу TCP лишь указывает на то, что обе стороны могут начать передачу данных, и обеспечивает надёжность данных. Маршрутизация и транспортные узлы обслуживаются сетевыми устройствами; сам протокол TCP не имеет отношения к этим деталям.
TCP-соединение — это полнодуплексный сервис, то есть хосты A и B могут передавать данные в обоих направлениях по TCP-соединению. То есть данные могут передаваться между хостами A и B в двунаправленном потоке.
TCP временно сохраняет данные в буфере отправки соединения. Этот буфер отправки — один из кэшей, создаваемых во время трёхстороннего рукопожатия. Впоследствии TCP отправит данные из кэша отправки в кэш приёма хоста назначения в подходящий момент. На практике у каждого однорангового узла будет кэш отправки и кэш приёма, как показано здесь:
Буфер отправки — это область памяти, поддерживаемая реализацией TCP на стороне отправителя, которая используется для временного хранения данных, подлежащих отправке. При выполнении трёхстороннего рукопожатия для установления соединения создаётся кэш отправки, который используется для хранения данных. Буфер отправки динамически корректируется в зависимости от загруженности сети и обратной связи от получателя.
Буфер приёма — это область памяти, поддерживаемая реализацией TCP на принимающей стороне, которая используется для временного хранения полученных данных. TCP сохраняет полученные данные в кэше приёма и ждёт, пока приложение верхнего уровня прочитает их.
Обратите внимание, что размер кэша отправки и получения ограничен; когда кэш заполнен, TCP может применять некоторые стратегии, такие как управление перегрузкой, управление потоком и т. д., чтобы обеспечить надежную передачу данных и стабильность сети.
В компьютерных сетях передача данных между узлами осуществляется посредством сегментов. Что же такое сегмент пакета?
TCP создаёт TCP-сегмент (или сегмент пакета), разбивая входящий поток на фрагменты и добавляя TCP-заголовки к каждому фрагменту. Каждый сегмент может передаваться ограниченное время и не может превышать максимальный размер сегмента (MSS). На пути вниз сегмент пакета проходит через канальный уровень. Канальный уровень имеет максимальный размер передаваемого блока (MTU), который представляет собой максимальный размер пакета, проходящего через канальный уровень. Максимальный размер передаваемого блока обычно связан с интерфейсом связи.
Так в чем же разница между MSS и MTU?
В компьютерных сетях иерархическая архитектура очень важна, поскольку она учитывает различия между уровнями. Каждый уровень имеет своё название: на транспортном уровне данные называются сегментом, а на сетевом — IP-пакетом. Таким образом, максимальный размер передаваемого блока (MTU) можно представить как максимальный размер IP-пакета, который может быть передан сетевым уровнем, а максимальный размер сегмента (MSS) — это понятие транспортного уровня, которое относится к максимальному объёму данных, который может быть передан TCP-пакетом за один раз.
Обратите внимание, что если максимальный размер сегмента (MSS) превышает максимальный размер передаваемого блока (MTU), фрагментация IP будет выполняться на сетевом уровне, и TCP не будет разбивать большие данные на сегменты, соответствующие размеру MTU. На сетевом уровне будет выделен отдельный раздел, посвященный уровню IP.
Структура сегмента TCP-пакета
Давайте рассмотрим формат и содержание заголовков TCP.
Порядковый номер: Случайное число, генерируемое компьютером при установлении соединения в качестве начального значения при установлении TCP-соединения. Порядковый номер отправляется получателю в пакете SYN. Во время передачи данных отправитель увеличивает порядковый номер в соответствии с объёмом отправленных данных. Получатель оценивает порядок данных по полученному порядковому номеру. Если обнаруживается, что данные находятся в неправильном порядке, получатель переупорядочивает их, чтобы обеспечить нужный порядок.
Номер подтверждения: это порядковый номер, используемый в TCP для подтверждения получения данных. Он указывает порядковый номер следующих данных, которые отправитель ожидает получить. В TCP-соединении получатель определяет, какие данные были успешно получены, на основе порядкового номера принятого сегмента пакета данных. После успешного получения данных получатель отправляет отправителю пакет ACK, содержащий номер подтверждения. После получения пакета ACK отправитель может подтвердить, что данные были успешно получены, прежде чем подтвердить номер ответа.
Контрольные биты сегмента TCP включают в себя следующее:
ACK-бит: Когда этот бит равен 1, это означает, что поле ответа с подтверждением действительно. TCP указывает, что этот бит должен быть установлен в 1, за исключением пакетов SYN при первоначальном установлении соединения.
бит RST: Если этот бит равен 1, это указывает на наличие исключения в TCP-соединении и необходимость принудительного разрыва соединения.
SYN-бит: Если этот бит установлен в 1, это означает, что соединение должно быть установлено, а начальное значение порядкового номера установлено в поле порядкового номера.
FIN бит: Когда этот бит равен 1, это означает, что в будущем данные отправляться не будут и соединение желательно.
Различные функции и характеристики TCP воплощены в структуре сегментов TCP-пакета.
Что такое UDP? (Mylinking'sСетевой краниСетевой брокер пакетовможет обрабатывать как TCP, так и UDP-пакеты)
Протокол пользовательских дейтаграмм (UDP) — это протокол связи без установления соединения. В отличие от TCP, UDP не предоставляет сложных механизмов управления. Протокол UDP позволяет приложениям напрямую отправлять инкапсулированные IP-пакеты без установления соединения. Если разработчик выбирает UDP вместо TCP, приложение взаимодействует напрямую с IP-адресом.
Полное название протокола UDP — User Datagram Protocol (Протокол пользовательских дейтаграмм), а его заголовок занимает всего восемь байт (64 бита), что очень компактно. Формат заголовка UDP следующий:
Порты назначения и источника: Их основная цель — указать, какому процессу UDP следует отправлять пакеты.
Размер пакета: Поле размера пакета содержит размер заголовка UDP и размер данных.
Контрольная сумма: Разработано для обеспечения надежной доставки заголовков и данных UDP. Роль контрольной суммы заключается в обнаружении ошибок или повреждений во время передачи пакета UDP для обеспечения целостности данных.
Различия между TCP и UDP в MylinkingСетевой краниСетевой брокер пакетовможет обрабатывать как TCP, так и UDP-пакеты
TCP и UDP различаются в следующих аспектах:
Связь: TCP — это транспортный протокол с установлением соединения, требующий установления соединения перед передачей данных. UDP, с другой стороны, не требует установления соединения и может передавать данные немедленно.
Объект обслуживания: TCP — это двухточечный протокол типа «один к одному», то есть соединение предполагает взаимодействие только двух конечных точек. Однако UDP поддерживает интерактивное взаимодействие «один к одному», «один ко многим» и «многие ко многим», что позволяет одновременно взаимодействовать с несколькими хостами.
Надежность: TCP обеспечивает надёжную доставку данных, гарантируя отсутствие ошибок, потерь, дубликатов и доставку по требованию. UDP, с другой стороны, делает всё возможное и не гарантирует надёжную доставку. UDP может страдать от потери данных и других проблем во время передачи.
Контроль заторов, контроль потока: TCP имеет механизмы управления перегрузкой и управления потоком, которые могут регулировать скорость передачи данных в соответствии с условиями сети, обеспечивая безопасность и стабильность передачи данных. UDP не имеет механизмов управления перегрузкой и управления потоком, поэтому даже при очень высокой загруженности сети скорость отправки UDP не будет меняться.
Накладные расходы на заголовок: TCP имеет большой заголовок, обычно длиной 20 байт, который увеличивается при использовании полей параметров. UDP, с другой стороны, имеет фиксированный заголовок длиной всего 8 байт, поэтому UDP имеет меньшие накладные расходы на заголовок.
Сценарии применения TCP и UDP:
TCP и UDP — это два разных протокола транспортного уровня, и они имеют некоторые различия в сценариях применения.
Поскольку TCP — это протокол с установлением соединения, он в основном используется в сценариях, где требуется надёжная доставка данных. Вот некоторые распространённые примеры использования:
Передача файлов по FTP: TCP может гарантировать, что файлы не будут утеряны и повреждены во время передачи.
HTTP/HTTPS: TCP обеспечивает целостность и правильность веб-контента.
Поскольку UDP — это протокол без установления соединения, он не гарантирует надёжности, но обладает характеристиками эффективности и работы в режиме реального времени. UDP подходит для следующих сценариев:
Низкопакетный трафик, такой как DNS (система доменных имен): DNS-запросы обычно представляют собой короткие пакеты, и UDP может выполнять их быстрее.
Мультимедийная связь, такая как видео и аудио: Для передачи мультимедиа с высокими требованиями к работе в режиме реального времени протокол UDP может обеспечить меньшую задержку, гарантируя своевременную передачу данных.
Вещательная связь: UDP поддерживает связь «один ко многим» и «многие ко многим» и может использоваться для передачи широковещательных сообщений.
Краткое содержание
Сегодня мы познакомились с протоколом TCP. TCP — это надежный транспортный протокол связи с установлением соединения, основанный на потоке байтов. Он обеспечивает надежную передачу и упорядоченный прием данных путем установления соединения, подтверждения и подтверждения. Протокол TCP использует порты для взаимодействия между процессами и предоставляет услуги прямой связи для прикладных процессов, работающих на разных хостах. TCP-соединения являются полнодуплексными, что позволяет одновременно передавать данные в обоих направлениях. В отличие от него, UDP — это протокол связи без установления соединения, который не гарантирует надежность и подходит для некоторых сценариев с высокими требованиями к работе в режиме реального времени. TCP и UDP различаются режимом соединения, объектом обслуживания, надежностью, контролем перегрузки, управлением потоком данных и другими аспектами, а также различны их сценарии применения.
Время публикации: 03 декабря 2024 г.