曰本王文升:TCP/IP概論

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 02:13:55
TCP/IP 概論
作者:李忠憲  2003/9/5 修訂 綱要
TCP/IP 通訊協定 OSI七層架構 vs TCP/IP 四層架構 封包傳遞程序 網路連通偵錯
網路規劃 網路硬體設備簡介 功能簡介 以光纖為骨幹的校園網路規劃
靜態路由 以兩組 C 為例說明路由繞送原理 以 PC 當路由器 路由檢測:route、tracert、netstat 指令
OSI七層架構 vs TCP/IP 四層架構
網路架構
電腦網路是一種訊息傳播系統,因此電腦網路的發展與訊息理論的發展可以說密不可分,所以經常有人談論 3C 網路的整合,儘管 3C 網路從承載媒體到傳播型式彼此存在很大的差異性,但它們都是基於同一門學說,整合也是必然的結果。訊息理論關心的是:如何攜帶最大的訊息量,同時卻以最快的方式傳播,訊息如何保持隱密和完整,如何擴大傳播距離,如何保證訊息成功到達......,以這些宏觀的觀點來審視網路的特性,特別有助益於對網路的理解。
電腦網路累積長久的實作經驗,對以上這些問題找到一些解答,例如:如何攜帶最大的訊息量呢?電腦網路的答案是高倍數壓縮。如何以最快速度傳播呢?電腦網路認為以光為媒介,達到光速傳播。訊息如何保持隱密?使用雙金鑰密碼系統。如何保持訊息的完整性?同時併用多種同步檢查,包括同步位元檢查、CRC檢查、標頭檢查、封包大小查驗、封包計數......等等。如何擴大傳播距離?整合電腦、衛星、電話、電視各種不同傳播媒體,讓它們具備數位傳播的特性,利用它們來傳遞封包。如何保證訊息成功到達?透過 IP 位址系統的引導,在錯綜複雜的網路中選擇各種不同路徑來傳播,以避免單點故障造成系統潰散。
如上所述,如此龐大的網路機制,再加上快速的改良發展,如果沒有統一的標準來規範,最後必然會導致毀滅。OSI 七層架構就是在這樣的需求下誕生的。然而基於訊息理論制定的架構,終究與現實環境有所不同,在當時線材和各種硬體設備功能不足,如果要實現七層架構未免緣木求魚,就如同在沒有人造衛星的年代,當時科幻小說描寫人類穿著潛水衣登陸月球一樣,如何讓現有簡陋設備也能實現網路共和國的理想,簡化架構是不得不作的實務考量,其成果就是 TCP/IP 四層架構。
Open System Interconnection Internet Protocol Suite TCP/IP實作
應用層 (Application) 應用層 (Application) FTP/HTTP/
SMTP......
表現層 (Presentation)
會談層 (Session)
傳送層 (Transport) 傳送層 (Transport) TCP/UDP
網路層 (Network) 網路層 (Network) IP/ICMP/IGMP
資料鏈結層 (Data Link) 鏈結層 (Link) ARP/RARP
(IEEE 802)
實體層 (Physical)
OSI
IEEE 802 標準
資料
鏈結層
802.2 Logical Link Control
CSMA/CD
Token Bus
Token Ring
DQDB broadband
Fiber Optic Voice/Data
Integration wireless
Demand Priority Cable-TV
實體層
802.3 802.4 802.5 802.6 802.7 802.8 802.9 802.11 802.12 802.14
鏈結層
鏈結層的機制通常由網路卡廠商所附的驅動程式來提供,鏈結層使用 MAC (Mideum Access Centrol)地址來識別數據來源與傳輸目的地,並負責依照適當的通訊協定來分割、組合訊框(frame),以便有效的管理資料傳輸的進行。
在不同的網路媒體上,例如:同軸電纜、雙絞線、光纖、電話數據線......等等,由於電氣特性(電壓、電阻、訊號衰變周期......)不同 ,因此不同線材間的線傳速率與頻寬承載能力也不一樣,必須使用不同的資料訊框格式,以建立兼顧快速回應及最大傳輸量兩方面考量的最佳傳輸方式。一般說來, 封包大,處理的時間久,回應速度就會比較慢,但由於封包較大傳輸效能就會提高;由此看來回應速度恰好與傳輸效率成反比。鏈結層通訊協定的任務,就是在人類所能接受的回應時間內(約 1/10 秒),盡量攜帶大量的資訊。
以 9600Kb/s 的電話數據線為例,頻寬為 960kB/s,以這個速率傳輸 1024k 的封包,約需 1066ms,假如以 FTP 來接收此封包,則需要花費一半的時間(533ms)來等待互動封包(這種封包不存放資料,而是用來下 FTP 指令,通常在傳輸大封包前會先送出),這個等待時間遠遠超過人類所能接受的 100ms,因此是不合理的,這時候就必須降低每次傳送的封包大小,例如改為每次傳送 256k 大小的封包,則等待時間降低為 133ms,比較能被接受。如果把封包大小加上 40k 的 IP 標頭(後面解釋)則為 296k,這就是 9600 數據線路的 MTU,目前網路上有所謂加速連線的軟體,藉由改大 MTU 來提升速率,但事實上卻是犧牲了互動性,如果經常使用 telnet 服務,將會發現傳輸速度不但沒增加,反而變得更慢。由上面的討論可知,線傳速率越快,封包就應該越大,除了可提高傳輸效率外,也可避免封包碰撞;線傳速率越慢,封包就應該越小,以提升即時回應能力。
因此根據不同線路的特性才能制定出適當的鏈結層通訊協定,例如:使用一般電話撥接線路時,會運用PPP協定來作為鏈結層協定;使用同軸電纜、雙絞線時會運用 CSMA/CD 協定;使用光纖時則會運用 LL5 Snap。
鏈結層的機制如下: 使用 ARP/RARP 取得其他網路設備的 MAC 地址,以便建立邏輯鏈結 控制訊框的分割、封裝、傳送和錯誤檢測 對接收訊框進行重組、解封,並傳遞給上層
名詞解釋
線傳速率:每秒所能傳輸的位元數,以 UTP Category 5 為例是 100Mb/s
頻寬:由於每個封包前後都需要傳輸一個位元的同步訊號,因此是把線傳速率除以 10 而非一般書上所寫的除以 8,以 UTP Category 5 為例是 10MB/s
MAC 地址是網路設備(包括網路卡)的實體位址,由六個位元組組成,前三個位元組是廠商代號,後三個位元組為出廠序號。除了 00-00-00-00-00-00 保留給 ARP 查詢使用,ff-ff-ff-ff-ff-ff 保留給 ARP 廣播使用, 00-00-5e 保留給 IANA 組織,01-00-5e 用作多點傳輸 (Multicast)虛擬介面,其餘發放給廠商配置在所生產的網路設備上。
網路層(IP層)
網路層的主要功能是建立主機對主機的連線,讓封包(packet)能在不同的網路之間透過路由器來進行傳遞。網路層是以 IP 來識別傳輸來源與傳輸目的地,由於主機與主機之間可能分隔遙遠,傳輸的雙方以及中介的路由器必須透過 ICMP 的輔助,來確認對方是否處於連通狀態,以便決定路由如何繞送。為了滿足多點傳輸的需求,則需要 IGMP 通訊協定來建立和管理傳播群組。
網路層通常都有如下的這些功能﹕ Forward(Routing):如果封包不是屬於同一個網路的時候,會將之送往閘道。 控制數據流量,當路由器的緩衝區飽和的時候,會通知其他路由器使用其它路徑或暫停發送封包(ICMP)。 當封包體積超過路由器的 MTU(Maximum Transmission Unit)時,允許路由器對封包進行分段(fragment)後再進行傳送。
網路 MTU
FDDI(LL5) 4352
ethernet(CSMA/CD) 1500
同軸電纜(CSMA/CD) 1492
數據線路(ppp) 296
網路層所提供的傳送服務有以下的特性: 不可靠的:當路由器發生錯誤時,通常會將封包丟棄,並嘗試送回 ICMP 訊息(不一定會成功),網路層不理會封包是否重複或需要重傳,任何需要可靠度的服務,必須由傳輸層提供。 非連接導向:網路層並不負責維護資料的連續性,資料都被個別處理,所以有可能經由不同的路由,也需要不同的時間才能到達目的地,因此資料被接收時並不會依照傳遞時的順序。
網路層通訊協定是由作業系統負責提供的,並非像鏈結層一樣由廠商提供驅動程式。由於網路層通訊協定的制定,讓主機得以脫離網卡的束縛,無論 MAC 位址是什麼,只要主機使用同一個 IP 均可以順利連線,解決了不同網卡在同一網路內共存相容的問題,也使得網路硬體配備的生產能夠開放不被單一公司壟斷。
IP 位址是主機(包括路由器)的網路地址,目前所使用的 IPv4 是由四個位元組組成,通常在網路上要為一群電腦定址時,會配合子網路遮罩(例如:255.255.255.0)來使用,一組 IP 的第一個位址(例如:192.57.1.0)稱為網路號碼必須保留作為路由運算使用,最後一個號碼(例如:192.57.1.255)則保留作為廣播使用。IP 的分配是由 NIC 組織負責,除了 127 保留給回溯介面使用,10、172.16~31 和 192.168.1~192.168.255 保留作實驗用途, 224~239 保留作為 multicast 虛擬 IP 外,其餘開放給團體個人申請使用。
傳送層(TCP層)
傳送層的主要功能是確保電腦資料正確的傳送到目的地,雖然 TCP 和 UDP 都是屬於這一層的通訊協定,但是兩者所提供的服務,差異非常顯著。
TCP 維護 IP 連線的方法是:先等待資料收集到足夠的數量時才將資料發送出去,並非應用程式每次產生一個資料就進行一次傳送,這樣可以減少傳輸次數,並因此而降低了 CPU 的負載,藉以提昇傳輸效率;反之,當應用程式產生大量資料時,則將之分拆成較小的節區(segment)再進行傳輸。TCP 會將節區編上號碼,以方便依順序重組,當某些節區遺失時,會進行重傳,節區重複時則剔除;因此使用 TCP 來維護連線,可以讓資料傳輸具備可靠性,以確保相方交換的資料內容相同。除此之外,TCP 還有連接導向的特性,所謂連接導向,就是指通訊雙方在正式傳輸資料之前,必須先進行三向握手,結束傳輸時須進行四向確認動作,這也是為了提供可靠性必要的手段。 由於 TCP 對 IP 連線有較多的維護動作,因此服務效率相較之下會延遲。
三向握手是由要求連線的一方在封包上附加 SYN 旗號(口語翻譯:你在家嗎?),收到連線要求的一方則回應 ACK 旗號(口語翻譯:我在家!),由於雙方必須在得知網路雙向通暢的前提下才會建立連線,因此當提出要求的一方收到 ACK 旗號時,就已經得知雙向都是通暢的。
然而在這個過程中,被要求連線的一方只是被動送出回應封包,並無法得知該回應封包是否有順利送達,因此在送出 ACK 旗號的同時,會加上 SYN 旗號,以要求提出連線請求的一方善盡封包已經到達的告知責任,等被動連線的一方也收到 ACK 旗號,連線才算是建立成功,雙方也可以開始交換後續的資料。
在三次通訊過程中,送出四個旗號來確立連線,因此稱為三向握手。
四向確認的過程如下:要求斷線的一方先送出 FIN 旗號(口語翻譯:我要掛斷了),並進入等待狀態,對方收到後也回應 FIN 旗號(口語翻譯:我也要掛斷了),此時被動的一方也進入等待狀態,之所以不馬上斷線的原因是,對方可能會提出恢復連線的要求,所以不可逕行斷線。
要求斷線的一方收到 FIN 旗號後,必須決定是否要斷線,還是要恢復連線,如果是要斷線,則送出 ACK 旗號(口語翻譯:再見),被動的一方收到 ACK 旗號後開始清除封包記數器和緩衝區,並且也送出 ACK 旗號
要求斷線的一方收到 ACK 旗號後,開始清除封包記數器和緩衝區,並且不再回應訊息逕行斷線
UDP 不會對資料進行分拆節區的動作,應用程式產生多少資料,封包大小就有多大。它也不會對封包進行暫存和重組,而是在收到較早封包時,直接將它丟棄。UDP 所提供的是非連接導向的、即時、但是不可靠的服務。因為即時傳輸需要,並不會檢查收訊方的連線狀態,採用丟了就跑的方式。
傳送層通訊協定在真實世界中的運作,往往比上面所說的更為複雜,例如:DNS 查詢服務需要即時,因此採用 UDP 來維護連線,但是 DNS 同時也需要可靠性,來保證用戶端能獲得完整的查詢結果,因此有時候也使用 TCP。在不同應用場合中,有時無法像 DNS 一樣採用兩種並行的方法,例如 SAMBA 檔案分享服務,這種情況下則會使用 UDP 來提供即時傳輸,但是在應用層額外提供增加可靠性的維護動作,換句話說,把傳送層該做的事轉嫁給應用層來做。又例如:HTTP 1.1 通訊協定,為了能適應影音串流的廣泛應用,也在應用層加入了能讓 TCP 獲得即時傳輸能力的機制,這個例子則和 SAMBA 剛好相反,這三個案例已足以說明通訊協定理論與網路實務的落差有多麼的大!
到底有沒有既能兼顧即時性又能兼顧可靠性的通訊協定呢?據說有一種新的通訊協定正在研發!
應用層
應用層主要是提供一些網路應用程式所需的通訊協定,例如:FTP、HTTP、TELNET......等等。為了進行這些網路服務,客戶端必須傳送要求或命令給伺服端,伺服端則必須傳送回應或運算結果給客戶端,兩端要能溝通必須有事先定義好的通訊協定,來解讀雙方所送出的訊息。而事實上,由於有應用層通訊協定的存在,不同作業平台,不同電腦硬體,都能利用一定的方法來自由交換資料,不會因為軟硬體不同而受到限制。
封包傳遞程序(封裝 、解封與回溯介面)
為了讓各層通訊協定能夠發揮其作用,必須在封包上面紀錄足夠的訊息,以 IP 層來說封包上面需要有連線相方的 IP,以及封包是否分段(fragment)......等資訊,而攜帶這些資訊的節區被稱為標頭(Header), IP 層的標頭就直接稱為 IP Header。封包傳送前必須按照應用層->傳送層->網路層->鏈結層的順序附加各層的標頭,這個程序稱為封裝;收到封包後,則以相反的順序將各層標頭取下判讀以便進行封包處理,此程序稱為解封。
底下說明各層標頭內含的資訊內容,並以觀看網頁為例,來說明整個過程:

