1.1 計算機網絡簡介
1.1.1 計算機網絡的概念
IEEE高級會員塔能鮑姆(Andrew S. Tanenbaum)博士在他的名著《計算機網絡》中對計算機網絡給出了如下闡述:計算機和通信的結合對計算機系統的組織方式產生了深遠的影響。過去那種用戶必須帶著任務到大型計算機房間里進行數據處理的計算模式,現在已經完全過時。這種由一臺計算機服務于整個組織內所有計算需求的老式模型已經被新的模型所取代——大量相互獨立但彼此連接的計算機共同完成計算任務。這些系統稱為計算機網絡(Computer Networks)。
從計算機與通信技術相結合的觀點出發,人們把計算機網絡定義為:以計算機之間傳輸信息為目的而連接起來,實現遠程信息處理并進一步達到資源共享的系統。
從強調資源共享的觀點出發,計算機網絡可以定義為:把地理上分散的資源,以能夠相互共享資源(硬件、軟件和數據)的方式連接起來,并且各自具備獨立功能的計算機系統的集合體。
從物理結構上看,計算機網絡又可定義為:在協議控制下,由若干計算機、終端設備、數據傳輸介質和通信控制處理機等組成的集合。
綜合上述觀點,計算機網絡可以定義為:將分布在不同地理位置并具有獨立功能的多臺計算機,通過通信設備和線路連接起來,在功能完善的網絡軟件(網絡協議、網絡操作系統等)支持下,以實現網絡資源共享和數據傳輸為目的的系統。
1.1.2 計算機網絡的基本組成
1.計算機網絡的物理組成
計算機網絡按物理結構可分為網絡硬件和網絡軟件兩部分。
網絡硬件是整個計算機網絡的物質基礎,它是網絡運行的實體,對網絡的性能起著決定性的作用。常見的網絡硬件如下:
(1)計算機:網絡服務器、個人計算機等。
(2)網絡適配器:網卡。
(3)傳輸介質:同軸電纜、雙絞線、光纖,以及無線傳輸介質等。
(4)網絡互連設備:中繼器、網橋、交換機、路由器、網關等。
網絡軟件是整個計算機網絡的靈魂,它用于支持網絡運行、提高運行效率和開發網絡資源。常見的網絡軟件如下:
(1)網絡操作系統:Windows Server、Linux等。
(2)網絡協議軟件:TCP/IP、IPX/SPX等。
(3)網絡應用軟件:IE、數據庫網絡接口(如ODBC、ADO)等。
2.計算機網絡的邏輯組成
計算機網絡按邏輯功能可分為資源子網和通信子網兩部分。
資源子網是網絡中實現資源共享功能的硬件及其軟件的集合,它是計算機網絡中面向用戶的部分。資源子網由網絡中獨立工作的計算機及其外圍設備、各種軟件資源與數據資源組成。
通信子網是網絡中實現網絡通信功能的硬件及其軟件的集合。通信子網為資源子網提供傳輸服務,是支持資源子網上用戶之間相互通信的基本環境。通信子網由用于信息交換的網絡互連設備和通信鏈路等軟硬件設施組成。
1.1.3 計算機網絡的功能
計算機網絡有很多用處,其中最重要的3個功能是:數據通信、資源共享和分布處理。
1.數據通信
數據通信是計算機網絡最基本的功能。它用來快速傳送計算機與終端、計算機與計算機之間的各種信息,包括文字、聲音、圖像、視頻等。如果計算機網絡覆蓋的地域足夠大,則可使各種信息在全國乃至全球范圍內快速傳遞和處理。
2.資源共享
“資源”指的是網絡中所有的軟件、硬件和數據。“共享”指的是網絡中的用戶都能夠部分或全部地享受這些資源。一個非常普遍的例子是一個辦公室里的所有工作人員共用同一臺打印機。在計算機網絡中,許多昂貴的資源,例如大型數據庫、巨型計算機、大容量存儲空間等,并非為每一個用戶所獨有,它們必須實行資源共享。資源共享可以避免重復投資,提高資源利用率,使系統的整體性價比得到提高。
3.分布處理
當某臺計算機負擔過重,或該計算機正在處理某項工作時,計算機網絡可將新任務轉交給空閑的計算機來完成,這樣能均衡各計算機的負載,提高處理問題的實時性。對于大型綜合性問題,可將問題各部分交給不同的計算機分別進行處理,充分利用網絡資源,擴大計算機的處理能力,增強處理問題的實用性。聯合使用多臺計算機并構成高性能的計算機體系,這種協同工作、并行處理的方法要比單獨購置高性能的大型計算機便宜得多。
1.1.4 計算機網絡的分類
關于計算機網絡,目前還沒有一種被普遍接受的分類方法,一般是通過傳輸技術和覆蓋范圍兩個角度對計算機網絡進行分類。
1.按網絡的傳輸技術分類
從廣義上講,目前計算機網絡普遍使用的傳輸技術有兩種,分別是點到點鏈路和廣播式鏈路。
點到點(Point-to-Point )鏈路是指將一對單獨的計算機連接起來。在一個由點到點鏈路組成的網絡中,如果兩臺計算機之間沒有直連線路,為了使發送方發送的消息到達接收方,消息就必須首先通過一個或多個中間結點,這種消息在某些情況下被稱為數據包或分組(Packet)。點到點傳輸只有一個發送方和一個接收方,有時候它也被稱為單播(Unicasting)。
與點到點鏈路不同,廣播式鏈路是指通信信道被網絡上的所有計算機所共享。任何一臺計算機發出的數據包能被所有其他計算機收到。每個數據包的地址字段指定了預期的接收方。當一臺計算機收到一個數據包時,它要檢查地址字段。如果包的目的地就是本計算機,則該計算機要處理此數據包;如果包的目的地址是其他計算機,則該計算機忽略此數據包。無線網絡是廣播式網絡的一個常見例子,一個覆蓋區域內的通信由該區域內所有計算機共享。
廣播式網絡往往還提供將一個數據包發送給所有目標計算機的可能性,這種傳輸模式稱為廣播(Broadcasting)。廣播只要在地址字段中使用一個特殊的編碼,如果被傳輸的數據包帶有這樣的地址編碼,那么網絡中的每一臺計算機都將會接收該包并對其進行處理。有些廣播式網絡還支持給一組計算機發送數據包的模式,這種傳輸模式稱為多播(Multicasting)。
2.按網絡的覆蓋范圍分類
按網絡的覆蓋范圍可以將計算機網絡分為:個域網、局域網、城域網和廣域網。它們之間的比較如表1-1所示。
表1-1 個域網、局域網、城域網和廣域網的比較

