亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 詳解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三次握手的相關信息資訊供網民參考!
  • 推薦文章
    日韩专区一区| 国产成人啪精品视频免费软件| 国产成人精品综合久久久| 国产一区国产二区国产三区| 精品久久久久久综合网 | 四虎精品在线观看| 欧美爱色| 日本特黄一级| 99久久网站| 黄色福利| 国产麻豆精品视频| 亚欧成人毛片一区二区三区四区| 久久精品人人做人人爽97| 韩国三级一区| 欧美日本免费| 精品久久久久久影院免费| 国产高清视频免费| 精品毛片视频| 日本特黄特色aaa大片免费| 精品视频在线观看视频免费视频| 中文字幕一区二区三区精彩视频 | 日韩avdvd| 亚洲精品影院久久久久久| 成人免费观看视频| 91麻豆精品国产自产在线| 精品国产香蕉伊思人在线又爽又黄| 亚洲精品永久一区| 免费国产在线观看| 欧美大片a一级毛片视频| 黄视频网站在线看| 午夜在线影院| 欧美大片aaaa一级毛片| 日韩中文字幕在线播放| 国产a视频| 精品国产亚一区二区三区| 欧美国产日韩一区二区三区| 韩国三级香港三级日本三级la| 欧美1区| 欧美日本韩国| 天天做日日干| 久久精品免视看国产明星| 免费的黄色小视频| 青青久久精品国产免费看| 四虎久久精品国产| 青草国产在线| 亚洲不卡一区二区三区在线 | 久草免费在线色站| 久久国产影院| 国产精品1024永久免费视频 | 国产不卡精品一区二区三区| 97视频免费在线| 夜夜操天天爽| 精品久久久久久综合网 | 精品久久久久久中文字幕一区 | 97视频免费在线| 欧美a级片视频| 精品国产一区二区三区久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产成人啪精品| 精品国产一区二区三区久久久狼| 日韩中文字幕一区| 国产精品12| 韩国三级视频在线观看| 国产激情一区二区三区| 天天做日日爱| 久草免费在线视频| 尤物视频网站在线观看| 亚洲 欧美 91| 亚久久伊人精品青青草原2020| 国产一区免费观看| 精品视频在线看| 久久国产一久久高清| 欧美激情一区二区三区在线| 国产视频网站在线观看| 午夜激情视频在线观看| 四虎影视久久| 黄视频网站免费| 色综合久久手机在线| 九九久久99| 日韩中文字幕在线播放| 成人免费一级毛片在线播放视频| 日韩在线观看免费| 中文字幕一区二区三区精彩视频 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青久久精品| 韩国毛片基地| 国产福利免费视频| 午夜欧美成人久久久久久| 香蕉视频久久| 国产国产人免费视频成69堂| 中文字幕一区二区三区 精品| 日韩av东京社区男人的天堂| 久久精品免视看国产明星| 国产不卡在线播放| 欧美a级片视频| 久久精品免视看国产明星| 久草免费资源| 久久99这里只有精品国产| 香蕉视频一级| 久久国产精品自由自在| 999久久狠狠免费精品| 可以免费看毛片的网站| 成人免费网站视频ww| 久久久成人影院| 国产一级强片在线观看| 国产视频一区二区三区四区| 一级毛片视频免费| 欧美激情在线精品video| 日韩中文字幕一区二区不卡| 亚洲 男人 天堂| 精品视频一区二区三区免费| 国产麻豆精品| 国产高清视频免费| 欧美a级片视频| 一级毛片视频在线观看| 精品视频在线观看一区二区| 国产综合成人观看在线| 色综合久久天天综合观看| 99久久精品国产高清一区二区 | 欧美激情一区二区三区在线播放| 国产不卡福利| 一级毛片视频免费| 中文字幕一区二区三区 精品| 午夜激情视频在线观看| 一级毛片看真人在线视频| 国产亚洲精品aaa大片| 成人免费观看男女羞羞视频 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 免费毛片播放| 亚洲第一色在线| 国产a视频| 国产一区二区福利久久| 久久久成人影院| 美女被草网站| 日韩在线观看免费完整版视频| 韩国妈妈的朋友在线播放| 国产91精品一区| 亚洲精品中文一区不卡| 国产一区二区精品| 成人免费观看的视频黄页| 国产亚洲免费观看| 尤物视频网站在线观看| 国产高清在线精品一区a| 国产麻豆精品| 欧美激情一区二区三区视频| 日韩一级黄色片| 免费毛片播放| 成人在激情在线视频| 91麻豆精品国产综合久久久| 亚欧视频在线| 青青青草影院| 黄视频网站在线看| 日韩在线观看视频免费| 欧美国产日韩一区二区三区| 国产成人精品综合久久久| 国产成人精品综合在线| 日本免费看视频| 久久国产精品自由自在| 999久久久免费精品国产牛牛| 可以免费看污视频的网站| 色综合久久天天综合| 九九精品在线播放| 精品视频免费观看| 国产成人精品综合在线| 欧美激情伊人| 久草免费在线观看| 精品国产亚一区二区三区| 色综合久久手机在线| 精品久久久久久影院免费| 黄视频网站免费观看| 亚飞与亚基在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日本在线不卡免费视频一区| 黄色福利| 青青久久精品国产免费看| 二级特黄绝大片免费视频大片| 九九久久99综合一区二区| 国产精品免费久久| 九九久久国产精品| 黄视频网站在线看| 天天做人人爱夜夜爽2020毛片| 91麻豆精品国产自产在线| 四虎影视精品永久免费网站| 999久久狠狠免费精品| 欧美日本韩国| 欧美激情中文字幕一区二区| 亚洲精品久久久中文字| 国产欧美精品| 成人影视在线播放| 日本伦理网站| 精品在线观看国产| 欧美国产日韩一区二区三区| 一级毛片视频免费| 中文字幕97| 成人av在线播放| 四虎影视库| 国产一区精品| 成人在激情在线视频| 日韩一级黄色片| 国产成人啪精品|