Протокол TCP: основные сообщения + трехстороннее рукопожатие + четырехсторонняя волна
Протокол TCP: основные сообщения + трехстороннее рукопожатие + четырехсторонняя волна

TCP является одним из основных протоколов в наборе протоколов TCP/IP. Он использует протокол IP сетевого уровня вниз и обеспечивает поддержку протоколов прикладного уровня, таких как HTTP, FTP, SMTP, POP3, SSH и Telnet вверх.

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

1. Введение

Протокол управления передачей(Английский:Transmission Control Protocol,аббревиатура:TCP)это своего родаОриентированный на соединение, надежный, на основе потока байтовСвязь на транспортном уровнепротокол,Международной целевой группой по интернет-инжинирингу(The Internet Engineering Task Force, IETF) RFC793 определение. в упрощенных компьютерных сетях OSI В модели он выполняет функции, заданные транспортным уровнем.

В определении TCP,Есть три момента, которые требуют особого пояснения:,Иллюстрация: TCP и UDP протокол

  • Что такое ориентированное на соединение?

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

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

  • Что такое надежный протокол связи?

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

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

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

  • Что такое поток байтов?

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

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

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

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

Ниже подробно описывается значение каждого поля:

  • Исходный портиПорт назначения:Длины16Кусочек,это 2 байта,Укажите соответственно номер порта, используемый отправляющим приложением, и номер порта, который ожидается получить принимающим приложением.。Их длина объясняет, почему диапазон компьютерных портов так велик.1-65535 (0 не используется, 2^16=65536, максимальный бит 65536 не используется). со сходным порт целевой порт,Добавьте исходный IP-адрес и IP-адрес назначения в заголовок IP.,Вы можете однозначно идентифицировать соединение.
  • Порядковый номер:Длина32Кусочек,Обратите внимание, что диапазон серийных номеров — [0, 2^32-1], то есть [0, 4294967295]. Когда порядковый номер увеличится до 4294967295, следующий порядковый номер вернется к 0 и начнется заново. Случайное число, генерируемое компьютером при установлении соединения в качестве его начального значения (ISN, Initial Sequence Номер, начальный серийный номер), передано SYN Пакет передается принимающему хосту,Каждый раз при отправке данных,Просто сложите размер «данных байт» один раз. Серийные номера используются для решения проблем с нарушением порядка сетевых пакетов.,Обеспечьте надежную передачу данных и контроль потока.
  • Номер подтверждения:Длина32Кусочек,Действует только тогда, когда установлен флаг ACK. Он указывает порядковый номер следующего байта, который, как ожидается, будет получен (поэтому это поле обычно представляет собой порядковый номер последнего успешно полученного байта плюс 1).,данные, используемые для подтверждения того, что они были успешно получены. После установки TCPсоединять,Диапазон номеров подтверждения обычно представляет собой относительное смещение от исходного порядкового номера (ISN). Если начальное значение ISN равно X,Тогда диапазон номеров подтверждения будет [X+1, X+1+N-1], где N представляет количество успешно полученных байтов. После получения этого подтверждающего ответа отправитель может считать, что все сообщения до этого порядкового номера были получены нормально. Диапазон номеров подтверждения: [0, 2^32-1], то есть [0, 4294967295]。
  • Смещение данных:Длина4Кусочек,Указывает, насколько далеко начало TCP-сообщения «данные» от начала TCP-сообщения.,Значение смещения начального адреса сегмента данных, рассчитанное в 4-байтовых единицах. Значение равно 5, когда нет выбора.,Это 20 байт; наибольшее целое число, которое можно представить 4 битами, равно 15.,Это означает, что начальная позиция данных в сообщении TCP находится на расстоянии 60 байтов (4*15) от начальной точки сообщения. Это означает, что длина заголовка TCP составляет 20–60 байт.
  • Сдержанный:Длина3Кусочек,Зарезервировано для будущего использования,В настоящее время оно должно быть установлено на ноль.
  • Флаги управления (Флаги):Длина9Кусочек,для контроляиуправлятьTCPсоединять。Каждый флаг управления Кусочек Инструкции следующие:
    • NS(Nonce Sum):используется для поддержки определенного типаECN-nonceизTCPМеханизм расширения,Этот механизм используется для повышения безопасности контроля перегрузок.,Предотвратите злонамеренное изменение информации о контроле перегрузки.
    • CWR(Congestion Window Reduced):Используется для указания отправителю уменьшить окно перегрузки.(Congestion Размер окна. Флаг CWR обычно используется вместе с механизмом контроля перегрузки для борьбы с перегрузкой сети.
    • ECE(ECN-Echo):ECEФлаг установлен, чтобы указать, что отправитель поддерживает явное уведомление о перегрузке.(Explicit Congestion Notification, ECN) и просит получателя уведомить его о перегрузке сети. После получения сегмента TCP с установленным флагом ECE получатель может ответить, установив флаг ECN-Echo в ответном сегменте TCP, если сеть перегружена. Используя флаг ECE и ответ ECN-Echo, отправитель и получатель TCP-соединения могут совместно координировать контроль перегрузки для повышения производительности и стабильности сети.
    • URG(Urgent):инструктироватьгазетаискусствочастьсередина Содержит срочныеданные。когдаURG=1час,Показывает, что он включенurgent Режим информирует получателя о необходимости обратить особое внимание на обработку экстренных данных при обработке данных. Установка флага URG и поля указателя экстренной ситуации (Срочно Указатель) используются вместе.
    • ACK(Acknowledgment):Указывает, что поле номера подтверждения действительно.。толькокогдаACK=1час Поле номера подтвержденияэффективен,Если ACK=0, номер подтверждения недействителен. правила TCP,После установления соединения для всех передаваемых сегментов ACK должен быть установлен в 1.
    • PSH(Push):Поручить принимающей стороне незамедлительно отправитьданные Нажмите на приложение,Вместо того, чтобы ждать заполнения буфера. Когда два процесса приложения взаимодействуют интерактивно,Иногда прикладной процесс на одном конце хочет получить ответ от другой стороны сразу после ввода команды. в этом случае,TCP может использовать операции push. В это время,Отправляющий TCP устанавливает PSH в 1.,И немедленно создайте сегмент сообщения и отправьте его. Принимающий TCP получает сегмент сообщения с PSH=1.,Обеспечьте процесс приема заявки как можно быстрее (то есть «продвиньте» вперед). Перед доставкой вверх не нужно ждать, пока весь кеш заполнится.
    • RST(Reset):используется для сложных Кусочексоединять,Прервать текущую связь. Когда RST=1, когда, это означает, возникает исключение TCP-соединения (например, сбой хоста или другие причины), необходимо принудительно отключить соединение.,Затем восстановите соединение для передачи. RST, установленный в 1, также используется для отклонения нелегального сегмента или отказа в открытии соединения.
    • SYN(Synchronize):используется для созданиясоединять,Оформить заявку на подключение. Используется для синхронизации серийных номеров при создании соединения. Когда SYN=1 и ACK=0,Указывает, что это сегмент запроса на соединение. Если другая сторона согласна установить соединение,Тогда в сегменте ответного сообщения следует использовать SYN=1иACK=1.,поэтомуSYNустановлен на1Это означает, что этосоединятьзапрос илисоединятьприниматьсообщение.
    • FIN(Finish):раньше закрывалсоединять,Запрос на прекращение соединения. Когда FIN=1когда, это означает, что у отправителя нет данных для передачи.,Требуйте освобождения соединения.
  • Размер окна:Длина16Кусочек,Указывает размер окна приема получателя,для управления потоком,Максимальный размер окна — 2^16-1=65535=64k. Это ранний дизайн,Для текущих сетевых приложений,Этого может быть недостаточно,Поэтому в опции можно добавить возможность расширения окна,для передачи большего количества данных. Окно относится к окну приема стороны, отправляющей этот сегмент (а не к собственному окну отправки). Значение окна сообщает другой стороне: отсчитывается от номера подтверждения в заголовке этого сегмента сообщения.,Объем данных, которые получатель в настоящее время разрешает отправить другой стороне (в байтах). Причина этого ограничения,Это связано с тем, что пространство кэша получателя ограничено. Суммируя,Значение окна служит основой для того, чтобы получатель мог позволить отправителю установить свое окно отправки.
  • Контрольная сумма:Длина16Кусочек,Используется для обнаружения ошибок в сегментах TCP во время передачи. Расчет контрольной суммы включает в себя иданные заголовки.
  • Срочный указатель:Длина16Кусочек,Действует только тогда, когда установлен флаг URG. Он указывает количество байт экстренных данных в этом сегменте (после окончания экстренных данных это обычные данные). поэтому,Указатель аварийной ситуации указывает положение конца экстренных данных в сегменте сообщения. Когда все чрезвычайные ситуации устранены,Затем TCP сообщает приложению возобновить нормальную работу. Стоит отметить, что,Экстренные данные могут быть отправлены, даже если окно равно 0.
  • Параметры:необязательные поля,переменная длина,Может иметь длину до 40 байт. Когда «опция» не используется,Длина заголовка TCP составляет 20 байт. Поля параметров используются для предоставления дополнительных функций и контроля.,Каждая опция начинается с 1-байтового поля типа.,Варианты описанияизтип。некоторые общиеиз Примеры вариантов следующие::
    • Максимальный размер сегмента (MSS):занимать4байт,Эта опция обычно указывается в пакете данных, который создает соединение и устанавливает флаг SYN.,Указывает максимальную длину сегмента сообщения, который может получить локальный конец. Обычно MSS равен (MTU-40) байтам.,Длина IP-пакета данных, содержащего сегмент TCP, не будет превышать MTU (максимальная длина MTU составляет 1518 байт).,Минимальная длина 64 байта),Это предотвращает фрагментацию IP на этом компьютере. Может появляться только в сегментах синхронизации.,В противном случае оно будет проигнорировано.
    • Масштабный коэффициент окна:занимать3байт,Значение 0–14. Количество битов, используемых для смещения значения окна TCP влево.,Умножьте значение окна. Может появляться только в сегментах синхронизации.,В противном случае оно будет проигнорировано.этотдапотому что сейчасизTCPперениматьданныебуфер(перениматьокно)из Длина обычно превышает65535байт。
    • Опция временных меток (опция временных меток TCP, TSopt):занимать10байт,восновнойиз Характерчастьдачас间戳Характерчасть(Timestamp Value field, TSval, 4 байта) и поле эхо-ответа timestamp (Timestamp Echo Reply field, TSecr, 4 байта). Опция отметки времени позволяет обеим сторонам связи включать значения отметок времени в сегменты TCP, чтобы облегчить некоторые операции и вычисления, связанные со временем.
    • Опция дайджеста безопасности (опция аутентификации TCP, опция TCP):используется для предоставленияданныечестностьи Аутентификацияиз Функция。Эта опция используется дляTCPгазетаискусствочастьзащищать,Предотвратите подделку данных и несанкционированный доступ.

