正確認識傳輸控制協(xié)議
我們總是說網(wǎng)絡網(wǎng)絡……在網(wǎng)絡中,其實有很多種類,有線網(wǎng),無線網(wǎng),廣域網(wǎng),局域網(wǎng)等等。但是隨著技術(shù)的不斷革新,我們網(wǎng)絡的界限也就慢慢的模糊了。正如我們總是將TCP傳輸控制協(xié)議和IP網(wǎng)間協(xié)議將很多協(xié)議集涵蓋了一樣,我們并非去要糾正這個說法,而是需要將他們的具體含義弄清楚。
TCP:Transmission Control Protocol 傳輸控制協(xié)議
TCP是一種面向連接(連接導向)的、可靠的、基于字節(jié)流的運輸層(Transport layer)通信協(xié)議,由IETF的RFC 793說明(specified)。在簡化的計算機網(wǎng)絡OSI模型中,它完成第四層傳輸層所指定的功能,UDP是同一層內(nèi)另一個重要的傳輸協(xié)議。
在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上,應用層之下的中間層。不同主機的應用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。
應用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分割成適當長度的報文段(通常受該計算機連接的網(wǎng)絡的數(shù)據(jù)鏈路層的最大傳送單元(MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來通過網(wǎng)絡將包傳送給接收端實體的TCP層。
TCP為了保證不發(fā)生丟包,就給每個字節(jié)一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的字節(jié)發(fā)回一個相應的確認(ACK); 如果發(fā)送端實體在合理的往返時延(RTT)內(nèi)未收到確認,那么對應的數(shù)據(jù)(假設丟失了)將會被重傳。TCP用一個校驗和函數(shù)來檢驗數(shù)據(jù)是否有錯誤;在發(fā)送和接收時都要計算校驗和。
首先,TCP建立連接之后,通信雙方都同時可以進行數(shù)據(jù)的傳輸,其次,他是全雙工的;在保證可靠性上,采用超時重傳和捎帶確認機制。
在流量控制上,采用滑動窗口協(xié)議,協(xié)議中規(guī)定,對于窗口內(nèi)未經(jīng)確認的分組需要重傳。
在擁塞控制上,采用慢啟動算法。
什么是TCP/IP?
TCP/IP(Transmission Control Protocol/Internet Protocol) 即傳輸控制協(xié)議/網(wǎng)間協(xié)議,是一個工業(yè)標準的協(xié)議集,它是為廣域網(wǎng)(WANs)設計的。它是由ARPANET網(wǎng)的研究機構(gòu)發(fā)展起來的。
有時我們將TCP/IP描述為互聯(lián)網(wǎng)協(xié)議集\"Internet Protocol Suite\",TCP和IP是其中的兩個協(xié)議(后面將會介紹)。由于TCP和IP是大家熟悉的協(xié)議,以至于用TCP/IP或IP/TCP這個詞代替了整個協(xié)議集。這盡管有點奇怪,但沒有必要去爭論這個習慣。例如,有時我們討論NFS 是基于TCP/IP時,盡管它根本沒用到TCP(只用到IP,和另一種交互式 協(xié)議UDP而不是TCP)。
Internet是網(wǎng)絡的集合,包括ARPANET、NSFNET、分布在各地的局域網(wǎng)、以及其它類型的網(wǎng)絡,如(DDN,Defense Data Network美國國防數(shù)據(jù)網(wǎng)絡),這些統(tǒng)稱為Internet。所有這些大大小小的網(wǎng)絡互聯(lián)在一起。(因為大多數(shù)網(wǎng)絡基本協(xié)議是由DDN組織開發(fā)的,所以以前有時DDN與Internet在某種意義上具有相同的含義)。網(wǎng)絡上的用戶可以互相傳送信息,除一些有授權(quán)限制和安全考慮外。一般的講,互聯(lián)網(wǎng)協(xié)議文檔案是Internet委員會自己采納的基本標準。 TCP/IP標準與其說由委員會指定,倒不如說由\"輿論\"來開發(fā)的。 任何人都可以提供一個文檔,以RFC(Request for Comment需求注釋) 方式公布。
TCP/IP的標準(傳輸控制協(xié)議/網(wǎng)間協(xié)議)在一系列稱為RFC的文檔中公布。文檔由技術(shù)專家、特別工作組、或RFC編輯修訂。公布一個文檔時,該文檔被賦予一個RFC量,如RFC959說明FTP、RFC793說明TCP、RFC791說明IP等。 最初的RFC一直保留而從來不會被更新,如果修改了該文檔,則該文檔又以一個新號碼公布。因此,重要的是要確認你擁有了關(guān)于某個專題的最新RFC文檔。文后會列出主要的RFC文檔號。