1. 程式人生 > >TCP/IP 第一章 概述

TCP/IP 第一章 概述

網路協議的分層

       網路協議通常分不同層次進行開發,每一層分別負責不同的通訊功能。一個協議族,比如TCP/IP,是一組不同層次上的多個協議的組合。TCP/IP通常被認為是一個四層協議系統

 

每一層負責不同的功能:

1.鏈路層,有時也稱作資料鏈路層網路介面層,通常包括作業系統中的裝置驅動程式和計算機中對應的網路介面卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理介面細節

2.網路層,有時也稱作網際網路層,處理分組在網路中的活動,例如分組的選路。在TCP/IP協議族中,網路層協議包括IP協議(網際協議)ICMP協議(Internet網際網路控制報文協議)

,以及IGMP協議(Internet組管理協議)

3.運輸層主要為兩臺主機上的應用程式提供端到端的通訊。在TCP/IP協議族中,有兩個互不相同的傳輸協議:TCP(傳輸控制協議)UDP(使用者資料報協議)

4.應用層負責處理特定的應用程式細節。幾乎各種不同的TCP/IP實現都會提供下面這些通用的應用程式:

Telnet遠端登入   • FTP檔案傳輸協議   • SMTP簡單郵件傳送協議   • SNMP簡單網路管理協議

 

我們列舉了一個FTP客戶程式和另一個FTP伺服器程式。大多數的網路應用程式都被設計成客戶—伺服器模式

。伺服器為客戶提供某種服務,在本例中就是訪問伺服器所在主機上的檔案

在同一層上,雙方都有對應的一個或多個協議進行通訊

我們注意到應用程式通常是一個使用者程序,而下三層則一般在(作業系統)核心中執行。儘管這不是必需的,但通常都是這樣處理的,例如UNIX作業系統

應用層關心的是應用程式的細節,而不是資料在網路中的傳輸活動。下三層對應用程式一無所知,但它們要處理所有的通訊細節

在TCP/IP協議族中,網路層IP提供的是一種不可靠的服務。也就是說,它只是儘可能快地把分組從源結點送到目的結點,但是並不提供任何可靠性保證。而另一方面,TCP在不可靠的IP層上提供了一個可靠的運輸層。為了提供這種可靠的服務,TCP採用了超時重傳、傳送和接收端到端的確認分組等機制

構造互連網最簡單的方法是把兩個或多個網路通過路由器進行連線,路由器的好處是為不同型別的物理網路提供連線。另一個途徑是使用網橋。網橋是在鏈路層上對網路進行互連,而路由器則是在網路層上對網路進行互連。網橋使得多個區域網(LAN)組合在一起,這樣對上層來說就好像是一個區域網。TCP/IP傾向於使用路由器而不是網橋來連線網路


TCP/IP的分層

TCP和UDP是兩種最為著名的運輸層協議,二者都使用IP作為網路層協議。雖然TCP使用不可靠的IP服務,但它卻提供一種可靠的運輸層服務;UDP為應用程式傳送和接收資料報。一個數據報是指從傳送方傳輸到接收方的一個資訊單元(例如,傳送方指定的一定位元組數的資訊),但是與TCP不同的是,UDP是不可靠的,它不能保證資料報能安全無誤地到達最終目的

IP是網路層上的主要協議,同時被TCP和UDP使用。TCP和UDP的每組資料都通過端系統和每個中間路由器中的IP層在網際網路中進行傳輸

ICMP是IP協議的附屬協議。IP層用它來與其他主機或路由器交換錯誤報文和其他重要資訊。儘管ICMP主要被IP使用,但應用程式也有可能訪問它

IGMP是Internet組管理協議。它用來把一個UDP資料報多播到多個主機

ARP(地址解析協議)和RARP(逆地址解析協議)是某些網路介面(如乙太網和令牌環網)使用的特殊協議,用來轉換IP層和網路介面層使用的地址。


網際網路的地址

網際網路上的每個介面必須有一個唯一的Internet地址(也稱作IP地址)。IP地址長32 bit。Internet地址並不採用平面形式的地址空間。IP地址具有一定的結構,五類不同的網際網路地址格式如圖

這些 32 位的地址通常寫成四個十進位制的數,其中每個整數對應一個位元組。這種表示方法稱作 點分十進位制表示法

需要再次指出的是,多介面主機具有多個IP地址,其中每個介面都對應一個IP地址

下面列出了各類地址的起止範圍:

 


域名系統

儘管通過IP地址可以識別主機上的網路介面,進而訪問主機,但是人們最喜歡使用的還是主機名。在TCP/IP領域中,域名系統(DNS)是一個分佈的資料庫,由它來提供IP地址和主機名之間的對映資訊

任何應用程式都可以呼叫一個標準的庫函式來檢視給定名字的主機的IP地址。類似地,系統還提供一個逆函式—給定主機的IP地址,檢視它所對應的主機名

大多數使用主機名作為引數的應用程式也可以把IP地址作為引數。當我們用Telnet進行遠端登入時,既可以指定一個主機名,也可以指定一個IP地址


封裝

當應用程式用TCP傳送資料時,資料被送入協議棧中,然後逐個通過每一層直到被當作一串位元流送入網路。其中每一層對收到的資料都要增加一些首部資訊(有時還要增加尾部資訊) TCP傳給IP的資料單元稱作TCP報文段或簡稱為TCP段(TCP segment)。IP傳給網路介面層的資料單元稱作IP資料報。通過乙太網傳輸的位元流稱作幀。

 


分用

當目的主機收到一個乙太網資料幀時,資料就開始從協議棧中由底向上升,同時去掉各層協議加上的報文首部。每層協議盒都要去檢查報文首部中的協議標識,以確定接收資料的上層協議。這個過程稱作分用


客戶-伺服器模型

大部分網路應用程式在編寫時都假設一端是客戶,另一端是伺服器,其目的是為了讓伺服器為客戶提供一些特定的服務

可以將這種服務分為兩種型別:重複型或併發型。重複型伺服器通過以下步驟進行互動:

1.等待一個客戶請求的到來

2.處理客戶請求

3.傳送響應給傳送請求的客戶

4.返回1步

重複型伺服器主要的問題發生在2狀態。在這個時候,它不能為其他客戶機提供服務

 

相應地,併發型伺服器採用以下步驟:

1.等待一個客戶請求的到來

2.啟動一個新的伺服器來處理這個客戶的請求。在這期間可能生成一個新的程序、任務或執行緒,並依賴底層作業系統的支援。這個步驟如何進行取決於作業系統。生成的新伺服器對客戶的全部請求進行處理。處理結束後,終止這個新伺服器

3.返回1步

併發伺服器的優點在於它是利用生成其他伺服器的方法來處理客戶的請求。也就是說,每個客戶都有它自己對應的伺服器。如果作業系統允許多工,那麼就可以同時為多個客戶服務

 

對伺服器,而不是對客戶進行分類的原因是因為對於一個客戶來說,它通常並不能夠辨別自己是與一個重複型伺服器或併發型伺服器進行對話。

一般來說,TCP伺服器是併發的,而UDP伺服器是重複的,但也存在一些例外


埠號

伺服器一般都是通過知名埠號來識別的。例如,對於每個TCP/IP實現來說,FTP伺服器的TCP埠號都是21,每個Telnet伺服器的TCP埠號都是23,每個TFTP(簡單檔案傳送協議)伺服器的UDP埠號都是69。任何TCP/IP實現所提供的服務都用知名的1~1023之間的埠號。這些知名埠號由Internet號分配機構(IANA)來管理。