3. Разрешение адресов для доставки пакетов данных.

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

Аналогия с рассылкой писем в повседневной работе,Письма, которые мы кладем в конверт, эквивалентны данным, которые мы хотим доставить.,стандартныйизформат письмаданаписать на конверте“Адрес получателя”и“Обратный адрес”,Эквивалент IP-адреса,в,“Адрес получателя”переписыватьсяданные В сумкеIPгазетаголовасерединаиз“IP-адрес назначения”,“Обратный адрес”переписыватьсяданные В сумкеIPгазетаголовасерединаиз“Исходный IP-адрес”,Написав адрес отправителя и получателя, вы можете быть уверены, что письмо будет доставлено по назначению.

Но кто получит письмо после того, как оно будет отправлено по адресу назначения? Получение адреса получателя приведенного выше письма показывает, что этот адрес находится в «Отделе B компании А» в Чжанцзяне, Новый район Пудун, Шанхай. В этом отделе могут быть сотни или тысячи людей, и получатель не ясен. Даже если письмо отправлено по этому адресу, возможности доставить конкретному получателю нет.

поэтому,В почтовых письмах необходимо заполнить комбинацию «имя получателя», «адрес получателя» и «имя отправителя», «адрес отправителя».,Чтобы гарантировать, что письмо может быть точно доставлено конкретномуиз Рука получателясередина。здесьиз Имя получателякогда ВTCPгазетаголоваизпорт По назначению имя отправителя эквивалентно исходному в заголовке TCP. порт。