(1)個域網
個域網(Personal Area Network,PAN)允許設備圍繞著一個人進行通信。一個常見的例子是計算機通過無線網絡與其外圍設備連接。為了減少外設(顯示器、鍵盤、鼠標、打印機)與計算機連接的電纜,一些公司聯合起來設計了一種短距離無線網絡來連接這些計算機組件,這種無線網絡使用藍牙(Blue tooth)技術。
在最簡單的形式下,藍牙網絡采用主-從操作模式,如圖1-1所示。計算機通常是主設備,與鼠標、鍵盤等從設備通信。主設備告訴從設備以后廣播時使用什么地址、它們能夠傳輸多長時間、它們可以使用什么頻率等所有與傳輸有關的信息。藍牙也可用在其他設備中,如將耳麥與手機相連。我們將在第9章更詳細地介紹藍牙技術。
PAN也可以采用其他短程通信技術來搭建,例如智能卡和RFID。我們將在第9章介紹RFID。

圖1-1 藍牙網絡
(2)局域網
局域網(Local Area Network,LAN)是一種私有網絡,一般存在于一座建筑物內。局域網被廣泛用來連接個人計算機和消費類電子設備,使它們能夠共享資源(比如服務器、打印機)和交換信息。當局域網被用于公司時,就稱為企業網(Enterprise Network)。
局域網一般分為有線局域網和無線局域網兩種。有線局域網使用了各種不同的傳輸技術。它們大多使用銅線作為傳輸介質,但也有一些使用光纖。通常情況下,有線局域網的運行速率在100Mbit/s~1Gbit/s之間,延遲很低(微秒或納秒級),而且很少發生錯誤。較新的局域網甚至可以工作在高達10Gbit/s的速率下。
許多有線局域網的拓撲結構是以點到點鏈路為基礎。俗稱以太網(Ethernet)的IEEE802.3是迄今為止最常見的一種有線局域網。圖1-2所示為一個交換式以太網(Switched Ethernet)的拓撲例子。每臺計算機按照以太網協議規定的方式運行,通過一條點到點鏈路連接到一臺交換機(Switch),這就是交換式以太網名字的由來。一個交換機有多個端口(port),每個端口連接一臺計算機。交換機的工作是中繼與之連接的計算機之間的數據包,根據每個數據包中的地址來確定這個數據包要發送給哪臺計算機。
為了建立較大的局域網,需要用多個交換機,它們相互連接,如果把它們連接在一起形成一個環,會發生什么?網絡仍然能正常工作嗎?設計者考慮到了這種情況,這正是協議的工作任務。協議必須梳理數據包的路徑,并選擇該走的路徑,最終抵達預期的計算機。交換機的工作情況將在第5章進行介紹。
人們有時候也會將一個大的物理局域網分成幾個較小的邏輯局域網,這么做是因為有時候網絡設備的布局不一定與組織結構相匹配。例如,某個學校的人事和財務部門因為位于同一建筑物的同一樓層,因此它們的計算機有可能在同一個物理局域網中。如果人事部門和財務部門邏輯上有自己獨享的虛擬局域網(Virtual LAN,VLAN),就更易于管理各自的系統。此時,可以給每個端口額外加上一個數字標簽,例如數字“10”表示人事部門,數字“20”表示財務部門,然后交換機在轉發數據包時,將連到數字標簽“10”端口的計算機和連到數字標簽“20”端口的計算機區別開。例如,在數字標簽“10”端口上發送的廣播數據包將不會被連到數字標簽“20”端口上的計算機收到,就好像存在兩個不同的局域網一樣。與此相關的內容將在第7章中討論。
交換式以太網是原始以太網設計的一個現代版本。在最初的以太網設計中,所有的數據包在一條電纜上廣播,因而一次至多只有一臺機器能夠成功發送。為此,需要一個分布式仲裁機制來解決沖突問題。其算法非常簡單:只要電纜空閑,計算機就可以傳輸。如果兩個或兩個以上的數據包在電纜上發生沖突,每臺計算機只需等待一個隨機時間后再次重發。通常稱這種版本的以太網為經典以太網(Classic Ethernet)。
無線局域網近來很受歡迎,尤其是在家庭、舊辦公樓、食堂和其他一些安裝電纜很麻煩的場所。在這些系統中,每臺計算機都有一個無線網卡用來與其他計算機通信。在大多數情況下,每臺計算機與一個專用設備通信,如圖1-3所示。這個設備稱為接入點(Access Point ,AP),它主要負責中繼無線計算機之間的數據包,還負責中繼無線計算機和Internet之間的數據包。