User Data:客戶端所傳送之應用程式指令或要求,伺服端所傳送之結果
App Header:主要用途為攜帶作業系統或應用程式相關版本訊息、指令、參數
TCP Header:主要用途為攜帶來源埠號和目的地埠號、封包節區(segment)編號、TCP 同步旗號、服務需求(TOS)、連線編號(Session ID)
UDP Header:主要用途為攜帶來源埠號和目的地埠號
IP Header:主要用途為攜帶來源 IP 位址和目的地 IP 位址、封包是否分段(fragment)以及協定編號(TCP、UDP、ICMP 或 IGMP)
Frame Header:主要用途為攜帶來源 MAC 位址和目的地 MAC 位址,以及封包類型(ARP、RARP 或 IP)
當我們打開網頁瀏覽器並輸入對方的網址,該網址也就是上面所說的 User Data,首先瀏覽器會在該網址前面附上 HTTP 指令,通常是使用 GET 指令(應用層標頭),接著把封裝好的封包交給作業系統的 TCP/IP 驅動程式來處理,由於未指定目的地埠號,作業系統會使用 HTTP 協定的預設值 80,然後隨機從 16384~65535 之間選一個未被使用的號碼當作來源埠號,每一個埠號均提供一塊獨立的記憶體空間作為緩衝區,這樣就可以確保要回來的資料(來自同一個檔案)會放在同一塊緩衝區裡堆疊。
接著 TCP/IP 驅動程式會檢查連線狀態(TCP 旗號),發現該封包要進行的連線不存在(不是 ESTABLISH,旗號狀態可用 netstate 查看),由於現在是我方主動要求連線,因此必須設定 SYN 旗號於 TCP 標頭中,以便與伺服端進行三向握手。
接著是網路層的工作,作業系統根據網址來查詢網站伺服器的 IP,並從網路設定讀取自己的 IP,再加上 TCP 的協定號碼(IP 標頭),然後將封包交由網卡驅動程式處理,網卡驅動程式先以 ARP 通訊協定,查出網路閘道的 MAC 位址(通常是路由器的某個端口),將它設為目的地網卡位址,並附上自己的 MAC 位址(訊框標頭 Frame Header),到此已經完成封裝程序,封包已經可以傳送到網路上。
通常我方的瀏覽器與對方的伺服器是透過許多不同網路連接,因此上述的封包送出後,會被擔任網路閘道的路由器收到,路由器這種設備本身也提供到第四層的通訊協定,因此能正確將該封包解封,如果路由器未被設定進行流量管制,而僅只是將封包繼續往前轉送,通常解封僅需進行到 IP 層,換句話說,訊框標頭中的目的地 MAC 位址和來源 MAC 位址將會被路由器改變,而其它的封包內容則保持不變,目的地 MAC 位址被改成下一個閘道的位址或者是網站伺服器的位址,而來源 MAC 位址則改成路由器端口所在的 MAC 位址,以便確保回應封包能正確接收。
當網站伺服器收到連線要求封包時,即開始進行解封程序。 網卡將收到的封包交給網卡驅動程式處理,首先取下訊框標頭並讀取標頭中的目的地 MAC 位址與本機位址進行比對,確定為給本機的封包,則將封包排入 INPUT 佇列(記憶體緩衝區)等候處理(以上為鏈結層解封程序)
TCP/IP 驅動程式從佇列取得封包後即進行 IP 標頭的剖析判讀,以確定該封包中的目的地 IP 是否為本機 IP ,若不是則必須將封包轉給 IP_Forward 程式來處理,若是則將封包交給 IP_INPUT 程式來處理,該程式主要是讀取通訊協定編號,然後將已去除 IP 標頭的封包傳送給相對應的程式(ICMP、TCP或UDP, 這是網路層的解封程序)。
由於瀏覽網頁是使用 TCP 協定,因此是由 TCP 處理程式進行後續處理,首先取下 TCP 標頭,讀取 TCP 旗號並紀錄是否需要進行三向握手,若是則由 TCP 處理程式代理進行此程序。由於三向握手程序是由 TCP/IP 驅動程式自動處理,雙方的應用層並不需要特別去關心它,因此當瀏攬器送出 HTTP 連線要求時,對應用層來說僅送出一個封包,但是對 TCP 層來說,總共送了四次封包。
經過三向握手程序,並商定 Session ID 後,瀏覽器端會把 HTTP request 封包送過來,經過前述的連結層及 IP 層處理後,繼續進行 TCP 層解封程序,首先檢查封包節區標號,若編號有遺漏,就要求對方重傳,並依編號順序將封包重組。封包重組完畢後,TCP 處理程式會依照標頭上紀錄的埠號查出註冊的應用程式,如果這台伺服器是 windows 2000,那麼該應用程式應該是 IIS,封包就交由 IIS 處理(傳送層解封程序)。
網站伺服器讀取應用程式標頭後(應用層解封程序),依照指令的要求尋找該網頁檔案,並判斷權限是否足夠,如果沒有問題便可以開始將網頁內容傳輸給客戶端,根據網頁的大小有時必須分成好幾個節區來傳輸 (這是 TCP 層的工作),每一個節區都會被封裝成一個獨立的封包,然後再傳輸給客戶端,客戶端收到後依照節區編號在緩衝區內將封包重組,以便送給瀏覽器處理。
最後使用者就可以從瀏覽器看到漂亮的網頁了,要注意的是,這樣的傳輸過程隨著網頁的複雜程度而增加,如果網頁有使用背景圖、背景音樂、插圖等,每一個檔案都得來上一次,因此我們輕鬆的看到一個網頁畫面,背後所進行的處理工作可以說是堆積如山、非常繁重!
以上所描述的封裝、解封程序,只是概要的內容,實際進行的封包除錯檢查遠比上面所談的更為繁複,例如:TCP 旗號檢查並非只做 SYN 和 ACK 旗號的處理而已,而且在進行三向握手的程序時,是由一個狀態引擎來進行全程掌控,由於內容已經涉及網路工程師的專業,並非系管人員需要深入了解的部分,因此在此忽略不談。除了 TCP 層外,其餘各層也有許多連線維護的動作細節,是筆者故意忽略不談,相信這些部分的內容並不影響網路概念的建立,相關詳細內容可以自行閱讀 W. Richard Stevens 等人合著的 TCP/IP illustrated Vol.1(中文版由和碩出版,學貫行銷)。
雖然前面所討論的通訊協定分為四層,但從產品供需的觀點來看卻只有三層,應用層是由應用程式開發廠商負責提供程式,而 IP 層和 TCP 層則是由作業系統負責提供,由於作業系統的不同,這部分程式內容差異相當大,以微軟公司的產品來看,這兩層是由TCP/IP通訊協定(一般稱為 TCP/IP 驅動程式)這支程式來實作。最後的鏈結層則由網卡製造商提供驅動程式。
由於作業系統的不同,UNIX 與 Windows 之間存在相當大的差異,例如:微軟公司為了促進相容制定 NDIS 標準,並要求網卡供應商提供相容的驅動程式,而 UNIX 系統則乾脆由作業系統一併提供網卡驅動程式,而非由網卡製造商提供(當然也有好心的製造商自行提供,因此有少數例外存在)除此之外,UNIX 系統對四層通訊協定都有完整支援,而 Windows98、Me、NT Workstation......等等工作站等級的作業系統,均故意省略某些處理程式,導致網路功能不全,例如:不能轉送封包、 不能過濾封包、不能追蹤封包、不能監測封包、不能遠端管理網卡介面......等等,美其名是要減少成本讓消費者買到最便宜(?)的產品。
從底下的流程圖來看(這是微軟白皮書提供的),微軟公司把 TCP/IP 驅動程式分為三個部分,分別是 IP 輸入(IP_INPUT)、IP 輸出(IP_OUTPUT)及回溯介面(Loopback),IP 輸入主要負責封包解封,IP輸出負責封包封裝,而回溯介面則負責將輸出封包重新導回輸入佇列。 這裡面缺少了最重要的  IP 轉送函式(IP_FORWARD),必須要買 Win200 以上的產品才提供。
在這邊我們要特別注意的是封包流動的過程,當封包的目的地是 Loopback 網址時(127 開頭的 IP,通常使用 127.0.0.1),封包由 IP_OUTPUT 流向 Loopback 再流到 IP_INPUT ,整個過程都在 TCP/IP 驅動程式內處理,並未經過網卡驅動程式,而當封包的目的地是本機的 IP 時(例如:192.57.1.2),封包從 IP_OUTPUT 流向網卡,然後經過 IP 判斷常式又流到 Loopback 最後再流到 IP_INPUT ,這個過程會經過網卡驅動程式的處理,這個微小差異對於後面要討論的網路連通測試很重要。

以 Ping 偵測網路
網路故障的可能性很多,如果有合理的懷疑,就可以使用偵錯工具做進一步的確認。確認問題來源並不是偵錯唯一的目的,因為故障排除的經驗,會有助於網路架構的規劃。
偵錯步驟
一、實體線路連接問題:
檢查近端網路設備(例如:集線器、路由器、數據機)的燈號,Link(LNK)燈必須恆亮,而Action(ACT)燈必須閃爍,如果機器燈號不正常,必須將機器重開機,讓機器進行自我測試以恢復狀態,有些廠牌的網路設備,重開機後並不會立刻將韌體也一起重新啟動,而需要以人工方式進入主控台(把這個設備連接在一台工作站的COM埠,然後用終端機軟體簽入該設備),下指令將韌體重新啟動。如果不是機器的問題,請將無法連線的設備更換網路線,再以Ping指令測試是否線路有通。
二、網路卡測試:
測試網路卡晶片是否能正常工作,一般網路卡會附贈偵錯程式(有些直接執行Setup就可以看到偵錯選單),萬一沒有附偵錯程式給你,也可以使用windows系統的內建偵錯工具, net diag指令來偵錯。
三、TCP/IP通訊協定偵錯:
ping 127.0.0.1 測試 loopback 是否有回應(目的:找出是否為 TCP/IP 驅動程式錯誤) ping 自己的 IP 是否有回應(目的:找出是否為網卡驅動程式錯誤) ping GATEWAY ,看看是否有回應(目的:找出是否為網路線材、連接埠、或路由設定錯誤) ping 自己的DOMAIN NAME 看看是否有回應(目的:找出是否為 DNS 設定錯誤)
ping指令是傳遞ICMP封包,來測試另一部主機或網路設備是否可經由網路連接。如果 ping 有成功回應,你會看到以下訊息:
C:\>ping 163.21.236.5
Pinging 163.21.236.5 with 32 bytes of data:
Reply from 163.21.236.5: bytes=32 time=1ms TTL=255
Reply from 163.21.236.5: bytes=32 time<10ms TTL=255
Reply from 163.21.236.5: bytes=32 time=1ms TTL=255
Reply from 163.21.236.5: bytes=32 time=1ms TTL=255
Ping statistics for 163.21.236.5:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
ping不通有兩種情況,一種是出現Request timed out.,另一種是回應IP並伴隨錯誤訊息。前一種情形是表示封包送出後沒有回應,可能線路不通,也可能該主機沒有開機或沒有連上網路。後一種情形是有閘道器在收到封包後發現錯誤,所以發出ICMP封包通知執行 ping 的機器,在訊息中可以看到該閘道器的IP及錯誤訊息,例如:Reply from 163.21.254.254: Destination Unreachable.。
依照錯誤訊息各有不同含意,例如上述之Reply from 163.21.254.254 : Destination Unreachable. 通常是該主機服務不存在、埠不存在、主機或網路無法辨識或是因為管理上的理由該主機被禁止回應。而Reply from 163.21.254.254: TTL expired in transmit. 則是因為路由設定錯誤產生迴圈,最後當TTL減到 0 時最後收到封包的閘道器就會發出此訊息,如果去 ping 一個不應該存在的 IP 也會產生此種訊息。
ICMP 通訊協定訊息:
TYPE CODE 描述 查詢 錯誤
0 0 Ping 回覆 ●











10
11
12
13
14
15 目的地無法連接
網路無法連接
主機無法連接
協定無法到達
連接埠無法連接
需要分段節區
來源繞送失敗
找不到目的網路
找不到目的主機
來源主機孤立(舊)
政策禁止連接網路
政策禁止連接主機
網路不接受 TOS
主機不接受 TOS
連線被對方過濾禁止
主機優先權衝突
優先權截止   ●















4 0 來源中斷錯誤(來不及處理封包)   ●




3 轉向
網路轉向
主機轉向
服務型別與網路轉向
服務型別與主機轉向




8 0 Ping 回應請求 ●

10 0
0 路由器廣播
路由器請求 ●

11

1 TTL 逾時
傳輸時 TTL 逾時(traceroute 追蹤路由時)
分段節區組合時 TTL 逾時(中介路由器分段時)


12

1 參數問題
IP 標頭錯誤無法解析
協定編號流失


13
14 0
0 時間戳記請求(被 NTP 取代)
時間戳記回覆(被 NTP 取代) ●

15
16 0
0 資訊請求(舊)
資訊回覆(舊) ●

17
18 0
0 位址遮罩請求(無硬碟系統使用)
位址遮罩回覆(無硬碟系統使用) ●

查看封包流動
在 windows 伺服器上查看封包流動的情形,可以使用 netmonitor (網路監視器)程式,而 Linux 上則是使用 /usr/sbin/tcpdump,可惜的是 tcpdump 這支程式並無法看到詳細的封包內容,因此在 RedHat 8.0 以後提供一個 X window 的程式 ethereal 來取代 tcpdump,對於想透過封包流動情形來探究網路問題的人來說,這可真是一個好消息!
網路硬體設備簡介
底下簡介各種市售網路硬體設備的用途與功能,當系管師著手規劃校園網路前,了解各種網路設備的機制,根據自己校內需求來採購設備,至關重要。採購適當的設備不但可以節省經費,也可以讓網路頻寬獲得最大的利用價值,消弭網路各種應用所造成的疑難雜症,可以說網路規劃的成敗,有一半依賴於採購恰當的連線設備。
集線器(hub):訊號強化,支援 Layer 1(鏈結層)封包交換或支援 Layer 2(網路層) 封包交換,具備 port learning 功能
自動切換集線器(switch hub):自動切換 10/100 MB 頻寬,支援 Layer 2 封包交換,具備 port learning 功能
交換器(switch):支援 UTP、Fiber 線路,支援 Layer 2 封包交換(具備 MAC 自動選徑、廣播封包過濾)或支援 Layer 3(傳送層) 封包交換(具備 VLAN、port trunk、ip tunnel、Multicast)
路由交換器(routing switch):支援 UTP、FDDI 線路,支援 Layer 3 封包交換(VLAN、port trunk、IP tunnel、Multicast、IP 路由)或支援 Layer 4(或是 Layer 7,都是指應用層) 封包交換(具備 QoS、CLI 動態檔頭)
路由器(router):支援 Layer 3 封包交換(VLAN、port trunk、IP tunnel、Multicast、IP 路由)或支援 Layer 4 封包交換(QoS、CLI 動態檔頭),支援多種調變模組(xDSL、cable、ATM、PPP、UTP、FDDI.......等等)
快取伺服器(cache):提供 HTTP、FTP、Socket 封包快取,支援 icp、wccp 通訊協定
防火牆(firewall):提供 IP 封包過濾服務,提供 NAT 功能,提供 Proxy 代理功能,提供 Port 轉送服務
功能簡介
port learning:紀錄連通主機之 MAC 位址,並能防堵非此 MAC 位址之封包通過。
MAC buffer:具備額外記憶體,能建立連接埠與 MAC 對照表,並能自動選擇將封包遞送給適當的連接埠,以避免網路擁塞。
廣播封包過濾:能透過 MAC buffer 提供 ARP proxy 服務,因此而減少 ARP 廣播封包的量。
VLAN:能提供不同網段的虛擬分割,讓不同網段 IP 可以分享同一個交換器。
port trunk:能將兩個以上的 port 合併頻寬,以突破線路的頻寬限制。
IP tunnel:能將私有 IP 封包重新以公共 IP 封裝,以便穿越網際網路,可提供企業網路 VPN 之需求。
Multicast:能透過 IGMP 管理多點傳播群組,能自動選擇將多點傳播封包遞送給適當的連接埠,以避免網路擁塞。
QoS:能提供各種通訊協定之頻寬管制。
L3 路由:能對單一連接埠或多個連接埠設定 IP,能設定管理路由表,能透過 RIP、OSPF 建立動態路由。
CLI 動態檔頭:支援 IPv6 。
cache 和 firewall 兩種伺服器的功能,另有專題介紹不在此討論。
校園網路規劃
校園網路規劃乃是專業的工作,應該由教育局網路規劃小組專責規劃,筆者忝為網路規劃小組成員,多次在會議上建議依照校園之需求與大小,劃分為三個規劃案,然始終未獲得長官重視。目前教育局仍依照網路廠商的建議來採購網路設備,並由各校系管師自行規劃拓僕與數量,使得校園網路各校歧異性過大,許多廠商實驗產品進入校園但被擱置無法使用,流量大的地方頻寬小,流量小的地方頻寬大......等等反常現象,為了縮小各校的數位落差,底下就來說明校園網路規劃的要點,期盼各校資訊組或系管師能列入下次採購的參考!
進行網路規劃的第一步,就是計算網路的大小,網路大小就是指電腦主機數量的多寡,但需預估五年的需求量,建議採用以下的計算公式:
電腦教室(包含圖書室)數量X40 + 學校班級數 + 學校教職員工數量 + 處室或專科教室X10 = 五年預估網路大小
以石牌國小為例:5x40 + 104 + 120 + 10x10 = 524,由於一個 C 級(/24)網域,只能容納 254 台,因此預估需三個 C 級網域。將台北市的學校依大小區分為 B 級網域、C 級網域,再加上因為地理環境限制或有特殊應用需求的無線網路環境,給予三種不同適性規劃,以期能將經費作有效的分配利用!
B 級網域規劃重點為:
電腦教室採用獨立網域與學校行政網路區隔開來,並給予專用頻寬 因應 multicast 影音串流,骨幹直接連接內建光纖介面的 VOD 伺服器 骨幹路由採用 Layer 4 路由交換器 主機房伺服器建置於 DMZ 防火牆後方 對外以光纖連線,並以 ADSL 作為備援電路

