Процесс TCP PSH

Я изменил заголовки IP TCP-пакетов и напрямую отправил их через хук netfilter NF_INET_LOCAL_OUT. Соединения TCP могут быть успешно установлены. К сожалению, пакеты данных с установленным флагом PSH не могут быть правильно обработаны узлом. Однако, если я позволю пакетам данных с PSH проходить через стек Linux по умолчанию, а другие пакеты проходят через мой модуль, все TCP-пакеты будут проходить хорошо. Могу я узнать, что происходит с пакетами данных с PSH? Как я могу решить эту проблему? Спасибо.


person user2232764    schedule 22.05.2013    source источник
comment
Действительно непонятно, что вы пытаетесь сделать и какой провал вы видите. Вы модифицируете существующие пакеты или меняете их? Вы устанавливаете флаг PSH, очищаете его или что?   -  person ugoren    schedule 22.05.2013
comment
Извините за путаницу. На самом деле я изменил только заголовки IP, но не изменил заголовки и полезные данные TCP. Я не устанавливал флаг PSH. Я заметил, что флаг PSH был установлен ошибочно, если пакеты являются пакетами данных в Linux. Спасибо.   -  person user2232764    schedule 22.05.2013
comment
Я работаю на машине CentOS 6.2 с ядром 2.6.32.27. Спасибо.   -  person user2232764    schedule 22.05.2013
comment
Я до сих пор не понимаю проблемы. Флаг PSH является нормальным для пакетов данных и обычно не имеет большого влияния.   -  person ugoren    schedule 22.05.2013
comment
Да, собственно, это мой вопрос. Если я изменю заголовки пакетов с помощью флага PSH, одноранговый узел не сможет правильно обработать пакеты. Однако, если я только изменю другие пакеты, например, с помощью SYN и ACK, и позволю пакетам войти в стек Linux по умолчанию, одноранговый узел может хорошо их обработать и ответить правильно.   -  person user2232764    schedule 22.05.2013
comment
Если я модифицировал пакеты с помощью PSH, я печатаю информацию. Похоже, что локальный хост продолжает отправлять одни и те же пакеты данных до того, как соединение будет разорвано, что показывает, что одноранговый узел не обрабатывает пакеты правильно.   -  person user2232764    schedule 22.05.2013
comment
Я предлагаю вам отредактировать свой вопрос, чтобы объяснить себя, вместо того, чтобы делать это в комментариях. И я до сих пор не понимаю - один раз вы говорите, что модифицируете только заголовки IP (не TCP), а затем устанавливаете флаг PSH, который находится в заголовке TCP.   -  person ugoren    schedule 22.05.2013
comment
Извините за путаницу. На самом деле, как я уже говорил, я не устанавливал флаг PSH. Я только что изменил заголовки IP. Мои вопросы заключаются в том, почему пакеты с набором PSH не могут быть правильно обработаны узлом, если я изменяю заголовки IP пакетов. Однако другие пакеты без PSH могут проходить нормально.   -  person user2232764    schedule 23.05.2013


Ответы (1)


Я предлагаю прочитать следующую статью с уважением к флагам PSH.

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

person munkeyoto    schedule 22.05.2013
comment
Спасибо за предложение. Кажется, что это не может решить мою проблему. Я только изменил заголовки IP всех пакетов TCP, но не изменил заголовки TCP. Интересно, почему одноранговый стек игнорирует только пакеты с флагом PSH. Он может правильно обрабатывать другие пакеты, например, TCP-соединения могут быть установлены правильно. - person user2232764; 23.05.2013
comment
Изначально PSH был создан, чтобы сказать машинам: эй, это важно прежде всего, вам нужно отправить это. Это устаревший флаг в том смысле, что когда он был создан, сети были медленнее, и это был механизм в межпроцессном взаимодействии, чтобы сказать: эй, это важно! отправьте его через место, где получатель протолкнет его. Проблемы, связанные с этим, стали: 1) Увеличение скорости и 2) Угроза безопасности. По мере увеличения скорости и распространения проблем с безопасностью большинство компаний не видели необходимости при программировании включать этот флаг. - person munkeyoto; 23.05.2013
comment
Не забываем упомянуть, что из-за рисков безопасности большинство провайдеров на маршруте (от точки А до точки Б) фильтровали/сбрасывали этот флаг, поэтому он стал бесполезен. - person munkeyoto; 23.05.2013
comment
Спасибо за точку. На самом деле проблема в том, что получатель действительно может видеть флаг, установленный в пакетах. Я пытаюсь снять флаг при отправке пакетов. Все пакеты будут правильно доставлены на уровень TCP. К сожалению, возникает проблема, связанная с тем, что пакеты данных будут отправлены до завершения процедуры квитирования. Очевидно, что связь по-прежнему не работает. - person user2232764; 26.05.2013