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

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

詳解PHP Swoole與TCP三次握手

瀏覽:41日期: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久久,三上悠亚国产精品一区二区三区
中文字幕亚洲精品乱码| 久久这里只有| 免费国产自久久久久三四区久久 | 精品国产黄a∨片高清在线| 国产精品超碰| 麻豆一区二区在线| 国产suv精品一区二区四区视频 | 麻豆成人91精品二区三区| 国产劲爆久久| 大香伊人久久精品一区二区| 国产资源在线观看入口av| 国产精品99久久精品| 日韩欧美一区免费| 99成人超碰| 蜜臀av一区二区三区| 97精品久久| 卡一精品卡二卡三网站乱码| 桃色av一区二区| 欧美a级片一区| 亚洲影院天堂中文av色| 久久国产婷婷国产香蕉| 国产一区二区三区四区| 999国产精品视频| 石原莉奈在线亚洲二区| 日韩国产一二三区| 国产a亚洲精品| 久久视频国产| 深夜日韩欧美| 精品九九在线| 欧美日韩免费观看一区=区三区| 色狠狠一区二区三区| 精品三级在线观看视频| 亚洲精品99| 国产精品密蕾丝视频下载| 久久精品不卡| 日本午夜精品一区二区三区电影 | 婷婷精品在线| 国产成人a视频高清在线观看| 免费观看不卡av| 日韩欧美中文字幕一区二区三区| 精品三区视频| 久久国产福利| 激情综合五月| 亚洲欧美视频| 国产一区二区三区久久久久久久久| 伊人久久亚洲影院| 国产极品嫩模在线观看91精品| 欧美手机在线| 国产精品一二| 国产精品色网| 成人精品国产亚洲| 手机精品视频在线观看| 国产精品久久久久久久免费观看| 日韩专区欧美专区| 国产精品黑丝在线播放| 日韩毛片视频| 国产一区视频在线观看免费| 捆绑调教美女网站视频一区 | 国产美女久久| 蜜桃国内精品久久久久软件9| 国产精一区二区| 影音先锋久久| 91日韩在线| 欧美一区成人| 久久久久久久久久久9不雅视频| 日韩黄色免费网站| 久久中文亚洲字幕| 欧美国产极品| 亚洲图片久久| 国产在线欧美| 国产一区二区三区四区二区 | 久久亚洲国产| 久久99偷拍| 亚洲精品一级| 午夜日韩在线| 欧美成人基地| 久久精品国产免费| 日韩在线观看一区二区| 久久激情中文| 福利一区和二区| 国产三级一区| 一区二区精彩视频| 午夜久久tv| 日韩在线播放一区二区| 久久在线免费| 欧美精选一区二区三区| 国产精品久久亚洲不卡| 视频一区二区欧美| 天堂资源在线亚洲| 欧美日韩国产观看视频| 欧美激情麻豆| 日韩高清在线不卡| 激情欧美国产欧美| 日韩免费在线| caoporn视频在线| 美女视频黄 久久| 国产免费av国片精品草莓男男| 蜜桃视频在线观看一区二区| 午夜日本精品| 蜜桃视频欧美| 欧美gv在线| 视频在线不卡免费观看| 国产精品片aa在线观看| 日韩激情网站| 综合干狼人综合首页| 亚洲综合国产| 午夜久久福利| 久久久久国产精品一区二区| 成人黄色av| 美女免费视频一区| 国产精品久av福利在线观看| 国产乱码精品一区二区亚洲| 欧美日韩调教| 国产精品多人| 麻豆精品在线| 动漫av一区| 国产精品成久久久久| 国产精品二区不卡| 亚洲免费福利| 日韩免费视频| 亚洲成人精品| 欧美成人精品| 国产一区久久| 午夜久久久久| 亚洲资源网站| 欧美在线日韩| 国产精品大片免费观看| 精品视频在线观看网站| 水蜜桃久久夜色精品一区| 国产成人精品一区二区三区在线| 日本黄色精品| 久久精品中文| 国产精品视区| 日韩综合一区二区三区| 国产色噜噜噜91在线精品| 久久不见久久见国语| 色一区二区三区四区| 桃色av一区二区| 欧美午夜精品一区二区三区电影| 日韩午夜在线| 日韩激情精品| 成人污污视频| 九一国产精品| 亚洲影视一区| 免费在线亚洲| 精精国产xxxx视频在线野外| 亚洲女同中文字幕| 亚洲天堂免费| 国产精品香蕉| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 欧美aaaaaa午夜精品| 国产福利91精品一区二区| 日韩中文影院| 免费日韩视频| 日本va欧美va瓶| 你懂的国产精品永久在线| 欧美片第1页| 午夜一区在线| 国产精品国产三级在线观看| 91精品蜜臀一区二区三区在线| 亚洲一区二区毛片| 国产精品99久久久久久董美香| 亚洲精品永久免费视频| 中文日韩欧美| 国产精品久久久久久久久久久久久久久 | 国产午夜久久av| 日本午夜大片a在线观看| 亚洲综合不卡| 国产精品对白| 狠狠久久婷婷| 国产精品久久久久久模特| 日韩一区二区三区在线免费观看| 麻豆久久精品| 国产区精品区| 欧美日韩一二三四| 日韩二区三区在线观看| 91亚洲一区| 在线精品亚洲| 国产高清不卡| 亚洲综合激情在线| 麻豆成全视频免费观看在线看| 亚洲一区二区三区四区五区午夜| 国产精品日本一区二区不卡视频 | 亚洲成人一区| 国产精品日本一区二区不卡视频| 欧美日韩中文字幕一区二区三区| 亚洲网址在线观看| 中文av在线全新| 亚洲精品在线二区| 人在线成免费视频| 欧美日本久久| 欧美~级网站不卡| 国产精品多人| 每日更新成人在线视频| 中文字幕人成乱码在线观看| 日韩久久一区| 不卡视频在线| 麻豆一区二区三| 中文字幕一区二区精品区| 欧美日韩视频网站|