當前位置:
首頁 > 知識 > TCP最大連接不止65535TCP

TCP最大連接不止65535TCP

問題

一個埠最多接受一個客戶端的65535個TCP連接?

原理

系統通過一個四元組來標識一條TCP連接,結構如:

在IPv4上, 本地IP和遠程IP是32位,本地埠和遠程埠為16位,即IP可以是2^32=4294967296,埠可以是2^16=65536。因此可以有TCP連接2^(32 16 32 16)=79228162514264337593543950336 個,這個是理論值。在IPv6上就更不用說了。

一個服務埠可以建立多少個TCP連接?

一個服務一般埠和IP是綁定的,因此能變的就是遠程IP和遠程埠,即可以建立 2^(32 16)=281474976710656 個TCP連接。

一個服務埠可以和一個客戶端建立多少個TCP連接?

對於服務端來說,確定的是本地IP和埠,一個客戶端表示遠程IP也是固定的,即可以建立 2^16 = 65536 TCP連接。(一般說的65535是不包含0,0不會用)

以上都是理論值。

實際

客戶端一般會有一些保留埠用於自身的服務,不用全部用於遠程連接,因此一般不會達到65535這個極限。

例如客戶端是windows操作系統,一般會有網路鄰居的服務等佔用埠。

cat /proc/sys/net/ipv4/ip_local_port_range

3276860999

註:前面要是偶數,後面要奇數,不然會有告警信息。

還有一些使用nat的網路環境,只有一個公網IP,也會限制客戶端建立TCP連接。

總結

一個埠最多接受一個客戶端的65535個TCP連接,這個主要看客戶端有沒有這麼多埠用,不是服務端的限制。

個人總結,有問題留言一起討論

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 linux運維菜 的精彩文章:

docker-alpine容器修改時區的方法