Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ open other end initially ΡΠ°ΡΡΠΎ ΡΡΠ°Π²ΠΈΡ Π² ΡΡΠΏΠΈΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΠΈΡ ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. ΠΡΠΎΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½, Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΠΉΡΡ Π² Π»ΠΎΠ³Π°Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠ·Π»Π°ΠΌΠΈ ΡΠ΅ΡΠΈ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΡΠΈ ΡΡΠΎΠΉ ΡΡΠ°Π·Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΠΌΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ .
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π½Π΅ Π² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΊΠ°Π±Π΅Π»Ρ, Π° Π² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΡΠΎΠΊΠ΅ΡΠ°. ΠΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΡΡΠΎΡΠΎΠ½Π° ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π° Π΄ΡΡΠ³Π°Ρ ΡΠΆΠ΅ ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠ°Π½Π°Π» ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π·Π°ΠΊΡΡΡΡΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ. ΠΡΠΎΡΠΎΠΊΠΎΠ» TCP, Π»Π΅ΠΆΠ°ΡΠΈΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΉ, ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠΎΠ³ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π³ΠΎΠ², Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ Π² Π»ΠΎΠ³Π°Ρ .
ΠΠ»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ±ΠΎΠΉ"Π½Π° ΡΠΎΠ²Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅", Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠΈΠΆΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ.
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
Π€ΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ open other end initially ΠΊΡΠΎΠ΅ΡΡΡ Π² ΡΠ°ΡΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠ° TCP. Π ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΎΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ LISTEN ΠΈΠ»ΠΈ CLOSED Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠΎΡΠΎΠ½ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ»Π° Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ESTABLISHED ΠΈΠ»ΠΈ SYN_SENT, ΠΎΠΆΠΈΠ΄Π°Ρ ΠΎΡΠ²Π΅ΡΠ°, Π° ΠΊΠΎΠ½ΡΡΠ°Π³Π΅Π½Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ°Π½Π°Π», Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ.
Π‘ΠΈΡΡΠ°ΡΠΈΡ ΡΠ°ΡΡΠΎ ΡΡΡΠ³ΡΠ±Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌΠΈ ΠΏΠΎΠΏΡΡΠΊΠ°ΠΌΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π‘Π΅ΡΠ΅Π²ΠΎΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠΊΡΠ°Π½Ρ, ΠΌΠΎΠΆΠ΅Ρ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ"ΡΠΈΡ ΠΈΠ΅" ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΡΠΈΡΠ°ΡΡ ΠΊΠ°Π½Π°Π» Π°ΠΊΡΠΈΠ²Π½ΡΠΌ. ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΆΠ΅ ΡΠ°Π·ΠΎΡΠ²Π°Π½Π½ΡΠΉ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π΅ΡΠ΅ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ, ΡΠΈΡΡΠ΅ΠΌΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π§Π°ΡΡΡΠ΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡΠΎΠ² Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠ². ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΎ ΡΠ°Π±ΠΎΡΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ TIME_WAIT. ΠΠΎΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π½ΡΡΡ ΡΠΎΡ ΠΆΠ΅ ΠΏΠΎΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΠΎΠ³ΠΈΡΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ"other end".
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅
Π Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΡΠ΅Π΄Π°Ρ Π΄Π°Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ»ΠΎΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. ΠΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡΠΊΠ°, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ. ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PostgreSQL ΠΈΠ»ΠΈ MySQL, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΊ ΡΠΈΡΡΠΎΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΈ Π»ΡΠ±Π°Ρ Π°Π½ΠΎΠΌΠ°Π»ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΠ±ΠΎΠΉ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Π½Π°Π³ΡΡΠ·ΠΊΠΈ. Nginx ΠΈΠ»ΠΈ HAProxy ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΡΡΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠΌ ΠΈΠ·-Π·Π° ΡΠ°ΠΉΠΌ-Π°ΡΡΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠΎΡΠΎΠ½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ . Π Π»ΠΎΠ³Π°Ρ Π±ΡΠΊΠ΅Π½Π΄Π° ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎΡ"Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ°", ΠΊΠΎΡΠΎΡΡΠΉ, ΠΏΠΎ ΠΌΠ½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» Π±Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΉΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΡΠΊΡΡΡΠΈΡ.
- π ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: ΠΠ»ΠΈΠ΅Π½Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΡ.
- π ΠΡΠΈΡΠΈΠ½Π°: ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
- β³ Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: Π‘Π΅ΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π°Π½Π½ΡΡ , Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΅ΡΠ΅ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½.
ΠΠ°ΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΠΎΠ³ΠΎ ΠΠ ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°, Π²Π½ΠΎΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΡΠ²Π°Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°ΠΆΡΡΡΡ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ. ΠΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΡΠ΅ΠΊΡ"ΡΠ°Π½ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ" ΠΎΡΠΊΡΡΡΠΈΡ ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΡΡΠ΅ΠΊΠ΅.
ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π² Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π»ΠΎΠ³ΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ Π²ΡΠΎΠ΄Π΅ netstat ΠΈΠ»ΠΈ ss Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΡΠΎΠ². ΠΠΎΠΌΠ°Π½Π΄Π° ss -tan ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π²ΡΠ΅ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΈΡ
ΡΡΠ°ΡΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ TIME_WAIT ΠΈΠ»ΠΈ CLOSE_WAIT, ΡΡΠΎ ΠΏΡΡΠΌΠΎΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠ½ΠΈΡΠ΅Ρ ΡΡΠ°ΡΠΈΠΊΠ°. Wireshark ΠΈΠ»ΠΈ tcpdump ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Ρ ΡΠ»Π°Π³ΠΎΠΌ RST (ΡΠ±ΡΠΎΡ) ΠΈΠ»ΠΈ FIN (Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ Π² Π½Π΅ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡΠΎΠ½Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΡΠ² ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΠΎΡΠΊΡΡΡΠΈΠ΅.
tcpdump -i any -n port 80 and tcp
ΠΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. Π§Π°ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° open other end initially Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΠΈΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π±Π΅Π· ΡΠ°ΠΉΠΌ-Π°ΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ΅Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ strace (Π² Linux) ΠΈΠ»ΠΈ Process Monitor (Π² Windows) Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠΎΠΊΠ΅ΡΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠΎΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΎΡΠΊΠ°Π·Π°.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΉΠΌ-Π°ΡΡΠΎΠ² ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΠΈ
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² TCP-ΡΡΠ΅ΠΊΠ° ΡΠ°ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ tcp_keepalive_time, tcp_fin_timeout ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ Π±ΡΡΠ΅ΡΠΎΠ². ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π²ΠΈΡΠ΅ΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ.
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ°Π·ΡΠΌΠ½ΡΠ΅ ΡΠ°ΠΉΠΌ-Π°ΡΡΡ. Π’Π°ΠΉΠΌ-Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌ (ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΈΠΊΠΎΠ²ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠ°Ρ ), Π½ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΌ (ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ"ΠΌΠ΅ΡΡΠ²ΡΡ " ΡΠΎΠΊΠ΅ΡΠΎΠ²). ΠΠ°Π»Π°Π½Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ΅ΡΠΈ.
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ |
|---|---|---|---|
| tcp_keepalive_time | ΠΡΠ΅ΠΌΡ ΠΏΡΠΎΡΡΠΎΡ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ | 600 ΡΠ΅ΠΊ | ΠΡΡΠΎΠΊΠΎΠ΅ |
| tcp_fin_timeout | ΠΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ FIN-ΠΏΠ°ΠΊΠ΅ΡΠ° | 60 ΡΠ΅ΠΊ | Π‘ΡΠ΅Π΄Π½Π΅Π΅ |
| tcp_max_tw_buckets | ΠΠΈΠΌΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² Π² TIME_WAIT | 144000 | ΠΡΠΈΡΠΈΡΠ½ΠΎΠ΅ |
| tcp_tw_reuse | ΠΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ TIME_WAIT | 1 (ΠΠΊΠ») | ΠΡΡΠΎΠΊΠΎΠ΅ |
ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π Windows ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅Π΅ΡΡΡΠ° ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Linux-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ Π²Π°ΡΠ΅ΠΉ ΠΠ‘ ΠΏΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
βοΈ ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΡΠ΅ΡΠΈ
ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π±ΡΠ°Π½Π΄ΠΌΠ°ΡΡΡΠΎΠ² ΠΈ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠΎΠ²
ΠΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠΊΡΠ°Π½Ρ ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΠΎΡΠΆΠ΅Π½ΠΈΠΉ (IPS) ΡΠ°ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠΊΡΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΡΡΠ°ΡΠΈΠΊ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΡΡΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°ΠΆΡΡΡΡ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ»Π°Π³ΠΎΠ² TCP. ΠΠ»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅Π·ΠΊΠΈΠΉ ΠΎΠ±ΡΡΠ², Π° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° β ΠΊΠ°ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΡΡΡΡ ΠΊΠ°Π½Π°Π».
ΠΠ½ΡΠΈΠ²ΠΈΡΡΡΠ½ΠΎΠ΅ ΠΠ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π·Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ, Π²Π½ΠΎΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ. ΠΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠΌ-Π°ΡΡ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½Π½ΡΠΌ. ΠΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ"other end", ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΆΠ΅ Π±ΡΠ» ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ Π·Π°ΡΠΈΡΠ½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΡΡ Π·Π°ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ. ΠΠ° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΎΠ² Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ°Π΅ΡΠ²ΠΎΠ»Π°.
ΠΠ»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π·Π°ΡΠΈΡΡ (Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅) ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΡΡΠ΅Π·Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π½Π°ΡΠΈΡ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π² Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π±Π°Π·Π°Ρ
Π΄Π°Π½Π½ΡΡ
ΡΠ°ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΡΠΈΡΡΠΊΠ° ΠΏΡΠ»Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠ»ΡΠΆΠ±Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌΠΈ. Π Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² keepalive ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΠΎΡΠΊΠ΅ΡΠΎΠ².
ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
Node.js, Python ΠΈΠ»ΠΈ Java, Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΈΡΠ°ΡΡ Π² ΡΠΎΠΊΠ΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ±ΡΡΠΈΡ close ΠΈΠ»ΠΈ error. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ (reconnect logic) Ρ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΆΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠ±ΠΎΠΈ.
- π» Node.js: ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ `error` ΠΈ `end` Π½Π° ΡΠΎΠΊΠ΅ΡΠ΅.
- π Python: Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΎΠΊΠ΅Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ.
- β Java: ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ `SO_LINGER` ΠΈ ΡΠ°ΠΉΠΌ-Π°ΡΡΡ Π² `Socket`.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ (ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ), ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π½Π° Π²ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠ΅ΡΠ΅Π· NTP. Π Π°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² SSL/TLS ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ (replay protection), ΡΡΠΎ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ±ΠΎΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
Π‘ΠΊΡΡΡΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ±ΠΎΠ΅Π²
ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π² MTU (Maximum Transmission Unit). ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΡΠ°ΡΡΠΊΠ΅ ΡΠ΅ΡΠΈ, ΠΈ ΡΠ»Π°Π³ DF (Don't Fragment) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΠΏΠ°ΠΊΠ΅ΡΡ Π±ΡΠ΄ΡΡ ΡΠ΅ΡΡΡΡΡΡ, Π²ΡΠ·ΡΠ²Π°Ρ ΡΠ°ΠΉΠΌ-Π°ΡΡΡ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΡΠΎΡΠΈΠ»Π°ΠΊΡΠΈΠΊΠ° ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ open other end initially Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠΎΠ΄Π΅ Prometheus Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ Grafana ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ°. Π Π΅Π·ΠΊΠΈΠΉ ΡΠΎΡΡ ΠΌΠ΅ΡΡΠΈΠΊ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π½Π½ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎ Π½Π°Π΄Π²ΠΈΠ³Π°ΡΡΠ΅ΠΉΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅.
Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ³ΡΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΡΠ°ΡΡΠΎ Π²ΡΠΏΡΡΠΊΠ°ΡΡ ΠΏΠ°ΡΡΠΈ, ΡΡΡΡΠ°Π½ΡΡΡΠΈΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΈ Π±Π°Π³ΠΈ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅ΠΊΠ° TCP/IP. ΠΡΠΎΡΠΈΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΌΡΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΡΡΠ°ΡΠΈΠΊΠ°.
ΠΠ΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ½Π°Π½ΠΈΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ΅ΡΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² ΠΈ ΡΠ°Π΅ΡΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°ΡΡ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ.
Π‘Π²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΉΠΌ-Π°ΡΡΠΎΠ² ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ 90% ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
ΠΠΎΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°"open other end initially"?
ΠΡΠΈΠ±ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ·-Π·Π° ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ TCP-ΡΠΎΠΊΠ΅ΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΡΡΠΎΡΠΎΠ½Π° ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΡΡΠ³Π°Ρ ΡΡΠΎΡΠΎΠ½Π° ΡΡΠΈΡΠ°Π΅Ρ Π·Π°ΠΊΡΡΡΡΠΌ ΠΈΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ ΠΎΡΠΊΡΡΡΡΠΌ. Π§Π°ΡΡΠΎ Π²ΡΠ·Π²Π°Π½ΠΎ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ°ΠΌΠΈ, ΡΠ±ΠΎΡΠΌΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ?
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠ»Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°ΠΉΠΌ-Π°ΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π»ΠΈΠΌΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ»ΡΠΆΠ±Ρ Π‘Π£ΠΠ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ Π·Π°Π²ΠΈΡΡΠΈΡ ΡΠ΅ΡΡΠΈΠΉ.
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ?
ΠΠ°, Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΠΎΠ΅ ΠΠ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π·Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΡΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈΡΠ°Π΅Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΠΈΠ»ΠΈ Π²Π½ΠΎΡΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ°ΠΌ. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π»ΠΎΠ³ΠΎΠ² Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ TIME_WAIT Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ?
TIME_WAIT β ΡΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ TCP-ΡΠΎΠΊΠ΅ΡΠ° ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΡΡΠ΅ΡΠΏΠ°Π΅Ρ Π»ΠΈΠΌΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² Π² ΡΡΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π½ΠΎΠ²ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ.