日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解PHP Swoole與TCP三次握手

瀏覽:44日期:2022-09-07 10:54:09
目錄握手常見問題連接拒絕Operation now in progress丟包錯誤ipbacklogSYN Flood握手常見問題

1、連接拒絕

2、Operation now in progress 多是因為丟包、錯誤ip、backlog滿了&阻塞&tcp_abort_on_overflow=0

3、min(maxconn, backlog) ss -lt

連接拒絕

在TCP三次握手的時候,客戶端發送SYN這個包給服務端,服務端不接受這個請求,操作系統直接返回了一個RST的包,來拒絕連接的請求。

最常見的情況就是客戶端去請求某個服務器,服務端沒有綁定對應的端口。

測試代碼如下,服務端代碼:

<?php​$server = new SwooleServer(’127.0.0.1’, 9501);​$server->set([ ’work_num’ => 2, ’backlog’ => 128,]);​$server->on(’connect’, function ($server, $fd){ echo 'Client: Connect.n';});​$server->on(’receive’, function ($server, $fd, $reactor_id, $data){ var_dump($data);});​$server->on(’close’, function (){ var_dump(’close’);});​$server->start();

這里,服務端綁定的端口是9501。

啟動服務器:

1 ~/codeDir/phpCode/hyperf-skeleton # php server.php

客戶端代碼:

<?php​$client = new SwooleClient(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);var_dump($client->connect(’127.0.0.1’, 9500));

這里,客戶端請求的端口是9500。

啟動客戶端:

~/codeDir/phpCode/hyperf-skeleton # php client.php ​Warning: SwooleClient::connect(): connect to server[127.0.0.1:9500] failed, Error: Connection refused[111] in /root/codeDir/phpCode/hyperf-skeleton/client.php on line 4bool(false)~/codeDir/phpCode/hyperf-skeleton #

報錯:

Error: Connection refused[111]

Operation now in progress

這個錯誤的絕大部分原因是因為連接超時了。

丟包

例如路由器、網關出現了故障,包被丟了。

錯誤ip

例如客戶端請求了一個錯誤的ip,那么路由器自然也就路由不到。

測試代碼如下,客戶端代碼:

<?php​$client = new SwooleClient(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);var_dump($client->connect(’8.8.8.8’, 9501));

這里,我訪問的是谷歌的DNS服務器。因為我沒有FQ,所以是訪問不了這個IP的。因此,我們發送的包是到達不了8.8.8.8服務器的。

啟動客戶端:

~/codeDir/phpCode/hyperf-skeleton # php client.php ​Warning: SwooleClient::connect(): connect to server[8.8.8.8:9501] failed, Error: Operation in progress[115] in /root/codeDir/phpCode/hyperf-skeleton/client.php on line 4bool(false)~/codeDir/phpCode/hyperf-skeleton #

報錯:

Error: Operation in progress[115]

backlog

服務器在三次握手的最后一次,即收到客戶端發來的ACK包的時候,會把建立好的連接放到backlog隊列里面。如果Swoole一直不accept連接,那么這個backlog隊列很快就會滿。backlog隊列滿了之后,服務端就會丟棄三次握手的SYN包,讓客戶端重新去連接服務端。

測試代碼如下,服務端代碼:

<?php​$server = new SwooleServer(’127.0.0.1’, 9501, SWOOLE_BASE);​$server->set([ ’work_num’ => 2, ’backlog’ => 128,]);​$server->on(’connect’, function ($server, $fd){ echo 'Client: Connect.n'; sleep(1000);});​$server->on(’receive’, function ($server, $fd, $reactor_id, $data){ var_dump($data);});​$server->on(’close’, function (){ var_dump(’close’);});​$server->start();

要想測試backlog問題必須在Swoole的SWOOLE_BASE模式下,默認的SWOOLE_PROCESS模式是沒有這個問題的。

這里,我們的backlog大小是128。

然后,我們通過sleep(1000);來阻塞住進程,使得Swoole不會繼續accept連接,從而導致backlog隊列在某個時刻變滿。

客戶端代碼:

<?php​$i = 0;while (true){ $client = new SwooleClient(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); if ($client->connect(’127.0.0.1’, 9501) == false) {break; }}

我們啟動服務器:

~/codeDir/phpCode/hyperf-skeleton # php server.php

