婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 詳解PHP Swoole與TCP三次握手

詳解PHP Swoole與TCP三次握手

熱門(mén)標(biāo)簽:地圖標(biāo)注平臺(tái)怎么給錢(qián)注冊(cè) 常州地圖標(biāo)注服務(wù)商 百度商鋪地圖標(biāo)注 衡水外呼系統(tǒng)平臺(tái) 注冊(cè)400電話(huà)申請(qǐng) 新河科技智能外呼系統(tǒng)怎么樣 安裝電銷(xiāo)外呼系統(tǒng) 釘釘打卡地圖標(biāo)注 福州人工外呼系統(tǒng)哪家強(qiáng)

握手常見(jiàn)問(wèn)題

1、連接拒絕

2、Operation now in progress 多是因?yàn)閬G包、錯(cuò)誤ip、backlog滿(mǎn)了阻塞tcp_abort_on_overflow=0

3、min(maxconn, backlog) ss -lt

連接拒絕

在TCP三次握手的時(shí)候,客戶(hù)端發(fā)送SYN這個(gè)包給服務(wù)端,服務(wù)端不接受這個(gè)請(qǐng)求,操作系統(tǒng)直接返回了一個(gè)RST的包,來(lái)拒絕連接的請(qǐng)求。

最常見(jiàn)的情況就是客戶(hù)端去請(qǐng)求某個(gè)服務(wù)器,服務(wù)端沒(méi)有綁定對(duì)應(yīng)的端口。

測(cè)試代碼如下,服務(wù)端代碼:

?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();

這里,服務(wù)端綁定的端口是9501。

啟動(dòng)服務(wù)器:

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

客戶(hù)端代碼:

?php
​
$client = new \Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
var_dump($client->connect('127.0.0.1', 9500));

這里,客戶(hù)端請(qǐng)求的端口是9500。

啟動(dòng)客戶(hù)端:

~/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 #

報(bào)錯(cuò):

Error: Connection refused[111]

Operation now in progress

這個(gè)錯(cuò)誤的絕大部分原因是因?yàn)檫B接超時(shí)了。

丟包

例如路由器、網(wǎng)關(guān)出現(xiàn)了故障,包被丟了。

錯(cuò)誤ip

例如客戶(hù)端請(qǐng)求了一個(gè)錯(cuò)誤的ip,那么路由器自然也就路由不到。

測(cè)試代碼如下,客戶(hù)端代碼:

?php
​
$client = new \Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
var_dump($client->connect('8.8.8.8', 9501));

這里,我訪(fǎng)問(wèn)的是谷歌的DNS服務(wù)器。因?yàn)槲覜](méi)有FQ,所以是訪(fǎng)問(wèn)不了這個(gè)IP的。因此,我們發(fā)送的包是到達(dá)不了8.8.8.8服務(wù)器的。

啟動(dòng)客戶(hù)端:

~/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 #

報(bào)錯(cuò):

Error: Operation in progress[115]

backlog

服務(wù)器在三次握手的最后一次,即收到客戶(hù)端發(fā)來(lái)的ACK包的時(shí)候,會(huì)把建立好的連接放到backlog隊(duì)列里面。如果Swoole一直不accept連接,那么這個(gè)backlog隊(duì)列很快就會(huì)滿(mǎn)。backlog隊(duì)列滿(mǎn)了之后,服務(wù)端就會(huì)丟棄三次握手的SYN包,讓客戶(hù)端重新去連接服務(wù)端。

測(cè)試代碼如下,服務(wù)端代碼:

?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();

要想測(cè)試backlog問(wèn)題必須在Swoole的SWOOLE_BASE模式下,默認(rèn)的SWOOLE_PROCESS模式是沒(méi)有這個(gè)問(wèn)題的。

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

然后,我們通過(guò)sleep(1000);來(lái)阻塞住進(jìn)程,使得Swoole不會(huì)繼續(xù)accept連接,從而導(dǎo)致backlog隊(duì)列在某個(gè)時(shí)刻變滿(mǎn)。

客戶(hù)端代碼:

?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;
    }
}

我們啟動(dòng)服務(wù)器:

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

然后啟動(dòng)客戶(hù)端:

~/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 #

我們會(huì)發(fā)現(xiàn),過(guò)一段時(shí)間,客戶(hù)端這邊會(huì)報(bào)錯(cuò):

Error: Operation in progress[115]

服務(wù)端這邊輸出:

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

Client: Connect.

因?yàn)楫?dāng)Swoole服務(wù)器從backlog隊(duì)列里面accept一個(gè)連接的時(shí)候,才會(huì)觸發(fā)onReceive回調(diào)函數(shù)。所以,當(dāng)服務(wù)端accept一個(gè)連接之后,Swoole自己就會(huì)陷入阻塞,不會(huì)再accept了。但是需要注意的是,盡管Swoole服務(wù)器自身是阻塞的,操作系統(tǒng)還會(huì)繼續(xù)去把建立好的連接放入backlog隊(duì)列里面。所以,backlog隊(duì)列會(huì)滿(mǎn)。