C 級網域規劃重點為:
電腦教室以光纖直接連上校園骨幹 因應 multicast 影音串流,骨幹直接連接內建光纖介面的 VOD 伺服器 骨幹路由採用 Layer 3 交換器 建置 NAT 防火牆 對外以 ADSL 連線,並以另一線 ADSL 作為備援電路
無線網路環境:
校內伺服器由市網中心託管 電腦教室仍採用 UTP 建置區域網路,並透過集線器與無線網路接駁 採用 802.11g 作為無線網路骨幹
非階層式 IP 網路(classless)
IP 網路剛發展的時候,是以階層方式來管理(稱為 IP class),把 IP 劃分為 A、B、C、D 四個等級,當時的構想是將企業團體分等級,屬於跨國公司的可以申請 A 級,跨州的公司可以申請 B 級,區域性小公司可以申請 C 級,這樣的分類法並未顧及網際網路全球化的趨勢,畢竟當時能連上網際網路的企業團體寥寥無幾。然而隨著網際網路的普及,以美國為中心的劃分法無法滿足國際需求,特別是被委託管理網路的 NIC 協會,也沒有能力照顧到世界各國的需要,因此成立區域性 NIC 以便就近管理該國或區域的網路業務,成為當務之急。然而此時,大部分的 A 級網路多分配給美國企業或政府機構,已經沒有 A 級網路可以分配,只好以分配多組 B 級網域來滿足網路發展落後的國家,幸運的是台灣由於即時加入網際網路的社會,因此有分配到 A 級網路。
等級 網路範圍 網路數 每個網路的可用 IP 數
A 1~128.0.0.0 128 254x254x254
B 129~192.1~254.0.0 64x254 254x254
C 193~223.1~254.1~254.0 32x254x254 254
D 240~254.1~154.1~254.0 24x254x254 依需求切割為數個子網路
有些國家或美國企業雖然申請到 A 級網路,然而因為電腦數量不多還剩餘許多 IP,相較之下,卻有許多國家申請不到足夠的 IP,所謂階層式的管理出現了很大的盲點,而導致 IP 分配不均和浪費。於是 NIC 協會便改弦更張,採用非階層方式來管理 IP。
非階層式 IP 不再限定 IP 的等級範圍,而是改採可用 IP 數來區分等級(共分為 23 個等級),並且以子網路遮罩作為稱呼,而不再稱 A、B、C、D。舉例來說: A 級網路的子網路遮罩是 255.0.0.0,第一個位元組有八個 1,稱為 /8(slash 8)網路。又例如 B 級網路稱為 /16,C 級網路稱為 /24。當 IP 太多時,可以自行劃分等級,並且將未用到的 IP 提供給其它單位使用,假如一家公司分配到一個 /16 網路,但公司僅用到 1/4 (64x254 個 IP),那麼就可以將未使用的 3 個 /18 網路提供出來(通常會進一步分割為 192 個 /24 網路,以方便管理)。
等級 網路範圍 遮罩 每個網路的可用 IP 數
/8 1~254.0.0.0 255.0.0.0 254x254x254
/9 1~254.1~127.0.0
1~254.128~254.0.0
255.128.0.0
126x154x254
:
: :
: :
: :
:
/16 1~254.1~254.0.0 255.255.0.0 254x254
/17 1~254.1~254.1~127.0
1~254.1~254.128~254.0
255.255.128.0
126x254
:
: :
: :
: :
:
/24 1~254.1~254.1~254.0 255.255.255.0 254
/25 1~154.1~254.1~254.0~127
1~154.1~254.1~254.128~255 255.255.255.128 126
/26 1~154.1~254.1~254.0~63
1~154.1~254.1~254.64~127
1~154.1~254.1~254.128~191
1~154.1~254.1~254.192~255 255.255.255.192 62
/27 1~154.1~254.1~254.0~31
1~154.1~254.1~254.32~63
1~154.1~254.1~254.64~95
1~154.1~254.1~254.96~127
1~154.1~254.1~254.128~159
1~154.1~254.1~254.160~191
1~154.1~254.1~254.192~223
1~154.1~254.1~254.224~255 255.255.255.224 30
/28 1~154.1~254.1~254.0~15
1~154.1~254.1~254.16~31
1~154.1~254.1~254.32~47
1~154.1~254.1~254.48~63
1~154.1~254.1~254.64~79
1~154.1~254.1~254.80~95
1~154.1~254.1~254.96~111
1~154.1~254.1~254.112~127
1~154.1~254.1~254.128~143
1~154.1~254.1~254.144~159
1~154.1~254.1~254.160~175
1~154.1~254.1~254.176~191
1~154.1~254.1~254.192~207
1~154.1~254.1~254.208~223
1~154.1~254.1~254.224~239
1~154.1~254.1~254.240~255 255.255.255.240 14
/29 (略) 255.255.255.248 6
/30 (略) 255.255.255.252 2
以台北市教育網路為例,教育部將申請自 NIC 的 IP 分給台北市教育網路一組 /16 網路 163.21.X.X,台北市教育網路中心再將它細分成 254 組 /24 網路 163.21.1.X~163.21.254.X,一一指定給各學校,有些大學校分到多個 /24 網路,較小學校則分到 /25 網路或 /26 網路。
子網路遮罩與路由計算
在網路上要識別一台電腦,只要知道它的IP就可以,但如果要識別一群電腦就比較麻煩,必須以一個網路起始IP和網路遮罩來表示。例如網路範圍 192.168.1.128~191,寫成 192.168.1.128/255.255.255.192 或簡寫成 192.168.1.128/26,其中起始 IP 用來識別一個網路(一群電腦),所以一般稱為網路號碼,這個 IP 是不可以拿來給單機使用的。網路遮罩用來表示網路的大小,網路大小是指該網路最大可容納的電腦數量,例如:255.255.255.0是表示該網路中最多可以有254部電腦,又如255.255.255.128是表示該網路中最多可以有126部電腦。以切割 /24 網路為例,其子網路遮罩與網路切割的關係如下表:
切割數 總共 IP 數 子網路遮罩第四個位元組的值 子網路
1 256 0 192.168.1.0/24
2 128 128 192.168.1.0/25 192.168.1.128/25
4 64 128+64=192 192.168.1.0/26 192.168.1.64/26 192.168.1.128/26 192.168.1.192/26
8 32 128+64+32=224 (略)
16 16 128+64+32+16=240 (略)
32 8 128+64+32+16+8=248 (略)
64 4 128+64+32+16+8+4=252 (略)
將網路遮罩與IP位址進行逐位元AND運算,可以判斷該IP是屬於哪一個網路的電腦。舉例來說,想要驗證 192.168.1.100 是否為子網路 192.168.1.64/26 所有,可以使用以下算式:
11000000 10101000 00000001 01100100   192.168.1.100
&  11111111 11111111 11111111 11000000   255.255.255.192
11000000 10101000 00000001 01000000   192.168.1.64
我們只要檢查計算結果是否剛好為子網路號碼,若是則該 IP 隸屬於該子網路。這個算式是 IP 層通訊協定,用來決定路由繞送很重要的公式,要了解路由機制,必須要先從這裡著手。
靜態路由
將兩個 C 級子網路連接在一起,必須使用一種叫做路由器的設備,當然電腦也可以拿來充當路由器使用,這時候我們也稱這台電腦是一台路由器。路由器上必須有兩個以上的網路線接孔,以便連接各個子網路,這些接孔我們稱它叫做 Port,Port 越多路由器可以連接的子網路也就越多,通常路由器也允許外加更多的 Port,我們稱它叫做可擴充模組的路由器。如果是以 PC 當作路由器,就必須插入兩片以上的網路卡,一片網路卡算一個 Port。Port 這個名詞用在很多地方,為了避免混淆,我們稱路由器上的 Port 叫做閘道。
閘道是到達一個網路的大門,閘道可以不止一個,就像台灣就有兩個閘道,一個是桃園中正機場,一個是高雄小港機場(比喻而已)。
底下舉一個實例說明:
將 163.21.236.0/24 網段切個成兩個子網路,中間使用一台 PC 當路由器,兩個子網路分別為 163.21.236.0/25 和 163.21.236.128/25,在該 PC 路由器上插兩片網卡作為閘道,每個閘道必須佔用該連接子網路的一個 IP,以連接上述兩個子網路的路由器來說,第一個閘道連接 163.21.236.0 這個子網路,我們就必須分配一個該子網路內的IP給它,通常是使用最後一個可用IP,也就是 163.21.236.126。依此類推,第二個閘道就使用 163.21.236.254 這個IP。
從一台電腦通過一個或多個路由器到另一台電腦,我們稱它叫做路徑(Route)。「路徑」的定義方式是:一個目的地/網路遮罩以及一個閘道。例如:163.21.236.71 這一台電腦要送訊息到 163.21.236.200 這台電腦,途中會經過路由器的第一個閘道。我們就可以定義一個路徑告訴 163.21.236.71 這部電腦如何去傳遞訊息,這個路徑可寫為:
163.21.236.200/255.255.255.255 GATEWAY 163.21.236.126
(來源因為是自己,所以不用寫。)
為什麼是通過第一個閘道 163.21.236.126 而不是第二個閘道 163.21.236.254 呢?原因是 163.21.236.71 這台電腦並不認識 163.21.236.254,當它使用廣播去查詢時,只有 163.21.236.1 ~ 163.21.236.126 這個範圍的電腦會回應訊息,所以站在 163.21.236.71 這台電腦的角度去思考,告訴它要送訊息到 163.21.236.200 去,必須把訊息丟給 163.21.236.254 去處理,這無異是叫一個盲人去一個陌生的地方問路一樣,最後是哪兒也去不了。
以上面所介紹的路徑來說,可以正確的指引 163.21.236.71 傳輸訊息封包到 163.21.236.200,但是如果現在要送封包到 163.21.236.201,那麼是否需要建立新的路徑呢?答案是:我們可以修改剛才那一條路徑,讓要到達的目的地,從一台單機,修改成一個網路(一群電腦)。這樣即使我們沒有替每一個目的地電腦建立路徑,也可以輕鬆找到它們,這條路徑定義為:
163.21.236.128/255.255.255.128 GATEWAY 163.21.236.126
(目的地從單機的IP,改為網路號碼。)
什麼是預設閘道?
在廣大的網路世界裡,不可能將所有的路徑都建立在路由表(routing table)中。對 163.21.236.71 這台電腦來說,它只認識隔壁的子網路(在路由表中有記載到達 163.21.236.128/25 這個網路的路徑),如果現在要送訊息到 136.2.80.1 這台電腦,該怎麼辦呢?
當本地網路要連往遠端網路時,如果從路由表中找不到路徑,那麼系統還有最後一種選擇,就是使用預設路徑。這個路徑是當所有路徑都無法適用時,才會起作用。預設路徑所通過的閘道,稱為預設閘道,通常一個網路內只能有一個預設閘道。對於區域網路上的主機來說,這個閘道會設定成任何一部可以直接通往外界的機器 (不管是透過撥接上網,或者透過ADSL專線連接)。
假設 163.21.236.0/25 這個網路中,有一部電腦透過ADSL專線連接上 Internet,它的IP是 163.21.236.1。那麼站在 163.21.236.71 這台電腦的角度來想,要到達路由表上找不到的目的地,只能將訊息封包丟給 163.21.236.1 去處理,因此我們在路由表中建立一個路徑:
0.0.0.0/0.0.0.0 GATEWAY 163.21.236.1
(0.0.0.0/0.0.0.0 也就是說任何IP目的地都可適用此路徑)
這個路徑我們稱它為預設路徑,而預設路徑所用的閘道163.21.236.1我們稱它為163.21.236.0/25的預設閘道。
預設閘道的另一邊連接著網路供應商(ISP)的線路,也就是說,163.21.236.1 的另一個閘道必須設成ISP(網際網路服務商)所提供IP,例如中華電信所提供的A點 10.11.64.13。
路由如何傳遞?
現在讓我們轉移焦點,來看看 163.21.236.200 這台電腦應該怎麼設定路徑。這台電腦位於 163.21.236.128/25 網路中,這個網路並沒有直接連接到 Internet 的線路,想要連出去唯有依靠 163.21.236.0/25 這個網路當媒人,也就是說 163.21.236.200 要連到外面的世界,必須通過連接兩個子網路的路由器 163.21.236.254(另一邊是 163.21.236.126,請參考前兩小節的描述),再進一步的推論,從 163.21.236.200 不管是要到 163.21.236.0/25 這個網路,或是要到任何一個IP,都得通過 163.21.236.254 這個閘道。因此很幸運的,我們只要建立一條預設路徑,就可以解決所有的問題:
0.0.0.0/0.0.0.0 GATEWAY 163.21.236.254
(任何IP都符合此規則,包括163.21.236.0/255.255.255.128在內)
根據這個路徑,我們可以說163.21.236.254就是163.21.236.0/25這個網路的預設閘道。
現在我們再次轉移焦點,來看看被視為預設閘道的路由器 163.21.236.1 的情形,在這個路由器上面,第一個閘道已經設定成 163.21.236.1,另一個閘道則已經設定為中華電信提供的A點 10.11.64.13 。這個路由器有三個任務,第一個任務是:將要到 163.21.236.0/25 的訊息封包送到 163.21.236.0 這個網路上,這個很容易辦到,因為第一個閘道 163.21.236.1 已經是屬於 163.21.236.0 這個網路,所以只要把訊息從第一個閘道丟出去就可以了,並不需要透過任何路由器轉送:
163.21.236.0/255.255.255.128 INTERFACE 163.21.236.1
(這個路徑跟以往介紹的不同,因為不需要通過任何路由器,所以不必設定GATEWAY,而是設定成自己的INTERFACE,也就是自己機器上的一個Port)
第二個任務是:將要到163.21.236.128/25的訊息封包送到163.21.236.0 這個網路上,這次稍為麻煩一點,必須藉由另一台路由器的163.21.236.126閘道來幫忙轉送:
163.21.236.128/255.255.255.128 GATEWAY 163.21.236.126
第三個任務是:將要到其它任何一個IP的訊息封包送出去。由於連往外界的路徑是由中華電信負責設定,所以我們只要把封包丟給中華電信的路由器就好了,這個路由器就是下面會介紹的ATU-R(暱稱叫小烏龜的東西),小烏龜上面有一個連接校內路由器的閘道,它的IP是10.11.64.14,也就是所謂的B點。
0.0.0.0/0.0.0.0 GATEWAY 10.11.64.14
這些路徑建立起來網路就四通八達了!
以 PC 當路由器
首先必須建置一台多巢式(multihomed)主機,也就是在一台主機上配置多片網路卡,安裝支援 Routed 的作業系統,例如:Linux、win NT、win 2000......等等。
在每片網卡上配置不同組 C 的 IP ,這樣作業系統就會自動將路由表建立好。唯一需要手動設定的是預設閘道,而且只需要在其中一張網卡上(其他網卡不用設定,會自動共用設定值),把 PC 當路由器使用,必須將作業系統所提供的 Routed 服務程式啟動。
如何查閱路由表?
C:\WINDOWS>netstat -r 或是 route print
Route Table
Active Routes:
Network Address     Netmask             Gateway Address     Interface            Metric
0.0.0.0                     0.0.0.0                 192.57.1.253           192.57.1.130       1
127.0.0.0                 255.0.0.0             127.0.0.1                 127.0.0.1             1
192.57.1.0               255.255.255.0     192.57.1.130           192.57.1.130       1
192.57.1.130           255.255.255.255 127.0.0.1                 127.0.0.1             1
192.57.1.255           255.255.255.255 192.57.1.130           192.57.1.130       1
192.57.2.0               255.255.255.0     192.57.1.10             192.57.1.130       2
224.0.0.0                 224.0.0.0             192.57.1.130           192.57.1.130       1
255.255.255.255     255.255.255.255 192.57.1.130           192.57.1.130       1
Active Connections
Proto Local Address Foreign Address State
TCP spps131:1074 CC1:nbsession TIME_WAIT
如何設定路由?
ROUTE [-f] [command [destination] [MASK netmask] [gateway] [METRIC metric]]
-f                 Clears the routing tables of all gateway entries. If this is used in conjunction with one      of the commands, the tables are cleared prior to running the command.
command     Must be one of four:
PRINT           Prints a route
ADD             Adds a route
DELETE       Deletes a route
CHANGE     Modifies an existing route
destination   Specifies the destination host.
MASK         Specifies that the next parameter is the ‘netmask‘ value.
netmask       Specifies a subnet mask value to be associated with this route entry. If not specified, it      defaults to 255.255.255.255.
gateway       Specifies gateway.
METRIC      Specifies that the next paramenter ‘metric‘ is the cost for this destination
All symbolic names used for destination are looked up in the network database file NETWORKS. The symbolic names for gateway are looked up in the host name database file HOSTS.
If the command is PRINT or DELETE, wildcards may be used for the destination and gateway, or the gateway argument may be omitted.
Diagnostic Notes:
Invalid MASK generates an error, that is when (DEST & MASK) != DEST.
Example> route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1
The route addition failed: 87
Examples:
> route PRINT
> route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3
^destination         ^mask       ^gateway                  ^metric
> route PRINT
> route DELETE 157.0.0.0
> route PRINT
使用tracert排除疑難
有時候在路由傳遞的途中會出現一些問題,而使您無法連往某些主機。此時,如果您要找出網路斷線的地方,可以使用traceroute 這個有用的指令。這個指令在您無法連往某部主機(例如 ping 不到主機的時候)時,也可以派上用場。
這個工具用來追蹤封包從一部機器到另一部機器,將會經由網路走哪一條路徑。 當然系統管理師必須對網路實際連接的架構有所瞭解,才能派上用場。假如我現在想要瞭解,平常連接台大網站時,到底是經過哪些地方,我可以使用以下指令:
C:\>tracert www.ntu.edu.tw
Tracing route to w3.cc.ntu.edu.tw [140.112.8.130]
over a maximum of 30 hops:
1 1 ms <10 ms 1 ms 163.21.236.254
2 <10 ms 1 ms <10 ms 163.21.254.254
3 2 ms 1 ms 1 ms 140.111.255.17
4 3 ms 4 ms 5 ms 203.72.38.112
5 4 ms 4 ms 3 ms r7513-CC.ntu.edu.tw [140.112.254.7]
6 3 ms 3 ms 3 ms w3.cc.ntu.edu.tw [140.112.8.130]
附錄:台北市網 ADSL 建置路由設定
學校端路由器設定
目前各校已建置ADSL專線,架構如下圖

