原帖由 Solidus 于 2007-9-18 09:52 發(fā)表
恩,我的問(wèn)題不是程序問(wèn)題,而是它理論上到底能支持多少?我聽(tīng)人家說(shuō)用epoll承載了10W鏈接,可我想不太明白它這個(gè)怎么連上的?
原帖由 Solidus 于 2007-9-18 10:10 發(fā)表
恩,我犯了個(gè)大錯(cuò)誤,我以前一直認(rèn)為本地也得臨時(shí)給accept進(jìn)來(lái)的tcp鏈接專(zhuān)門(mén)分配個(gè)臨時(shí)端口,剛才想明白了,一個(gè)socket是靠local ip + local port + remote ip + remote port標(biāo)識(shí)的,所以只占用一個(gè)端口~
原帖由 flw 于 2008-5-8 10:27 發(fā)表
盡信師則無(wú)師。
你老師說(shuō)四元組,也算對(duì),但是你說(shuō),就不對(duì)了。
知道為什么嗎?
因?yàn)槟愀揪蜎](méi)理解,只是照搬老師所言。
一個(gè)誤解: 單個(gè)服務(wù)器程序可承受最大連接數(shù)“理論”上是“65535”
請(qǐng)注意,這里有兩個(gè)詞分別被我標(biāo)記上了引號(hào),一個(gè)是“理論”,一個(gè)是“65535”。強(qiáng)調(diào)“理論”這個(gè)詞,是想特別明確誤解者的意思:就是說(shuō),這個(gè)值是不可能被打破的,是鐵板釘丁的。而65535這個(gè)數(shù)字的由來(lái),很多人想當(dāng)然地將它與port最大值聯(lián)系起來(lái)。的確,TCP的端口數(shù),最大值確實(shí)為65535。但是,這并不代表一個(gè)服務(wù)器可以接受的連接數(shù)就是這個(gè)值,很多人之所以把這兩個(gè)概念搞混淆是因?yàn)閷?duì)socket和port沒(méi)有更深的認(rèn)識(shí)和理解。我們先來(lái)回想一下服務(wù)器服務(wù)的先后過(guò)程:服務(wù)器創(chuàng)建監(jiān)聽(tīng)socket- >與對(duì)外服務(wù)的端口號(hào)綁定->開(kāi)始listen->客戶(hù)端連接到服務(wù)器對(duì)應(yīng)的port->服務(wù)器accept為新的客戶(hù)端產(chǎn)生新的socket->基于這個(gè)新的socket與客戶(hù)端交換數(shù)據(jù)。從以上流程來(lái)看,最大值為65535的“端口號(hào)”這個(gè)重要的東東,我們只用了一次,就是執(zhí)行bind的時(shí)候!而以后創(chuàng)建的socket,說(shuō)白了就是一個(gè)可以進(jìn)行網(wǎng)絡(luò)IO操作的HANDLE而已,它跟端口號(hào)的牽扯僅限bind以及作為客戶(hù)端連接服務(wù)器的識(shí)別端口號(hào)的時(shí)候,一旦accept產(chǎn)生了socket,這個(gè)端口號(hào),對(duì)服務(wù)器和新客戶(hù)端的通信而言就不再有任何意義。而服務(wù)器可承載的連接數(shù)最大量,不就是能產(chǎn)生多少個(gè)客戶(hù)端的socket嗎?這個(gè)socket值即使與端口號(hào)無(wú)關(guān),又何來(lái)65535的“理論”上限?我再一次地將“理論”二字用引號(hào)括起,是因?yàn)樵谟械牟僮飨到y(tǒng)中,默認(rèn)的配置會(huì)將socket最大值設(shè)定為65535,但這個(gè)值是可以改的!
原帖由 torshie 于 2008-5-8 11:38 發(fā)表
好, 那你舉個(gè)例子說(shuō)明一下僅僅四元不能夠區(qū)分開(kāi)兩個(gè)連接, 需要第五個(gè)屬性。
原帖由 ideawu 于 2008-5-8 11:56 發(fā)表
那要看你分析問(wèn)題是在哪個(gè)層面, 如果在TCP或者UDP的層面, 協(xié)議就是隱含的. 如果是在網(wǎng)絡(luò)層, 另一元就是網(wǎng)絡(luò)協(xié)議.
理論上也應(yīng)該是有限的;不過(guò)怎么算還不知道;畢竟鏈接一個(gè)就要分配一些資源;如此不斷鏈接下去的話(huà);資源會(huì)很快 ...
光速 發(fā)表于 2011-11-15 15:39
歡迎光臨 Chinaunix (http://www.72891.cn/) | Powered by Discuz! X3.2 |