參考
- 經(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ì)于不同客戶端有客戶端IP或者客戶端PORT不同, 也可能兩者都不同; 對(duì)于同一個(gè)客戶端的多個(gè)連接, 有客戶端PORT不同), 所以服務(wù)器能夠區(qū)分不同socket, 而無(wú)需再申請(qǐng)一個(gè)新的PORT.
而且假設(shè)服務(wù)端每一次Accept, 都會(huì)申請(qǐng)一個(gè)新的PORT, 一個(gè)是浪費(fèi)資源, 一個(gè)是這樣導(dǎo)致用戶不得不重新連接這個(gè)新的遠(yuǎn)程端口, 所以這樣做是極其不合理的.