когда набор флага нажатия в сегменте TCP

я задал этот предыдущий вопрос здесь:

tcp две стороны, пытающиеся соединяться одновременно

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

кто решает установить флаг нажатия? каковы правила для установки нажатия или срочного флага в сегменте TCP? действительно ли возможно сделать это с помощью API сокетов?

6
задан Community 23 May 2017 в 12:02
поделиться

2 ответа

Флаг PUSH используется стеком tcp для того, чтобы в основном сказать: «На данный момент все готово». Это просто указывает на то, что сегмент данных полностью передан источником.

Невозможно указать или контролировать это в пользовательском пространстве (ваш сокет api), так как это всего лишь стек / реализация tcp для этого. Как СРОЧНЫЙ флаг.

(Источник: Ричард Стивенс - Tcp / ip, иллюстрированный том 1 , глава 20)

5
ответ дан 9 December 2019 в 22:33
поделиться

Вы можете установить флаг СРОЧНО с помощью send () с установленным флагом MSG_OOB . Это означает, что отправленные данные будут внеполосными, то есть они обычно не будут получены вызывающей стороной, просто вызывающей read () . Принимающая сторона получит некоторую индикацию данных OOB, например, сигнал SIGURG , или сокет станет исключительным и может быть проверен как таковой с помощью select () .

В большинстве случаев вы не хотите устанавливать флаг СРОЧНО.

6
ответ дан 9 December 2019 в 22:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: