TCP/IP傳輸協(xié)議,即傳輸控制/網(wǎng)絡(luò)協(xié)議,也叫作網(wǎng)絡(luò)通訊協(xié)議。它是在網(wǎng)絡(luò)的使用中的最基本的通信協(xié)議。TCP/IP傳輸協(xié)議對互聯(lián)網(wǎng)中各部分進(jìn)行通信的標(biāo)準(zhǔn)和方法進(jìn)行了規(guī)定。并且,TCP/IP傳輸協(xié)議是保證網(wǎng)絡(luò)數(shù)據(jù)信息及時、完整傳輸?shù)膬蓚€重要的協(xié)議。TCP/IP傳輸協(xié)議是嚴(yán)格來說是一個四層的體系結(jié)構(gòu),應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層都包含其中。
TCP/IP協(xié)議是Internet最基本的協(xié)議,其中應(yīng)用層的主要協(xié)議有Telnet、FTP、SMTP等,是用來接收來自傳輸層的數(shù)據(jù)或者按不同應(yīng)用要求與方式將數(shù)據(jù)傳輸至傳輸層;傳輸層的主要協(xié)議有UDP、TCP,是使用者使用平臺和計算機(jī)信息網(wǎng)內(nèi)部數(shù)據(jù)結(jié)合的通道,可以實現(xiàn)數(shù)據(jù)傳輸與數(shù)據(jù)共享;網(wǎng)絡(luò)層的主要協(xié)議有ICMP、IP、IGMP,主要負(fù)責(zé)網(wǎng)絡(luò)中數(shù)據(jù)包的傳送等;而網(wǎng)絡(luò)訪問層,也叫網(wǎng)絡(luò)接口層或數(shù)據(jù)鏈路層,主要協(xié)議有ARP、RARP,主要功能是提供鏈路管理錯誤檢測、對不同通信媒介有關(guān)信息細(xì)節(jié)問題進(jìn)行有效處理等。
產(chǎn)生背景
Internet網(wǎng)絡(luò)的前身ARPANET當(dāng)時使用的并不是傳輸控制協(xié)議/網(wǎng)際協(xié)議(Transmission Control Protocol/Internet Protocol,TCP/IP),而是一種叫網(wǎng)絡(luò)控制協(xié)議(Network Control Protocol,NCP)的網(wǎng)絡(luò)協(xié)議,但隨著網(wǎng)絡(luò)的發(fā)展和用戶對網(wǎng)絡(luò)的需求不斷提高,設(shè)計者們發(fā)現(xiàn),NCP協(xié)議存在著很多的缺點以至于不能充分支持ARPANET網(wǎng)絡(luò),特別是NCP僅能用于同構(gòu)環(huán)境中(所謂同構(gòu)環(huán)境是網(wǎng)絡(luò)上的所有計算機(jī)都運行相同的操作系統(tǒng)),設(shè)計者就認(rèn)為“同構(gòu)”這一限制不應(yīng)被加到一個分布廣泛的網(wǎng)絡(luò)上。1980年,用于“異構(gòu)”網(wǎng)絡(luò)環(huán)境中的TCP/IP協(xié)議研制成功,也就是說,TCP/IP協(xié)議可以在各種硬件和操作系統(tǒng)上實現(xiàn)互操作。1982年,ARPANET開始采用TCP/IP協(xié)議。
產(chǎn)生過程
(1)1973年,卡恩與瑟夫開發(fā)出了TCP/IP協(xié)議中最核心的兩個協(xié)議:TCP協(xié)議和IP協(xié)議。
(2)1974年12月,卡恩與瑟夫正式發(fā)表了TCP/IP協(xié)議并對其進(jìn)行了詳細(xì)的說明。同時,為了驗證TCP/IP協(xié)議的可用性,使一個數(shù)據(jù)包由一端發(fā)出,在經(jīng)過近10萬km的旅程后到達(dá)服務(wù)端。在這次傳輸中,數(shù)據(jù)包沒有丟失一個字節(jié),這充分說明了TCP/IP協(xié)議的成功。
(3)1983年元旦,TCP/IP協(xié)議正式替代NCP,從此以后TCP/IP成為大部分因特網(wǎng)共同遵守的一種網(wǎng)絡(luò)規(guī)則。
(4)1984年,TCP/IP協(xié)議得到美國國防部的肯定,成為多數(shù)計算機(jī)共同遵守的一個標(biāo)準(zhǔn)。
(5)2005年9月9日卡恩和瑟夫由于他們對于美國文化做出的卓越貢獻(xiàn)被授予總統(tǒng)自由勛章。
TCP/IP協(xié)議的組成
TCP/IP協(xié)議在一定程度上參考了OSI的體系結(jié)構(gòu)。OSI模型共有七層,從下到上分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、運輸層、會話層、表示層和應(yīng)用層。但是這顯然是有些復(fù)雜的,所以在TCP/IP協(xié)議中,它們被簡化為了四個層次。
(1)應(yīng)用層、表示層、會話層三個層次提供的服務(wù)相差不是很大,所以在TCP/IP協(xié)議中,它們被合并為應(yīng)用層一個層次。
(2)由于運輸層和網(wǎng)絡(luò)層在網(wǎng)絡(luò)協(xié)議中的地位十分重要,所以在TCP/IP協(xié)議中它們被作為獨立的兩個層次。
(3)因為數(shù)據(jù)鏈路層和物理層的內(nèi)容相差不多,所以在TCP/IP協(xié)議中它們被歸并在網(wǎng)絡(luò)接口層一個層次里。只有四層體系結(jié)構(gòu)的TCP/IP協(xié)議,與有七層體系結(jié)構(gòu)的OSI相比要簡單了不少,也正是這樣,TCP/IP協(xié)議在實際的應(yīng)用中效率更高,成本更低。
分別介紹TCP/IP協(xié)議中的四個層次。
應(yīng)用層:應(yīng)用層是TCP/IP協(xié)議的第一層,是直接為應(yīng)用進(jìn)程提供服務(wù)的。
(1)對不同種類的應(yīng)用程序它們會根據(jù)自己的需要來使用應(yīng)用層的不同協(xié)議,郵件傳輸應(yīng)用使用了SMTP協(xié)議、萬維網(wǎng)應(yīng)用使用了HTTP協(xié)議、遠(yuǎn)程登錄服務(wù)應(yīng)用使用了有TELNET協(xié)議。
(2)應(yīng)用層還能加密、解密、格式化數(shù)據(jù)。
(3)應(yīng)用層可以建立或解除與其他節(jié)點的聯(lián)系,這樣可以充分節(jié)省網(wǎng)絡(luò)資源。
運輸層:作為TCP/IP協(xié)議的第二層,運輸層在整個TCP/IP協(xié)議中起到了中流砥柱的作用。且在運輸層中,TCP和UDP也同樣起到了中流砥柱的作用。
網(wǎng)絡(luò)層:網(wǎng)絡(luò)層在TCP/IP協(xié)議中的位于第三層。在TCP/IP協(xié)議中網(wǎng)絡(luò)層可以進(jìn)行網(wǎng)絡(luò)連接的建立和終止以及IP地址的尋找等功能。
網(wǎng)絡(luò)接口層:在TCP/IP協(xié)議中,網(wǎng)絡(luò)接口層位于第四層。由于網(wǎng)絡(luò)接口層兼并了物理層和數(shù)據(jù)鏈路層所以,網(wǎng)絡(luò)接口層既是傳輸數(shù)據(jù)的物理媒介,也可以為網(wǎng)絡(luò)層提供一條準(zhǔn)確無誤的線路。
特點
TCP/IP協(xié)議能夠迅速發(fā)展起來并成為事實上的標(biāo)準(zhǔn),是它恰好適應(yīng)了世界范圍內(nèi)數(shù)據(jù)通信的需要。它有以下特點:
(1)協(xié)議標(biāo)準(zhǔn)是完全開放的,可以供用戶免費使用,并且獨立于特定的計算機(jī)硬件與操作系統(tǒng)。
(2)獨立于網(wǎng)絡(luò)硬件系統(tǒng),可以運行在廣域網(wǎng),更適合于互聯(lián)網(wǎng)。
(3)網(wǎng)絡(luò)地址統(tǒng)一分配,網(wǎng)絡(luò)中每一設(shè)備和終端都具有一個唯一地址。
(4)高層協(xié)議標(biāo)準(zhǔn)化,可以提供多種多樣可靠網(wǎng)絡(luò)服務(wù)。
通信過程及相關(guān)協(xié)議
在網(wǎng)絡(luò)通信的過程中,將發(fā)出數(shù)據(jù)的主機(jī)稱為源主機(jī),接收數(shù)據(jù)的主機(jī)稱為目的主機(jī)。當(dāng)源主機(jī)發(fā)出數(shù)據(jù)時,數(shù)據(jù)在源主機(jī)中從上層向下層傳送。源主機(jī)中的應(yīng)用進(jìn)程先將數(shù)據(jù)交給應(yīng)用層,應(yīng)用層加上必要的控制信息就成了報文流,向下傳給傳輸層。傳輸層將收到的數(shù)據(jù)單元加上本層的控制信息,形成報文段、數(shù)據(jù)報,再交給網(wǎng)際層。網(wǎng)際層加上本層的控制信息,形成IP數(shù)據(jù)報,傳給網(wǎng)絡(luò)接口層。網(wǎng)絡(luò)接口層將網(wǎng)際層交下來的IP數(shù)據(jù)報組裝成幀,并以比特流的形式傳給網(wǎng)絡(luò)硬件(即物理層),數(shù)據(jù)就離開源主機(jī)。
鏈路層
以太網(wǎng)協(xié)議規(guī)定,接入網(wǎng)絡(luò)的設(shè)備都必須安裝網(wǎng)絡(luò)適配器,即網(wǎng)卡,數(shù)據(jù)包必須是從一塊網(wǎng)卡傳送到另一塊網(wǎng)卡。而網(wǎng)卡地址就是數(shù)據(jù)包的發(fā)送地址和接收地址,有了MAC地址以后,以太網(wǎng)采用廣播形式,把數(shù)據(jù)包發(fā)給該子網(wǎng)內(nèi)所有主機(jī),子網(wǎng)內(nèi)每臺主機(jī)在接收到這個包以后,都會讀取首部里的目標(biāo)MAC地址,然后和自己的MAC地址進(jìn)行對比,如果相同就做下一步處理,如果不同,就丟棄這個包。
所以鏈路層的主要工作就是對電信號進(jìn)行分組并形成具有特定意義的數(shù)據(jù)幀,然后以廣播的形式通過物理介質(zhì)發(fā)送給接收方。
網(wǎng)絡(luò)層
IP協(xié)議
網(wǎng)絡(luò)層引入了IP協(xié)議,制定了一套新地址,使得我們能夠區(qū)分兩臺主機(jī)是否同屬一個網(wǎng)絡(luò),這套地址就是網(wǎng)絡(luò)地址,也就是所謂的IP地址。IP協(xié)議將這個32位的地址分為兩部分,前面部分代表網(wǎng)絡(luò)地址,后面部分表示該主機(jī)在局域網(wǎng)中的地址。如果兩個IP地址在同一個子網(wǎng)內(nèi),則網(wǎng)絡(luò)地址一定相同。為了判斷IP地址中的網(wǎng)絡(luò)地址,IP協(xié)議還引入了子網(wǎng)掩碼,IP地址和子網(wǎng)掩碼通過按位與運算后就可以得到網(wǎng)絡(luò)地址。
ARP協(xié)議
即地址解析協(xié)議,是根據(jù)IP地址獲取MAC地址的一個網(wǎng)絡(luò)層協(xié)議。其工作原理如下:ARP首先會發(fā)起一個請求數(shù)據(jù)包,數(shù)據(jù)包的首部包含了目標(biāo)主機(jī)的IP地址,然后這個數(shù)據(jù)包會在鏈路層進(jìn)行再次包裝,生成以太網(wǎng)數(shù)據(jù)包,最終由以太網(wǎng)廣播給子網(wǎng)內(nèi)的所有主機(jī),每一臺主機(jī)都會接收到這個數(shù)據(jù)包,并取出包頭里的IP地址,然后和自己的IP地址進(jìn)行比較,如果相同就返回自己的MAC地址,如果不同就丟棄該數(shù)據(jù)包。ARP接收返回消息,以此確定目標(biāo)機(jī)的MAC地址;與此同時,ARP還會將返回的MAC地址與對應(yīng)的IP地址存入本機(jī)ARP緩存中并保留一定時間,下次請求時直接查詢ARP緩存以節(jié)約資源。
路由協(xié)議
首先通過IP協(xié)議來判斷兩臺主機(jī)是否在同一個子網(wǎng)中,如果在同一個子網(wǎng),就通過ARP協(xié)議查詢對應(yīng)的MAC地址,然后以廣播的形式向該子網(wǎng)內(nèi)的主機(jī)發(fā)送數(shù)據(jù)包;如果不在同一個子網(wǎng),以太網(wǎng)會將該數(shù)據(jù)包轉(zhuǎn)發(fā)給本子網(wǎng)的網(wǎng)關(guān)進(jìn)行路由。網(wǎng)關(guān)是互聯(lián)網(wǎng)上子網(wǎng)與子網(wǎng)之間的橋梁,所以網(wǎng)關(guān)會進(jìn)行多次轉(zhuǎn)發(fā),最終將該數(shù)據(jù)包轉(zhuǎn)發(fā)到目標(biāo)IP所在的子網(wǎng)中,然后再通過ARP獲取目標(biāo)機(jī)MAC,最終也是通過廣播形式將數(shù)據(jù)包發(fā)送給接收方。而完成這個路由協(xié)議的物理設(shè)備就是路由器,路由器扮演著交通樞紐的角色,它會根據(jù)信道情況,選擇并設(shè)定路由,以最佳路徑來轉(zhuǎn)發(fā)數(shù)據(jù)包。
所以,網(wǎng)絡(luò)層的主要工作是定義網(wǎng)絡(luò)地址、區(qū)分網(wǎng)段、子網(wǎng)內(nèi)MAC尋址、對于不同子網(wǎng)的數(shù)據(jù)包進(jìn)行路由。
傳輸層
鏈路層定義了主機(jī)的身份,即MAC地址,而網(wǎng)絡(luò)層定義了IP地址,明確了主機(jī)所在的網(wǎng)段,有了這兩個地址,數(shù)據(jù)包就從可以從一個主機(jī)發(fā)送到另一臺主機(jī)。但實際上數(shù)據(jù)包是從一個主機(jī)的某個應(yīng)用程序發(fā)出,然后由對方主機(jī)的應(yīng)用程序接收。而每臺電腦都有可能同時運行著很多個應(yīng)用程序,所以當(dāng)數(shù)據(jù)包被發(fā)送到主機(jī)上以后,是無法確定哪個應(yīng)用程序要接收這個包。因此傳輸層引入了UDP協(xié)議來解決這個問題,為了給每個應(yīng)用程序標(biāo)識身份。
UDP協(xié)議
UDP協(xié)議定義了端口,同一個主機(jī)上的每個應(yīng)用程序都需要指定唯一的端口號,并且規(guī)定網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包必須加上端口信息,當(dāng)數(shù)據(jù)包到達(dá)主機(jī)以后,就可以根據(jù)端口號找到對應(yīng)的應(yīng)用程序了。UDP協(xié)議比較簡單,實現(xiàn)容易,但它沒有確認(rèn)機(jī)制,數(shù)據(jù)包一旦發(fā)出,無法知道對方是否收到,因此可靠性較差,為了解決這個問題,提高網(wǎng)絡(luò)可靠性,TCP協(xié)議就誕生了。
TCP協(xié)議
TCP即傳輸控制協(xié)議,是一種面向連接的、可靠的、基于字節(jié)流的通信協(xié)議。簡單來說TCP就是有確認(rèn)機(jī)制的UDP協(xié)議,每發(fā)出一個數(shù)據(jù)包都要求確認(rèn),如果有一個數(shù)據(jù)包丟失,就收不到確認(rèn),發(fā)送方就必須重發(fā)這個數(shù)據(jù)包。為了保證傳輸?shù)目煽啃?,TCP協(xié)議在UDP基礎(chǔ)之上建立了三次對話的確認(rèn)機(jī)制,即在正式收發(fā)數(shù)據(jù)前,必須和對方建立可靠的連接。TCP數(shù)據(jù)包和UDP一樣,都是由首部和數(shù)據(jù)兩部分組成,唯一不同的是,TCP數(shù)據(jù)包沒有長度限制,理論上可以無限長,但是為了保證網(wǎng)絡(luò)的效率,通常TCP數(shù)據(jù)包的長度不會超過IP數(shù)據(jù)包的長度,以確保單個TCP數(shù)據(jù)包不必再分割。
傳輸層的主要工作是定義端口,標(biāo)識應(yīng)用程序身份,實現(xiàn)端口到端口的通信,TCP協(xié)議可以保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
應(yīng)用層
理論上講,有了以上三層協(xié)議的支持,數(shù)據(jù)已經(jīng)可以從一個主機(jī)上的應(yīng)用程序傳輸?shù)搅硪慌_主機(jī)的應(yīng)用程序了,但此時傳過來的數(shù)據(jù)是字節(jié)流,不能很好的被程序識別,操作性差,因此,應(yīng)用層定義了各種各樣的協(xié)議來規(guī)范數(shù)據(jù)格式,常見的有http,ftp,smtp等,在請求Header中,分別定義了請求數(shù)據(jù)格式Accept和響應(yīng)數(shù)據(jù)格式Content-Type,有了這個規(guī)范以后,當(dāng)對方接收到請求以后就知道該用什么格式來解析,然后對請求進(jìn)行處理,最后按照請求方要求的格式將數(shù)據(jù)返回,請求端接收到響應(yīng)后,就按照規(guī)定的格式進(jìn)行解讀。
所以應(yīng)用層的主要工作就是定義數(shù)據(jù)格式并按照對應(yīng)的格式解讀數(shù)據(jù)。
審核編輯 黃昊宇
-
協(xié)議
+關(guān)注
關(guān)注
2文章
606瀏覽量
39298 -
IP
+關(guān)注
關(guān)注
5文章
1715瀏覽量
149802 -
TCP
+關(guān)注
關(guān)注
8文章
1377瀏覽量
79186
發(fā)布評論請先 登錄
相關(guān)推薦
評論