在不同電腦之間因為有分享資源和資訊的需求而產生彼此連結的電腦系統稱之為網路 (networks)
,網路使電腦可以連結彼此讓資量在不同電腦間互相傳遞,本章將介紹這個計算機科學中的延伸領域。
首先先介紹各種基本的網路通訊概念
電腦網路分為個人區域網路 (persional area network, PAN)
, 區域網路 (local area network, LAN)
, 都會區域網路 (metropolitan area network, MAN)
和廣域網路 (wide area network, WAN)
。
短距離通訊
大約數公尺的範圍,無線耳機與智慧型手機之間的連線、無線滑鼠與電腦之間的連線等等。另一種網路的分類是利用網路內部運作
的模式進行分類,一種是基於公共領域
的設計,另一種是基於特定團體 (公司或個人)
所掌控的私人獨創模式,前者稱為開放式網路 (open networl)
後者稱為 封閉式網路 (closed network)
也可以稱為 專屬網路 (proprietary network)
。
還有一種基於拓墣結構的網路分類法,亦即根據電腦連接的形式分類,比較廣為使用的拓墣結構有兩種,一種是匯流排式
也就是所有電腦透過同一條線路(及匯流排)相連接,另一種是星形有就是一部電腦作為中心點而其他電腦都連向中心點。
隨著個人電腦的普及,現今星型架構普遍用於無線網路
,無線網路是以無線電傳播的放是進行通訊,中央點稱為存取點 (access point, AP)
其作為所有通訊連接的中心點。
匯流排網路與星型網路之間的差異在於網路中個電腦是由一條共用的匯流排直接連接還是由一個作為中介的中央電腦間接連接,有時匯流排式網路的每個電腦會透過很長的線路連接到一個中心位置的某個設備,他稱之為集線器 (hub)
,他不只是一個很短的匯流排,他會將收到的訊號轉送給所有相連接的電腦,這樣網路看起來是星狀網路但實際上是匯流排式網路。
網路若要穩定的運作就需要定義一些運作上的規則,這樣的規則稱之為協議 (protocols)
,舉個例子,在一個基於乙太網路標準的匯流排式網路中,傳輸訊息的權限是由 CSMA/CD (Carrier Sense, Multiple Access with Collision Detection)
協議所控制,這個協議需要發送到匯流排上的所有電腦,當某個電腦要傳輸訊息時會等到匯流排上完全沒有任何訊息,同時也會持續監看匯流排,若有其他電腦也開始傳送訊息的話,兩邊就會偵測到資訊衝突繼而暫停一個短暫的時間後再次傳送。
但要注意的是雖然碰撞避免協議是設計來避免發生資訊碰撞的但不能完全做到不碰撞,一但發生了就需要將訊息重新傳送,避免碰撞的最常見方法是授與電腦優先權,讓等待傳送機會已久的電腦有較高的優先權。
有時候需要將數個現存的網路連接起來已形成更廣域的通訊系統,如果他們是同一形式的則可以將這些網路連起來,比如乙太網路協議下的匯流排網路,可以將他們連結成一個單一長距離的匯流排網路,透過中繼器
或交換器
就可以做到這點。
中繼器 (repeater)
可以在兩個原始的匯流排網路之間來回傳遞訊息 (中繼器能強化網路訊號),不管信息的意義為何。
橋接器 (brudge)
很像中繼器不過比較複雜,他會連接兩個匯流排式網路,不過他不會傳遞所有經過他的訊號,若訊號的目的是另一區網路的電腦他才會幫忙傳遞,所以同區域的兩部電腦互相傳遞並不會干擾到另一區網路,所以比起中繼器他可以有更好的效能。
交換器 (switch)
本質就是有多重連接的橋接器,可以連接數個匯流排式網路,如同橋接器他也會檢查訊息的目的地且每只傳送不同區的訊息,此外訊息傳輸也只會透過最恰當的中繼點,可以讓每個區域網路之間的傳遞消耗較小的能量。
但如果遇到不相容的網路時,連接的方式就需要經由 internet
的模式,讓每個網路保有其特性且可以作為獨立的網路繼續運作,在 Internet 中的網路連接是透過路由器 (routers)
,他是一種專用型電腦主要用來傳遞訊息,他與剛剛介紹的中繼器, 橋接器都不同,路由器主要是提供不同網路間的連結
且讓每個子網路保有其內部性質。
路由器是用來傳送訊息到適當的方向,轉送的過程是根據 internet 的全球定位系統,讓 internet 中所有電腦或設備都被指派一個唯一的地址,若某電腦想傳送訊息給另一個電腦的話,會將該目標電腦的 internet 位置附加在信息中,然後將他傳送給本地的路由器,而這個訊息就會被傳送到適合的方向,每個路由器都有一個轉送表 (forwarding table)
,其中就包含目標位置的轉送方向等等的相關訊息。
每個子網路與 internet 連接的那個 「點」稱為閘道 (gateway)
,因為他是作為該網路與外界之間的通道。
在網路中相異電腦所執行的任務會經常互相通訊以協調彼此之間的運作,像這種處理程序之間的通訊稱為處理程序間通訊 (interprocess communication)
,一種慣用的處理程序間通訊協議稱為主從 (clinet/server)
模式,在這種模式中一種是像其他處理程序提出請求的客戶端 (client)
,另一種是回應客戶端請求的伺服器端 (server)
。
現今的主從模式廣泛的運用在網路通訊中,但主從模式並不是處理程序間通訊的唯一協定,另一種模式是點對點 (peer-to-peer, P2P)
,主從模式是一個處理程序(伺服器端)對許多客戶端進行服務,點對點則是一個處理程序提供服務另一個處理程序接收服務,此外伺服器必須持續運行以隨時準備服務客戶端,但點對點的處理程序執行只是暫時的。
在檔案分享上面 P2P 模式漸漸取代了主從模式,其中一個原因是他使用更多的點來分散檔案服務任務,而非使用一台電腦當作伺服器,這種去中心化
的運作模式可以有比較好的效能,但是由於沒有中央服務器就導致了著作權難以強制執行。
隨著網路科技的成功,電腦之間透過網路底互動已經變得相當普遍且多元,許多現在軟體系統都被設計成分散式系統 (distributed systems)
亦即他們是由不同電腦中執行的軟體元件所構成的系統。
叢集計算 (Cluster computing)
所描述的分散式系統是指多個獨立電腦密切合作來提供等同於大型電腦的計算能力
,個別電腦的成本加上連結高速網路的費用也比大型電腦便宜得多,但大型電腦有較好的穩定性與較低的維護成本,但這種這種分散式系統可以提供高可用度 (high-availability)
,因為即使叢集中有部分電腦發生故障或暫時無法使用,但還有其他電腦可以進行使用,另外這種分散式系統也可以用來提供負載平衡 (load balancing)
,因為電腦工作量能夠從負擔比較重的電腦轉移給負擔較輕的電腦。
網格運算 (Grid computing)
與叢集電腦比起來連結方式較為鬆散,但還是可以合力完成大型工作,他利用特製軟體可以以更輕易的將資料和演算法分散到所有參與網格運算電腦。
雲端計算 (Cloud computing)
配置網路上龐大數量的共享電腦給有需由的客戶使用,是分散式系統最新的趨勢。
網路中最值得注意的就是網際網路 (Internet)
,其目標是發展能夠連結不同電腦的網路技術,使這些網路可以如相連結的系統進行運作且不會受到個別網路災害的影響。
網際網路是許多網路的連結,這些網路是由所謂的網際網路服務提供者 (Internet Service Providers, ISP)
的機構所建構與維護的,習慣上都會使用 ISP 稱呼他們所提供的網路,因此如果說連接到某個 ISP 則代表連接到該 ISP 所提供的網路
。
ISP 所營運的網路系統可以根據他們在網際網路整體結構中所扮演的角色階層進行分類,最上層是相對比較少的第一層 ISP (tier-1 ISP)
,是由高速高容量的國際型 WAN
所組成,一般由大型通訊公司經營。
連接到第一層 ISP 的是第二層 ISP (tier-2 ISP)
,一般屬於區域性規模且影響力較小
,同樣的這些網路也是一般通訊公司所經營。
第一層與第二層基本上是由一群路由器
組成的網路,主要提供網際網路的基本通訊設施,路由器之間可產生許多通訊路徑,這些路徑是網際網路備援 (redundancy)
的核心,即使第一層路由器發生故障也可以讓整個網路還是保持連結的狀態,網路核心的連結通常是由稱為街口 ISP (access ISP)
或第三層 ISP (tier-3 ISP)
的中介者所提供,一個接口 ISP 本質上是個獨立的網路系統
有時也稱為內部網路 (intranet)
,是由單一機構所營運,提供住家和店家網際網路的接口。
最後個人用戶連結到接口 ISP 的設備稱為終端系統 (end system)
或主機 (host)
,這些終端可能是筆電或是個人桌上電腦,也可能是電話, 攝影機, 汽車等等的,終端連接到網路的技術也非常多樣,成長最迅速的是基於 WiFi
的無線網路連接
,其技術是連接 AP 到某個接口 ISP 再經由這個 ISP 提供的網際網路接口給 AP 服務範圍內的終端系統,AP 或一組 AP 能提供的服務範圍稱為熱點 (hot spot)
。
網際網路能夠提供通訊服務,連結許多不同的裝置和技術,這樣的設計使網際網路成為一個端對端架構 (end-to-end architecture)
,儘管終端設備只有少少的基礎預設條件,但當新的網路系統和裝置變得普及時,網際網路仍然可以快速的支援這些網路系統及裝置。
在前面有提到網路需要網路用的地址,每個網路上的電腦都會配置一個唯一的地址
,這些地址就是所謂的IP 位置 (IP address)
,起初 IP address 是一組32 位元的字串
但為了提供更多位置,所以正轉變為使用128 位元的字串
,一組連續的 IP address 由網際網路名稱與數字地址分配機構 (Internet Corporation for Assigned Names and Numbers, ICANN)
發配給 ISP。
位元字串形式的地址法不利於人們使用,因此網際網路提供了另一種地址法,他就是網域 (domain)
的概念,網域相當於網際網路中的區域,每個網域都需要向 ICANN 註冊,網域註冊過程需要中鄧一個易於記憶的網域名稱 (domain name)
,網域名稱與 IP address 一樣都是獨一無二的。
在網域名稱中可以添加尾綴字
,這些尾綴字稱為定層網域 (top-level domains, TLD)
,有包含代表商務機構的.com
、代表美國政府的.gov
、非營利組織的.org
、軍事單位的.mil
和起出給 ISP 使用的 .net
,但隨網路快速過展到全世界,因此也產生了兩個字母組成的 TLD 用來代表國家 (國碼 TLD, country-code TLD
)。
一旦網域名稱註冊後就可以在這個網域內加上易於記憶的名稱來辨識個別機器,要注意的是階層是網域名稱是往左延伸並以句號隔開
,再多延伸的情況下通常會使用子網域 (subdomain)
來表示網域下的某個組織,子網域常用於表示同一個網域範圍中的不同子網路,比如 Yoyodyne 公司使用的網域名稱 yoyodyne.com
則該公司內部的某台電腦可能就是 overthruster.propulsion.yoyodyne,con
這樣的網域名稱。
雖然易於記憶的位置可便於人們使用,但訊息在網路上的傳播還是以 IP address 的方式進行,所以如果要傳送訊息給遠方的電腦並使用易於記憶的名稱位置時,負責傳輸訊息的軟體比需要傳送訊息之前將該位置轉換為 IP address
,,這個轉換是透過一個名叫名稱伺服器 (name server)
的伺服器所幫助,他的本質與電話簿一樣提供了位置轉譯服務,這些作為網際網路的電話簿系統稱為網域名稱系統 (domain name system, DNS)
,使用 DNS 進行名稱轉譯的過程稱為 DNS 查詢 (DNS lookup)
。
在早期的網際網路中,多數應用都是個別
且簡單
的程式,他們只會遵循某個網路協定,比如網路新聞傳輸協定 (Network News Trasfer Protocol, NNTP)
的新聞閱讀器或使用檔案傳輸協定 (File Transger Protocol, FTP)
的程式,但隨著網站與瀏覽器越來越複雜,越來越多這些傳通的網路應用都透過強大的超文本傳輸協定 (Hyper Text Transfer Protocol, HTTP)
以網頁的方式來處理。
目前網際網路中很大一部分的流量是用於即時的語音和影片傳輸,也就是所謂的串流 (streaming)
,串流的有分兩種方式,第一種是N 點傳播
更精確的說是單點傳播 (unicast)
,指的是一對一的傳播,而 N 點傳播指的是一對多的傳播,N 點傳播有個缺點就是會帶給傳播站伺服器很大的負擔
,同樣也會給伺服器附近共用網路的主機帶來嚴重的影響,而多數 N 點傳輸的許多替代方案都試圖在緩解這個問題,其中一種是使用 P2P 模式
,類似於檔案分享的模式,也就是一但某一點已接收到資料後,他就開始向其他還在等待的資料點傳播該資料,亦即由原本的單一資料來源負責傳播資料轉而由多點傳播
。
另一種替代方案稱為多點傳播 (multicast)
,將傳播問題移動到網際網路的路由器
,使用多點傳播時一台伺服器傳送訊息到多個客戶的方式是告知某個位置並仰賴網路上所有路由器解析該位置的特殊性進而複製多筆資訊再轉送到正確的目的地,但要注意這種多點傳播的軟體需要借用到路由器發揮超呼他原本的職責,所以他沒辦法延伸到整個全球網路。
為了讓串流模式擴大到同時服務數千至上百萬人,每個人都有自己個人的串流,因此有必要將串流內容複製到許多不同的伺服器上,大型的串流服務都利用內容傳遞網路 (content delivery networks, CDN)
,這是一大群伺服器經過規劃後分布在整個網際網路,用來服務鄰近網路的使用者,CDN 機器可能放置於某個接口 ISP 網路中,讓該網路的客戶可以從近的伺服器享受到高速的多媒體串流服務,比存取遠端的中心串列服務伺服器要快速許多,有一種稱為任意傳送法 (anycast)
的網路傳輸技術讓使用者從一群規劃好的伺服器中自動連接最近的伺服器,這樣可以讓 CDN 更切實可行。