По сравнению с доставкой писем давайте рассмотрим пример процесса доставки сетевых пакетов. Ли Си (IP-адрес компьютера: 106.54.28.25) в Пекине отправляет сообщение Чжан Сану (IP-адрес компьютера: 114.92.67.193) в Шанхае через QQ (порт: 80), как показано на рисунке ниже:

первый,Компьютер Джона Доу упаковывает сообщение в отчет с данными TCP.,Добавьте заголовок IP и заголовок Ethernet для формирования пакета сетевых данных.,Отправить в компьютерную сеть。компьютерная сеть черезданные В сумкеIPгазетаголоваизIP-адрес def(114.92.67.193) точно доставляет пакет данных на компьютер Чжан Саня.

После того, как компьютер Чжан Сан получил пакет данных, отправленный компьютером Ли Си, поскольку на компьютере Чжан Саня одновременно запущено несколько программ (таких как QQ, WeChat, Foxmail и т. д. на рисунке), хотя компьютер Чжан Сан знал, что данные пакет был передан Да, но он не знает, какой программе передать данные в этом пакете.

Чтобы решить эту проблему, используйте исходный заголовок TCP в пакете данных. портипорт Для этого используйте разные номера портов в зависимости от разных программ для определения приложения, а также отправки и получения данных, чтобы пакет данных мог быть точно доставлен в указанную программу на конкретном компьютере, как отправленное по почте письмо. Например, мы указываем, что порты, используемые QQ, WeChat и Foxmail на компьютере Чжан Саня, равны 80 и 8900 и 110 соответственно. Затем при получении пакета данных порт. OF80 передается в QQ.

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

