1.前言
現在是一個網路爆發的時代,身為科技尖兵的我們,怎麼可以不對網路有個大概的了解呢?你或許常常聽人說一堆網路上的名詞,像:IP位址、子網路遮罩、路由器……等等,而聽了之後也一愣一愣的,或許就此覺得這是很艱深困難的東西。
其實呢,這些東西,只需要一些簡單的數學計算、邏輯概念,就能夠大概的了解其意義了。為什麼這篇文章不叫「網路概論」而叫「TCP/IP概論」呢?因為,若你了解了TCP/IP,你就等於了解了Internet!接下來,準備帶你一探TCP/IP世界的五花八門……。
2.什麼是協定(protocol)
人和人講話的時後,為了解對方究竟在講什麼,我們是不是有一些約定成俗的習慣呢?若我們沒有定義這些話代表什麼意思,那豈不就是等於「雞同鴨講」一樣嗎?是的,網路上的電腦要彼此溝通對話,也是要透過一些定義、規範,這些東西,就稱為協定(protocol)。而今天在Internet上應用的最為廣泛的,正是今天要講的TCP/IP。
較詳細的講,TCP/IP架構中,本身就分為好幾個協定,如IP、UDP、ICMP等等。有些協定,用於溝通網路底層的硬體與硬體,有些溝通網路卡與應用軟體等……,我們甚至可以說,整個網路,就是靠協定架構起來的,這也正是一個最為重要的基本的規範,若不遵守這個規範,那就無法參與現今的網路世界了。
至於今日TCP/IP的起源,和許多電腦科技的起源一樣,皆是由美國國防部發展而來的。當初他們為了要能夠建立一個能讓軍方的電腦都能共同分享源,而又保有分散性的安全考量下,建立了一個稱為ARPAnet的網路,這個網路的架構,就是TCP/IP的前身。後來,美國國家科學基金會,用了此架構在學術研究的網路上,也造究了Internet的發展。這正是TCP/IP的起源。
|
兩個互聯網主機通過兩個路由器和對應的層連接。各主機上的應用通過一些資料通道相互執行讀取操作。
3.TCP/IP分層
在了解TCP/IP之前,我們必需先講講有關「網路分層」這項概念。首先,你已經知道,網路是經由協定所架構出來的,而這些協定如何的運作呢?可以說,他們是用一種分工的方式,一個協定負責一項工作,統合起來,就是一個複雜的網路。也因此,我們將工作類型比較相近的歸類於一群,也就是一層。
TCP/IP架構中,共將網路分為四層:
網路存取層(Network Access
Layer),負責處理實體網路的一個介面,如: 資料格式化、實體層的資料定址等。
網際網路層(Internet Layer),負責邏輯位址(即一般所用的IP位址)的資料傳輸。
傳輸層(Transport
Layer),負責流程控制、錯誤檢查等。
應用層(Application Layer),負責一些應用的介面,如檔案傳輸、遠端控制等。
網路分層還有很多種類別,或許你有聽過OSI的7層分法,但其中,的實體層(Physics Layer)和資料連結層(Data Link
Layer)就相當於網路存取層;網路層(Network
Layer)就相當於網際網路層;傳輸層當然一樣;而TCP/IP中的應用層在ISO分層中則分為會談層(Session
Layer)、展現層(Presentation
Layer)和應用層。
事實上,沒有一個真正的網路是完完全全幅合這些標準理論的。網路實作中多半會混用,這又是令一個課題。
接下來先講個在這分層中傳輸的大要情形及主要的協定,以便對後面的課題有一個概念。
當我們要傳輸一個資料從一端到另一端時,必須先從最上層一直往下傳,再經過實體運送後,反過來從下層往上傳。以下便是這傳輸情形的大要:(詳細稍後在說)
資料從應用層透過TCP或UDP埠(Port)到達傳輸層。
在傳輸層會決定使用TCP或UDP協定來存取網路。
到網際網路層後,IP協定會提供如何將資料導引到正確的邏輯IP位址的資訊。
進入網路存取層後,會透過上層的ARP及RARP協定來轉換IP位址和實際位址,並將資料格式化成能在傳輸線上傳輸的格式而送出。
這樣子,資料就離開了原始端電腦傳向目的端,而該電腦收到後,則進行相反之步驟即可。必需知道的是,在經過每一層傳輸時,都會在資料上加上一些資訊,以能讓對方電腦能夠解讀。
就稱為表頭(Header),就有點像是有一個好幾層包起來的禮物要給人時,但怕對方不會拆,所以就在每層外面附上一張紙條說明如何拆。有點類似這個情形。
下面的圖表試圖顯示不同的TCP/IP和其他的協定在最初OSI模型中的位置:
7 |
應用層 |
例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP |
6 |
表示層 |
例如XDR、ASN.1、SMB、AFP、NCP |
5 |
會話層 |
例如ASAP、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD
sockets |
4 |
傳輸層 |
例如TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL |
3 |
網絡層 |
例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25 |
2 |
資料鏈路層 |
例如以太網、令牌環、HDLC、幀中繼、ISDN、ATM、IEEE 802.11、FDDI、PPP |
1 |
實體層 |
例如線路、無線電、光纖 |
以上就是大概的TCP/IP分層及傳輸,下面,我們則要詳細的介紹每層的內部協定。
通常人們認為OSI模型的最上面三層(應用層、表示層和會話層)在TCP/IP組中是一個應用層。由於TCP/IP有一個相對較弱的會話層,由TCP和RTP下的打開和關閉連接組成,並且在TCP和UDP下的各種應用提供不同的端口號,這些功能能夠被單個的應用程序(或者那些應用程序所使用的庫)增加。
與此相似的是,IP是按照將它下面的網絡當作一個黑盒子的思想設計的,這樣在討論TCP/IP的時候就可以把它當作一個獨立的層。
4 | 應用層
(OSI 5到7層) | 例如HTTP、FTP、DNS
(如BGP和RIP這樣的路由協定,儘管由於各種各樣的原因它們分別運行在TCP和UDP上,仍然可以將它們看作網絡層的一部分) |
3 | 傳輸層
(OSI 4層) | 例如TCP、UDP、RTP、SCTP
(如OSPF這樣的路由協定,儘管運行在IP上也可以看作是網絡層的一部分) |
2 | 網絡互連層
(OSI 3層) | 對於TCP/IP來說這是互聯網協定(IP)
(如ICMP和IGMP這樣的必須協定儘管運行在IP上,也仍然可以看作是網絡互連層的一部分;ARP不運行在IP上) |
1 | 網絡接口層
(OSI 1和2層) | 例如以太網、Wi-Fi、MPLS等。 |
4.網路接口層
這一層呢?可以說是最不統一的一層了,要講起來也很不好講。因為像種種的實體網路架構,如乙太,FDDI,Apple
Talk,IBM的Token
Ring等等…,都有著各自不同的規定,若要每一樣都講,也是講不完。所以筆者就不說明各別的內容,僅就相通處作一闡述。
此一層中,主要要做的工作有:規定資料傳輸的方式,就是建立一有如交通規則,紅燈停、綠燈行的這種規範,以能讓網路傳輸有規定及效率。如以太的CSMA/CD就是一例。再者還有將資料轉換成一稱為訊框(Frame)的格式,並將其轉為可用電子流或類比脈衝表現的樣式。
另外還得附帶一提蠻重要的一項,就是所謂的「實體位址」。實體位址是一個在一出廠時就燒在網路卡上的數字,當我們在區域網路傳輸資料時,就是透過實體位址來辨認電腦,並非邏輯位址。而在廣域網路上的情形,下一節中會提到。
5.網路互連層
我們之前提到網路卡在出廠時就會燒上實體位址,但是,實體位址的位元太多了,且沒有一定的規律性(稍後會提),因此創出了IP位址。IP位址是由32個位元所構成的一組數字,我們將每八位元為一組,轉換為十進位的四組數字,中間用「.」加以區隔,就成了常見的IP位址。
在IP位址中,可分為表示網路編號和主機編號的數字,若網路編號像街道名,而主機編號則就像是門牌號碼一樣。又依此,我們將全球的網域分為Class
A、Class B、Class C、Class D、Class E五個層級。在Class
A的網域中,如一個86.1.1.1的IP中,「86」代表的是其網路編號,其餘的則是主機編號。
而Class
A的網路編號範圍是0~127(最左邊的位元為0所得的結果),所以,一個Class
A的網路可支援約16.7百萬個主機,通常配發給洲或須要極大主機數目的單位使用。而Class
B則是前兩個xxx.xxx代表網路編號,後面的是主機編號,所以每一個lass
B的網域可支援6萬多台電腦,而其網路編號範圍是128.0~191.255(最左邊兩位元為1 0)。
Class
C則是再下一層,有24個網路編號位元,8個主機編號位元,所以一個網域可支援256台電腦(但實際上一個網域最前面和最後面的IP不得做主機用,故每個網域會少兩個IP)。其網路編號範圍在192.0.0
~223.255.255之間(最左三位元為1 1 0),至於Class D 和Class E
則令有用途,就不在此論述了。
對IP位址有一個大概的了解後,介紹一下此層中重要的協定。首先就是IP協定,IP協定是個進行很多功能的軟件,它紀錄著三個IP的位址,分別為目的IP位址,子網路遮罩位址及閘接器(路由器)位址。子網路遮罩就是用來判定來源IP和目的IP是否在同一網域的一個判斷位址;而閘接器位址則是在若要送到不同網域時,用以決定封包的傳輸途徑。IP協定的運作,大概就是先用子網路遮罩計算兩位址是否在同一網域,再決定其傳送途徑。
此層中還有一個很重要的協定,就是ARP協定,此協定的功用是轉換實體位址和IP位址,而RARP則是其反協定。
此外,此層中的ICMP協定則是控制一些網路傳輸上的狀況的協定。如遇到狀況時的回傳訊息,就是透過ICMP協定的運作。
6.傳輸層
傳輸層是一個提供應用程式和網路之間的介面。首先我們要講的是埠(port)的觀念。如果說,我們只有IP位址的話,那一台電腦若有不同的應用軟體要同時進形網路傳輸的話,所有資料就會從同一個出口一起出去而產生混亂的碰撞情形,因此有了連接埠(port)的產生。埠就像是一個一個的通道,可以讓一台電腦同時擁有好幾個對外連接的出口,這也使得網路傳輸有了多工的能力。
而此層中有兩個重要的協定,TCP和UDP協定。這兩個協定負責的工作為傳輸流程控制、錯誤檢查及確認等。其中TCP協定是一個較複雜的協定,它是屬於連結導向的傳輸協定,也就是當傳輸資料被分成好幾個封包傳送時,當目的端電腦接收到每一個封包,就會傳回一個確認值,也因此,TCP協定在對資料的掌控上及偵錯方面,就遠勝於UDP,但速度則不如UDP。UDP則是非連結傳輸協定,他只負則送出及接收,而不會收到一個封包就回傳一個確認的訊息,其檢查則是靠著總和檢測值來判定。
7.應用層
此層為TCP/IP中的最頂層,應用層中的應用軟體,並沒有一定的工作類別。有的只是偵測網路資訊的簡單工具,有的提供一些網路的服務,如FTP、DNS服務等等。此層中包含太多太多的東西,也無法一一的介紹。就大概有個概念就可以了。
TCP/IP常用工具程式
本節介紹一些常用的偵測網路狀態的工具程式:
(1) ipconfig(win95/98下為winipcfg):此工具程式不加參數後執行後會出現下
列顯示:
C:\CWIN95>ipconfig
Windows 98 IP
Configuration
0 Ethernet adapter :
IP Address. . . . . . . . . :
139.175.5.101
Subnet Mask . . . . . . . . : 255.255.0.0
Default
Gateway . . . . : 139.175.5.101
其中IP Address一項為目前電腦之IP,Subnet
Mask為子網路遮罩IP,Default Gateway為預設通道閘IP,這為最基本之三個IP。另外若加了其他參數,還可以顯示如Host name、IP
Router
Enable等等的更多資訊。此指令最主要功能即為得到一些組態的資訊。
(2)ping:此為執行ping之結果:
C:\CWIN95>ping 163.15.56.3
Pinging
163.15.56.3 with 32 bytes of data:
Reply from 163.15.56.3: bytes=32
time=146ms TTL=250
Reply from 163.15.56.3: bytes=32 time=152ms
TTL=250
Reply from 163.15.56.3: bytes=32 time=140ms TTL=250
Reply from
163.15.56.3: bytes=32 time=134ms TTL=250
Ping statistics for
163.15.56.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0%
loss),Approximate round trip times in milli-seconds:
Minimum = 134ms,
Maximum = 152ms, Average = 143ms
ping指令一共會送出四個封包來探測網路的連接是否接通,bytes是送出封包大小,time是傳輸速率,TTL是指封包仍剩多少存活時間(每通過一Router就減1)。
而此指令在檢查上很好用,當連接一台主機出問題時,你可以先ping網路上的其他IP看是否為該主機之問題;若不是,再ping通訊閘的IP看是否為通訊閘之問題;
若依然不是,可再ping本機IP,看是否為本機設定問題;再不行還可試DNS的IP。就這樣一步步找出問題來。
(3)traceroute:執行後結果:
C:\CWIN95>tracert 163.15.56.3
Tracing
route to 163.15.56.3 over a maximum of 30 hops
1 113 ms 106 ms 107 ms
as011252.seed.net.tw [139.175.11.252]
2 117 ms 100 ms 110 ms
139.175.10.1
3 135 ms 160 ms 116 ms 192.72.200.226
4 129 ms
107 ms 211 ms 140.117.252.253
5 114 ms 163 ms 146 ms
163.18.252.206
6 125 ms 173 ms 232 ms 163.15.56.3
Trace
complete.
traceroute指令中顯示出傳輸經過的router,可以用來測知哪段網欲有問題或是測每段的速度,若是發生封包在兩router間不停交互傳送的情形而讓TTL減至零的情形下,也可以由此看出。
關於此節就先介紹到這裡,其他還有一些指令,不過在PC上大概用不到,就先不講了。若能善用上述指令,就可以對網路狀況有進一不的掌握了。
8.結語
以上的TPC/IP概說,只講了一些粗淺的東西。希望大家對TCP/IP網路有一個基本的認識,不會對聽到「TCP/IP」時就被嚇到也希望能對大家有所幫助。