TCP/IP使世界變成地球村
TCPIP協(xié)議層次結(jié)構(gòu)TCP建立連接TCP連接終止在地球上,人類是很渺小的個(gè)體,分布在全世界的各個(gè)角落。隨著科技的發(fā)展,人們現(xiàn)在可以非常容易的同遠(yuǎn)在千里之外的親人、朋友進(jìn)行實(shí)時(shí)聯(lián)絡(luò),獲得和分享世界另一端正在發(fā)生的事情,這是多么令人難以置信的事情,但是互聯(lián)網(wǎng)改變了這一切,讓這些不可思議的想法成為現(xiàn)實(shí),使得地球變成了一個(gè)小村莊,而TCP/IP便是實(shí)現(xiàn)互聯(lián)網(wǎng)通信的紐帶。
在世界上各地,各種各樣的電腦運(yùn)行著各自不同的操作系統(tǒng)為大家服務(wù),這些電腦在表達(dá)同一種信息的時(shí)候所使用的方法是千差萬別。計(jì)算機(jī)使用者意識到,計(jì)算機(jī)只是單兵作戰(zhàn)并不會(huì)發(fā)揮太大的作用。只有把它們聯(lián)合起來,電腦才會(huì)發(fā)揮出它***的潛力。于是人們就想方設(shè)法的用電線把電腦連接到了一起。但是簡單的連到一起是遠(yuǎn)遠(yuǎn)不夠的,就好像語言不同的兩個(gè)人互相見了面,完全不能交流信息。因而他們需要定義一些共通的東西來進(jìn)行交流,TCP/IP 就是為此而生。TCP/IP不是一個(gè)單一協(xié)議,而是一個(gè)協(xié)議族的統(tǒng)稱。里面包括了IP協(xié)議,IMCP協(xié)議,TCP協(xié)議,以及我們更加熟悉的HTTP、FHP協(xié)議等等。電腦有了這些,就好像學(xué)會(huì)了外語一樣,就可以和其他的計(jì)算機(jī)終端做自由的交流了。簡單地說,PC就實(shí)現(xiàn)了網(wǎng)絡(luò)互聯(lián)。
那先學(xué)習(xí)下TCP/IP協(xié)議的結(jié)構(gòu),它是如何分層的呢?如圖1所示:

