校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 詳解PHP Swoole與TCP三次握手

詳解PHP Swoole與TCP三次握手

熱門標簽:地圖標注平臺怎么給錢注冊 常州地圖標注服務商 百度商鋪地圖標注 衡水外呼系統平臺 注冊400電話申請 新河科技智能外呼系統怎么樣 安裝電銷外呼系統 釘釘打卡地圖標注 福州人工外呼系統哪家強

握手常見問題

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 \Swoole\Server('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 \Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
var_dump($client->connect('127.0.0.1', 9500));

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

啟動客戶端:

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

報錯:

Error: Connection refused[111]

Operation now in progress

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

丟包

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

錯誤ip

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

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

?php
​
$client = new \Swoole\Client(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: Swoole\Client::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 4
bool(false)
~/codeDir/phpCode/hyperf-skeleton #

報錯:

Error: Operation in progress[115]

backlog

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

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

?php
​
$server = new \Swoole\Server('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 \Swoole\Client(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: Swoole\Client::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 7
bool(false)
​
Warning: Swoole\Client::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 7
bool(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_backlog
tcp_synack_retries
tcp_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三次握手的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Swoole擴展的6種模式深入詳解
  • php中Swoole的熱更新實現代碼實例
  • swoole鎖的機制代碼實例講解
  • windows系統php環境安裝swoole具體步驟
  • linux系統虛擬主機開啟支持Swoole Loader擴展的方法
  • Swoole源碼中如何查詢Websocket的連接問題詳解
  • 在Windows系統上安裝Cygwin搭建Swoole測試環境的圖文教程
  • php使用goto實現自動重啟swoole、reactphp、workerman服務的代碼
  • Centos7安裝swoole擴展操作示例
  • 詳解Swoole TCP流數據邊界問題解決方案

標簽:六安 唐山 遼陽 鷹潭 白城 克拉瑪依 鶴崗 柳州

巨人網絡通訊聲明:本文標題《詳解PHP Swoole與TCP三次握手》,本文關鍵詞  詳解,PHP,Swoole,與,TCP,三次,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解PHP Swoole與TCP三次握手》相關的同類信息!
  • 本頁收集關于詳解PHP Swoole與TCP三次握手的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    中文字幕精品一区二区精品绿巨人| 精品国产凹凸成av人网站| 亚洲综合另类小说| 国产一区二区按摩在线观看| 欧美无人高清视频在线观看| 7777精品伊人久久久大香线蕉| 亚洲国产精品99久久久久久久久| 日本网站在线观看一区二区三区| 欧美日韩一区久久| 亚洲一区免费在线观看| 99久久精品免费看| 国产精品福利av| 91视频在线观看| 亚洲国产综合人成综合网站| 91亚洲资源网| 亚洲国产精品久久久久婷婷884| 91年精品国产| 亚洲成人动漫在线免费观看| 91久久精品网| 麻豆一区二区三区| 中文字幕成人网| 欧美亚洲国产怡红院影院| 一区av在线播放| 欧亚洲嫩模精品一区三区| 亚洲国产视频直播| 综合久久久久久| 亚洲免费av高清| 日韩欧美资源站| 欧美日韩在线电影| 91免费版pro下载短视频| 国产乱人伦偷精品视频不卡| 日韩在线观看一区二区| 亚洲午夜精品一区二区三区他趣| 中文字幕第一区综合| 久久蜜臀中文字幕| 欧美国产一区二区在线观看 | 日韩视频免费观看高清完整版在线观看| 国产主播一区二区| 国产精品一区二区久激情瑜伽| 奇米影视一区二区三区小说| 午夜精品久久久久久久久久| 亚洲第一激情av| 免费欧美在线视频| 国产成人精品亚洲777人妖| 不卡在线观看av| 国产精品一线二线三线精华| 日韩久久精品一区| 久久综合九色综合欧美就去吻| ww亚洲ww在线观看国产| 亚洲精品日日夜夜| 久久成人综合网| 欧美图片一区二区三区| 亚洲伊人伊色伊影伊综合网| 成人高清免费在线播放| 欧美激情综合五月色丁香 | 国产精品久久久久久久裸模| 日韩视频在线你懂得| 欧美日韩国产影片| 国产午夜精品久久| 欧美亚洲国产一区二区三区va| 爽好多水快深点欧美视频| 日韩欧美的一区二区| 成人福利视频在线| 亚洲6080在线| 视频一区免费在线观看| 国产视频一区二区在线观看| 不卡的av在线播放| 在线播放/欧美激情| 亚洲一级二级三级在线免费观看| 秋霞国产午夜精品免费视频| 91麻豆精品91久久久久同性| 中文字幕欧美日韩一区| 欧美经典三级视频一区二区三区| 日韩欧美黄色影院| 成人精品一区二区三区四区| 亚洲v中文字幕| 亚洲国产成人自拍| 成人18精品视频| 国模无码大尺度一区二区三区| 中文字幕av一区二区三区高| 奇米在线7777在线精品| 久久久久亚洲蜜桃| 国产不卡视频一区| 亚洲va欧美va天堂v国产综合| 日韩一卡二卡三卡国产欧美| 国内欧美视频一区二区| 一区二区在线观看不卡| 欧美电影免费观看高清完整版在线观看| 狠狠色狠狠色合久久伊人| 国产精品免费网站在线观看| 91精品国产入口| av午夜一区麻豆| 国产成人综合亚洲网站| 国产精品一级在线| 国产一区二区导航在线播放| 亚洲制服丝袜在线| 亚洲一区二区三区视频在线| 中文字幕在线一区| 国产精品欧美极品| 亚洲国产日韩a在线播放性色| 亚洲h在线观看| 奇米一区二区三区av| 国产精品一区二区久久精品爱涩 | 色系网站成人免费| 国内精品久久久久影院薰衣草| 96av麻豆蜜桃一区二区| 成av人片一区二区| 九九国产精品视频| 国产精品久久久久影院亚瑟| 精品久久久久久综合日本欧美| 日韩一卡二卡三卡| 精品日韩一区二区| 欧美成人一区二区三区在线观看| 3atv一区二区三区| 色婷婷国产精品| 91精品久久久久久久91蜜桃| 欧美精品久久99| 久久婷婷一区二区三区| 久久精品人人爽人人爽| 国产色婷婷亚洲99精品小说| 久久久久久一二三区| 欧美在线三级电影| 国产一区二区不卡在线| 日韩国产精品久久| 欧美系列一区二区| 欧美日韩一级片网站| 国产午夜亚洲精品理论片色戒| 欧美日韩在线三区| 欧美国产日本韩| 欧美日韩国产精品成人| 国产乱码字幕精品高清av| 中文字幕免费不卡| 亚洲成av人片在线| 欧美mv和日韩mv的网站| 狠狠色丁香九九婷婷综合五月| 国产精品剧情在线亚洲| 粉嫩蜜臀av国产精品网站| 极品少妇xxxx精品少妇偷拍| 91精品久久久久久久99蜜桃| 91无套直看片红桃| 亚洲在线一区二区三区| 免费看日韩精品| 欧美影院一区二区三区| 久久久www成人免费毛片麻豆 | 欧美精品日日鲁夜夜添| 日韩国产在线观看| 中文字幕第一区综合| 国产精品夜夜嗨| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲日本va午夜在线电影| 久久天堂av综合合色蜜桃网| 欧美精品精品一区| 欧美日韩中文字幕一区| 丁香激情综合国产| 久久99精品久久久久久国产越南| 亚洲一区二区三区精品在线| 国产精品灌醉下药二区| 亚洲日本va午夜在线影院| 精品国产青草久久久久福利| 欧美手机在线视频| 日韩精品一区第一页| 国产一区二区视频在线播放| 国产色产综合产在线视频| 国产999精品久久| 欧美韩日一区二区三区| 国产精品一级片| 国产清纯白嫩初高生在线观看91 | 久久国产精品99精品国产| 欧美日韩国产系列| 无吗不卡中文字幕| 欧美日韩国产首页| 奇米色一区二区三区四区| 日韩精品一区二区三区在线| 国产精品影视天天线| 国产精品亲子乱子伦xxxx裸| 成人午夜又粗又硬又大| 一区在线观看免费| 欧美色手机在线观看| 国产揄拍国内精品对白| 久久精品夜夜夜夜久久| 色综合久久久久网| 久久成人久久鬼色| 亚洲特黄一级片| 日韩精品一区二区三区在线| proumb性欧美在线观看| 日韩高清在线电影| 国产精品区一区二区三区| 在线免费视频一区二区| 成人在线视频首页| 日本视频一区二区三区| 亚洲成人激情自拍| 亚洲裸体在线观看| 久久久久久久精| 精品国产一区二区三区久久影院 | 国产精品久久看| 国产日韩av一区二区| 久久久三级国产网站| 精品国产91亚洲一区二区三区婷婷 | 久久久久久久国产精品影院| 欧美成人精品1314www|