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

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

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