圖1 TCP/IP層次結(jié)構(gòu)圖
TCP(Transmission Control Protocol)是傳輸控制協(xié)議的簡稱,它是網(wǎng)絡(luò)中各層協(xié)議的綜合,反映了一個(gè)網(wǎng)絡(luò)中文件傳輸?shù)倪^程,由上層協(xié)議到底層協(xié)議,再由底層協(xié)議到上層協(xié)議。如圖1所示,TCP/IP協(xié)議族按照層次由上到下,層層封裝,屬于核心組件不能卸載或刪除,但可以重置。最上面的就是應(yīng)用層Application,這里面有http、smtp、telnet、TFTP、DNS、E-mail、ftp等我們熟悉的協(xié)議。第二層是傳輸層Transport,TCP和UDP協(xié)議就在這個(gè)層次。傳輸層僅用于彼此通信,可以提供流量控制,可檢測數(shù)據(jù)段,及對數(shù)據(jù)段排序,不對字節(jié)流作解釋。第三層是網(wǎng)絡(luò)層,IP協(xié)議就在這里,它負(fù)責(zé)對數(shù)據(jù)加上IP地址和其他的數(shù)據(jù)以確定傳輸?shù)哪繕?biāo)。第四層是叫數(shù)據(jù)鏈路層,這個(gè)層次為待傳送的數(shù)據(jù)加入一個(gè)以太網(wǎng)協(xié)議頭,并進(jìn)行CRC編碼,為***的數(shù)據(jù)傳輸做準(zhǔn)備。***是硬件物理層,負(fù)責(zé)網(wǎng)絡(luò)的傳輸,這個(gè)層次的定義包括網(wǎng)線的制式,網(wǎng)卡的定義等等。發(fā)送協(xié)議的主機(jī)從上自下將數(shù)據(jù)按照協(xié)議封裝,而接收數(shù)據(jù)的主機(jī)則按照協(xié)議 從得到的數(shù)據(jù)包解開,***拿到需要的數(shù)據(jù)。這種結(jié)構(gòu)非常有棧的味道,所以也把TCP/IP協(xié)議族稱為TCP/IP協(xié)議棧。
一、應(yīng)用層
應(yīng)用層直接和應(yīng)用程序接口并提供常見的網(wǎng)絡(luò)應(yīng)用服務(wù)。應(yīng)用層是開放系統(tǒng)的***層,是直接為應(yīng)用進(jìn)程提供服務(wù)的。其作用是在實(shí)現(xiàn)多個(gè)系統(tǒng)應(yīng)用進(jìn)程相互通信的同時(shí),完成一系列業(yè)務(wù)處理所需的服務(wù)。應(yīng)用層使用最為廣泛,需要的協(xié)議標(biāo)準(zhǔn)也是最多的。在應(yīng)用層可以實(shí)現(xiàn)運(yùn)輸、訪問和管理,收發(fā)電子郵件以及虛擬終端目錄服務(wù)遠(yuǎn)程作業(yè)錄入信息通信等等。例如DNS、HTTP、FTP等協(xié)議都是應(yīng)用在這一層。
二、傳輸層
傳輸層是最關(guān)鍵的一層,也是唯一負(fù)責(zé)總體的數(shù)據(jù)傳輸和數(shù)據(jù)控制的一層。傳輸層提供端到端的交換數(shù)據(jù)的機(jī)制。傳輸層對應(yīng)用層提供可靠的傳輸服務(wù),對網(wǎng)絡(luò)層提供可靠的目的地站點(diǎn)信息。TCP是最常用的的傳輸層協(xié)議,它的主要功能是:對一個(gè)進(jìn)行的對話或連接提供可靠的傳輸服務(wù),在通向網(wǎng)絡(luò)的單一物理連接上實(shí)現(xiàn)該連接的復(fù)用,在單一連接上提供端到端的序號與流量控制、差錯(cuò)控制及恢復(fù)等服務(wù)。
1、TCP連接建立

(a)連接建立 (b)連接終止
TCP是因特網(wǎng)中的傳輸層協(xié)議,使用三次握手協(xié)議建立連接。當(dāng)主動(dòng)方發(fā)出SYN連接請求后,等待對方回答SYN+ACK,并最終對對方的 SYN 執(zhí)行 ACK 確認(rèn)。如圖2(a)所示,TCP三次握手的過程如下:
客戶端發(fā)送SYN(SEQ=x)報(bào)文給服務(wù)器端,進(jìn)入SYN_SEND狀態(tài)。
服務(wù)器端收到SYN報(bào)文,回應(yīng)一個(gè)SYN (SEQ=y)ACK(ACK=x+1)報(bào)文,進(jìn)入
SYN_RECV狀態(tài)。
客戶端收到服務(wù)器端的SYN報(bào)文,回應(yīng)一個(gè)ACK(ACK=y+1)報(bào)文,進(jìn)入
Established狀態(tài)。
三次握手完成,TCP客戶端和服務(wù)器端成功地建立連接,可以開始傳輸數(shù)據(jù)了。
2、TCP連接終止
建立一個(gè)連接需要三次握手,而終止一個(gè)連接要經(jīng)過四次握手,這是由TCP的半關(guān)閉(half-close)造成的。具體過程如圖2(b)所示。
(1) 某個(gè)應(yīng)用進(jìn)程首先調(diào)用close,稱該端執(zhí)行“主動(dòng)關(guān)閉”(active close)。該端的TCP于是發(fā)送一個(gè)FIN分節(jié),表示數(shù)據(jù)發(fā)送完畢。
(2) 接收到這個(gè)FIN的對端執(zhí)行 “被動(dòng)關(guān)閉”(passive close),這個(gè)FIN由TCP確認(rèn)。
(3) 一段時(shí)間后,接收到這個(gè)文件結(jié)束符的應(yīng)用進(jìn)程將調(diào)用close關(guān)閉它的套接字。這導(dǎo)致它的TCP也發(fā)送一個(gè)FIN。
(4) 接收這個(gè)最終FIN的原發(fā)送端TCP(即執(zhí)行主動(dòng)關(guān)閉的那一端)確認(rèn)這個(gè)FIN。
三、網(wǎng)絡(luò)層
TCP/IP協(xié)議體系中的網(wǎng)絡(luò)層功能由IP協(xié)議規(guī)定和實(shí)現(xiàn),故又稱IP層。網(wǎng)絡(luò)層介于運(yùn)輸層和數(shù)據(jù)鏈路層之間,它在數(shù)據(jù)鏈路層提供的兩個(gè)相鄰端點(diǎn)之間的數(shù)據(jù)幀的傳送功能上,進(jìn)一步管理網(wǎng)絡(luò)中的數(shù)據(jù)通信,將數(shù)據(jù)設(shè)法從源端經(jīng)過若干個(gè)中間節(jié)點(diǎn)傳送到目的端,從而向運(yùn)輸層提供最基本的端到端的數(shù)據(jù)傳送服務(wù)。
網(wǎng)絡(luò)層的目的是實(shí)現(xiàn)兩個(gè)端系統(tǒng)之間的數(shù)據(jù)透明傳送,具體功能包括尋址和路由選擇、連接的建立、保持和終止等。它提供的服務(wù)使傳輸層不需要了解網(wǎng)絡(luò)中的數(shù)據(jù)傳輸和交換技術(shù)。IP定義了在TCP/IP互聯(lián)網(wǎng)上數(shù)據(jù)傳送的基本單元和數(shù)據(jù)格式,完成路由選擇功能,選擇數(shù)據(jù)傳送的路徑并且包含了一組不可靠分組傳送的規(guī)則,指明了分組處理、差錯(cuò)信息發(fā)生以及分組的規(guī)則。IP協(xié)議的主要功能有:無連接數(shù)據(jù)報(bào)傳輸、數(shù)據(jù)報(bào)路由選擇和差錯(cuò)控制。與IP協(xié)議配套使用實(shí)現(xiàn)其功能的還有地址解析協(xié)議ARP、逆地址解析協(xié)議RARP、因特網(wǎng)報(bào)文協(xié)議ICMP、因特網(wǎng)組管理協(xié)議IGMP。
四、數(shù)據(jù)鏈層
數(shù)據(jù)鏈路層在物理層提供的服務(wù)的基礎(chǔ)上向網(wǎng)絡(luò)層提供服務(wù),其最基本的服務(wù)是將源自網(wǎng)絡(luò)層來的數(shù)據(jù)可靠地傳輸?shù)较噜徆?jié)點(diǎn)的目標(biāo)機(jī)網(wǎng)絡(luò)層。為達(dá)到這一目的,數(shù)據(jù)鏈路必須具備一系列相應(yīng)的功能,主要有:如何將數(shù)據(jù)組合成數(shù)據(jù)塊,在數(shù)據(jù)鏈路層中稱這種數(shù)據(jù)塊為幀(frame),幀是數(shù)據(jù)鏈路層的傳送單位;如何控制幀在物理信道上的傳輸,包括如何處理傳輸差錯(cuò),如何調(diào)節(jié)發(fā)送速率以使與接收方相匹配;以及在兩個(gè)網(wǎng)絡(luò)實(shí)體之間提供數(shù)據(jù)鏈路通路的建立、維持和釋放的管理。
五、物理層
物理層(Physical Layer)是TCP/IP協(xié)議棧中***的一層,它直接面向?qū)嶋H承擔(dān)數(shù)據(jù)傳輸?shù)奈锢砻襟w(即通信通道),物理層的傳輸單位為比特(bit),即一個(gè)二進(jìn)制位(“0”或“1”)。實(shí)際的比特傳輸必須依賴于傳輸設(shè)備和物理媒體,但是,物理層不是指具體的物理設(shè)備,也不是指信號傳輸?shù)奈锢砻襟w,而是指在物理媒體之上為上一層(數(shù)據(jù)鏈路層)提供一個(gè)傳輸原始比特流的物理連接。物理層規(guī)定:為傳輸數(shù)據(jù)所需要的物理鏈路創(chuàng)建、維持、拆除,而提供具有機(jī)械的,電子的,功能的和規(guī)范的特性。簡單的說,物理層確保原始的數(shù)據(jù)可在各種物理媒體上傳輸。包括網(wǎng)線的制式,網(wǎng)卡的定義等,這一層無協(xié)議的編寫。