數(shù)十年專注企業(yè)數(shù)字化轉(zhuǎn)型、智能化升級(jí)、企業(yè)上云解決方案服務(wù)商
工單提交 實(shí)名認(rèn)證 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動(dòng) 服務(wù)器租用 服務(wù)器托管 機(jī)柜租賃 帶寬租賃
  • 最新資訊
  • 熱門(mén)資訊
  • 最熱資訊
智能建站

linux的TCP最大連接量不能超過(guò)65535嗎?服務(wù)器如何應(yīng)對(duì)數(shù)百萬(wàn)并發(fā)?

發(fā)布時(shí)間:2022-07-18 作者:admin

簡(jiǎn)述:問(wèn)題有一個(gè)概念上的誤解,錯(cuò)誤的把TCP端口號(hào)的上限65535理解成了TCP連接數(shù)的上限,進(jìn)而認(rèn)為L(zhǎng)inux無(wú)法實(shí)現(xiàn)超過(guò)65,535個(gè)的并發(fā)任務(wù),實(shí)際上端口號(hào)數(shù)量和TCP連接數(shù)確實(shí)有關(guān)聯(lián),但并非一一對(duì)應(yīng)的關(guān)系。65,535從哪來(lái)的,干啥的?要

問(wèn)題有概念上的誤解,錯(cuò)誤的把握TCP65535端口號(hào)的上限理解為T(mén)CP連接數(shù)的上限被認(rèn)為是Linux實(shí)際上,端口號(hào)的數(shù)量和535個(gè)以上的并發(fā)任務(wù)是無(wú)法實(shí)現(xiàn)的TCP連接數(shù)確實(shí)相關(guān),但不是一對(duì)應(yīng)的。

65、535從何而來(lái),做什么?

要解釋這個(gè)問(wèn)題,首先要說(shuō)明65、535的含義。

在Linux在系統(tǒng)中,如果兩臺(tái)機(jī)器需要通信,則需要相互建立TCP連接,為了讓雙方相互了解,Linux系統(tǒng)用四元組唯一標(biāo)識(shí)一個(gè)TCP連接:{localip,localport,remoteip,remoteport},即本機(jī)IP、本機(jī)端口,遠(yuǎn)程IP、遠(yuǎn)程端口,IP端口相當(dāng)于社區(qū)地址和門(mén)牌號(hào)。只有獲得這些信息,通信方才能相互了解。在Linux在系統(tǒng)中,表示端口號(hào)(port)變量占16位,這決定了端口號(hào)最多有65536個(gè),即6536個(gè)。此外,端口0具有特殊意義,因此每個(gè)服務(wù)器最多有65535個(gè)端口。在Linux在系統(tǒng)中,表示端口號(hào)(port)變量占16位,這就決定了端口號(hào)最多有26個(gè),即65536個(gè)。此外,端口0具有特殊意義,因此每個(gè)服務(wù)器最多有65535個(gè)端口。因此,65535代表Linux系統(tǒng)支持的TCP在TCP建立連接時(shí)使用。

TCP如何建立連接,與端口號(hào)有什么關(guān)系?

Linux交互時(shí),服務(wù)器通常有兩種身份:客戶端或服務(wù)器端。典型的交互場(chǎng)景是:

(1)服務(wù)器端主動(dòng)創(chuàng)建監(jiān)控socket,并綁定外部服務(wù)端口port,然后開(kāi)始監(jiān)聽(tīng)

(2)當(dāng)客戶想要與服務(wù)器端通信時(shí),他們開(kāi)始連接服務(wù)器端口port

(3)服務(wù)端接受客戶端的然后生成新的服務(wù)端socket

(4)新的服務(wù)器和客戶端socket里進(jìn)行通信

可見(jiàn),端口port主要用于服務(wù)器和客戶端“握手認(rèn)識(shí)”一旦過(guò)程相互了解,就會(huì)產(chǎn)生socket此時(shí)通信port不再需要,可以給別的socket使用通信,所以很明顯TCP連接的數(shù)量可以大于TCP65、535的端口號(hào)。