圖1-2 交換式以太網

圖1-3 無線LAN
無線局域網的一個標準稱為IEEE 802.11(俗稱Wi-Fi),它已經被非常廣泛地使用。它可以以11Mbit/s到幾百兆比特每秒的速率運行。無線局域網的相關內容將在第9章進行介紹。
家庭局域網值得多花一些時間討論。雖然可以認為家庭網絡只是另一種局域網,但它卻有著一些與其他網絡不同的屬性要求。例如,它的安裝必須非常容易、操作必須非常簡單、價格要低廉,并且要安全可靠。如何構建家庭網絡將在第11章進行介紹。
(3)城域網
城域網(Metropolitan Area Network,MAN)的范圍可覆蓋一個城市,它們大多使用光纖作為傳輸介質。城域網的一個重要用途是用作城市骨干網,通過它將位于同一城市內不同地點的局域網互相連接起來。城域網不僅可用于計算機通信,同時也可用于傳輸語音、圖像以及視頻等信息,成為一種綜合通信網絡。有線電視網就是一個典型的城域網例子。最初的有線電視網只能專用于電視節目的接收,從20世紀90年代后期Internet開始吸引大量觀眾后,有線電視網開始利用原來尚未使用的頻譜來提供雙向的Internet服務。從那時候起,有線電視網就從分發電視節目的單一模式演變為一個城域網。
最近發展的高速無線Internet接入催生了另一種城域網,并且已經被標準化為IEEE 802.16,這就是WiMAX。WiMAX技術將在第9章進行介紹。
(4)廣域網
廣域網(Wide Area Network,WAN)的范圍很大,它能跨越很大的地理區域,通常是一個國家、地區或者一個大洲。與局域網類似,廣域網也分為有線廣域網和無線廣域網兩種。下面以一個在不同城市有分支機構的公司作為案例來說明有線廣域網。
圖1-4所示為一個公司的廣域網,它連接了該公司設在北京、上海和廣州3個城市的辦事處。每個辦事處都有專門運行用戶程序的計算機。按照傳統說法把這些計算機稱為主機(Host),然后把連接這些主機的網絡部分稱為通信子網(Communication Subnet)。

