เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ เบ™เบณ เบชเบฐ เป€เปœเบต เบชเบฒเบ‚เบฒเบ—เบตเปˆเปเบฑเป‰เบ™เบ„เบปเบ‡เปƒเปเปˆเบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต HTTP เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡ เปเบฅเบฐเป€เบŠเบตเบšเป€เบงเบตเบžเบฃเบฑเบญเบเบŠเบต multiprotocol nginx 1.18.0, เป€เบŠเบดเปˆเบ‡เบ”เบนเบ”เป€เบญเบปเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบชเบฐเบชเบปเบกเบžเบฒเบเปƒเบ™เบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบ•เป 1.17.x. เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบชเบฒเบ‚เบฒเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡ 1.18 เบˆเบฐเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡. เบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ nginx 1.19 เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เปƒเบ™เป„เบงเป†เบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบˆเบฐเบชเบทเบšเบ•เปเปˆ. เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบšเปเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเป‚เบกเบ”เบนเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก, เปเบ™เบฐ เบ™เบณ เปƒเบŠเป‰เบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบ•เป, เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบเบฒเบ™เบญเบญเบเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฒเบ™เบ„เป‰เบฒ Nginx Plus เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เบ—เบธเบเป†เบชเบฒเบกเป€เบ”เบทเบญเบ™.

เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™ เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เป€เบ”เบทเบญเบ™เป€เบกเบชเบฒ Netcraft nginx เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ 19.56% เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ—เบฑเบ‡เบซเบกเบปเบ” (เบซเบ™เบถเปˆเบ‡เบ›เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ 20.73%, เบชเบญเบ‡เบ›เบตเบœเปˆเบฒเบ™เบกเบฒ 21.02%), เป€เบŠเบดเปˆเบ‡เบเบปเบ‡เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเบชเบญเบ‡เปƒเบ™เบ„เบงเบฒเบกเบ™เบดเบเบปเบกเปƒเบ™เบ›เบฐเป€เบžเบ”เบ™เบตเป‰ (เบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡ Apache เป€เบ—เบปเปˆเบฒเบเบฑเบš 27.64%, Google - 10.03%, Microsoft IIS - 4.77%). เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เป€เบกเบทเปˆเบญเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบฑเบ‡เบซเบกเบปเบ”, nginx เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบœเบนเป‰เบ™เปเบฒเบ‚เบญเบ‡เบ•เบปเบ™เปเบฅเบฐเบ„เบญเบšเบ„เบญเบ‡ 36.91% เบ‚เบญเบ‡เบ•เบฐเบซเบผเบฒเบ” (เบ›เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ 27.52%), เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡ Apache เป€เบ—เบปเปˆเบฒเบเบฑเบš 24.73%, Microsoft IIS - 12.85%, Google - 3.42%.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบฅเป‰เบฒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเป„เบ”เป‰เป„เบ›เบขเป‰เบฝเบกเบขเบฒเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เป‚เบฅเบ, เบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡ nginx เปเบกเปˆเบ™ 25.54% (เบ›เบตเบเปˆเบญเบ™ 26.22%, เบชเบญเบ‡เบ›เบตเบเปˆเบญเบ™ 23.76%). เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ›เบฐเบกเบฒเบ™ 459 เบฅเป‰เบฒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™ Nginx (397 เบฅเป‰เบฒเบ™เบ•เปเปˆเบ›เบตเบเปˆเบญเบ™). เป‚เบ”เบ เบ‚เปเป‰เบกเบนเบ™ W3Techs nginx เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ 31.9% เบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบญเบญเบเบˆเบฒเบเบฅเป‰เบฒเบ™เบ—เบตเปˆเป„เบ›เบขเป‰เบฝเบกเบขเบฒเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”, เปƒเบ™เป€เบ”เบทเบญเบ™เป€เบกเบชเบฒเบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ•เบปเบงเป€เบฅเบเบ™เบตเป‰เปเบกเปˆเบ™ 41.8%, เปƒเบ™เบ›เบตเบเปˆเบญเบ™ - 38% (เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เปเบกเปˆเบ™เบญเบฐเบ—เบดเบšเบฒเบเป‚เบ”เบเบเบฒเบ™เบซเบฑเบ™เป„เบ›เบซเบฒเบšเบฑเบ™เบŠเบตเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Cloudflare http). เบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡ Apache เบซเบผเบธเบ”เบฅเบปเบ‡เปƒเบ™เป„เบฅเบเบฐเบ›เบตเบˆเบฒเบ 43.6% เป€เบ›เบฑเบ™ 38.9%, เปเบฅเบฐเบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡ Microsoft IIS เบˆเบฒเบ 8.6% เป€เบ›เบฑเบ™ 8.3%. เปƒเบ™เบฅเบฑเบ”เป€เบŠเบ nginx เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ เปƒเบ™ 78.9% เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เป„เบ›เบขเป‰เบฝเบกเบขเบฒเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ” (เบ›เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ - 81%).

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเป€เบžเบตเปˆเบกเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบ‚เบฒ 1.17.x เป€เบ—เบดเบ‡เบ™เป‰เปเบฒ:

  • เป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡ limit_req_dry_run, เป€เบŠเบดเปˆเบ‡เป€เบ›เบตเบ”เปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡, เปƒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป (เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบญเบฑเบ”เบ•เบฒ), เปเบ•เปˆเบชเบทเบšเบ•เปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™;
  • เป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡ limit_conn_dry_run, เป€เบŠเบดเปˆเบ‡เบ›เปˆเบฝเบ™เป‚เบกเบ”เบนเบ™ ngx_http_limit_conn_module เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบซเบกเบ”เปเบฅเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เป€เบŠเบดเปˆเบ‡เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบšเปเปˆเบˆเปเบฒเบเบฑเบ”, เปเบ•เปˆเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ;
  • เป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡ "auth_delay", เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบฅเปˆเบฒเบŠเป‰เบฒเบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ‚เบญเบ‡ 401 เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เปเบฅเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™. เบเบฒเบ™เป‚เบˆเบกเบ•เบต, manipulating เบเบฒเบ™โ€‹เบงเบฑเบ”โ€‹เปเบ—เบโ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ” (เบเบฒเบ™โ€‹เป‚เบˆเบกโ€‹เบ•เบตโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒโ€‹) เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบˆเปเบฒโ€‹เบเบฑเบ” เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™, เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบเปˆเบญเบ เบซเบผเบท J.W.T. (JSON Web Token);
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ•เบปเบงเปเบ›เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "limit_rate" เปเบฅเบฐ "limit_rate_after", เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "proxy_upload_rate" เปเบฅเบฐ "proxy_download_rate" เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”;
  • เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ grpc_pass เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เปƒเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆ. เบ–เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเบ–เบทเบเบฅเบฐเบšเบธเป€เบ›เบฑเบ™เบŠเบทเปˆเป‚เบ”เป€เบกเบ™, เบŠเบทเปˆเบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบธเปˆเบกเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบ, เปเบฅเบฐ, เบ–เป‰เบฒเบšเปเปˆเบžเบปเบš, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเปเบฒเบ™เบปเบ”เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเปเบเป‰เป„เบ‚;
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเปเบ›เปƒเบซเบกเปˆ $proxy_protocol_server_addr ะธ $proxy_protocol_server_port, เป€เบŠเบดเปˆเบ‡เบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต เปเบฅเบฐเบžเบญเบ”เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™ PROXY;
  • เปƒเบ™เป‚เบกเบ”เบนเบ™ ngx_stream_limit_conn_ เป‚เบกเบ”เบนเบ™ เป€เบžเบตเปˆเบกเบ•เบปเบงเปเบ› $limit_conn_status, เป€เบŠเบดเปˆเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบˆเปเบฒเบเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ: PASSED, REJECTED เบซเบผเบท REJECTED_DRY_RUN;
  • เปƒเบ™เป‚เบกเบ”เบนเบ™ ngx_http_limit_req_module เป€เบžเบตเปˆเบกเบ•เบปเบงเปเบ› $limit_req_status, เป€เบŠเบดเปˆเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบˆเปเบฒเบเบฑเบ”เบญเบฑเบ”เบ•เบฒเบเบฒเบ™เบกเบฒเบฎเบญเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN เบซเบผเบท REJECTED_DRY_RUN;
  • เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป‚เบกเบ”เบนเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบญเบš ngx_http_postpone_filter_module;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ›เบดเบ”เบฅเบฑเบšเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบงเปˆเบฒ "เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ" เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ $r->internal_redirect() เบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบ™เบฒเบเบžเบฒเบชเบฒ Perl เปƒเบ™เบ•เบปเบง. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบ›เบฐเบˆเบธเบšเบฑเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ URIs เบ—เบตเปˆเบกเบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบซเบฅเบปเบšเบซเบ™เบต;
  • เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ "upstream" เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ "upstream" เบ•เบฑเบ™hashยป เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฅเบฝเบ‡เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบ”เป‰เบงเบเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบฅเบนเบเบ„เป‰เบฒ-เป€เบŠเบตเบšเป€เบงเบต, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบ„เปˆเบฒเบเบฐเปเบˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เป‚เปเบ”เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปเบšเบšเป€เบญเบเบฐเบžเบฒเบš (เบฎเบญเบš-เป‚เบฃเบšเบดเบ™) เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปเบฅเป‰เบง;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒ ioctl (FIONREAD) เบ–เป‰เบฒเบกเบตเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบงเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™