然后啟動客戶端:

~/codeDir/phpCode/hyperf-skeleton # php client.php 省略了其他的輸出bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)bool(true)​Warning: SwooleClient::connect(): connect to server[127.0.0.1:9501] failed, Error: Operation in progress[115] in /root/codeDir/phpCode/hyperf-skeleton/client.php on line 7bool(false)​Warning: SwooleClient::connect(): connect to server[127.0.0.1:9501] failed, Error: Operation in progress[115] in /root/codeDir/phpCode/hyperf-skeleton/client.php on line 7bool(false)^C~/codeDir/phpCode/hyperf-skeleton #

我們會發現,過一段時間,客戶端這邊會報錯:

Error: Operation in progress[115]

服務端這邊輸出:

~/codeDir/phpCode/hyperf-skeleton # php server.php 

Client: Connect.

因為當Swoole服務器從backlog隊列里面accept一個連接的時候,才會觸發onReceive回調函數。所以,當服務端accept一個連接之后,Swoole自己就會陷入阻塞,不會再accept了。但是需要注意的是,盡管Swoole服務器自身是阻塞的,操作系統還會繼續去把建立好的連接放入backlog隊列里面。所以,backlog隊列會滿。

SYN Flood

除了三次握手成功之后會使用到的backlog隊列,還有一個SYN隊列。也就是在三次握手時候,客戶端給服務端發送了SYN包,服務端會有一個SYN隊列來維護。

與其有關的內核配置:

tcp_max_syn_backlogtcp_synack_retriestcp_syncookies

其中,tcp_max_syn_backlog就是這個SYN隊列的長度。如果大量的SYN包把SYN隊列塞滿了,那么其他正常的連接過來,服務端就無法處理。

SYN Flood攻擊就是客戶端瘋狂的給服務端發送SYN包,然后服務端每次都會把請求放到SYN隊列里面。但是,客戶端不給服務端回ACK包。如果客戶端不回ACK包,那么服務端就會給客戶端回SYN + ACK包,即第二次握手發送的包。而回復SYN + ACK包的次數就是由tcp_synack_retries參數決定的。如果把tcp_synack_retries設置為0,那么如果服務端沒有收到ACK包,那么服務端就不會重試發送SYN + ACK包了,這樣就減少了SYN隊列里面那個請求的存活時間。

tcp_syncookies的原理就是,客戶端發送SYN包的時候,不會維護SYN隊列,而是返回一個cookie給客戶端。然后客戶端發送第三次握手的時候,攜帶這個cookie值,只有這個cookie驗證通過,服務端才會給連接分配資源。