4. TCP-соединение

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

также,IPпротокол ненадежен,Нет никакой гарантии, что отчет об IP-данных успешно достигнет места назначения.,это услуга передачи с максимальными усилиями,Маршрутизатор обрабатывает ошибки в IP-пакетах, отбрасывая пакеты.,и отправить ICMP (Интернет Control Message Протокол, Интернет-контрольный протокол) контролирует сообщения в Исходный адрес. Потому что IP-протокол ненадежен и ненадежен,

поэтому,Требуется верхний уровень TCP для установления соединения и повторной передачи ошибок.,выполнитьОриентированный на соединение, надежный, на основе потока байтовСвязь на транспортном уровнепротокол。

4.1 Подробное объяснение процесса трехстороннего установления связи

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

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

  • первое рукопожатие

первый Клиент инициировалсоединятьпросить,Отправьте сегмент SYN (синхронизация) на сервер.,В абзаце указан порт назначаем родной порт, ставим SYN логотип Кусочекдля1,Прямо сейчасSYN=1,И установите в поле «Порядковый номер» случайно выбранный x.,Прямо сейчасseq=x,То есть первоначальный серийный номер(Initial Sequence Number, ISN), скорее всего 0, если это первое соединение. В это время порт, соответствующий серверу, должен находиться в состоянии прослушивания, и клиент войдет в него после выполнения запроса. SYN_SENT статус, ожидание подтверждения от сервера.

  • второе рукопожатие

Сервер получает сообщение от клиента SYN газетаискусствочасть,Подтвердите этот сегмент SYN. Сервер отправляет клиенту в ответ сегмент SYN-ACK.,газетаискусствочастьсерединаизлоготип Кусочекнастраиватьустановлен наSYN=1иACK=1,Указывает одновременное подтверждение и синхронизацию; в поле порядкового номера устанавливается случайно выбранный начальный порядковый номер сервера y (порядковый номер TCP-сегмента сервера).,Прямо сейчасseq=y;Поле номера подтверждения(Acknowledgment Number)настраиватьустановлен наклиентизначальный серийный номер плюс1,Прямо сейчасack=x+1。Серверная часть объединяет всю вышеуказанную информацию в однуTCPчасть(Прямо сейчасSYN+ACKчасть)середина,Отправлено клиенту вместе,В этот момент сервер входит в состояние SYN_RECV.

  • третье рукопожатие

