TCP/IP協議棧
這部分簡要介紹一下TCP/IP的內部結構,為討論與互連網有關的安全問題打下基礎。TCP/IP協議組之所以流行,部分原因是因為它可以用在各種各樣的通道和底層協議(例如T1和X.25、乙太網路以及RS-232串列介面)之上。確切地說,TCP/IP協議是一組包括TCP協議和IP協議,UDP (User Datagram Protocol)協議、ICMP(Internet Control Message Protocol)協議和其他一些協議的協議組。
TCP/IP整體構架概述
TCP/IP協議並不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通訊協定的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬體在相同的層次上相互連信。這7層是:物理層、資料連結層、網路層、傳輸層、話路層、展示層和應用程式層。而TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。這4層分別為:
應用程式層:應用程式間溝通的層,如簡單電子郵件傳輸(SMTP)、檔案傳輸通訊協定(FTP)、網路遠端存取協議(Telnet)等。
傳輸層:在此層中,它提供了節點間的通訊會話,資料傳送服務,傳輸協議的選擇根據資料傳送方式來決定。如傳輸控制通訊協定(TCP)、使用者資料包通訊協定(UDP)等,TCP和UDP給資料包加入傳輸資料並把它傳輸到下一層中,這一層負責傳送資料,並且確定資料已被送達並接收。
兩個傳輸協議:
傳輸控制通訊協定TCP:為應用程式提供可靠的通訊串連。適合於一次傳輸大批資料的情況。並適用於要求得到響應的應用程式。
使用者資料包通訊協定UDP:提供了無串連通訊,且不對傳送包進行可靠的保證。適合於一次傳輸小量資料,可靠性則由應用程式層來負責。
互連網路層:負責提供基本的資料按照一定的演算法封裝成包,讓每一塊資料包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。
互聯協議將資料包封裝成internet資料報,並運行必要的路由演算法。
這裡有四個互聯協議:
網際協議IP:負責在主機和網路之間定址和路由資料包。
位址解析通訊協定ARP:獲得同一物理網路中的硬體主機地址。
網際控制訊息協議ICMP:發送訊息,並報告有關資料包的傳送錯誤。
互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機群組成員。
網路介面層:對實際的網路媒體的管理,定義如何使用實際網路(如Ethernet、Serial Line等)來傳送資料。 模型的基層是網路介面層。負責資料幀的發送和接收,幀是獨立的網路資訊傳輸單元。網路介面層將幀放在網上,或從網上把幀取下來。
網路介面技術
IP使用網路裝置介面規範NDIS向網路介面層提交幀。IP支援廣域網路和本地網介面技術。
串列線路協議
TCP/IPG一般通過internet串列線路協議SLIP或點對點通訊協定 (PPP)PPP在串列線上進行資料傳送。(是不是我們平時把它稱之為非同步通訊,對於要拿LINUX提供建立遠端連線的朋友應該多研究一下這方面的知識)?
TCP/IP中的協議
以下簡單介紹TCP/IP中的協議都具備什麼樣的功能,都是如何工作的:
1. IP
網際協議IP是TCP/IP的心臟,也是網路層中最重要的協議。
IP層接收由更低層(網路介面層例如乙太網路裝置驅動程式)發來的資料包,並把該資料包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或 UDP層接收來的資料包傳送到更低層。IP資料包是不可靠的,因為IP並沒有做任何事情來確認資料包是按順序發送的或者沒有被破壞。IP資料包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。
高層的TCP和UDP服務在接收資料包時,通常假設包中的源地址是有效。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信資料包是從一個有效主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好象是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的串連。那麼,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。
2. TCP
如果IP資料包中有已經封好的TCP資料包,那麼IP將把它們向‘上’傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的串連。TCP資料包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
TCP將它的資訊送到更高層的應用程式,例如Telnet的服務程式和客戶程式。應用程式輪流將資訊送回TCP層,TCP層便將它們向下傳送到IP層,裝置驅動程式和物理介質,最後到接收方。
連線導向的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收網域名稱資料庫),但使用UDP傳送有關單個主機的資訊。
3.UDP
UDP與TCP位於同一層,但不進行資料包的順序錯誤或重發。因此,UDP不被應用於那些使用虛電路的連線導向的服務,UDP主要用於那些面向查詢--- 應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的資訊量較小。使用UDP的服務包括NTP(網路時間協議)和DNS(DNS也使用TCP)。
欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化串連(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨著更大的危險。
4.ICMP
ICMP與IP位於同一層,它被用來傳送IP的的控制資訊。它主要是用來提供有關通向目的地址的路徑資訊。ICMP的‘Redirect’語音總機主機通向其他系統的更準確的路徑,而‘Unreachable’資訊則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP串連‘體面地’終止。 PING是最常用的基於ICMP的服務。
5. TCP和UDP的連接埠結構
TCP和UDP服務通常有一個客戶/ 伺服器的關係,例如,一個Telnet服務進程開始在系統上處於空閑狀態,等待著串連。使用者使用Telnet客戶程式與服務進程建立一個串連。客戶程式向服務進程寫入資訊,服務進程讀出資訊並發出響應,客戶程式讀出響應並向使用者報告。因而,這個串連是雙工的,可以用來進行讀寫。
兩個系統間的多重Telnet串連是如何相互確認並協調一致呢?TCP或UDP串連唯一地使用每個資訊中的如下四項進行確認:
源IP地址 發送包的IP地址。
目的IP地址 接收包的IP地址。
源連接埠 源系統上的串連的連接埠。
目的連接埠 目的系統上的串連的連接埠。
連接埠是一個軟體結構,被客戶程式或服務進程用來發送和接收資訊。一個連接埠對應一個16位元的數。服務進程通常使用一個固定的連接埠,例如,SMTP使用 25、Xwindows使用6000。這些連接埠號碼是‘廣為人知’的,因為在建立與特定的主機或服務的串連時,需要這些地址和目的地址進行通訊。
ARP
要在網路上通訊,主機就必須知道對方主機的硬體地址(我們不是老遇到網卡的物理地址嘛)。位址解析就是將主機IP地址映射為硬體地址的過程。位址解析通訊協定ARP用於獲得在同一物理網路中的主機的硬體地址。
解釋本地IP地址(要瞭解位址解析工作過程的朋友看好了)
主機IP位址解析為硬體地址:
(1)當一台主機要與別的主機通訊時,初始化ARP請求。當該IP斷定IP地址是本地時,源主機在ARP緩衝中尋找目標主機的硬體地址。
(2)要是找不到映射的話,ARP建立一個請求,源主機IP地址和硬體地址會被包括在請求中,該請求通過廣播,使所有本地主機均能接收並處理。
(3)本地網上的每個主機都收到廣播並尋找相符的IP地址。
(4)當目標主機斷定請求中的IP地址與自己的相符時,直接發送一個ARP回覆,將自己的硬體地址傳給源主機。以源主機的IP地址和硬體地址更新它的ARP緩衝。源主機收到回答後便建立起了通訊。
解析遠程IP地址
不同網路中的主機互相通訊,ARP廣播的是源主機的預設網關。
目標IP地址是一個遠程網路主機的話,ARP將廣播一個路由器的地址。
(1)通訊請求初始化時,得知目標IP地址為遠程地址。源主機在本地路由表中尋找,若無,源主機認為是預設網關的IP地址。在ARP緩衝中尋找符合該網關記錄的IP地址(硬體地址)。
(2)若沒找到該網關的記錄,ARP將廣播請求網關地址而不是目標主機的地址。路由器用自己的硬體地址響應源主機的ARP請求。源主機則將資料包送到路由器以傳送到目標主機的網路,最終達到目標主機。
(3)在路由器上,由IP決定目標IP地址是本地還是遠程。如果是本地,路由器用ARP(緩衝或廣播)獲得硬體地址。如果是遠程,路由器在其路由表中尋找該網關,然後運用ARP獲得此網關的硬體地址。資料包被直接發送到下一個目標主機。
(4)目標主機收到請求後,形成ICMP響應。因源主機在遠程網上,將在本地路由表中尋找源主機網的網關。找到網關後,ARP即擷取它的硬體地址。
(5)如果此網關的硬體地址不在ARP緩衝中,通過ARP廣播獲得。一旦它獲得硬體地址,ICMP響應就送到路由器上,然後傳到源主機。
ARP緩衝
為減少廣播量,ARP在緩衝中儲存地址映射以備用。ARP緩衝儲存有動態項和靜態項。動態項是自動添加和刪除的,靜態項則保留在CACHE中直到電腦重新啟動。
ARP緩衝總是為本地子網保留硬體廣播位址(0xffffffffffffh)作為一個永久項。此項使主機能夠接受ARP廣播。當查看緩衝時,該項不會顯示。
每條ARP緩衝記錄的生命週期為10分鐘,2分鐘內未用則刪除。緩衝容量滿時,刪除最老的記錄.
加入靜態(永久)記錄
通過添加靜態ARP項可減少ARP請求訪問主機的次數。
ARP包的結構
ARP結構的欄位如下:
硬體類型 使用的硬體(網路訪問層)類型。
協議類型 解析過程中的協議使用以太類型的值。
硬體地址長度 硬體地址的位元組長度,對於乙太網路和令牌環來說,其長度為6位元組。
協議地址長度 協議地址位元組的長度,IP的長度是4位元組。
操作號 指定當前執行操作的欄位。
寄件者的硬體地址 寄件者的硬體地址。
寄件者的協議地址 寄件者的協議地址。
目的站硬體地址 目標者的硬體地址。
目的站協議地址 目標者的協議地址。
3、ICMP和IGMP
internet控制訊息協議ICMP是用於報告錯誤並代表IP對訊息進行控制。
IP運用互聯組管理協議IGMP來告訴路由器,某一網路上指導組中的可用主機。
ICMP
ICMP源抑制訊息:當TCP/IP主機發送資料到另一主機時,如果速度達到路由器或者鏈路的飽和狀態,路由器發出一個ICMP源抑制訊息。
ICMP資料包結構
類型:一個8位類型欄位,表示ICMP資料包類型。
代碼:一個8位代碼域,表示指定類型中的一個功能。如果一個類型中只有一種功能,代碼域置為0。
檢驗和:資料包中ICMP部分上的一個16位檢驗和。
指定類型的資料隨每個ICMP類型變化的一個附加資料。
IGMP
IGMP資訊傳給別的路由器以使每個支援多路廣播的路由器獲知哪個主機群組和哪個網路中。
IGMP包結構
版本:IGMP的版本,值一般為0x1h。
類型:IGMP訊息的類型。0x1h類型稱為主機成員請求,在多路廣播路由器上用於指定多級組中的任何成員輪詢一個網路。0x2h類型稱為主機成員報告,在主機上用於發布指定組中的成員情況或對一個路由器的主機成員請求進行回答。
未用:未用的網域名稱被寄件者置零且被接收者忽略。
檢驗和:IGMP頭的一個16位檢驗和。
組地址:主機用該組地址在一個主機成員請求中儲存IP多路廣播位址。在主機成員請求中,組地址被全置零,而且硬體級的多路廣播位址被用來標示主機群組。
4、IP
IP是一個不需連線的協議,主要就是負責在主機間定址並為資料包設定路由,在交換資料前它並不建立會話。因為它不保證正確傳遞,另一方面,資料在被收到時,IP不需要收到確認,所以它是不可靠的。
有一些欄位,在當資料從傳輸層傳下來時,會被附加在資料包中,我們來看一下這些欄位:
源IP地址:用IP地址確定資料報寄件者。
目標IP地址:用IP地址確定資料報目標。
協議:告知目的機的IP是否將包傳給TCP或UDP。
檢查和:一個簡單的數學計算,用來證實收到的包的完整性。
TTL生存有效時間:指定一個資料報被丟棄之前,在網路上能停留多少時間(以秒計)。它避免了包在網路中無休止迴圈。路由器會根據資料在路由器中駐留的時間來遞減TTL。其中資料報通過一次路由器,TTL至少減少一秒。
根據我們前面提到關於ARP的知識,如果IP地址目標為本地地址時,IP將資料包直接傳給那個主機;如果目標地址為遠程地址的話,IP在本地的路由表中
尋找遠程主機的路由(看來好象我們平時撥114一樣)。如果找到一個路由,IP用它傳送資料包。如果沒找到呢,就會將資料包發送到源主機的預設網關,也稱
之為路由器。(很多時候一直在搞網關和路由器的定義,其實我覺得在學的時候不一定死摳概念,現在硬體和軟體結合的產品越來越多了,一時很分清的,只要我們
運用的時候可以解決實際問題嘛。)
這樣當路由器收到一個包後,該包向上傳給IP:
(1)如果交通阻塞(聽起來蠻可怕的),包在路由器中停滯,TTL至少減1或更多。要是它降到0的話,包就會被拋棄。
(2)如果對於下一網路來說包太大的話,IP會將它分割成若干個小包。
(3)如果包被分解,IP為每個新包製造一個新頭,其中包括:一個標誌,用來顯示其它小包在其後;一個小包ID,用來確定所有小包是一起的;一個小包位移,用來告訴接收主機怎麼重新組合它們。
(4)IP計算一個新的檢驗和。
(5)IP擷取一個路由的目標硬體地址。
(6)IP轉寄包。
在下一主機,包被發送到TCP或UDP。每個路由器都要重複該過程。直到包到達最終目的地。當包到達最終目的地後,IP將小包組裝成原來的包。
5、TCP
TCP是一種可靠的連線導向的傳送服務。它在傳送資料時是分段進行的,主機交換資料必須建立一個會話。它用位元流通訊,即資料被作為無結構的位元組流。
通過每個TCP傳輸的欄位指定順序號,以獲得可靠性。如果一個分段被分解成幾個小段,接收主機會知道是否所有小段都已收到。通過發送應答,用以確認別的
主機收到了資料。對於發送的每一個小段,接收主機必須在一個指定的時間返回一個確認。如果寄件者未收到確認,資料會被重新發送;如果收到的資料包損壞,接
收主機會捨棄它,因為確認未被發送,寄件者會重新發送分段。
連接埠
SOCKETS公用程式使用一個協議連接埠號碼來標明自己應用的唯一性。連接埠可以使用0到65536之間的任何數字。在服務要求時,作業系統動態地為用戶端的應用程式分配連接埠號碼。
通訊端
通訊端在要領上與檔案控制代碼類似,因為其功能是作為網路通訊的終結點。一個應用程式通過定義三部分來產生一個通訊端:主機IP地址、服務類型(連線導向的服務是TCP,無串連服務是UDP)、應用程式所用的連接埠。
TCP連接埠
TCP連接埠為資訊的傳送提供定地點,連接埠號碼小於256的定義為常用連接埠。
TCP的三向交握
TCP對話通過三向交握來初始化。三向交握的目的是使資料區段的發送和接收同步;告訴其它主機其一次可接收的資料量,並建立虛串連。
我們來看看這三向交握的簡單過程:
(1)初始化主機通過一個同步標誌置位的資料區段發出會話請求。
(2)接收主機通過發回具有以下項目的資料區段表示回複:同步標誌置位、即將發送的資料區段的起始位元組的順序號、應答並帶有將收到的下一個資料區段的位元組順序號。
(3)請求主機再回送一個資料區段,並帶有確認順序號和確認號。
TCP滑動視窗
TCP滑動視窗用來暫存兩台主機間要傳送的資料,有點類似CACHE。
每個TCP/IP主機有兩個滑動視窗:一個用於接收資料,另一個用於發送資料。
6、UDP
使用者資料包通訊協定UDP提供了不需連線的資料報服務。它適用於無須應答並且通常一次只傳送少量資料的應用軟體。
UDP連接埠
連接埠作為多工訊息佇列使用。
15 NETSTAT 網路狀態
53 DOMAIN 網域名稱伺服器
69 TFTP 平凡檔案傳送協議
137 NETBIOS-NS NETBIOS命令服務
138 NETBIOS-DGM NETBIOS資料報服務
161 SNMP SNMP網路監視器
IP地址分配
1、IP地址
IP地址標識著網路中一個系統的位置。我們知道每個IP地址都是由兩部分組成的:網路號和主機號。其中網路號標識一個物理的網路,同一個網路上所有主機
需要同一個網路號,該號在互連網中是唯一的;而主機號確定網路中的一個工作端、伺服器、路由器其它TCP/IP主機。對於同一個網路號來說,主機號是唯一
的。每個TCP/IP主機由一個邏輯IP地址確定。
網路號和主機號
IP地址有兩種表示形式:二進位表示(1和0太多了就搞不清)和點分十進位表示。每個IP地址的長度為4位元組,由四個8位域組成,我們通常稱之為八位體。八位體由句點.分開,表示為一個0-255之間的十進位數。一個IP地址的4個域分別標明了網路號和主機號。
2、地址類型
為適應不同大小的網路,internet定義了5種IP地址類型。可以通過IP地址的前八位來確定地址的類型:
類型 IP形式 網路號 主機號
A類 w.x.y.z w x.y.z
B類 w.x.y.z w.x y.z
C類 w.x.y.z w.x.y z
我們來看一下這5類地址:
A類地址:可以擁有很大數量的主機,最高位為0,緊跟的7位表示網路號,餘24位表示主機號,總共允許有126個網路。
B類地址:被分配到中等規模和大規模的網路中,最高兩位總被置於二進位的10,允許有16384個網路。
C類地址:被用於區域網路。高三位被置為二進位的110,允許大約200萬個網路。
D類地址:被用於多路廣播組使用者,高四位總被置為1110,餘下的位用於標明客戶機所屬的組。
E類地址是一種僅供實驗的地址。
3、地址分配指南
在分配網路號和主機號時應遵守以下幾條準則:
(1)網路號不能為127。大家知道該標識號被保留作迴路及診斷功能,還記得平時ping
127.0.0.1?
(2)不能將網路號和主機號的各位均置1。如果每一位都是1的話,該地址會被解釋為網內
廣播而不是一個主機號。(TCP/IP是一個可廣播的協議嘛)
(3)相應於上面一條,各位均不能置0,否則該地址被解釋為“就是本網路”。
(4)對於本網路來說,主機號應該是唯一。(否則會出現IP地址已指派或有衝突之類的錯誤)
分配網路號
對於每個網路以及廣域串連,必須有唯一的網路號,主機號用於區分同一物理網路中的不同主機。如果網路由路由器串連,則每個廣域串連都需要唯一的網路號。
分配主機號
主機號用於區分同一網路中不同的主機,並且主機號應該是唯一的。所有的主機包括路由器間的介面,都應該有唯一的網路號。路由器的主機號,要配置成工作站的預設網關地址。
有效主機號
A類:w.0.0.1--w.255.255.254
B類:w.x.0.1--w.x.255.254
C類:w.x.y.1--w.x.y.254
4、子網屏蔽和IP地址
TCP/IP上的每台主機都需要用一個子網屏蔽號。它是一個4位元組的地址,用來封裝或“屏蔽”IP地址的一部分,以區分網路號和主機號。當網路還沒有劃分為子網時,可以使用預設的子網屏蔽;當網路被劃分為若干個子網時,就要使用自訂的子網屏蔽了。
預設值
我們來看看預設的子網屏蔽值,它用於一個還沒有劃分子網的網路。即使是在一個單段網路上,每台主機也都需要這樣的預設值。
它的形式依賴於網路的地址類型。在它的4個位元組裡,所有對應網路號的位都被置為1,於是每個八位體的十進位值都是255;所有對就主機號的位都置為0。例如:C類網地址192.168.0.1和相應的預設屏蔽值255.255.255.0。
確定資料包的目的地址
我們說把屏蔽值和IP地址值做“與”的操作其實是一個內部過程,它用來確定一個資料包是傳給本地還是遠程網路上的主機。其相應的操作過程是這樣的:當
TCP/IP初始化時,主機的IP地址和子網屏蔽值相“與”。在資料包被發送之前,再把目的地址也和屏蔽值作“與”,這樣如果發現源IP地址和目的IP地
址相匹配,IP協議就知道資料包屬於本地網上的某台主機;否則資料包將被送到路由器上。
註:我們知道“與”操作是將IP地址中的每一位與子網屏蔽中相應的位按邏輯與作比較。
建立子網
1、 子網簡介
一個網路實際上可能會有多個物理網段,我們把這些網段稱之為子網,其使用的IP地址是由某個網路號派生而得到的。將一個網路劃分成若干個子網,需要使用不同的網路號或子網號。當然了,劃分子網有它的優點,通過劃分子網,每個單位可以將複雜的物理網段串連成一個網路,並且可以:
(1) 混合使用多種技術,比如乙太網路和令牌環網。(最流行的兩種介面都支援了哦)
(2) 克服當前技術的限制,比如突破每段主機的最大數量限制。
(3) 通過重新導向傳輸以及減少廣播等傳輸方式以減輕網路的擁擠。
實現子網劃分
在動手劃分子網之前,我們一定要先分析一下自己的需求以及將來的規劃。一般情況下我們遵循這樣的準則:
(1) 確定網路中的物理段數量。(就是子網個數嘛)
(2) 確定每個子網需要的主機數。注意一個主機至少一個IP地址。
(3) 基於此需求,定義:整個網路的子網屏蔽、每個子網唯一的子網號和每個子網的主機號範圍。
子網屏蔽位
在定義一個子網屏蔽之前,確定一下將來需要的子網數量及每子網的主機數是必不可少的一步。因為當更多的位用於子網屏蔽時,就有更多的可用子網了,但每個子網中的主機數將減少。(這和定義IP地址的概念正好相反)
2、定義子網屏蔽
將網路劃分成若干個子網時,必須要定義好子網屏蔽。我們來看看定義的步驟:
(1)確定物理網段也就是子網的個數,並將這個數字轉換成位元。比如B類地址,分6個子網就是110。
(2)計算物理網段數(子網數)的二進位位元,這裡是110,所以需要3位。
(3)以高位順序(從左至右)將這個反碼轉換成相應的十進位值,因為需要3位,就將主機號前3位作為子網號,這裡是11100000,所以屏蔽就是255.255.254.0。
3、定義子網號
子網號與子網屏蔽的位元相同。
(1)列出子網號按高到低的順序使用的位元。例如子網屏蔽使用了3位,二進位值是11100000。
(2)將最低的一位1轉換成十進位,用這個值來定義子網的增量。這個例子中是1110,所以增量是32。
(3)用這個增量迭加從0開始的子網號,直到下一個值為256。這個例子中就是w.x.32.1-w.x.63.254、w.x.64.1-w.x.127.254等。
4、定義子網中的主機號
從上面的例子看出,一旦定義了子網號,就已經確定了每個子網的主機號了。我們在做每次增量後得出的值表明了子網中主機號範圍的起始值。
確定每個子網中的主機數目
(1)計算主機號可用的位元。例如在B類網中用3位定義了網路號,那麼餘下的13位定義了主機號。
(2)將這個餘下的位元也就是主機號轉換為十進位,再減去1。例如13位值1111111111111轉換為十進位的話就是8191,所以這個網路中每個子網的主機數就是8190了。
實現IP路由
1、IP路由簡介
路由就是選擇一條資料包傳輸路徑的過程。當TCP/IP主機發送IP資料包時,便出現了路由,且當到達IP路由器還會再次出現。路由器是從一個物理網向
另一個物理網發送資料包的裝置,路由器通常被稱為網關。對於發送的主機和路由器而言,必須決定向哪裡轉寄資料包。在決定路由時,IP層查詢位於記憶體中的路
由表。
(1)當一個主機試圖與另一個主機通訊時,IP首先決定目的主機是一個本地網還是遠程網。
(2)如果目的主機是遠程網,IP將查詢路由表來為遠程主機或遠程網選擇一個路由。
(3)若未找到明確的路由,IP用預設的網關地址將一個資料傳送給另一個路由器。
(4)在該路由器中,路由表再次為遠程主機或網路查詢路由,若還未找到路由,該資料包將發送到該路由器的預設網關地址。
每發現一條路由,資料包被轉送下一級路由器,稱為一次“跳步”,並最終發送至目的主機。
若未發現任何一個路由,源主機將收到一個出錯資訊。