圖1-4 連接三個分支辦事處的WAN
在大多數廣域網中,通信子網由兩個不同部分組成:傳輸線路和交換元素。傳輸線路(Transmission Line)負責在計算機之間傳輸數據。它們可以是銅線、光纖或無線鏈路。交換元素(Switching Element)是專用的計算機,負責連接兩條或兩條以上的傳輸線路,并在傳輸線路之間轉發數據。這些負責轉發數據的計算機現在最常用的名稱是路由器(Router)。
我們所描述的有線廣域網看起來類似一個大型的有線局域網,但除了線路更長之外,它們之間還有著一些非常重要的差異。通常在廣域網中,主機和通信子網由不同的人擁有和經營(例如,通信子網通常由網絡提供商或電話公司負責經營)。
廣域網和局域網的第二個區別是廣域網中的路由器通常連接不同類型的網絡,例如,辦事處內部網絡可能是以太網,而長途傳輸線路可能是幀中繼鏈路(將在第8章介紹)。
有線廣域網可以分為兩類:
?利用虛擬專用網絡(Virtual Private Network,VPN)相互連接的廣域網。例如,公司并不租賃專用的傳輸線路,而是把自己的辦事處的網絡直接連接到Internet,辦事處之間通過虛擬鏈路相互連接。與租賃專線相比,VPN提供了重用某種資源(Internet連接)的靈活性,但它也存在虛擬化的一般缺點,即缺乏對底層資源的控制。
?通過網絡服務提供商(Network Service Provider)相互連接的廣域網。在這種廣域網類型中,通信子網由不同的公司負責運營。子網運營商通常會與Internet相連,這樣的子網運營商稱為Internet服務提供商(Internet Service Provider,ISP),相應的通信子網稱為ISP網絡(ISP Network)。
其他種類的廣域網使用了大量的無線技術,例如衛星系統和蜂窩移動電話網絡。無線廣域網將在第9章進行介紹。
- DB2 V9權威指南
- INSTANT CakePHP Starter
- JS全書:JavaScript Web前端開發指南
- Xamarin.Forms Projects
- 用Python實現深度學習框架
- H5頁面設計:Mugeda版(微課版)
- Python Data Structures and Algorithms
- Frank Kane's Taming Big Data with Apache Spark and Python
- Scala for Machine Learning(Second Edition)
- C語言程序設計簡明教程:Qt實戰
- 細說Python編程:從入門到科學計算
- Python機器學習算法與應用
- Learning Jakarta Struts 1.2: a concise and practical tutorial
- Elasticsearch Blueprints
- Spring Data JPA從入門到精通