SYN Flood

除了三次握手成功之后會(huì)使用到的backlog隊(duì)列,還有一個(gè)SYN隊(duì)列。也就是在三次握手時(shí)候,客戶(hù)端給服務(wù)端發(fā)送了SYN包,服務(wù)端會(huì)有一個(gè)SYN隊(duì)列來(lái)維護(hù)。

與其有關(guān)的內(nèi)核配置:

tcp_max_syn_backlog
tcp_synack_retries
tcp_syncookies

其中,tcp_max_syn_backlog就是這個(gè)SYN隊(duì)列的長(zhǎng)度。如果大量的SYN包把SYN隊(duì)列塞滿(mǎn)了,那么其他正常的連接過(guò)來(lái),服務(wù)端就無(wú)法處理。

SYN Flood攻擊就是客戶(hù)端瘋狂的給服務(wù)端發(fā)送SYN包,然后服務(wù)端每次都會(huì)把請(qǐng)求放到SYN隊(duì)列里面。但是,客戶(hù)端不給服務(wù)端回ACK包。如果客戶(hù)端不回ACK包,那么服務(wù)端就會(huì)給客戶(hù)端回SYN + ACK包,即第二次握手發(fā)送的包。而回復(fù)SYN + ACK包的次數(shù)就是由tcp_synack_retries參數(shù)決定的。如果把tcp_synack_retries設(shè)置為0,那么如果服務(wù)端沒(méi)有收到ACK包,那么服務(wù)端就不會(huì)重試發(fā)送SYN + ACK包了,這樣就減少了SYN隊(duì)列里面那個(gè)請(qǐng)求的存活時(shí)間。

tcp_syncookies的原理就是,客戶(hù)端發(fā)送SYN包的時(shí)候,不會(huì)維護(hù)SYN隊(duì)列,而是返回一個(gè)cookie給客戶(hù)端。然后客戶(hù)端發(fā)送第三次握手的時(shí)候,攜帶這個(gè)cookie值,只有這個(gè)cookie驗(yàn)證通過(guò),服務(wù)端才會(huì)給連接分配資源。

以上就是詳解PHP Swoole與TCP三次握手的詳細(xì)內(nèi)容,更多關(guān)于PHP Swoole與TCP三次握手的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Swoole擴(kuò)展的6種模式深入詳解
  • php中Swoole的熱更新實(shí)現(xiàn)代碼實(shí)例
  • swoole鎖的機(jī)制代碼實(shí)例講解
  • windows系統(tǒng)php環(huán)境安裝swoole具體步驟
  • linux系統(tǒng)虛擬主機(jī)開(kāi)啟支持Swoole Loader擴(kuò)展的方法
  • Swoole源碼中如何查詢(xún)Websocket的連接問(wèn)題詳解
  • 在Windows系統(tǒng)上安裝Cygwin搭建Swoole測(cè)試環(huán)境的圖文教程
  • php使用goto實(shí)現(xiàn)自動(dòng)重啟swoole、reactphp、workerman服務(wù)的代碼
  • Centos7安裝swoole擴(kuò)展操作示例
  • 詳解Swoole TCP流數(shù)據(jù)邊界問(wèn)題解決方案