以上就是詳解PHP Swoole與TCP三次握手的詳細內容,更多關于PHP Swoole與TCP三次握手的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产传媒在线观看| 99国产精品久久久久久久成人热 | 美女性感视频久久| 国产毛片一区| 蜜桃精品在线| 欧美激情一区| 影音国产精品| 99精品视频在线观看免费播放| 欧美精选一区二区三区| 日本一区二区高清不卡| 亚洲视频二区| 亚洲免费毛片| 亚洲一二三区视频| 石原莉奈在线亚洲三区| 久久亚洲国产| 91视频一区| 国产成人1区| 狠狠久久伊人| 欧美日本不卡| 国产乱子精品一区二区在线观看| 综合国产视频| 视频一区在线播放| 免费观看在线综合| 国产毛片久久| 蜜桃视频一区二区三区在线观看| 久久久精品日韩| 久久亚洲国产| 九色精品91| 色黄视频在线观看| 蜜臀av亚洲一区中文字幕| 久久国产99| 色综合视频一区二区三区日韩 | 国产91久久精品一区二区| 国产99久久| 亚洲一区激情| 欧美亚洲三区| 国产福利电影在线播放| 在线亚洲精品| 国产精品亚洲成在人线| 中文字幕色婷婷在线视频| 久久要要av| 丝袜美腿亚洲色图| 国产女人18毛片水真多18精品| 欧美日本不卡高清| 成人免费电影网址| 日韩精品91亚洲二区在线观看| 精品亚洲a∨一区二区三区18| 欧美 日韩 国产精品免费观看| 最新国产精品视频| 97se综合| 国产精品久久久久久av公交车| 久久免费视频66| 中文字幕一区二区三区四区久久 | sm捆绑调教国产免费网站在线观看| 蜜桃传媒麻豆第一区在线观看 | 国产精品中文| 99精品电影| 日韩国产欧美一区二区三区| 国产亚洲一区二区手机在线观看 | 亚洲精品在线国产| 国产麻豆久久| 日日夜夜免费精品视频| 美女久久久久| 人人草在线视频| 国产精品黄色| 日韩高清不卡在线| | aa亚洲婷婷| 成人免费网站www网站高清| 91免费精品国偷自产在线在线| 欧美片第1页| 精品视频网站| av亚洲免费| 日韩不卡在线| 日本va欧美va欧美va精品| 欧美特黄a级高清免费大片a级| 免费亚洲婷婷| 丝瓜av网站精品一区二区| 亚洲午夜电影| 久久97视频| 久久中文欧美| 精品一区二区三区中文字幕| 国产日产一区| 麻豆一区二区99久久久久| 免费日韩成人| 国产一区二区三区四区| 精品国产中文字幕第一页| 国产一区二区三区四区| 日韩成人三级| 成人精品亚洲| 亚洲中字黄色| 日韩超碰人人爽人人做人人添| 日韩欧美中文字幕电影| 欧美日韩一区二区高清| 久久亚洲国产精品尤物| 丝袜诱惑一区二区| 欧美a级一区| 国产模特精品视频久久久久| 亚洲日韩视频| 久久成人高清| 欧美a级片一区| 亚洲91网站| 国产一区2区| 国产亚洲毛片在线| 日韩欧美在线精品| 久久亚洲道色| 99国产精品| 精品黄色一级片| 一区在线观看| 国产精品一区二区三区美女| 日本国产精品| 日本午夜精品一区二区三区电影| 久久精品国产免费| 欧美日韩四区| 美女视频黄免费的久久| 国产亚洲精品v| 日本精品黄色| 日韩不卡一二三区| 在线日韩av| 亚洲一区二区日韩| 日韩国产在线| 久久国产尿小便嘘嘘| 欧美日韩尤物久久| 久久a爱视频| 亚洲3区在线| 99pao成人国产永久免费视频| 麻豆成人91精品二区三区| 久久国产精品久久w女人spa| 欧美www视频在线观看| 国产欧美三级| 视频一区视频二区中文字幕| 日韩免费福利视频| 激情综合婷婷| 国产欧美在线| 亚州国产精品| 蜜桃视频第一区免费观看| 99成人在线| 日韩亚洲精品在线| 91看片一区| 97精品国产福利一区二区三区| 久久免费影院| 性欧美精品高清| 欧美女激情福利| 欧美在线资源| 日韩久久精品| 成人精品中文字幕| 亚洲黑丝一区二区| 美女网站一区| 日韩免费精品| 亚洲黄页一区| 欧美二区视频| 日韩免费av| 亚洲综合电影| 电影天堂国产精品| 国产精品不卡| 亚洲啊v在线| av高清一区| 午夜免费一区| 久久亚洲国产精品一区二区| 狠狠爱成人网| 日韩国产在线不卡视频| 亚洲欧美日本国产专区一区| 欧美精品黄色| 天堂av一区| 日韩福利视频导航| 国产精久久久| 91精品一区二区三区综合在线爱| 99热精品久久| 一区二区高清| 精品资源在线| 国产国产精品| 99热精品在线| 欧美日韩午夜| 国产91一区| 日韩精品高清不卡| 亚洲女同av| 亚欧洲精品视频在线观看| 国产精品视频一区二区三区 | 精品国产第一福利网站| 99国产精品久久久久久久成人热| 日韩欧美三区| 欧美一级精品| 国产精品成人**免费视频 | 亚洲精品黄色| 欧美日本久久| 午夜国产精品视频| 国产精品s色| 亚洲日本免费电影| 日韩精品诱惑一区?区三区| 免费高潮视频95在线观看网站| 蜜桃一区二区三区在线| 国产精品二区影院| 国产精品丝袜xxxxxxx| 日本欧美国产| 国产免费播放一区二区| 99精品综合| 成人精品高清在线视频| 欧美日韩中文| 日韩va欧美va亚洲va久久| 日本视频中文字幕一区二区三区|