從圖上可知,校園網路要連上網際網路,必須經過三個路由器,二個虛擬網域,上圖四個網域假設為:
網域 校園網路 虛擬網域一 虛擬網域二 網際網路
網域代表IP 163.21.1.0 10.11.64.224 10.11.82.224 0.0.0.0
子網路遮罩 255.255.255.0 255.255.255.252 255.255.255.252 0.0.0.0
A點   10.11.64.225
B點   10.11.64.226
D點     10.11.82.226
三個路由器的介面及IP位址應設定如下:
路由器 校內路由器 ATU-R ATM交換機
第一個通訊閘 ethernet port
eth0/0
163.21.1.254
lan port
eth0
10.11.64.226(B點)
虛擬介面
atm1/0.xxx
10.11.82.226(D點)
第二個通訊閘 ethernet port
eth0/1
10.11.64.225(A點)
wan port
wan0-0
虛擬介面
atm1/0.500
140.11.255.18
校內端路由器設定如下(僅供參考,因廠牌不同設定會有差異)
interface Ethernet0/0
ip  addr 163.21.1.254  255.255.255.0
interface Ethernet0/1
ip  addr  10.11.64.225  255.255.255.252
ip  route  163.21.1.0 255.255.255.0 eth0/0
( or set route add ip 163.21.1.1 255.255.255.1  gw 163.21.1.254 )
ip  route  0.0.0.0  0.0.0.0  10.11.64.226
學校端路由器遇到防火牆時
校園網路使用虛擬IP時,網路架構變成下圖:

你可以將此圖看成是上圖的部分放大圖,右邊部分與上圖相同,所以省略不談。
在這個新的架構中,校園網路的真實IP(NIC IP)變成是一個夾在假IP與虛擬網域一(見上圖)的網域,在這個網域中有兩個Gateway,一個是校內路由器,一個是防火牆,防火牆的介面及IP位址應設定如下:
路由器 防火牆 校內路由器
第一個通訊閘 網路卡一
163.21.1.253
ethernet port
eth0/0
163.21.1.254
第二個通訊閘 網路卡二
192.100.1.254
ethernet port
eth0/1
10.11.64.225(A點)
防火牆上之Routing Table可以用指令 Route Print 或 Netstat -rn 來觀察,正確的設定值應該是(只談網域Routing部分):
Network Address Netmask Gateway Address  Interface
0.0.0.0 0.0.0.0 163.21.1.254
(在Router上) 163.21.1.253
163.21.1.0 255.255.255.0 163.21.1.253 163.21.1.253
192.100.1.0 255.255.255.0 192.100.1.254 192.100.1.254
由於學校端將NIC IP拿來作NAT(IP轉換),因此必須進一步將NIC IP分割成兩個子網路,後面半組Class C拿來用在上圖的NIC IP子網路,前半組Class C必須導向到防火牆上面,由防火牆拿來作NAT用途,校內端路由器修改設定如下(僅供參考,因廠牌不同設定會有差異)
interface Ethernet0/0
ip  addr 163.21.1.254  255.255.255.128
interface Ethernet0/1
ip  addr  10.11.64.225  255.255.255.252
ip  route  163.21.1.0 255.255.255.128  163.21.1.253
ip  route  163.21.1.128 255.255.255.128  Ethernet0/0
ip  route  0.0.0.0  0.0.0.0  10.11.64.226
ATU-R路由設定
ATU-R有人說是ADSL數據機,但是它的功能並非僅止於此,它也具有路由功能本身就是一個路由器
set int eth0 addr 10.11.64.226
set int eth0 netmask 255.255.255.252
set int wan0-0 dest 10.11.82.226
set int wan0-0 netmask 255.255.255.252
set route add ip 163.21.1.0 255.255.255.0 gw 10.11.64.225
set route default wan0-0
(pvc值之設定省略)
如何把ATU-R當校內路由器使用?
如果學校沒有錢買校內路由器,也可以直接將ATU-R接在HUB上,將ATU-R充當校內路由器來使用,此種狀態下網路架構將變成下圖

從上圖可以看出少了一個虛擬網域一,因此也就沒有A點和B點,原設定在ATU-R上之B點,改設為校內路由器之真實IP
set int eth0 addr 163.21.1.254
set int eth0 netmask 255.255.255.0
set int wan0-0 dest 10.11.82.226
set int wan0-0 netmask 255.255.255.252
set route add ip 163.21.1.1 255.255.255.1 gw 163.21.1.254
set route default wan0-0
(pvc值之設定省略)
ATM路由設定
int ATM1/0.xxx point-to-point
ip addr 10.11.82.226 255.255.255.252
ip route 10.11.64.224 255.255.255.252 ATM1/0.xxx
ip route 163.21.1.0 255.255.255.0 ATM1/0.xxx
(pvc值之設定省略)
(對教育部連線之設定,因與學校端設定無關,省略)
from: http://newweb.syups.tp.edu.tw/documents/memo/TCP%EF%BC%8FIP%E6%A6%82%E8%AB%96/index.htm