Клиент получает сообщение от сервера SYN+ACK газетаискусствочастьназад,Чтобы отправить сегмент сообщения ACK (подтверждение) на сервер,верносоединятьпроситьиз Подтвердите, чтобы подтвердить。газетаискусствочастьсерединаизлоготип Кусочекнастраиватьустановлен наACK=1,Поле номера подтверждения содержит начальный порядковый номер сервера плюс 1.,Прямо сейчасack=y+1,В поле серийного номера указывается первоначальный серийный номер клиента плюс 1.,Прямо сейчасseq=x+1。этотчасклиент进入 Статус ESTABLISHED (подключен), сервер получает это TCP-сегменты также войдут ESTABLISHED статус, который указывает на окончание трехстороннего рукопожатия и успешное установление соединения.

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

4.2 Помашите четыре раза

Четыре волны — это процесс отключения TCP.

  • первая волна

Отправка данных клиента завершена,отправляется на серверсоединятьвыпускатьпроситьизFINгазетаискусство(проситьсоединятьпрекращение:FIN=1),Активно закрыватьTCPсоединять。газетаискусствосередина Серийный номер будет присвоенseq=u,и прекратить отправку данных,но все еще способенперениматьданные。этотчасклиент处В FIN_WAIT_1 статус, ожидание подтверждения от сервера. TCP предусматривает, что даже если сообщение FIN не содержит данных, оно все равно использует порядковый номер.

  • Помахать второй раз

После того, как сервер получит сообщение FIN,,Уведомить соответствующий процесс подачи заявки высокого уровня,Скажите ему, что соединение в направлении клиента к серверу освободилось. В это время сервер отправляет ответное сообщение ACK, выпущенное путем подключения клиенту.,и вошелCLOSE_WAIT(Закрыть, подождать)состояние。ACKгазетаискусствоголова包含:ACK=1,ack=u+1,и принеси себяизсерийный номерseq=v。здесьack=u+1дапервая волнаиззначение последовательности+1,Указывает, что он надеется получить сегмент сообщения, начиная с u+1-го байта.,И первые u байт были успешно получены.

После получения подтверждения от сервера клиент входит в состояние FIN_WAIT_2 и ожидает сегмента освобождения соединения, отправленного сервером.

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

  • помахать рукой в ​​третий раз

Если сервер тоже хочет отключить соединение,Просто отправьте сообщение клиенту, чтобы освободить сообщение из-за состояния CLOS_WAIT.,Вероятно, сервер отправил еще какие-то данные.,假定этотчассоединятьвыпускатьгазетаискусствоизсерийный номердляseq=w,ack также является продолжением первой волны +1,Прямо сейчасack=u+1,этоти Помахать второй То же самое, когда раз.

В это время сервер входит в состояние LAST_ACK (последнее подтверждение), ожидает подтверждения клиента и прекращает отправку данных клиенту, но сервер все еще может принимать данные, передаваемые от клиента.

  • помахать рукой в ​​четвертый раз

После того, как клиент получает сообщение об освобождении соединения от сервера, он также отправляет ACK газетаискусство作для应答(ack=w+1,seq=u+1), В это время клиент находится в состоянии TIME_WAIT (время ожидания) и ожидает в этом состоянии. 2MSL(Two Maximum Segment Lifetime, Максимальное время выживания сообщения).

После получения TCP-сообщения, отправленного от клиента, сервер завершает фазу LAST-ACK и переходит в фазу ЗАКРЫТИЯ. После того, как клиент ожидает 2MSL, он завершает фазу TIME-WAIT и переходит в фазу ЗАКРЫТИЯ, завершая таким образом четыре волны.

Почему клиент ждет на этапе TIME_WAIT? 2MSL? Есть два основных момента:

Один из них заключается в том, чтобы гарантировать, что последний сегмент ACK, отправленный клиентом, может достичь сервера, и гарантировать, что сервер может нормально перейти в состояние ЗАКРЫТО. Если сервер не получит сообщение подтверждения ACK от клиента в течение 1MSL, он снова отправит клиенту сообщение FIN.

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose