TCP:Transmission Control Protocol 傳輸控制協(xié)議TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層(Transport layer)通信協(xié)議,由IETF的RFC 793說(shuō)明(specified)。在簡(jiǎn)化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,UDP是同一層內(nèi)另一個(gè)重要的傳輸協(xié)議。基本簡(jiǎn)介折疊 tcp作用在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上,應(yīng)用層之下的傳輸層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。 應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分割成適當(dāng)長(zhǎng)度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳送單元(MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來(lái)通過(guò)網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。TCP為了保證不發(fā)生丟包,就給每個(gè)字節(jié)一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的字節(jié)發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會(huì)被重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來(lái)檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤;在發(fā)送和接收時(shí)都要計(jì)算和校驗(yàn)。 首先,TCP建立連接之后,通信雙方都同時(shí)可以進(jìn)行數(shù)據(jù)的傳輸,其次,它是全雙工的;在保證可靠性上,采用超時(shí)重傳和捎帶確認(rèn)機(jī)制。 在流量控制上,采用滑動(dòng)窗口協(xié)議,協(xié)議中規(guī)定,對(duì)于窗口內(nèi)未經(jīng)確認(rèn)的分組需要重傳。 在擁塞控制上,采用廣受好評(píng)的TCP擁塞控制算法(也稱AIMD算法),該算法主要包括三個(gè)主要部分:1,加性增、乘性減;2,慢啟動(dòng);3,對(duì)超時(shí)事件做出反應(yīng)。 折疊 端口號(hào)TCP段結(jié)構(gòu)中端口地址都是16比特,可以有在0~65535范圍內(nèi)的端口號(hào)。對(duì)于這65536個(gè)端口號(hào)有以下的使用規(guī)定: 1.端口號(hào)小于256的定義為常用端口,服務(wù)器一般都是通過(guò)常用端口號(hào)來(lái)識(shí)別的。任何TCP/IP實(shí)現(xiàn)所提供的服務(wù)都用1~1023之間的端口號(hào),是由IANA來(lái)管理的; 2.客戶端只需保證該端口號(hào)在本機(jī)上是惟一的就可以了??蛻舳丝谔?hào)因存在時(shí)間很短暫又稱臨時(shí)端口號(hào); 3.大多數(shù)TCP/IP實(shí)現(xiàn)給臨時(shí)端口號(hào)分配1024~5000之間的端口號(hào)。大于5000的端口號(hào)是為其他服務(wù)器預(yù)留的。 折疊 編輯本段 服務(wù)類型不管怎樣,TCP/IP是一個(gè)協(xié)議集。為應(yīng)用提供一些"低級(jí)"功能,這些包括IP、TCP、UDP。其它是執(zhí)行特定任務(wù)的應(yīng)用協(xié)議,如計(jì)算機(jī)間傳送文件、發(fā)送電子郵件、或找出誰(shuí)注冊(cè)到另外一臺(tái)計(jì)算機(jī)。因此,最重要的"商業(yè)"TCP/IP服務(wù)有: 折疊 FTP文件傳送(FileTransfer)文件傳送協(xié)議FTP(File TransferProtocol)允許用戶從一臺(tái)計(jì)算機(jī)到另一臺(tái)取得文件,或發(fā)送文件到另外一臺(tái)計(jì)算機(jī)。從安全性方面考慮,需要用戶指定一個(gè)使用其它計(jì)算機(jī)的用戶名和口令。它不同于NFS(Network File System)和Netbios協(xié)議。一旦你要訪問(wèn)另一臺(tái)系統(tǒng)中的文件,任何時(shí)刻都要運(yùn)行FTP。而且你只能拷貝文件到自己的機(jī)器中去來(lái)使用它。RFC 959中有關(guān)于FTP的詳盡說(shuō)明。 折疊 RLogin遠(yuǎn)程登錄(Remotelogin)網(wǎng)絡(luò)終端協(xié)議TELNET允許用戶登錄到網(wǎng)絡(luò)上任一計(jì)算機(jī)上。你可啟動(dòng)一個(gè)遠(yuǎn)程進(jìn)程連接到指定的計(jì)算機(jī),直到進(jìn)程結(jié)束,期間你所鍵入的內(nèi)容被送到所指定的計(jì)算機(jī)。值得注意的是,這時(shí)你實(shí)際上是與你的計(jì)算機(jī)進(jìn)行對(duì)話。TELENET程序使得你的計(jì)算機(jī)在整個(gè)過(guò)程中不見了,所敲的每一個(gè)字符直接送到所登錄的計(jì)算機(jī)系統(tǒng)。一般的說(shuō),這種遠(yuǎn)程連接是通過(guò)類式撥號(hào)連接的,也就是,撥通后,遠(yuǎn)程系統(tǒng)提示你輸入注冊(cè)名和口令,退出遠(yuǎn)程系統(tǒng),TELNET程序也就退出,你又與自己的計(jì)算機(jī)對(duì)話了。微電腦中的TELNET工具一般含有一個(gè)終端仿真程序。 折疊 SMTPPOP3電子郵件(Mail)允許你發(fā)送消息給其它計(jì)算機(jī)的用戶。通常,人們趨向于使用指定的一臺(tái)或兩臺(tái)計(jì)算機(jī)。計(jì)算機(jī)郵件系統(tǒng)只需你簡(jiǎn)單地往另一用戶的郵件文件中添加信息,但隨之產(chǎn)生問(wèn)題,使用的微電腦的環(huán)境不同,還有重要的是宏(MACRO)不適合于接受計(jì)算機(jī)郵件。為了發(fā)送電子郵件,郵件軟件希望連接到目的計(jì)算機(jī),如果是微電腦,也許它已關(guān)機(jī),或者正在運(yùn)行另一個(gè)應(yīng)用程序呢?出于這種原因,通常由一個(gè)較大的系統(tǒng)來(lái)處理這些郵件,也就是一個(gè)一直運(yùn)行著的郵件服務(wù)器。郵件軟件成為用戶從郵件服務(wù)器取回郵件的一個(gè)界面。 任何一個(gè)的TCP/IP工具提供上述這些服務(wù)。這些傳統(tǒng)的應(yīng)用功能在基于TCP/IP的網(wǎng)絡(luò)中一直扮演非常重要的角色。目前情況有點(diǎn)變化,這些功能使用也發(fā)生變化,如老系統(tǒng)的改造,計(jì)算機(jī)的發(fā)展等,出現(xiàn)了各種安裝版本,如:微電腦、工作站、小型機(jī)、和巨型機(jī)等。這些計(jì)算機(jī)好像在一起完成指定的任務(wù),盡管有時(shí)看來(lái)像是只用到某個(gè)指定的計(jì)算機(jī),但它是通過(guò)網(wǎng)絡(luò)得到其它計(jì)算機(jī)系統(tǒng)的服務(wù)。服務(wù)器Server是為網(wǎng)絡(luò)上其它提供指定服務(wù)的系統(tǒng),客戶Client是得到這種服務(wù)的另外計(jì)算機(jī)系統(tǒng)。(值得注意的是,服務(wù)/客戶機(jī)不一定是不同的計(jì)算機(jī),有可能是同一計(jì)算機(jī)中的不同運(yùn)行程序)。以下是幾種目前計(jì)算機(jī)上典型的一些服務(wù),這些服務(wù)可在TCP/IP網(wǎng)絡(luò)上調(diào)用。 折疊 NFS網(wǎng)絡(luò)文件系統(tǒng)(NetworkFileSystem)這種訪問(wèn)另一計(jì)算機(jī)的文件的方法非常接近于流行的FTP。網(wǎng)絡(luò)文件系統(tǒng)提供磁盤或設(shè)備服務(wù),而無(wú)需特定的網(wǎng)絡(luò)實(shí)用程序來(lái)訪問(wèn)另一系統(tǒng)的文件??梢院?jiǎn)單地認(rèn)為它是一個(gè)外加的磁盤驅(qū)動(dòng)器。這種額外\"虛擬\"磁盤驅(qū)動(dòng)器就是其它計(jì)算機(jī)系統(tǒng)的磁盤。這非常有用。你只需加大幾臺(tái)計(jì)算機(jī)的磁盤容量,就可使網(wǎng)絡(luò)上其他用戶訪問(wèn)它,且不說(shuō)所帶來(lái)的經(jīng)濟(jì)效益,它還能夠讓幾臺(tái)工作的計(jì)算機(jī)共享相同的文件。它也使得系統(tǒng)維護(hù)和備份易如反掌,因?yàn)樵俨槐貫榇罅康牟煌瑱C(jī)器上的文件的升級(jí)和備份而擔(dān)心。 折疊 遠(yuǎn)程打?。≧emotePrinting)允許你使用其它計(jì)算機(jī)上的打印機(jī),好像這些打印機(jī)直接連到你的計(jì)算機(jī)上。 折疊 遠(yuǎn)程執(zhí)行(RemoteExecution)允許你請(qǐng)求運(yùn)行在不同計(jì)算機(jī)上的特殊程序。當(dāng)你在一個(gè)很小的計(jì)算機(jī)上運(yùn)行一個(gè)需要大機(jī)系統(tǒng)資源的程序時(shí),這時(shí)候遠(yuǎn)程執(zhí)行非常有用。 折疊 名字服務(wù)器(NameServers)在一個(gè)大的系統(tǒng)安裝過(guò)程中,需要用到大量的各種名字,包括用戶名、口令,姓名、網(wǎng)絡(luò)地址、賬號(hào)等,管理這些是非常令人乏味的。因此將這些數(shù)據(jù)形成數(shù)據(jù)庫(kù),放到一個(gè)小系統(tǒng)中去,其它系統(tǒng)通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)這些數(shù)據(jù)。 折疊 終端服務(wù)器(TerminalServers)很多的終端連接安裝不再直接將終端連到計(jì)算機(jī),取而代之的是,將他們連接到終端服務(wù)器上。終端服務(wù)器是一個(gè)小的計(jì)算機(jī),它只需知道怎樣運(yùn)行TELNET(或其它一些完成遠(yuǎn)程登錄的協(xié)議)。如果你的終端想連上去,只用鍵入要連的計(jì)算機(jī)名就可。通常有可能同時(shí)有幾個(gè)這種連接,這時(shí)終端服務(wù)器采用快速開關(guān)技術(shù)來(lái)切換。 上述所描述的一些協(xié)議是由Berkeley,Sun,或其它組織定義的。因此,它們不是互聯(lián)網(wǎng)協(xié)議集(InternetProtocol Suite)的一部分,只是使用到TCP/IP的工具,如同一般的TCP/IP應(yīng)用協(xié)議。因?yàn)閰f(xié)議的定義不一致,并且商業(yè)支持的TCP/IP工具廣泛應(yīng)用,也許會(huì)把這些協(xié)議作為互聯(lián)協(xié)議集中的一部分。上述列出的只是基于TCP/IP部分服務(wù)的一些簡(jiǎn)單例子,但包含了一些\"主要\"的應(yīng)用。 折疊 編輯本段 連接建立折疊 編輯本段 服務(wù)流程TCP協(xié)議提供的是可靠的、面向連接的傳輸控制協(xié)議,即在傳輸數(shù)據(jù)前要先建立邏輯連接,然后再傳輸數(shù)據(jù),最后釋放連接3個(gè)過(guò)程。TCP提供端到端、全雙工通信;采用字節(jié)流方式,如果字節(jié)流太長(zhǎng),將其分段;提供緊急數(shù)據(jù)傳送功能。 盡管TCP和UDP都使用相同的網(wǎng)絡(luò)層(IP),TCP卻向應(yīng)用層提供與UDP完全不同的服務(wù)。 TCP提供一種面向連接的、可靠的字節(jié)流服務(wù)。 面向連接意味著兩個(gè)使用TCP的應(yīng)用(通常是一個(gè)客戶和一個(gè)服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立一個(gè)TCP連接。這一過(guò)程與打電話很相似,先撥號(hào)振鈴,等待對(duì)方摘機(jī)說(shuō)“喂”,然后才說(shuō)明是誰(shuí)。 在一個(gè)TCP連接中,僅有兩方進(jìn)行彼此通信。廣播和多播不能用于TCP。 TCP通過(guò)下列方式來(lái)提供可靠性: 1.應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這和UDP完全不同,應(yīng)用程序產(chǎn)生的數(shù)據(jù)報(bào)長(zhǎng)度將保持不變。由TCP傳遞給IP的信息單位稱為報(bào)文段或段(segment)TCP如何確定報(bào)文段的長(zhǎng)度。 2.當(dāng)TCP發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。當(dāng)TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn)。這個(gè)確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒 3.TCP將保持它首部和數(shù)據(jù)的檢驗(yàn)和。這是一個(gè)端到端的檢驗(yàn)和,目的是檢測(cè)數(shù)據(jù)在傳輸過(guò)程中的任何變化。如果收到段的檢驗(yàn)和有差錯(cuò),TCP將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段(希望發(fā)端超時(shí)并重發(fā))。 4.既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來(lái)傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段的到達(dá)也可能會(huì)失序。如果必要,TCP將對(duì)收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。 5.既然IP數(shù)據(jù)報(bào)會(huì)發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。 6.TCP還能提供流量控制。TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出。 兩個(gè)應(yīng)用程序通過(guò)TCP連接交換8bit字節(jié)構(gòu)成的字節(jié)流。TCP不在字節(jié)流中插入記錄標(biāo)識(shí)符。我們將這稱為字節(jié)流服務(wù)(bytestreamservice)。如果一方的應(yīng)用程序先傳10字節(jié),又傳20字節(jié),再傳50字節(jié),連接的另一方將無(wú)法了解發(fā)方每次發(fā)送了多少字節(jié)。收方可以分4次接收這80個(gè)字節(jié),每次接收20字節(jié)。一端將字節(jié)流放到TCP連接上,同樣的字節(jié)流將出現(xiàn)在TCP連接的另一端。 另外,TCP對(duì)字節(jié)流的內(nèi)容不作任何解釋。TCP不知道傳輸?shù)臄?shù)據(jù)字節(jié)流是二進(jìn)制數(shù)據(jù),還是ASCⅡ字符、EBCDIC字符或者其他類型數(shù)據(jù)。對(duì)字節(jié)流的解釋由TCP連接雙方的應(yīng)用層解釋。 這種對(duì)字節(jié)流的處理方式與Unix操作系統(tǒng)對(duì)文件的處理方式很相似。Unix的內(nèi)核對(duì)一個(gè)應(yīng)用讀或?qū)懙膬?nèi)容不作任何解釋,而是交給應(yīng)用程序處理。對(duì)Unix的內(nèi)核來(lái)說(shuō),它無(wú)法區(qū)分一個(gè)二進(jìn)制文件與一個(gè)文本文件。 TCP是因特網(wǎng)中的傳輸層協(xié)議,使用三次握手協(xié)議建立連接。當(dāng)主動(dòng)方發(fā)出SYN連接請(qǐng)求后,等待對(duì)方回答SYN,ACK。這種建立連接的方法可以防止產(chǎn)生錯(cuò)誤的連接,TCP使用的流量控制協(xié)議是可變大小的滑動(dòng)窗口協(xié)議。第一次握手:建立連接時(shí),客戶端發(fā)送SYN包(SEQ=x)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)。第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN(ACK=x+1),同時(shí)自己也送一個(gè)SYN包(SEQ=y),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)。第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ACK=y+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入Established狀態(tài),完成三次握手。 折疊 編輯本段 主要特點(diǎn)1.面向連接的傳輸; 2.端到端的通信; 3.高可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序; 4.全雙工方式傳輸; 5.采用字節(jié)流方式,即以字節(jié)為單位傳輸字節(jié)序列; 6.緊急數(shù)據(jù)傳送功能。 折疊 編輯本段 重傳策略TCP協(xié)議用于控制數(shù)據(jù)段是否需要重傳的依據(jù)是設(shè)立重發(fā)定時(shí)器。在發(fā)送一個(gè)數(shù)據(jù)段的同時(shí)啟動(dòng)一個(gè)重發(fā)定時(shí)器,如果在定時(shí)器超時(shí)前收到確認(rèn)就關(guān)閉該定時(shí)器,如果定時(shí)器超時(shí)前沒(méi)有收到確認(rèn),則重傳該數(shù)據(jù)段。 這種重傳策略的關(guān)鍵是對(duì)定時(shí)器初值的設(shè)定。目前采用較多的算法是Jacobson于1988年提出的一種不斷調(diào)整超時(shí)時(shí)間間隔的動(dòng)態(tài)算法。其工作原理是:對(duì)每條連接TCP都保持一個(gè)變量RTT,用于存放當(dāng)前到目的端往返所需要時(shí)間最接近的估計(jì)值。當(dāng)發(fā)送一個(gè)數(shù)據(jù)段時(shí),同時(shí)啟動(dòng)連接的定時(shí)器,如果在定時(shí)器超時(shí)前確認(rèn)到達(dá),則記錄所需要的時(shí)間(M),并修正RTT的值,如果定時(shí)器超時(shí)前沒(méi)有收到確認(rèn),則將RTT的值增加1倍。通過(guò)測(cè)量一系列的RTT(往返時(shí)間)值,TCP協(xié)議可以估算數(shù)據(jù)包重發(fā)前需要等待的時(shí)間。 折疊 編輯本段 相關(guān)信息折疊 TCP協(xié)議是如何確保數(shù)據(jù)傳輸高可靠性為了保證可靠性,發(fā)送的報(bào)文都有遞增的序列號(hào)。序號(hào)和確認(rèn)號(hào)用來(lái)確保傳輸?shù)目煽啃?。此外,?duì)每個(gè)報(bào)文都設(shè)立一個(gè)定時(shí)器,設(shè)定一個(gè)最大時(shí)延。對(duì)那些超過(guò)最大時(shí)延仍沒(méi)有收到確認(rèn)信息的報(bào)文就認(rèn)為已經(jīng)丟失,需要重傳。 折疊 如何重置TCP/IP協(xié)議在Windows Server 2003(簡(jiǎn)稱Windows 2003)的連接屬性對(duì)話框中,如果點(diǎn)擊“Internet協(xié)議(TCP/IP)選項(xiàng),“卸載”按鈕為灰色,是不可用的。這是因?yàn)?a target="_blank" >TCP/IP協(xié)議是Windows Server 2003的核心組件,不能刪除。 如果我們需要將TCP/IP重置到原始狀態(tài),該怎么辦呢?此時(shí),我們可以借助“netsh”命令行工具來(lái)解決這一問(wèn)題。在“運(yùn)行”對(duì)話框中輸入“cmd”,打開“命令提示符”窗口,然后輸入命令行“netsh int ip reset resetlog.txt”或“netsh int ip resetc:\resetlog.txt”并按回車鍵。其中的“reset”命令可以重寫與TCP/IP相關(guān)的注冊(cè)表項(xiàng)“System\CurrentControlSet\Services\Tcpip\Parameters\”和“System\CurrentControlSet\Services\DHCP\Parame ters\”,運(yùn)行以上命令的結(jié)果與刪除并重新安裝TCP/IP的效果相同。 此外,兩個(gè)命令行的不同之處僅僅在于“resetlog.txt”日志文件的存儲(chǔ)位置有所區(qū)別。前者是將日志文件創(chuàng)建在當(dāng)前文件夾中,而后者則指定了具體的保存路徑。 解決方法 在這種情況下,如果需要重新安裝 TCP/IP 以使 TCP/IP 堆棧恢復(fù)為原始狀態(tài)。可以使用 NetShell 實(shí)用程序重置 TCP/IP 堆棧,使其恢復(fù)到初次安裝操作系統(tǒng)時(shí)的狀態(tài)。具體操作如下: 1.單擊 開始 --> 運(yùn)行,輸入 "CMD" 后單擊 "確定"; 2.在命令行模式輸入命令 netsh int ip reset C:\resetlog.txt (其中,Resetlog.txt記錄命令結(jié)果的日志文件,一定要指定,這里指定了Resetlog.txt 日志文件及完整路徑。) 運(yùn)行結(jié)果可以查看C:\resetlog.txt (咨詢中可根據(jù)用戶實(shí)際操作情況提供) 運(yùn)行此命令的結(jié)果與刪除并重新安裝 TCP/IP 協(xié)議的效果相同。 注意 本操作具有一定的風(fēng)險(xiǎn)性,請(qǐng)?jiān)诓僮髑皞浞葜匾獢?shù)據(jù),并根據(jù)操作熟練度酌情使用。 折疊 如何正確設(shè)置TCP半開連接數(shù)如何正確設(shè)置TCP半開連接數(shù)呢? 網(wǎng)上有很多對(duì)設(shè)置半開數(shù)有一些誤解.下面就介紹下這方面的知識(shí). 我們知道Windows XP.Vista 系統(tǒng)會(huì)對(duì)TCP半開連接數(shù)做出限制,其中系統(tǒng)限制的不是TCP的連接數(shù)量,而是TCP 的半開連接數(shù),或者可以說(shuō)成是并發(fā)連接數(shù),也就是說(shuō)限制的是在同一時(shí)間發(fā)起請(qǐng)求連接的TCP 數(shù)量,TCP 并發(fā)連接數(shù),并不會(huì)影響系統(tǒng)的TCP 連接總數(shù),通常我們用的P2P軟件下載文件時(shí)對(duì)源的請(qǐng)求鏈接就是半開鏈接,一個(gè)半開鏈接,要么對(duì)方返回響應(yīng)建立正常的TCP連接,要么超時(shí)斷掉被釋放,不會(huì)長(zhǎng)時(shí)間存在的。 國(guó)內(nèi)用戶所使用的某些P2P軟件往往將自身的半開連接數(shù)設(shè)定的非常大,遠(yuǎn)遠(yuǎn)超過(guò)了系 統(tǒng) 限 制的10個(gè),當(dāng)這10個(gè)半開連接都被程序占用的時(shí)候,就會(huì)出現(xiàn)影響正常網(wǎng)絡(luò)使用,比如WEB瀏覽器開啟網(wǎng)頁(yè)緩慢;當(dāng)你遇到此種問(wèn)題的時(shí)候,就需要修改TCP半開連接數(shù)限制了,很多P2P工具自身都有相應(yīng)的TCP半開連接數(shù)設(shè)置,將其修改為小于系統(tǒng)當(dāng)前半開連接數(shù)的值即可,降低TCP半開連接數(shù)并不會(huì)影響P2P軟件的最大下載速度,更高的半開連接數(shù)所能獲得的只是提升P2P下載達(dá)到最高速度的時(shí)間。 一般這些軟件沒(méi)有提供相關(guān)的自定義設(shè)置,哪么就只有去修改系統(tǒng)的半開數(shù)連接了,但是修改成多少合適呢?如果你只是偶爾使用P2P工具來(lái)下載資料,并且不使用類似迅雷,哇嘎之類的下載工具,哪么系統(tǒng)的TCP半開連接數(shù)不超過(guò)50為宜;對(duì)半開連接有特殊需要的朋友可以嘗試修改到100左右。半開連接數(shù)沒(méi)有必要設(shè)置得太大。因?yàn)槊恳粋€(gè)半開連接都會(huì)系統(tǒng)引起額外的系統(tǒng)資源開銷,造成系統(tǒng)資源不足,而使系統(tǒng)運(yùn)行緩慢. 嚴(yán)重的時(shí)間還可能使系統(tǒng)崩潰,卻不能帶來(lái)傳輸速率在實(shí)質(zhì)上的提高。例如,在P2P網(wǎng)絡(luò)中,一個(gè)黑客可以通過(guò)散布虛假資源信息,引導(dǎo)大量客戶端在短時(shí)間內(nèi)試圖與某個(gè)被攻擊者建立連接,如果半開連接數(shù)設(shè)置過(guò)大,將導(dǎo)致系統(tǒng)崩潰(路由器梗死、防火墻癱瘓或者操作系統(tǒng)崩潰等)。還有其它很多DDoS攻擊手段,限 制TCP半開連接數(shù),可以有效地防止DDoS攻擊。 如果你使用的迅雷和電驢之類的P2P下載軟件,軟件都有TCP半開數(shù)方面的設(shè)置,按照軟件的默認(rèn)設(shè)置就可以,不必刻意去加大半開數(shù). 這對(duì)下載速度并沒(méi)有多大的幫助. 下面是一些TCP半開連接數(shù)的知識(shí): 1.什么是TCP半開連接? 半開TCP連接,簡(jiǎn)單地說(shuō)就是發(fā)送了TCP連接請(qǐng)求,但還沒(méi)有得到對(duì)方應(yīng)答的狀態(tài)(實(shí)際上要復(fù)雜些),也就是連接尚未完全建立起來(lái),雙方還無(wú)法進(jìn)行通信交互的狀態(tài)。 2.XP限 制了TCP連接數(shù)量嗎? 其實(shí)XP SP2沒(méi)有限 制TCP連接數(shù)量,只是限制了TCP半開連接數(shù)。 3.半開連接數(shù)量限制對(duì)上傳下載速度會(huì)影響嗎? 可以說(shuō)幾乎沒(méi)有什么影響。半開連接數(shù)限制充其量?jī)H會(huì)在連接時(shí)引入一點(diǎn)時(shí)延(從幾毫秒到幾百毫秒)而已。而數(shù)據(jù)交互是在已經(jīng)建立的TCP連接上傳輸?shù)?,傳輸速率與半開連接數(shù)量無(wú)關(guān)。更何況P2P 協(xié)議本身還有排隊(duì)、請(qǐng)求數(shù)據(jù)等,這些機(jī)制引入的時(shí)延都遠(yuǎn)遠(yuǎn)大于半開連接限制所帶來(lái)的時(shí)延(例如,你連接了數(shù)百個(gè)對(duì)端,但是傳輸數(shù)據(jù)的卻只有其中的幾十個(gè)而已,其中大部分都處于等待或閑置狀態(tài))。因此,半開連接數(shù)限制對(duì)上傳、下載速率幾乎沒(méi)有影響。 4.TCP半開連接數(shù)量設(shè)置為多少比較好呢? 最好不超過(guò)50。沒(méi)有必要設(shè)置得太大。每一個(gè)半開連接都會(huì)系統(tǒng)引入額外的開銷,過(guò)多的半開連接數(shù)只會(huì)導(dǎo)致系統(tǒng)資源緊張、不穩(wěn)定甚至崩潰,卻不能帶來(lái)傳輸速率在實(shí)質(zhì)上的提高。例如,在P2P網(wǎng)絡(luò)中,一個(gè)黑客可以通過(guò)散布虛假資源信息,引導(dǎo)大量客戶端在短時(shí)間內(nèi)試圖與某個(gè)被攻擊者建立連接,如果半開連接數(shù)設(shè)置過(guò)大,將導(dǎo)致系統(tǒng)崩潰還有其它很多DDoS攻擊手段。限制TCP半開連接數(shù),可以有效地防止DDoS攻擊。 5.如何知道當(dāng)前的傳輸速率? 可以通過(guò)任務(wù)管理器的網(wǎng)絡(luò)選項(xiàng)卡或者防火墻查看網(wǎng)卡實(shí)際傳輸了多少數(shù)據(jù)才是最準(zhǔn)確的,下載軟件顯示的值并不一定是真實(shí)的。 這里只是提醒大家不要相信什么TCP半開連接數(shù)量會(huì)明顯提高傳輸速率的誤傳. 折疊 什么是TCP/IP?TCP/IP(Transmission Control Protocol/Internet Protocol) 即傳輸控制協(xié)議/網(wǎng)間協(xié)議,是一個(gè)工業(yè)標(biāo)準(zhǔn)的協(xié)議集,它是為廣域網(wǎng)(WAN)設(shè)計(jì)的。它是由ARPANET網(wǎng)的研究機(jī)構(gòu)發(fā)展起來(lái)的。 有時(shí)我們將TCP/IP描述為互聯(lián)網(wǎng)協(xié)議集"InternetProtocolSuite",TCP和IP是其中的兩個(gè)協(xié)議(后面將會(huì)介紹)。由于TCP和IP是大家熟悉的協(xié)議,以至于用TCP/IP或IP/TCP這個(gè)詞代替了整個(gè)協(xié)議集。這盡管有點(diǎn)奇怪,但沒(méi)有必要去爭(zhēng)論這個(gè)習(xí)慣。例如,有時(shí)我們討論NFS是基于TCP/IP時(shí),盡管它根本沒(méi)用到TCP(只用到IP和另一種交互式協(xié)議UDP,而不是TCP)。 TCP/IP的標(biāo)準(zhǔn)在一系列稱為RFC的文檔中公布。文檔由技術(shù)專家、特別工作組、或RFC編輯修訂。公布一個(gè)文檔時(shí),該文檔被賦予一個(gè)RFC編號(hào),如RFC959(FTP的說(shuō)明文檔)、RFC793(TCP的說(shuō)明文檔)、RFC791(IP的說(shuō)明文檔)等。最初的RFC一直保留而從來(lái)不會(huì)被更新,如果修改了該文檔,則該文檔又以一個(gè)新號(hào)碼公布。因此,重要的是要確認(rèn)你擁有了關(guān)于某個(gè)專題的最新RFC文檔。通常在RFC的開頭部分,有相關(guān)RFC的更新(update)、修改(errata)、作廢(obsolete)信息,提示讀者信息的時(shí)效性。詳情請(qǐng)閱讀網(wǎng)站RFC-editor。 折疊 編輯本段 主要區(qū)別TCP協(xié)議和UDP協(xié)議的區(qū)別 1,TCP協(xié)議面向連接,UDP協(xié)議面向非連接 2,TCP協(xié)議傳輸速度慢,UDP協(xié)議傳輸速度快 3,TCP協(xié)議保證數(shù)據(jù)順序,UDP協(xié)議不保證 4,TCP協(xié)議保證數(shù)據(jù)正確性,UDP協(xié)議可能丟包 5,TCP協(xié)議對(duì)系統(tǒng)資源要求多,UDP協(xié)議要求少 TCP = Transmission Control Protocol 傳輸控制協(xié)議 折疊 編輯本段 窗口確認(rèn)TCP的一項(xiàng)功能就是確保每個(gè)數(shù)據(jù)段都能到達(dá)目的地。位于目的主機(jī)的TCP服務(wù)對(duì)接受到的數(shù)據(jù)進(jìn)行確認(rèn),并向源應(yīng)用程序發(fā)送確認(rèn)信息。 使用數(shù)據(jù)報(bào)頭序列號(hào)以及確認(rèn)號(hào)來(lái)確認(rèn)已收到包含在數(shù)據(jù)段的相關(guān)的數(shù)據(jù)字節(jié)。 TCP在發(fā)回源設(shè)備的數(shù)據(jù)段中使用確認(rèn)號(hào),指示接收設(shè)備期待接收的下一字節(jié)。這個(gè)過(guò)程稱為期待確認(rèn)。 源主機(jī)在收到確認(rèn)消息之前可以傳輸?shù)臄?shù)據(jù)的大小稱為窗口大小。用于管理丟失數(shù)據(jù)和流量控制。 |
|
來(lái)自: 花瓣121 > 《網(wǎng)絡(luò)工程師》