Що робить [PSH, ACK] під час мого підключення до глобального сервера каталогів?


15

Моє сервер Linux намагається встановити з'єднання LDAPS до глобального сервера каталогів, і з'єднання припиняється (імовірно, стороною GC).

Для обговорення скажемо, що 1.1.1.1 - це сервер Linux, а 1.2.3.4 - сервер глобального каталогу.

Якщо я спробую використовувати telnetз вікна Linux, я бачу:

[root@foobox ~]# telnet gcfoo.exampleAD.local 3269
Trying 1.2.3.4...
Connected to gcfoo.examplead.local.
Escape character is '^]'.
Connection closed by foreign host.

Немає затримок між 4-м та 5-м рядками. Це просто опускає зв’язок.

Я подумав, що telnetрезультати можуть бути трохи оманливими (оскільки це насправді не підходить для будь-якого типу безпечного зв'язку), тому я зібрав захоплення пакету фактичної спроби підключення від пристрою (використовуючи фактичну програму, яка вимагає LDAPS).

Ось що я бачу (знову ж таки, IP-адреси та порти джерела були перейменовані для захисту невинних):

No.     Time      Source     Destination      Protocol    Length    Info
1       0.000000  1.1.1.1    1.2.3.4          TCP         66        27246 > msft-gc-ssl [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SAC_PERM=1 WS=128
2       0.000162  1.2.3.4    1.1.1.1          TCP         62        msft-gc-ssl > 27246 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 SACK_PERM=1
3       0.000209  1.1.1.1    1.2.3.4          TCP         54        27246 > msft-gc-ssl [ACK] Seq=1 Ack=1 Win=5840 Len=0
4       0.003462  1.1.1.1    1.2.3.4          TCP         248       27246 > msft-gc-ssl [PSH, ACK] Seq=1 Ack=1 Win=5840 Len=194
5       0.007264  1.2.3.4    1.1.1.1          TCP         60        msft-gc-ssl > 27246 [RST] Seq=1 Win=64046 Len=0

Я трохи іржавий з TCP / IP, тому, будь ласка, пробачте моє невігластво ... Я бачу, що тристороння рукостискання відбувається в пакетах 1-3. Що має сенс. Що все ж відбувається в пакеті №4? Що [PSH, ACK]означає? Це здається зайвим підтвердженням, яке зайве. Чи надсилаються фактичні дані в цей 4-й пакет? Або це якесь дивне продовження рукостискання?

Відповіді:


24

PSH- прапор Push: http://ask.wireshark.org/questions/20423/pshack-wireshark-capture

Прапор Push повідомляє мережевому стеку приймача "натискати" на дані безпосередньо до приймальної розетки, а не чекати більше пакетів перед цим.

Прапор Push зазвичай означає, що дані були надіслані, перекриваючи вбудовану затримку ефективності TCP, наприклад алгоритм Nagle або Затримка підтвердження .

Ці затримки роблять мережу TCP більш ефективною ціною затримки (зазвичай це близько кількох десятків мілісекунд). Заява, залежна від затримки, не хоче чекати затримок ефективності TCP, тому програма зазвичай відключає їх, внаслідок чого дані надсилаються як можна швидше за допомогою встановленого прапора Push.

В Linux це робиться за допомогою setsockopt()прапорів TCP_QUICKACKі TCP_NODELAY. Див. Для man 7 socketотримання додаткової інформації.


5

@DarkMoon пояснив, що означає прапор PSH Що стосується ваших даних, встановлення з'єднання завершується (3-х напрямне рукостискання), тоді так, клієнт надіслав на сервер 194 байт даних ( Len=194). Сервер не сподобався даним і закрив з'єднання. Можливо, клієнт не налаштований належним чином для зв'язку з сервером або навпаки, наприклад, невідповідність SSL / TLS.

Якщо у вас є доступ, я б запропонував вивчити журнали на сервері, щоб побачити, чи ввійшов він у систему, що не сподобалось у даних клієнта.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.