TCP/IP 和 ISO/OSI
ISO/OSI模型,即開放式通信系統互聯參考模型(Open System Interconnection Reference Model),是國際標准化組織(ISO)提出的一個試圖使各種計算機在世界范圍內互連為網絡的標准框架,簡稱OSI。
TCP/IP協議模型(Transmission Control Protocol/Internet Protocol),包含了一系列構成互聯網基礎的網絡協議,是Internet的核心協議,通過20多年的發展已日漸成熟,並被廣泛應用於局域網和廣域網中,目前已成為事實上的國際標准。TCP/IP協議簇是一組不同層次上的多個協議的組合,通常被認為是一個四層協議系統,與OSI的七層模型相對應。
TCP/IP分層模型
- 應用層
應用層決定了向用戶提供應用服務時通信的活動。|| 應用層負責處理特定的應用程序細節。
TCP/IP 協議族內預存了各類通用的應用服務。比如,FTP(File Transfer Protocol,文件傳輸協議)和 DNS(Domain Name System,域 名系統)服務就是其中兩類。 HTTP 協議也處於該層。
- 傳輸層
傳輸層對上層應用層,提供處於網絡連接中的兩台計算機之間的數據 傳輸。
在傳輸層有兩個性質不同的協議:TCP(Transmission Control Protocol,傳輸控制協議)和 UDP(User Data Protocol,用戶數據報 協議)。
主要為兩台主機上的應用程序提供端到端的通信。在TCP/IP協議族中,有兩個互不相同的傳輸協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。
TCP為兩台主機提供高可靠性的數據通信。它所做的工作包括把應用程序交給它的數據分成合適的小塊交給下面的網絡層,確認接收到的分組,設置發送最后確認分組的超時時鍾等。由於運輸層提供了高可靠性的端到端的通信,因此應用層可以忽略所有這些細節。為了提供可靠的服務,TCP采用了超時重傳、發送和接收端到端的確認分組等機制。
UDP則為應用層提供一種非常簡單的服務。它只是把稱作數據報的分組從一台主機發送到另一台主機,但並不保證該數據報能到達另一端。一個數據報是指從發送方傳輸到接收方的一個信息單元(例如,發送方指定的一定字節數的信息)。UDP協議任何必需的可靠性必須由應用層來提供。
- 網絡層
網絡層用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數 據單位。該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計 算機,並把數據包傳送給對方。
與對方計算機之間通過多台計算機或網絡設備進行傳輸時,網絡層所 起的作用就是在眾多的選項內選擇一條傳輸路線。
也稱作互聯網層(在第一個圖中為網際層),處理分組在網絡中的活動,例如分組的選路。在TCP/IP協議族中,網絡層協議包括IP協議(網際協議),ICMP協議(Internet互聯網控制報文協議),以及IGMP協議(Internet組管理協議)。
IP是一種網絡層協議,提供的是一種不可靠的服務,它只是盡可能快地把分組從源結點送到目的結點,但是並不提供任何可靠性保證。同時被TCP和UDP使用。TCP和UDP的每組數據都通過端系統和每個中間路由器中的IP層在互聯網中進行傳輸。
ICMP是IP協議的附屬協議。IP層用它來與其他主機或路由器交換錯誤報文和其他重要信息。
IGMP是Internet組管理協議。它用來把一個UDP數據報多播到多個主機。
- 鏈路層
用來處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅 動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等 物理可見部分(還包括連接器等一切傳輸媒介)。硬件上的范疇均在 鏈路層的作用范圍之內。
也稱作數據鏈路層或網絡接口層(在第一個圖中為網絡接口層和硬件層),通常包括操作系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節。ARP(地址解析協議)和RARP(逆地址解析協議)是某些網絡接口(如以太網和令牌環網)使用的特殊協議,用來轉換IP層和網絡接口層使用的地址。
數據的封裝與分用
當應用程序用TCP傳送數據時,數據被送入協議棧中,然后逐個通過每一層直到被當作一串比特流送入網絡。其中每一層對收到的數據都要增加一些首部信息(有時還要增加尾部信息),該過程如圖所示。
TCP傳給IP的數據單元稱作TCP報文段或簡稱為TCP段(TCP segment);UDP數據與TCP數據基本一致。唯一的不同是UDP傳給IP的信息單元稱作U D P數據報(UDP datagram),而且UDP的首部長為8字節。IP傳給網絡接口層的數據單元稱作IP數據報(IP datagram)。通過以太網傳輸的比特流稱作幀(Frame )。
當目的主機收到一個以太網數據幀時,數據就開始從協議棧中由底向上升,同時去掉各層協議加上的報文首部。每層協議盒都要去檢查報文首部中的協議標識,以確定接收數據的上層協議。這個過程稱作分用(Demultiplexing)。協議是通過目的端口號、源I P地址和源端口號進行解包的。
其他相關概念
- 端口號
服務器一般都是通過知名端口號來識別的。例如,對於每個TCP/IP實現來說,FTP服務器的TCP端口號都是21,每個Telnet服務器的TCP端口號都是23,每個TFTP (簡單文件傳送協議)服務器的UDP端口號都是69。任何TCP/IP實現所提供的服務都用知名的1~1023之間的端口號。這些知名端口號由Internet號分配機構(Internet Assigned Numbers Authority, IANA)來管理。知名端口號介於1~255之間;256~1023之間的端口號通常都是由Unix系統占用,以提供一些特定的Unix服務;1024~5000端口號用於客戶端分配臨時端口號;大於5000的端口號是為其他服務器預留的。
- DNS
DNS 是計算機域名系統 (Domain Name System 或Domain Name Service) 的縮寫,它是由解析器以及域名服務器組成的。域名服務器是指保存有該網絡中所有主機的域名和對應IP地址,並具有將域名轉換為IP地址功能的服務器。
TCP/IP 通信傳輸流
利用 TCP/IP 協議族進行網絡通信時,會通過分層順序與對方進行通 信。發送端從應用層往下走,接收端則往應用層往上走。
我們用 HTTP 舉例來說明,首先作為發送端的客戶端在應用層 (HTTP 協議)發出一個想看某個 Web 頁面的 HTTP 請求。
接着,為了傳輸方便,在傳輸層(TCP 協議)把從應用層處收到的數 據(HTTP 請求報文)進行分割,並在各個報文上打上標記序號及端 口號后轉發給網絡層。
在網絡層(IP 協議),增加作為通信目的地的 MAC 地址后轉發給鏈 路層。這樣一來,發往網絡的通信請求就准備齊全了。
接收端的服務器在鏈路層接收到數據,按序往上層發送,一直到應用 層。當傳輸到應用層,才能算真正接收到由客戶端發送過來的 HTTP 請求。
發送端在層與層之間傳輸數據時,每經過一層時必定會被打上一個該 層所屬的首部信息。反之,接收端在層與層傳輸數據時,每經過一層 時會把對應的首部消去。
這種把數據信息包裝起來的做法稱為封裝(encapsulate)。
負責傳輸的 IP 協議
按層次分,IP(Internet Protocol)網際協議位於網絡層。Internet Protocol 這個名稱可能聽起來有點誇張,但事實正是如此,因為幾乎 所有使用網絡的系統都會用到 IP 協議。TCP/IP 協議族中的 IP 指的就 是網際協議,協議名稱中占據了一半位置,其重要性可見一斑。可能 有人會把“IP”和“IP 地址”搞混,“IP”其實是一種協議的名稱。
IP 協議的作用是把各種數據包傳送給對方。而要保證確實傳送到對方 那里,則需要滿足各類條件。其中兩個重要的條件是 IP 地址和 MAC 地址(Media Access Control Address)。
IP 地址指明了節點被分配到的地址,MAC 地址是指網卡所屬的固定 地址。IP 地址可以和 MAC 地址進行配對。IP 地址可變換,但 MAC 地址基本上不會更改。
使用 ARP 協議憑借 MAC 地址進行通信
IP 間的通信依賴 MAC 地址。在網絡上,通信的雙方在同一局域網 (LAN)內的情況是很少的,通常是經過多台計算機和網絡設備中轉 才能連接到對方。而在進行中轉時,會利用下一站中轉設備的 MAC 地址來搜索下一個中轉目標。這時,會采用 ARP 協議(Address Resolution Protocol)。ARP 是一種用以解析地址的協議,根據通信方 的 IP 地址就可以反查出對應的 MAC 地址。