標(biāo)簽:六安 唐山 遼陽(yáng) 鷹潭 白城 克拉瑪依 鶴崗 柳州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解PHP Swoole與TCP三次握手》,本文關(guān)鍵詞  詳解,PHP,Swoole,與,TCP,三次,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解PHP Swoole與TCP三次握手》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于詳解PHP Swoole與TCP三次握手的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩电影在线观看电影| 日韩视频在线永久播放| 日韩视频免费直播| 久久机这里只有精品| 亚洲国产精品激情在线观看| 成人av综合在线| 日韩国产欧美在线视频| 国产视频911| 欧美成人艳星乳罩| 在线观看www91| 六月丁香婷婷久久| 一区二区三区在线影院| 精品精品欲导航| 欧美日韩在线播放三区| 久久久国产精华| 欧美日韩亚洲高清一区二区| av电影天堂一区二区在线观看| 蜜臀av一级做a爰片久久| 亚洲你懂的在线视频| 国产女人aaa级久久久级| 欧美一区二区三区的| 精品视频资源站| 在线观看精品一区| 91亚洲大成网污www| 国产成人午夜高潮毛片| 成人免费的视频| 国产乱一区二区| 337p亚洲精品色噜噜噜| 成人精品小蝌蚪| 一区二区三区鲁丝不卡| 亚洲成人在线网站| 中文字幕在线观看不卡视频| 欧美成人一区二区| 国产欧美视频一区二区三区| 国产精品理论片在线观看| 日韩美女视频一区二区在线观看| 精品久久国产字幕高潮| 欧美激情一二三区| 亚洲三级电影网站| 久久精品人人做人人爽人人| 国产一区二区伦理| 国产综合成人久久大片91| 国产综合色在线视频区| 欧美一区二区大片| 亚洲一区二区三区自拍| 99久久婷婷国产综合精品| 国产视频一区在线播放| 波多野结衣中文字幕一区| 国产精品丝袜久久久久久app| 国产美女精品人人做人人爽| 欧美韩国日本综合| 欧美三级日韩三级| 有码一区二区三区| 久久99国产精品久久99 | 国产精品精品国产色婷婷| 国产欧美日产一区| 不卡高清视频专区| 亚洲成人先锋电影| 国产一区二区精品久久| 亚洲精品国久久99热| 久久久久久久久一| 粉嫩蜜臀av国产精品网站| 亚洲一区二区三区影院| 最新国产精品久久精品| 国产欧美精品区一区二区三区| 91麻豆精品国产91久久久久| 国产揄拍国内精品对白| 欧美丝袜丝交足nylons| yourporn久久国产精品| 国产精品素人视频| 国产精品免费久久| 久久九九久久九九| 国产·精品毛片| 亚洲在线成人精品| 国产精品国产三级国产| 国产人成亚洲第一网站在线播放| 色综合天天天天做夜夜夜夜做| 久久亚洲综合色一区二区三区| 亚洲乱码中文字幕| 亚洲欧美日韩精品久久久久| 中文字幕在线观看一区二区| 精品视频在线视频| 欧美日韩国产免费| 久久成人免费网站| 日本高清免费不卡视频| 亚洲影视在线播放| 国产精品1区2区| 成人av电影免费在线播放| 久久久久久免费| 免费在线视频一区| 国产综合久久久久久鬼色| 欧美大片国产精品| 亚洲女女做受ⅹxx高潮| 久久成人免费日本黄色| 国产拍揄自揄精品视频麻豆| 国产精品传媒入口麻豆| 一本高清dvd不卡在线观看| 毛片不卡一区二区| 欧美亚洲自拍偷拍| 福利视频网站一区二区三区| 国产成人精品三级麻豆| 一本久久综合亚洲鲁鲁五月天| 国产偷国产偷亚洲高清人白洁 | 国产一区二区三区| 一本在线高清不卡dvd| 欧美男男青年gay1069videost| 免费在线观看一区| 精品国产一区二区三区四区四| 久久你懂得1024| 国产在线精品国自产拍免费| 亚洲黄色在线视频| 欧美日韩一区二区三区高清| 欧美激情综合在线| 精品久久久久一区二区国产| www日韩大片| 国产精品美女久久久久高潮| 国产亚洲精品超碰| 亚洲欧洲三级电影| 日韩激情中文字幕| 777欧美精品| 欧美一级高清片| 青草av.久久免费一区| 国产欧美在线观看一区| 欧美精品在线观看一区二区| 亚洲天堂2016| 激情成人综合网| 7777女厕盗摄久久久| 国产亚洲欧美日韩俺去了| 亚洲欧美另类图片小说| 自拍偷拍国产精品| 亚洲国产精品久久人人爱蜜臀 | 亚洲日本一区二区| 国产老肥熟一区二区三区| 精品视频在线免费| 99久久综合狠狠综合久久| 开心九九激情九九欧美日韩精美视频电影| 国产农村妇女毛片精品久久麻豆 | 91丝袜美腿高跟国产极品老师| 国内外成人在线| 亚洲国产精品av| 91.com在线观看| 精品福利视频一区二区三区| 精品国产自在久精品国产| jizzjizzjizz欧美| 欧美草草影院在线视频| 亚洲欧美在线视频观看| 国产精品电影院| 亚洲电影一级黄| 久久 天天综合| 成人免费的视频| 欧美日韩久久久一区| 精品综合免费视频观看| 成人在线综合网站| 国产精品77777竹菊影视小说| 蜜桃一区二区三区四区| 国产精品羞羞答答xxdd| 91视频91自| 久久嫩草精品久久久精品一| 欧洲色大大久久| 久久丝袜美腿综合| 亚洲在线视频一区| 岛国一区二区三区| 精品国产免费人成在线观看| 91精品一区二区三区久久久久久| 国产精品少妇自拍| 中文一区二区完整视频在线观看| 午夜精品123| 色婷婷精品大视频在线蜜桃视频 | 欧美一级国产精品| 一区二区三区不卡视频在线观看| 视频精品一区二区| 成人18视频日本| 国产夜色精品一区二区av| 日本欧美在线观看| 在线观看日韩一区| 国产精品成人在线观看| 丁香一区二区三区| 色偷偷88欧美精品久久久| 2024国产精品| 日本 国产 欧美色综合| 制服丝袜在线91| **性色生活片久久毛片| 亚洲第一av色| 欧美综合欧美视频| 久久青草国产手机看片福利盒子 | 日韩影院免费视频| 精品国产sm最大网站免费看| 精品精品国产高清一毛片一天堂| 亚洲美女在线国产| 亚洲第一会所有码转帖| 在线观看国产一区二区| 日韩一区二区在线观看视频| 国产精品理伦片| 91黄色激情网站| 亚洲精品老司机| 欧美在线视频全部完| 日韩国产欧美三级| 成人精品免费网站| 久久一区二区三区四区| 久久99国产精品麻豆|