考慮兩個(gè)極端場(chǎng)景,即一個(gè)Linux服務(wù)器僅用作客戶端或服務(wù)器端

(1)Linux服務(wù)器只用作客戶端

此時(shí)每次啟動(dòng)一個(gè)TCP請(qǐng)求,系統(tǒng)會(huì)為您指定一個(gè)空間的本地端口,并且是獨(dú)家的,不會(huì)被其他人使用TCP連接被搶走,最多可多可以建立65535個(gè)連接,每個(gè)連接都與不同的服務(wù)器交互。這種場(chǎng)景是題主描述的,但由于條件過(guò)于苛刻,屬于小概率事件,理論上更有可能出現(xiàn)在現(xiàn)實(shí)環(huán)境中。

(2)Linux服務(wù)器只用作服務(wù)器

在這種情況下,服務(wù)端將固定監(jiān)控本地端口port,等待客戶端發(fā)起請(qǐng)求。為了計(jì)算簡(jiǎn)單,我們假設(shè)服務(wù)器端IP與端口多對(duì)一,這樣TCP有四元組remoteip和remoteport它是可變的,所以最大的支持是創(chuàng)建TCP32次方數(shù)為2(IP地址為32位)乘以2的16次(port16位)等于2的48次方。

現(xiàn)實(shí)中單臺(tái)Linux支持服務(wù)器TCP連接數(shù)量

通過(guò)前面的分析,我們知道在現(xiàn)實(shí)場(chǎng)景中,由于端口的存在port服務(wù)器可以同時(shí)支持復(fù)用TCP連接數(shù)與65、535沒(méi)有對(duì)應(yīng)關(guān)系。事實(shí)上,真正的影響TCP連接的數(shù)量是服務(wù)器的內(nèi)存允許單個(gè)過(guò)程同時(shí)打開(kāi)文件的數(shù)量,因?yàn)槊總€(gè)創(chuàng)建一個(gè)TCP創(chuàng)建一個(gè)連接socket句柄,每個(gè)socket當(dāng)系統(tǒng)內(nèi)存統(tǒng)內(nèi)存的一部分,當(dāng)系統(tǒng)內(nèi)存被占用時(shí),允許TCP并發(fā)連接數(shù)達(dá)到上限。一般來(lái)說(shuō),單個(gè)服務(wù)器可以通過(guò)增加服務(wù)器內(nèi)存和修改最大文件描述符號(hào)來(lái)支持10萬(wàn) 的TCP并發(fā)。

當(dāng)然,在真實(shí)的商業(yè)場(chǎng)景中,單個(gè)服務(wù)器將被納入分布式集群,不同用戶的請(qǐng)求將通過(guò)負(fù)載平衡算法動(dòng)態(tài)調(diào)度給最空閑的服務(wù)器。如果服務(wù)器的平均內(nèi)存使用超過(guò)80%的警戒線,服務(wù)器的內(nèi)存將及時(shí)限流或擴(kuò)展,即使發(fā)生事故,也不會(huì)耗盡。

總之,65、535只是Linux端口可用于系統(tǒng)port數(shù)量的上限,端口port數(shù)量與TCP服務(wù)器支持的連接數(shù)不是完全一對(duì)應(yīng)的關(guān)系TCP并發(fā)連接的數(shù)量主要與服務(wù)器個(gè)過(guò)程同時(shí)打開(kāi)的服務(wù)器內(nèi)存和文件數(shù)量有關(guān)。單個(gè)服務(wù)器支持通過(guò)端口重用和調(diào)整服務(wù)器參數(shù)TCP并發(fā)連接數(shù)可高于65,535的。

點(diǎn)擊展開(kāi)全文

騰佑科技(mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個(gè)國(guó)家版權(quán)局認(rèn)證。公司自成立以來(lái),一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計(jì)算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開(kāi)發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。

售前咨詢熱線:400-996-8756

備案提交:0371-89913068

售后客服:0371-89913000

熱門(mén)活動(dòng)

百度云服務(wù)中心
  • 熱門(mén)資訊
  • 隨便看看