參考
- 經(jīng)典的”服務(wù)器最多65536個(gè)連接”誤解
- 由socket的accept說(shuō)開(kāi)去
- how-do-multiple-clients-connect-simultaneously-to-one-port-say-80-on-a-server
總結(jié)
一個(gè)socket
是由5個(gè)字段的元組標(biāo)識(shí), {本地IP, 本地端口, 目標(biāo)IP, 目標(biāo)端口, 協(xié)議}
.
對(duì)于服務(wù)端的Server socket
來(lái)說(shuō), 其綁定了一個(gè)IP
以及一個(gè)PORT
以后, 其實(shí)之后Accept
新的連接請(qǐng)求, 都不會(huì)再申請(qǐng)一個(gè)新的PORT
. 因?yàn)槊看?code>Accept之后新生成的socket
都是有不同五元組 (對(duì)于不同客戶(hù)端有客戶(hù)端IP
或者客戶(hù)端PORT
不同, 也可能兩者都不同; 對(duì)于同一個(gè)客戶(hù)端的多個(gè)連接, 有客戶(hù)端PORT
不同), 所以服務(wù)器能夠區(qū)分不同socket
, 而無(wú)需再申請(qǐng)一個(gè)新的PORT
.
而且假設(shè)服務(wù)端每一次Accept
, 都會(huì)申請(qǐng)一個(gè)新的PORT
, 一個(gè)是浪費(fèi)資源, 一個(gè)是這樣導(dǎo)致用戶(hù)不得不重新連接這個(gè)新的遠(yuǎn)程端口, 所以這樣做是極其不合理的.