рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ рдЙрдард╛рддреЗ рд╣реИрдВ, рдпрд╣ рддреБрд░рдВрдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣рдорд▓реЛрдВ рдФрд░ рдХрдИ рд╕реНрдХреИрди рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред
рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░реНрдб рд╣реИрдВрдкрд╛рдЗрдк рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░
, рдХреЛрдИ рднреА рдЗрд╕ рдХрдмрд╛рдбрд╝ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдФрд╕рдд рд╕рд░реНрд╡рд░ рдкрд░, 99% рдЯреНрд░реИрдлрд╝рд┐рдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЯрд╛рд░рдкреАрдЯ рдПрдХ рдЯреНрд░реИрдк рдкреЛрд░реНрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЙрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рдмрд╛рдзрд┐рдд рди рд╣реЛ, рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рддреЛрдбрд╝ рджреЗрдВред
рдЕрдзрд┐рдХрддрд░, рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рд░рдкреАрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдХреАрдбрд╝реЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХ рдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкреИрдорд░реНрд╕ рдФрд░ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЦрд░рд╛рдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рднреА рдЖрдИрдкреА рдкрддреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдХреИрди рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИрдмреЗ:
рдСрд╕реНрдЯреНрд░рд┐рдпрд╛ ,
рдпреВрдХреНрд░реЗрди )ред
рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдХреЗ рдирд╛рдо рд╕реЗ рдПрдХ рд╕рд┐рд╕рдбреНрдорд┐рди, рдЬреЛ рдЗрд╕ рдЕрдкрдорд╛рди рдХреЛ рджреЗрдЦ рдХрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдердХ рдЧрдпрд╛ рдерд╛ - рдФрд░ рдЙрд╕рдиреЗ рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо
рдПрдВрдбрд▓реЗрд╕ рд▓рд┐рдЦрд╛, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреЛрд░реНрдЯ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреЛрд░реНрдЯ 2222 рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдПрд╕рдПрд╕рдПрдЪ рд╕рд░реНрд╡рд░ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрддрд╣реАрди рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдпрд╣ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрдИ рджрд┐рдиреЛрдВ рдпрд╛ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдЧрд┐рд░ рди рдЬрд╛рдПред
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реНрдерд╛рдкрдирд╛:
$ make $ ./endlessh & $ ssh -p2222 localhost
рдПрдХ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдЯрд╛рд░рдкреАрдЯ рд╣рдорд▓рд╛рд╡рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЖрдкрд╕реЗ рджреВрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдорд╛рдорд▓рд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдЦрдХ
рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╢реЗ рдХреА рд▓рдд рд╣реИред рдЕрднреА 27 рдЧреНрд░рд╛рд╣рдХ рдлрдВрд╕реЗ рд╣реБрдП рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЪрд░рдо рдкрд░, 1378 рдЧреНрд░рд╛рд╣рдХ 20 рдШрдВрдЯреЗ рддрдХ рдЬрд╛рд▓ рдореЗрдВ рдмреИрдареЗ рд░рд╣реЗ!
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ, рдПрдВрдбрд▓реЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рдпрдорд┐рдд рдкреЛрд░реНрдЯ 22 рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ рдЧреБрдВрдбреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рджрд╕реНрддрдХ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╣рдореЗрд╢рд╛ рдПрд╕рдПрд╕рдПрдЪ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдмрдВрджрд░рдЧрд╛рд╣ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреА рд╣реИрдВ, рдЬреЛ рдкрд░рд┐рдорд╛рдг рдХреЗ рдПрдХ рдХреНрд░рдо рд╕реЗ рд▓реЙрдЧ рдЖрдХрд╛рд░ рдХреЛ рддреБрд░рдВрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рдХреНрд░рд┐рд╕ рд╡реЗрд▓реНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо SSH рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП
RFC 4253 рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИред рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд▓реЗрдХрд┐рди рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдПрдХ рдкрд╣рдЪрд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдПрдХ рдиреЛрдЯ рд╣реИ:
"рд╕рд░реНрд╡рд░ рдордИ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкрдВрдХреНрддрд┐ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреА рдЕрдиреНрдп рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ ред
" рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреА
рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ , рдмрд╕ рд╣рд░ рдкрдВрдХреНрддрд┐
SSH-
рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдВрдбрд▓реЗрд╕ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ RFC 4253 рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд╕рд╛рде
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреА рдПрдХ рдЕрдВрддрд╣реАрди рд╕реНрдЯреНрд░реАрдо рднреЗрдЬрддрд╛ рд╣реИ , рдЕрд░реНрдерд╛рдд, рдкрд╣рдЪрд╛рди рд╕реЗ рдкрд╣рд▓реЗ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐
SSH-
рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ 255 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдг рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓рд╛рдЗрди рдЯрд░реНрдорд┐рдиреЗрд╢рди рд╡рд░реНрдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ 10 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рдпрд╛рддреНрд░рд╛ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдлрдВрд╕ рдЬрд╛рдПрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрд╕рд╛рдзрд╛рд░рдг рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИред рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рд┐рдлрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдЦрдХ рдиреЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдорд╢реАрди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЖрдзреБрдирд┐рдХ рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рдФрд░ рдЕрдиреНрдп "рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ" рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдзреАрдорд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ рдереЛрдбрд╝рд╛ рдФрд░ рдЪрд╛рд▓рд╛рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрд╛рд░рдг рдЯреНрд░реИрдлрд╝рд┐рдХ рдФрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рджреЛрдиреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдпрджрд┐ рдЙрд╕рдиреЗ рдЕрднреА рдирдП рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХреА рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓рд╛рд╡рд░ рдорд╢реАрди рдкрд░ рдирд┐рдХрд╛рд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рддреЗ рд╣реБрдП, DDoS рд╣рдорд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдПрдХ рдереНрд░реЗрдб рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдереНрд░реЗрдб рдореИрдиреЗрдЬрдореЗрдВрдЯ рдкрд░ рд╕рдВрд╕рд╛рдзрди рдЦрд░реНрдЪ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдХреНрд░рд┐рд╕ рд╡реЗрд▓реЛрдВрд╕ рдиреЗ рдПрдВрдбрд▓реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛: рдПрдХ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб
poll(2)
рд╕рд░реНрд╡рд░, рдЬрд╣рд╛рдВ рдЬрд╛рд▓ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдВрдбрд▓реЗрд╕ рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ 78 рдмрд╛рдЗрдЯреНрд╕ред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдмрдлрд╝рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбрд▓реЗрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ рдЯреАрд╕реАрдкреА рдкреИрдХреЗрдЯ рдХрд╛ рд╕реАрдзрд╛ рдПрдХреНрд╕реЗрд╕ рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдмрдлрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╣рдорд╛рд░реА рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред
рд▓реЗрдЦрдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдордп рд╡рд╣ рдкрд╛рдпрдерди рдПрд╢реНрдпрд┐рдпреЛ рдФрд░ рдЕрдиреНрдп рдЯрд╛рд░рдкрд┐рдЯреНрд╕ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ ред рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдПрд╢реНрдпрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдерд╛, рддреЛ рд╡рд╣ рдкрд╛рдпрдерди рдореЗрдВ рд╕рд┐рд░реНрдл 18 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЕрдкрдиреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import asyncio import random async def handler(_reader, writer): try: while True: await asyncio.sleep(10) writer.write(b'%x\r\n' % random.randint(0, 2**32)) await writer.drain() except ConnectionResetError: pass async def main(): server = await asyncio.start_server(handler, '0.0.0.0', 2222) async with server: await server.serve_forever() asyncio.run(main())
Asyncio tarpit рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдЬрд╛рд▓ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдХреНрд░реЛрдо рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓рдЯрдХрд╛ рджреЗрдЧрд╛ рдЬреЛ рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ HTTP рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ:
import asyncio import random async def handler(_reader, writer): writer.write(b'HTTP/1.1 200 OK\r\n') try: while True: await asyncio.sleep(5) header = random.randint(0, 2**32) value = random.randint(0, 2**32) writer.write(b'X-%x: %x\r\n' % (header, value)) await writer.drain() except ConnectionResetError: pass async def main(): server = await asyncio.start_server(handler, '0.0.0.0', 8080) async with server: await server.serve_forever() asyncio.run(main())
рдЯрд╛рд░рдкреАрдЯ рдСрдирд▓рд╛рдЗрди рдмреБрд▓рд┐рдпреЛрдВ рдХреЛ рджрдВрдбрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рд╣реИред рд╕рдЪ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреБрдЫ рдЬреЛрдЦрд┐рдо рд╣реИ, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЙрдирдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреЛрдИ
рд╡реНрдпрдХреНрддрд┐ рдЖрдкрдХреЗ рдЖрдИрдкреА рдкрд░
рдмрджрд▓рд╛ рд▓реЗрдиреЗ рдФрд░ рд▓рдХреНрд╖рд┐рдд рдбреАрдбреАрдУрдПрд╕ рд╣рдорд▓реЗ рдХреЗ
рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рддрдХ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдирд╣реАрдВ рдЖрдП рд╣реИрдВ, рдФрд░ рдЯрд╛рд░рдкреАрдЯ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

