計(jì)算機(jī)網(wǎng)絡(luò)課件第1章-計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)課件第1章-計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)課件第1章-計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)課件第1章-計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)課件第1章-計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1章計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)1.1計(jì)算機(jī)網(wǎng)絡(luò)的概念與原理1.1.1計(jì)算機(jī)網(wǎng)絡(luò)的基本概念計(jì)算機(jī)網(wǎng)絡(luò)由一組通過通信設(shè)備和線路連接起來的獨(dú)立的計(jì)算機(jī)組成,其目標(biāo)是為不同計(jì)算機(jī)上運(yùn)行的應(yīng)用程序之間提供通信服務(wù)。網(wǎng)絡(luò)中的計(jì)算機(jī)分為兩類,一類運(yùn)行應(yīng)用程序,稱為主機(jī),這些運(yùn)行在主機(jī)上的應(yīng)用程序才是網(wǎng)絡(luò)的真正“用戶”。另一類計(jì)算機(jī)專門負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù),這類計(jì)算機(jī)中最典型的代表是以太網(wǎng)交換機(jī)和路由器。網(wǎng)絡(luò)分類計(jì)算機(jī)網(wǎng)絡(luò)的分類方式有多種,最常見的一種是按照網(wǎng)絡(luò)覆蓋的地域范圍的大小分類,分為:廣域網(wǎng)(WideAreaNetwork,WAN)城域網(wǎng)(MetropolitanAreaNetwork,MAN)局域網(wǎng)(LocalAreaNetwork,LAN)等另一種常見的網(wǎng)絡(luò)分類方式就是按照連接計(jì)算機(jī)的通信介質(zhì)分類,可分為無線網(wǎng)絡(luò)有線網(wǎng)絡(luò)不管是有線介質(zhì)還是無線介質(zhì),均是為計(jì)算機(jī)之間的信息傳遞提供的通道,即信道。分組的概念網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)是以分組(packet)為單位的,分組實(shí)際就是一個(gè)由二進(jìn)制字節(jié)構(gòu)成的序列。分組中最重要的部分是用戶數(shù)據(jù),用戶數(shù)據(jù)就是實(shí)際要傳輸?shù)臄?shù)據(jù);除了用戶數(shù)據(jù),分組中還包括一些為了能正確傳輸分組而提供給網(wǎng)絡(luò)使用的控制信息。控制信息一般被按固定的結(jié)構(gòu)組織在一起,并添加在用戶數(shù)據(jù)的前面同數(shù)據(jù)一起傳輸,通常被稱為分組首部。分組首部的組織結(jié)構(gòu)再加上其后的數(shù)據(jù)部分就是所謂的分組結(jié)構(gòu)(也稱分組格式)。網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)協(xié)議是指通信雙方在通信時(shí)所必須遵循的規(guī)則、標(biāo)準(zhǔn)和約定。它規(guī)定了有關(guān)功能部件在通信過程中的操作,定義了數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的過程。一個(gè)網(wǎng)絡(luò)協(xié)議包括三方面內(nèi)容“語法”,主要是指數(shù)據(jù)以及控制信息的結(jié)構(gòu)或格式,即分組結(jié)構(gòu),但在網(wǎng)絡(luò)最低層的與物理線路和信號(hào)有關(guān)的協(xié)議中,語法是指數(shù)據(jù)編碼、信號(hào)電平等;“語義”,是指對(duì)構(gòu)成協(xié)議的各元素的含義的具體解釋;“同步”,也稱為“時(shí)序”,它規(guī)定了通信過程中各種操作及事件的先后順序。點(diǎn)到點(diǎn)信道與廣播信道根據(jù)計(jì)算機(jī)與信道的連接方式,可把信道分成兩種,一種只能在一條信道的兩端連接計(jì)算機(jī)或通信設(shè)備,即點(diǎn)到點(diǎn)信道;另一種則可以在一條信道上連接多臺(tái)計(jì)算機(jī)或設(shè)備,稱為廣播信道。在由點(diǎn)到點(diǎn)信道組成的計(jì)算機(jī)網(wǎng)絡(luò)中,除了聯(lián)網(wǎng)的計(jì)算機(jī)和信道以外,還有一種被稱為交換機(jī)的設(shè)備,用于在多條信道之間轉(zhuǎn)發(fā)數(shù)據(jù)。一臺(tái)交換機(jī)通常有很多個(gè)網(wǎng)絡(luò)接口,每個(gè)接口可連接一條點(diǎn)到點(diǎn)信道的一端。由交換機(jī)組成的通信網(wǎng)絡(luò)被稱為交換網(wǎng)絡(luò)。在由廣播信道組成的網(wǎng)絡(luò)中,多臺(tái)計(jì)算機(jī)被連接到同一條信道上,但由于信道上同時(shí)只能傳送一臺(tái)計(jì)算機(jī)發(fā)送的信號(hào),因此當(dāng)有兩臺(tái)或兩臺(tái)以上的計(jì)算機(jī)都要發(fā)送信息時(shí)就會(huì)出現(xiàn)沖突。為了避免沖突,需要使用復(fù)雜的控制機(jī)制來決定網(wǎng)絡(luò)中的哪臺(tái)計(jì)算機(jī)可以向信道中發(fā)送數(shù)據(jù),這種控制機(jī)制被稱為信道的多點(diǎn)訪問協(xié)議(MultipleAccessProtocol,MAP)。廣播信道通常使用在覆蓋范圍較小的局域網(wǎng)中。使用廣播信道的典型例子是早期的采用總線結(jié)構(gòu)組網(wǎng)的以太網(wǎng),以及現(xiàn)在常見的Wi-Fi無線網(wǎng)絡(luò)。1.1.2典型的計(jì)算機(jī)網(wǎng)絡(luò)——以太網(wǎng)以太網(wǎng)是美國施樂(Xerox)公司1975年研制成功的世界上第一種局域網(wǎng)技術(shù)。IEEE的802委員會(huì)于1983年制定了第一個(gè)IEEE的以太網(wǎng)標(biāo)準(zhǔn),其編號(hào)為802.3。除了以太網(wǎng)技術(shù)外,20世紀(jì)80年代還相繼出現(xiàn)了其他一些局域網(wǎng)技術(shù),比較典型的包括令牌總線(TokenBus)網(wǎng)和令牌環(huán)(TokenRing)網(wǎng)等,只不過這些局域網(wǎng)技術(shù)在激烈的市場競爭中早已被淘汰,只有以太網(wǎng)技術(shù)目前仍被廣泛應(yīng)用。信道訪問協(xié)議最早出現(xiàn)的以太網(wǎng)是總線型以太網(wǎng)。多臺(tái)計(jì)算機(jī)通過一條總線連接起來,任何兩臺(tái)計(jì)算機(jī)的通信都要通過這條總線進(jìn)行。當(dāng)總線上的兩個(gè)或兩個(gè)以上的節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí),用以表示數(shù)據(jù)的信號(hào)就會(huì)在鏈路上互相疊加,使接收端無法正確識(shí)別,產(chǎn)生數(shù)據(jù)碰撞。一旦發(fā)生碰撞,發(fā)送者必須要重新發(fā)送發(fā)生碰撞的數(shù)據(jù),如果碰撞頻繁發(fā)生,將會(huì)大大降低網(wǎng)絡(luò)的性能。廣播信道上的數(shù)據(jù)碰撞是無法完全避免的,但可以采用精確設(shè)計(jì)的多點(diǎn)訪問控制協(xié)議減少數(shù)據(jù)碰撞發(fā)生的概率。以太網(wǎng)中的多點(diǎn)訪問控制機(jī)制是帶碰撞檢測的載波偵聽多路訪問(CSMA/CD)協(xié)議。以太網(wǎng)的MAC地址為了區(qū)分網(wǎng)絡(luò)上的不同計(jì)算機(jī),通常是事先為每臺(tái)計(jì)算機(jī)分配一個(gè)由若干二進(jìn)制位組成的編號(hào),該編號(hào)就是物理地址或MAC地址,有時(shí)也稱硬件地址。以太網(wǎng)的MAC地址是一個(gè)48位(6字節(jié))的無符號(hào)二進(jìn)制數(shù),書寫的時(shí)候通常用16進(jìn)制表示。具體地說,MAC地址是分配給計(jì)算機(jī)上的網(wǎng)絡(luò)接口卡(簡稱網(wǎng)卡)的,固化在網(wǎng)卡的ROM中,48位全為1的MAC地址是廣播地址,不會(huì)被分配給任何網(wǎng)卡。如果計(jì)算機(jī)上如果安裝有多個(gè)以太網(wǎng)卡,則這臺(tái)計(jì)算機(jī)就會(huì)有多個(gè)MAC地址,一般情況下,同一臺(tái)計(jì)算機(jī)上的不同網(wǎng)卡會(huì)連入不同的網(wǎng)絡(luò)。以太網(wǎng)的幀結(jié)構(gòu)幀實(shí)際就是在物理信道上傳輸?shù)臄?shù)據(jù)分組的另一種叫法。幀的組成部分被稱為字段,各字段的排列位置是固定的,除數(shù)據(jù)字段外,各字段長度通常也是固定不變的。以太網(wǎng)幀結(jié)構(gòu)如下:目的地址:指明要接收該幀的計(jì)算機(jī)的MAC地址。如果是一個(gè)廣播幀,即該幀是廣播給網(wǎng)絡(luò)中的所有計(jì)算機(jī)的,目的地址應(yīng)指明為廣播地址。源地址字段:指明發(fā)送該幀的主機(jī)的MAC地址,通過該字段,收到該幀的主機(jī)就會(huì)知道是哪臺(tái)機(jī)器發(fā)送了該幀。類型字段:指明接收方對(duì)幀中數(shù)據(jù)的處理方式,也就是說,接收端收到數(shù)據(jù)后,幀中的數(shù)據(jù)應(yīng)該交給哪個(gè)程序處理,例如,當(dāng)類型字段的值為0x0800時(shí)表示數(shù)據(jù)字段的內(nèi)容為一個(gè)IP分組,應(yīng)該交給操作系統(tǒng)的IP模塊處理。。數(shù)據(jù)字段:也稱用戶數(shù)據(jù),這部分二進(jìn)制數(shù)據(jù)就是網(wǎng)絡(luò)真正要傳送的內(nèi)容,至于這些二進(jìn)制數(shù)據(jù)的含義和用處,跟計(jì)算機(jī)網(wǎng)絡(luò)是無關(guān)的。其長度在46字節(jié)到1500字節(jié)之間校驗(yàn)碼:是提供給接收方用來檢查數(shù)據(jù)在傳輸過程中是否出錯(cuò)的,它由發(fā)送方根據(jù)幀的其它部分的內(nèi)容使用某種算法計(jì)算得到,接收方收到幀后用相同的算法對(duì)相同部分的數(shù)據(jù)再計(jì)算一遍,得到的結(jié)果如果跟校驗(yàn)碼相同,則說明傳輸中數(shù)據(jù)沒出錯(cuò)。校驗(yàn)碼的計(jì)算方法由于篇幅所限,就不再進(jìn)一步解釋了。字節(jié)序號(hào)

十六進(jìn)制表示

對(duì)應(yīng)的ASCII碼字符000000100020003000400050006000700080009000a000b000c000d000e000f001006cf0497a0a490023cd45030a08004500l.Iz.I.#.E....E.00f4000000009b110c41ca668644c0a8.........A.f.D..01650035f2f000e019d2386781800001.e.5......8g....00030003000407636f6d6d656e74046e.......comment.n65777304736f687503636f6d00000100ews.sohu.com....01c00c000500010000016c0007026773..........l...gs0161c019c03300050001000000b50006.a...3..........03666a6ec036c046000100010000004e.fjn.6.F.......N000477bc240cc03600020001000000af..w.$..6........0004017ac036c03600020001000000af...z.6.6........00040178c036c03600020001000000af...x.6.6........00040177c036c088000100010000039a...w.6..........0004ddb3b416c0780001000100000ebf.......x........00040e12f02bc0680001000100000737.....+.h.......700043d87b3a8c068001c000100000103..=....h........00102001025002084000200000020000....P..@......0020..

一個(gè)完整的以太網(wǎng)幀的內(nèi)容廣播與單播以太網(wǎng)中的計(jì)算機(jī)可以同時(shí)向其它所有的計(jì)算機(jī)發(fā)送數(shù)據(jù),也可以選擇向其中的某一臺(tái)計(jì)算機(jī)發(fā)送數(shù)據(jù),前者稱為廣播,后者稱為單播。廣播是通過引入一個(gè)被稱為“廣播地址”的特殊地址來實(shí)現(xiàn)的。規(guī)定48位全為1的MAC地址為廣播地址,它不能被分配給任何主機(jī),因此它只能作為目的地址出現(xiàn)在幀中,而不能作為源地址使用。目的地址是廣播地址的幀被稱為“廣播幀”。目的地址是某塊網(wǎng)卡的MAC地址的幀則被稱為“單播幀”。由于以太網(wǎng)使用的是廣播信道,因此任意一臺(tái)計(jì)算機(jī)發(fā)出的幀,其它所有的計(jì)算機(jī)都能收到,但是,計(jì)算機(jī)的網(wǎng)卡通常只接收發(fā)給自己的幀和廣播幀。收到一個(gè)幀后,網(wǎng)卡通過幀中的目的地址來判斷該幀是不是發(fā)給自己的:如果目的地址跟自己的MAC地址相同,則該幀是發(fā)給自己的,收下;如果目的地址是廣播地址,說明該幀是廣播幀,也要收下,其他情況則丟棄。以太網(wǎng)的拓?fù)浣Y(jié)構(gòu)拓?fù)鋵W(xué)是幾何學(xué)的一個(gè)分支;拓?fù)鋵W(xué)首先把實(shí)體抽象成與其大小、形狀無關(guān)的點(diǎn),將連接實(shí)體的線路抽象成線,進(jìn)而研究點(diǎn)、線、面之間的關(guān)系。網(wǎng)絡(luò)拓?fù)渚褪侵妇W(wǎng)絡(luò)中的結(jié)點(diǎn)(通信設(shè)備或計(jì)算機(jī))和通信線路相互之間的連接關(guān)系。以太網(wǎng)最初的拓?fù)浣Y(jié)構(gòu)是使用粗同軸電纜的總線結(jié)構(gòu),后來粗同軸電纜被較為便宜的細(xì)同軸電纜所替代。后來又發(fā)展出使用更為便宜的雙絞線和集線器組成網(wǎng)星形拓?fù)浣Y(jié)構(gòu)的以太網(wǎng)絡(luò)。如圖所示,星型結(jié)構(gòu)中各計(jì)算機(jī)通過雙絞線連接到作為中心的集線器上。集線器集線器使用大規(guī)模集成電路來模擬同軸電纜的工作,因此這種星型以太網(wǎng)在邏輯上仍然是一個(gè)共享信道的“總線網(wǎng)絡(luò)”,只不過“總線”被“縮短”并裝進(jìn)了盒子。星型結(jié)構(gòu)的以太網(wǎng)比使用同軸電纜的以太網(wǎng)絡(luò)可靠性要高得多,并且價(jià)格便宜、連接簡單,因此總線型以太網(wǎng)早已被雙絞線組成的星形以太網(wǎng)所取代。目前集線器也已逐漸被性能更好的以太網(wǎng)交換機(jī)所取代。以太網(wǎng)交換機(jī)交換機(jī)在樣子上雖然與集線器相似,但其工作原理卻大不相同。以太網(wǎng)交換機(jī)是一種有多個(gè)以太網(wǎng)接口的存儲(chǔ)轉(zhuǎn)發(fā)設(shè)備,不再像集線器那樣模擬總線的工作。存儲(chǔ)轉(zhuǎn)發(fā),是指在接收數(shù)據(jù)時(shí)交換機(jī)先將收到的數(shù)據(jù)存儲(chǔ)在自己的存儲(chǔ)器中,待一個(gè)幀完全接收完成后,再根據(jù)其目的地址把它從相應(yīng)的網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)出去。交換機(jī)的每個(gè)網(wǎng)絡(luò)接口都連接到一根不同的廣播鏈路,由于位于不同端口的鏈路上的計(jì)算機(jī)不再共享同一信道,因此大大減小了碰撞機(jī)會(huì),從而提高了數(shù)據(jù)傳輸率。交換機(jī)可以將多臺(tái)計(jì)算機(jī)直接連接成一個(gè)以太網(wǎng),也可以連接多個(gè)由集線器或交換機(jī)組成的以太網(wǎng)以形成更大的一個(gè)以太網(wǎng)。太網(wǎng)交換機(jī)的工作原理首先,在交換機(jī)內(nèi)部維持著一張轉(zhuǎn)發(fā)表,用于記錄可以到達(dá)某計(jì)算機(jī)的網(wǎng)絡(luò)接口。該表結(jié)構(gòu)如圖所示。表中的三個(gè)表項(xiàng)分別表示MAC地址為A的主機(jī)連接在端口1上,MAC地址為B的主機(jī)連接在端口2上,MAC地址為C的主機(jī)也連接在端口1上。MAC地址網(wǎng)絡(luò)接口A1B2C1當(dāng)交換機(jī)從某個(gè)接口收到一個(gè)幀后,分析包中的目的MAC地址,并通過查找轉(zhuǎn)發(fā)表確定該數(shù)據(jù)包應(yīng)轉(zhuǎn)發(fā)到哪個(gè)接口;如果在表中查不到目的地址對(duì)應(yīng)的端口,則向所有端口轉(zhuǎn)發(fā)(除收到幀的端口外)該幀。轉(zhuǎn)發(fā)表是通過逆向?qū)W習(xí)算法創(chuàng)建并維護(hù)的。交換機(jī)每收到一個(gè)幀都會(huì)把幀首部中的源地址取出,并檢查轉(zhuǎn)發(fā)表中是否已登記了該地址,如果未登記,則將該地址以及幀進(jìn)入交換機(jī)的端口(對(duì)應(yīng)網(wǎng)絡(luò)接口)作為一個(gè)表項(xiàng)添加到轉(zhuǎn)發(fā)表中;如果表中已經(jīng)存在該地址,則用該幀入交換機(jī)的端口更新原先的網(wǎng)絡(luò)接口。逆向?qū)W習(xí)算法是基于這樣一個(gè)事實(shí):從計(jì)算機(jī)A發(fā)出的幀如果從交換機(jī)的端口x進(jìn)入到交換機(jī),那么從這個(gè)端口出發(fā)沿相反的方向一定可把一個(gè)幀傳送到計(jì)算機(jī)A。除以太網(wǎng)外,還有許多種基于不同技術(shù)的局域網(wǎng),比如已經(jīng)不再使用的令牌環(huán)網(wǎng)和令牌總線網(wǎng),還有現(xiàn)在越來越流行的無線局域網(wǎng)(WIFI)等。1.1.3廣域網(wǎng)與分組交換技術(shù)廣域網(wǎng)是用來實(shí)現(xiàn)計(jì)算機(jī)間的長距離數(shù)據(jù)通信的。網(wǎng)絡(luò)上的計(jì)算機(jī)可能分布在相距幾百公里甚至是幾千公里的不同城市里。鋪設(shè)長距離的通信線路成本是昂貴的,因此,最初人們?cè)趯?shí)現(xiàn)兩臺(tái)距離遙遠(yuǎn)的計(jì)算機(jī)間的通信時(shí)通常是借用已經(jīng)存在的通信網(wǎng)絡(luò)——電話網(wǎng)來傳輸計(jì)算機(jī)的數(shù)據(jù)。調(diào)制解調(diào)器電話網(wǎng)是用于傳送音頻信號(hào)(是模擬信號(hào))的,但計(jì)算機(jī)信號(hào)是數(shù)字信號(hào),不能直接在電話網(wǎng)中傳遞的。發(fā)送端需要先將要發(fā)送的數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)后再發(fā)送到電話線上,接收端則需要將電話線上傳來的模擬信號(hào)恢復(fù)成原來的數(shù)字信號(hào)再交給目的計(jì)算機(jī)。將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)的設(shè)備稱為調(diào)制器,將模擬信號(hào)恢復(fù)為數(shù)字信號(hào)的設(shè)備稱為解調(diào)器。由于計(jì)算機(jī)間的通信通常都是即發(fā)也收,因此調(diào)制器和解調(diào)器被集成到一個(gè)設(shè)備中,叫做調(diào)制解調(diào)器(Modem),俗稱“貓”。使用電話網(wǎng)傳遞計(jì)算機(jī)數(shù)據(jù)有兩個(gè)明顯的缺點(diǎn)任何想通信的兩臺(tái)計(jì)算機(jī)在通信之前都需要先有一條電話線連接,這條連接一旦建立,其他的計(jì)算機(jī)就不能再用,即使是在沒有數(shù)據(jù)傳輸?shù)臅r(shí)候,造成資源浪費(fèi);使用電話線傳輸數(shù)字?jǐn)?shù)據(jù)的速率(也就是帶寬)太低。為了克服這些缺點(diǎn),人們逐漸發(fā)展起了一系列的廣域網(wǎng)技術(shù),先后出現(xiàn)的典型技術(shù)包括X.25、幀中繼、ATM(異步傳遞方式)等。這些技術(shù)的性能指標(biāo)以及設(shè)備造價(jià)相差很大,但它們最基本的原理卻是相同的,都是基于分組交換技術(shù)的。電路交換交換的概念來源于電話網(wǎng)。當(dāng)兩部電話通話時(shí)只要用一對(duì)電話線將它們連起來就可以,但當(dāng)多部電話之間需要相互通話時(shí),每兩部電話之間都連一對(duì)線顯然是不可行的。解決的辦法是在城市中央修一個(gè)電話中心,每部電話到電話中心拉一條電話線,電話中心派一個(gè)接線員,通電話時(shí)接線員將要通話的電話接到一塊;通完話再斷開。多個(gè)城市之間的電話要通話時(shí),則可以建立一個(gè)更高級(jí)別的電話中心,每個(gè)城市的交換中心都連一條或多條電話線到這個(gè)更高級(jí)別中心,由該中心負(fù)責(zé)城際電話的交換。以此類推,就形成了電話網(wǎng)。這是“交換(switch)”的本來含義,可以理解為“轉(zhuǎn)接”——把一條電話線轉(zhuǎn)接到另一條電話線。從通信資源的分配角度來看,“交換”就是按照某種方式動(dòng)態(tài)地分配傳輸線路的資源。1889年一種可以替代接線員的機(jī)器被發(fā)明出來,這種機(jī)器可以根據(jù)你所撥的電話號(hào)碼自動(dòng)將你的電話與你所撥的電話連接起來,這種機(jī)器就是“自動(dòng)電話交換機(jī)”。這種使用自動(dòng)電話交換機(jī)通過撥號(hào)給通信雙方直接建立一條物理通信線路的交換方式就是所謂的電路交換。電路交換的工作過程分為三個(gè)階段:第一階段是建立連接,通話發(fā)起方撥號(hào),交換機(jī)根據(jù)所撥號(hào)碼選擇要連接的線路,建立起一條物理線路連接;第二階段就是利用建立的線路通話;第三個(gè)階段稱為釋放連接,通話完成后通過掛斷電話,通知交換機(jī)釋放所占用的線路。計(jì)算機(jī)廣域網(wǎng)類似于電話網(wǎng),在規(guī)模較大的廣域網(wǎng)中,也需要組建一個(gè)由通信線路和交換機(jī)構(gòu)成的通信網(wǎng)絡(luò)。類似于每部電話機(jī)都有一個(gè)互不相同的電話號(hào)碼一樣,分組交換網(wǎng)絡(luò)中的每臺(tái)計(jì)算機(jī)也必須有一個(gè)互不相同的地址,用于區(qū)分網(wǎng)絡(luò)中不同的計(jì)算機(jī),同以太網(wǎng)的MAC地址一樣,這個(gè)地址被稱為計(jì)算機(jī)的硬件地址。計(jì)算機(jī)網(wǎng)絡(luò)中的數(shù)據(jù)突發(fā)性計(jì)算機(jī)通信時(shí),常常突然在短時(shí)間內(nèi)有大量的數(shù)據(jù)需要傳送,然后又長時(shí)間沒數(shù)據(jù)傳輸。這種特點(diǎn)被稱為數(shù)據(jù)傳輸?shù)耐话l(fā)性。數(shù)據(jù)的突發(fā)性使得計(jì)算機(jī)網(wǎng)絡(luò)采用電路交換技術(shù)并不合適。如果使用電路交換,則需要在通信的兩臺(tái)計(jì)算機(jī)間通過撥號(hào)建立一條物理連接,連接一旦建立,其所用到的線路資源就會(huì)被該通信所獨(dú)占,別人無法使用,盡管很多時(shí)間是空閑的,從而造成很大的資源浪費(fèi)。分組交換計(jì)算機(jī)網(wǎng)絡(luò)通常采用分組交換技術(shù)。分組交換技術(shù)與電路交換技術(shù)有很大不同,在通信時(shí)通常并不需要建立連接和釋放連接,也不能向電路交換那樣可以連續(xù)地傳送任意長的數(shù)據(jù)。計(jì)算機(jī)在發(fā)送數(shù)據(jù)時(shí),通常需要先把過長的原始數(shù)據(jù)劃分成若干個(gè)較小的數(shù)據(jù)塊,再在每個(gè)數(shù)據(jù)塊前加上由目的地址以及其他控制信息構(gòu)成的首部形成一個(gè)個(gè)數(shù)據(jù)分組,然后依次將它們發(fā)送給與計(jì)算機(jī)直接相連的交換機(jī)。交換機(jī)在收到一個(gè)分組后先予以存儲(chǔ),再按分組首部的地址信息查找事先建好的轉(zhuǎn)發(fā)表,根據(jù)表中指明的接口轉(zhuǎn)發(fā)給下一臺(tái)交換機(jī),下一臺(tái)交換機(jī)也進(jìn)行同樣的處理,一直到轉(zhuǎn)發(fā)給目的計(jì)算機(jī)為止。交換機(jī)的這種轉(zhuǎn)發(fā)方式被稱為存儲(chǔ)轉(zhuǎn)發(fā),用這樣的存儲(chǔ)轉(zhuǎn)發(fā)方式,最后分組就能到達(dá)最終目的地。目的計(jì)算機(jī)在收到所有分組后,再把各分組的首部去掉,將各分組中的數(shù)據(jù)塊裝配成原來的數(shù)據(jù)。分組交換的缺點(diǎn)交換機(jī)收到分組后需要進(jìn)行分析目的地址、查找轉(zhuǎn)發(fā)表、轉(zhuǎn)發(fā)等處理,這些處理需要花費(fèi)時(shí)間,如果分組到達(dá)的速度快于其處理速度,后到的分組就需要在交換機(jī)內(nèi)部進(jìn)行排隊(duì)等待,為此,交換機(jī)內(nèi)部需要有較大的緩存空間用于緩存多個(gè)排隊(duì)的分組。另外,分組在交換機(jī)內(nèi)部排隊(duì)等候會(huì)造成數(shù)據(jù)傳輸產(chǎn)生較大的時(shí)延,更嚴(yán)重的時(shí),如果需要排隊(duì)的分組過多而導(dǎo)致交換機(jī)內(nèi)的緩存空間用盡的話還會(huì)造成分組的丟失。X.25、幀中繼等廣域網(wǎng)技術(shù)都是基于分組交換的,以太網(wǎng)交換機(jī)其實(shí)也是一種分組交換技術(shù)。不同的分組交換技術(shù)之間的差別主要在于交換機(jī)轉(zhuǎn)發(fā)表的構(gòu)造以及維護(hù)算法不同、分組的轉(zhuǎn)發(fā)策略不同、接口連接的信號(hào)傳輸介質(zhì)不同等,當(dāng)然也有隨之帶來的性能、造價(jià)方面的不同。1.1.4網(wǎng)絡(luò)互聯(lián)所謂網(wǎng)絡(luò)的互聯(lián)是指將兩個(gè)或兩個(gè)以上的計(jì)算機(jī)網(wǎng)絡(luò),通過一定的方法,用一種或多種通信處理設(shè)備相互連接起來,構(gòu)成更大的網(wǎng)絡(luò)系統(tǒng),以使位于不同網(wǎng)絡(luò)中的計(jì)算機(jī)也能相互通信和實(shí)現(xiàn)資源共享。網(wǎng)絡(luò)互聯(lián)的形式有局域網(wǎng)與局域網(wǎng),局域網(wǎng)與廣域網(wǎng),廣域網(wǎng)與廣域網(wǎng)的互聯(lián)三種。網(wǎng)絡(luò)互聯(lián)是計(jì)算機(jī)網(wǎng)絡(luò)出現(xiàn)后隨之而來的一種很自然的想法,但是,這個(gè)想法的實(shí)現(xiàn)卻并不容易,原因是不同的網(wǎng)絡(luò)由于采用的技術(shù)不同而差異太大,比如,硬件地址的編址方案、幀的結(jié)構(gòu)、傳輸介質(zhì)、管理與控制方式等等。采用同種技術(shù)的網(wǎng)絡(luò)互聯(lián)通常要簡單一些由交換機(jī)構(gòu)成的兩個(gè)以太網(wǎng)互聯(lián),通常只要分別在兩個(gè)網(wǎng)絡(luò)中各選一臺(tái)交換機(jī),再從這兩臺(tái)交換機(jī)上各自選擇一個(gè)端口,將這兩個(gè)端口用網(wǎng)線直接相連就可以了。這時(shí)兩個(gè)以太網(wǎng)就連成了一個(gè)規(guī)模較大的以太網(wǎng),從而實(shí)現(xiàn)了原來兩個(gè)網(wǎng)絡(luò)中的計(jì)算機(jī)實(shí)現(xiàn)互聯(lián)互通的目的。從以太網(wǎng)交換機(jī)的工作原理可知,網(wǎng)中的任何一臺(tái)計(jì)算機(jī)發(fā)送一個(gè)廣播信息,網(wǎng)中所有的計(jì)算機(jī)都能收到,這時(shí)一般稱這些計(jì)算機(jī)在同一個(gè)廣播域中。顯然,兩個(gè)以太網(wǎng)直接相連就是將兩個(gè)較小的廣播域合并成了一個(gè)大的廣播域,但是,當(dāng)一個(gè)廣播域過大時(shí),由于網(wǎng)絡(luò)產(chǎn)生的廣播包過多網(wǎng)絡(luò)性能會(huì)有很大下降甚至不能工作。異種網(wǎng)絡(luò)互聯(lián)較早的一種可以連接不同類型網(wǎng)絡(luò)的設(shè)備是網(wǎng)橋(bridge),網(wǎng)橋主要用來連接兩個(gè)局域網(wǎng),但網(wǎng)橋不是一種通用的網(wǎng)絡(luò)到網(wǎng)絡(luò)的連接設(shè)備。兩種不同種類的局域網(wǎng)相連,要用專門為這兩種局域網(wǎng)相連而設(shè)計(jì)的網(wǎng)橋,比如一個(gè)以太網(wǎng)要與一個(gè)令牌環(huán)網(wǎng)相連,則需要用到專門設(shè)計(jì)的以太網(wǎng)到令牌環(huán)網(wǎng)的網(wǎng)橋,用于連接兩個(gè)以太網(wǎng)的網(wǎng)橋,只能連接兩個(gè)以太網(wǎng),而不能用于連接其他類型的網(wǎng)絡(luò)。目前已很少使用網(wǎng)橋來連接兩個(gè)網(wǎng)絡(luò),但是網(wǎng)橋也并非完全被淘汰了,前面所介紹的以太網(wǎng)交換機(jī)其實(shí)就是多端口的以太網(wǎng)到以太網(wǎng)的網(wǎng)橋,之所以不在叫網(wǎng)橋了,主要是因?yàn)榫W(wǎng)橋的端口較少,通常只有兩個(gè),而交換機(jī)則端口眾多,常見的有8口、24口、48口等?,F(xiàn)在實(shí)現(xiàn)網(wǎng)絡(luò)互聯(lián)所使用的是一種被稱為路由器(router)的設(shè)備,路由器也是一種分組交換設(shè)備,它實(shí)際上是一種具有多個(gè)網(wǎng)絡(luò)接口的專用計(jì)算機(jī),用來在多個(gè)網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)分組。目前,路由器是實(shí)現(xiàn)網(wǎng)絡(luò)互連的核心設(shè)備僅僅靠路由器仍然是不能實(shí)現(xiàn)網(wǎng)絡(luò)互聯(lián)互通的,還必須在所有計(jì)算機(jī)上安裝并運(yùn)行一套被稱為TCP/IP協(xié)議的網(wǎng)絡(luò)通信軟件才行。這套軟件的核心是IP協(xié)議(InternetProtocol),即互聯(lián)網(wǎng)協(xié)議。IP協(xié)議是不同網(wǎng)絡(luò)中的計(jì)算機(jī)能夠相互通信的關(guān)鍵,不僅僅是所有網(wǎng)絡(luò)中的計(jì)算機(jī),路由器上也都安裝并運(yùn)行著IP協(xié)議。1.1.5計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)設(shè)計(jì)和建造計(jì)算機(jī)網(wǎng)絡(luò)是一件很復(fù)雜的事情。將復(fù)雜的問題分解成若干個(gè)相對(duì)簡單的子問題分別處理是人們?cè)诮鉀Q復(fù)雜問題是常用的手段。為了便于設(shè)計(jì)和實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò),人們將整個(gè)計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)按照功能劃分成多個(gè)不同的模塊,各模塊之間即相互獨(dú)立又相互配合共同實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用相互通信的目的。計(jì)算機(jī)網(wǎng)絡(luò)的各功能模塊通常是按“層次結(jié)構(gòu)”來劃分的。網(wǎng)絡(luò)體系結(jié)構(gòu)的層次模型在這種層次結(jié)構(gòu)中,每層都完成獨(dú)立的功能。每層得功能都需要借助其下一層的功能才能實(shí)現(xiàn),同時(shí),自身的功能要能被上一層使用。本層的功能被上一層所使用通常稱為本層為上一層提供服務(wù)。服務(wù)與被服務(wù)只能發(fā)生在相鄰的層次之間,不能跨層進(jìn)行。這種計(jì)算機(jī)網(wǎng)絡(luò)的層次結(jié)構(gòu)以及各層功能的定義就是所謂的網(wǎng)絡(luò)體系結(jié)構(gòu)。目前,實(shí)際應(yīng)用中的最典型的網(wǎng)絡(luò)體系結(jié)構(gòu)是因特網(wǎng)的基于TCP/IP協(xié)議族的網(wǎng)絡(luò)體系結(jié)構(gòu)。在網(wǎng)絡(luò)體系結(jié)構(gòu)的層次模型中,各層為其上層所提供的服務(wù)是通過向其上一層提供的一組操作命令(也可理解為函數(shù)調(diào)用)來實(shí)現(xiàn)的,這些操作命令被稱為服務(wù)原語,它定義了該層可為其上層執(zhí)行哪些操作完成哪些功能,但并不涉及如何來實(shí)現(xiàn)這些操作和功能。給出如何實(shí)現(xiàn)這些操作和功能的具體方法和步驟的是協(xié)議,但體系結(jié)構(gòu)中并不要求某一層必須采用什么協(xié)議。具體的網(wǎng)絡(luò)中,各層所采用的協(xié)議可以自由改變,但各層所提供的服務(wù)是不能改變的,只有這樣,當(dāng)某層因技術(shù)進(jìn)步而改變時(shí)(比如,用能夠完成相同功能但更高效的新協(xié)議替換原來的老協(xié)議),才不會(huì)影響到其他各層。概括來說,在網(wǎng)絡(luò)體系結(jié)構(gòu)的分層模型中,每層都完成獨(dú)立的功能。每層功能的實(shí)現(xiàn)都需要借助下層的服務(wù)來完成,同時(shí)本層還要向上層提供更高級(jí)的服務(wù)。各層的功能是由各層的協(xié)議控制完成的,網(wǎng)絡(luò)的層次結(jié)構(gòu)一旦確定,各層的功能也就隨之確定了,但各層所使用的協(xié)議則可以采用不同的版本。各層所用到的所有協(xié)議所組成的集合稱為協(xié)議族,有時(shí)也將協(xié)議族稱為協(xié)議棧,那是因?yàn)楦鲗哟蔚膮f(xié)議按層次畫在一起很像數(shù)據(jù)結(jié)構(gòu)中的棧。1.ISO的OSI/RM模型國際標(biāo)準(zhǔn)化組織ISO發(fā)布的計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)的標(biāo)準(zhǔn)模型,被稱為OSI/RM(OpenSystemInterconnection/RecommendedModel)模型,即開放系統(tǒng)互連參考模型,通常又稱為X.200建議。OSI/RM模型將計(jì)算機(jī)網(wǎng)絡(luò)按功能分為七個(gè)層次,從下到上依次為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。計(jì)算機(jī)網(wǎng)絡(luò)的設(shè)計(jì)建造中,首先要解決的一個(gè)問題是相鄰的兩個(gè)節(jié)點(diǎn)間的通信問題,也就是采用何種通信技術(shù)將兩臺(tái)計(jì)算機(jī)直接連接起來,以使兩臺(tái)計(jì)算機(jī)間能相互發(fā)送二進(jìn)制比特流。因此,物理層所關(guān)注的主要是關(guān)于連接計(jì)算機(jī)的信道的問題,主要涉及采用何種傳輸介質(zhì)(雙絞線、光纖還是無線電)、發(fā)送端如何將要發(fā)送的二進(jìn)制比特序列轉(zhuǎn)化為能夠在傳輸介質(zhì)上傳輸?shù)碾娦盘?hào)、接收點(diǎn)又如何識(shí)別電信號(hào)并將其恢復(fù)成原來的比特序列、通信介質(zhì)與節(jié)點(diǎn)的物理連接接口的大小、形狀以及固定方式、信號(hào)線的排列順序等等。(1)物理層物理層的主要功能是,利用通信介質(zhì)為需要直接通信的的節(jié)點(diǎn)之間建立、維護(hù)和釋放物理連接,實(shí)現(xiàn)二進(jìn)制比特流的傳輸,進(jìn)而為其上的數(shù)據(jù)鏈路層提供二進(jìn)制比特?cái)?shù)據(jù)的傳輸服務(wù)。(2)數(shù)據(jù)鏈路層物理層提供的通信信道(物理連接)能夠在兩臺(tái)計(jì)算機(jī)之間傳送二進(jìn)制比特流,但是信道在傳輸比特流的過程中是不能保證不發(fā)生錯(cuò)誤的。例如,某個(gè)表示“1”的電信號(hào)在傳輸過程中由于受到外部噪聲的干擾發(fā)生了較大的變化,被接收端錯(cuò)誤地識(shí)別成了“0”,當(dāng)然也有可能“0”被識(shí)別成“1”的情況,類似的情況在普通的有線傳輸中雖然概率很低,但是不可避免,在無線通信中發(fā)生的概率就比較高了,因此必須采用某種機(jī)制對(duì)要傳輸?shù)臄?shù)據(jù)進(jìn)行差錯(cuò)控制——檢查是否出錯(cuò)以及出錯(cuò)后的錯(cuò)誤修正。另一個(gè)問題是:由于網(wǎng)絡(luò)節(jié)點(diǎn)性能的差異,接收端從鏈路上接收并處理數(shù)據(jù)的速度有可能比發(fā)送端發(fā)送數(shù)據(jù)的速度要慢,這樣接收端就會(huì)因來不及處理到達(dá)的數(shù)據(jù)而造成數(shù)據(jù)丟失,所以收發(fā)端必須采取某種機(jī)制來協(xié)調(diào)兩端的收發(fā)兩端的速度,這就是所謂的流量控制。為了便于實(shí)現(xiàn)差錯(cuò)控制和流量控制,數(shù)據(jù)鏈路層以“幀”(frame)為單位進(jìn)行數(shù)據(jù)傳輸,幀的格式、差錯(cuò)控制和流量控制的方法等,都是由鏈路通信協(xié)議規(guī)定的。物理線路連同實(shí)現(xiàn)鏈路通信協(xié)議的硬件和軟件一起被稱為數(shù)據(jù)鏈路(DataLink)。數(shù)據(jù)鏈路層的主要功能就是在物理層提供的比特流傳輸服務(wù)基礎(chǔ)上,以幀為單位,在有差錯(cuò)的物理線路上,實(shí)現(xiàn)無差錯(cuò)數(shù)據(jù)傳輸,簡單一點(diǎn)說就是在數(shù)據(jù)鏈路兩端實(shí)現(xiàn)無差錯(cuò)數(shù)據(jù)傳輸。(3)網(wǎng)絡(luò)層物理層和數(shù)據(jù)鏈路層實(shí)現(xiàn)的是相鄰節(jié)點(diǎn)之間的數(shù)據(jù)傳輸,如何在鏈路層提供的服務(wù)基礎(chǔ)之上,通過中間節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)發(fā)在分組級(jí)交換網(wǎng)絡(luò)上實(shí)現(xiàn)任意兩臺(tái)計(jì)算機(jī)間的通信,則是網(wǎng)絡(luò)層的功能。網(wǎng)絡(luò)層以“分組”(packet)為單位,通過適當(dāng)?shù)穆酚蛇x擇,可以為網(wǎng)絡(luò)上的任意兩臺(tái)計(jì)算機(jī)之間提供通信服務(wù),并能實(shí)現(xiàn)擁塞控制和網(wǎng)絡(luò)互聯(lián)等功能。從數(shù)據(jù)通信服務(wù)的可靠性角度考慮,網(wǎng)絡(luò)層的設(shè)計(jì)有兩種:一是面向連接的可靠服務(wù),這種可靠服務(wù)需要通信兩端在通信前先要建立“虛電路”。二是盡最大努力交付的數(shù)據(jù)報(bào)服務(wù),這種服務(wù)在通信前不需要任何操作,只要將分組發(fā)送到網(wǎng)絡(luò)上,由網(wǎng)絡(luò)根據(jù)分組中的目的地址盡其最大努力將分組轉(zhuǎn)發(fā)給目的計(jì)算機(jī),但不保證傳輸過程中分組不會(huì)丟失。IP采用的是不可靠的數(shù)據(jù)報(bào)服務(wù)。(4)傳輸層網(wǎng)絡(luò)進(jìn)程的概念:能夠利用計(jì)算機(jī)網(wǎng)絡(luò)與其它計(jì)算機(jī)上正在運(yùn)行程序進(jìn)行通信的程序通常被稱為網(wǎng)絡(luò)程序。正在運(yùn)行中的網(wǎng)絡(luò)程序稱為網(wǎng)絡(luò)進(jìn)程。進(jìn)程是操作系統(tǒng)的核心概念之一,是指程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過程,是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。通俗一點(diǎn)說,進(jìn)程就是程序在計(jì)算機(jī)上的一次執(zhí)行活動(dòng),當(dāng)你啟動(dòng)了一個(gè)程序,你就啟動(dòng)了一個(gè)進(jìn)程,退出一個(gè)程序,也就結(jié)束了一個(gè)進(jìn)程。前面我們不止一次提到的“計(jì)算機(jī)與計(jì)算機(jī)之間的通信”實(shí)質(zhì)上是計(jì)算機(jī)上運(yùn)行的進(jìn)程之間的通信。一臺(tái)計(jì)算機(jī)上通常都會(huì)同時(shí)運(yùn)行多個(gè)應(yīng)用程序,也就是有多個(gè)應(yīng)用進(jìn)程在運(yùn)行,當(dāng)網(wǎng)絡(luò)層協(xié)議收到一個(gè)數(shù)據(jù)分組時(shí),它應(yīng)該將將其交給那個(gè)應(yīng)用進(jìn)程?網(wǎng)絡(luò)層不具備區(qū)分不同應(yīng)用進(jìn)程的能力。網(wǎng)絡(luò)層應(yīng)將分組中的數(shù)據(jù)取出交給傳輸層,由傳輸層決定將數(shù)據(jù)交給哪個(gè)應(yīng)用進(jìn)程。傳輸層直接為應(yīng)用進(jìn)程提供通信服務(wù),這種“應(yīng)用進(jìn)程到應(yīng)用進(jìn)程”的數(shù)據(jù)傳輸服務(wù),通常被稱為端到端(end-to-end)通信服務(wù)。傳輸層為多個(gè)應(yīng)用進(jìn)程共用網(wǎng)絡(luò)通信服務(wù)提供了支撐。除此之外,還可以在網(wǎng)絡(luò)層提供的不可靠的數(shù)據(jù)報(bào)服務(wù)之上,通過采用可靠傳輸協(xié)議為應(yīng)用進(jìn)程提供可靠的通信服務(wù)。(5)會(huì)話層組織兩個(gè)會(huì)話進(jìn)程之間的通信,管理數(shù)據(jù)的交換。(6)表示層用于處理在兩個(gè)通信系統(tǒng)中交換信息的表示方式,包括數(shù)據(jù)格式變換、數(shù)據(jù)加密與解密、數(shù)據(jù)壓縮與恢復(fù)等。應(yīng)用層主要任務(wù)是利用網(wǎng)絡(luò)通信功能來實(shí)現(xiàn)特定的應(yīng)用功能,該層定義應(yīng)用的總體框架以及進(jìn)程間通信和交互的具體規(guī)則。不同的網(wǎng)絡(luò)應(yīng)用需要有不同的應(yīng)用層協(xié)議。比如目前因特網(wǎng)上的萬維網(wǎng)(WWW)是最典型的一個(gè)網(wǎng)絡(luò)應(yīng)用,它所使用的應(yīng)用層協(xié)議為超文本傳輸協(xié)議HTTP,而另一個(gè)典型應(yīng)用電子郵件對(duì)應(yīng)的協(xié)議則是SMTP協(xié)議。應(yīng)用進(jìn)程間傳輸?shù)臄?shù)據(jù)被稱為報(bào)文(message)。(7)應(yīng)用層2.TCP/IP體系結(jié)構(gòu)模型TCP/IP體系結(jié)構(gòu)只有四層,從上到下分別是應(yīng)用層(Applicationlayer)、傳輸層(Transportlayer)、互連層(Internetlayer)、主機(jī)至網(wǎng)絡(luò)層(Host-to-Networklayer)。TCP/IP協(xié)議族中網(wǎng)絡(luò)被分成四個(gè)層次第一層為網(wǎng)絡(luò)接口層(Host-to-Networklayer),它主要由基礎(chǔ)的物理通信信道構(gòu)成,如以太網(wǎng)或調(diào)制解調(diào)器撥號(hào)連接,通過這些物理信道直接相連的計(jì)算機(jī)可以不經(jīng)過路由器而直接通信。TCP/IP對(duì)這一層沒有任何要求,它可以是任何一種物理信道。第二層是互聯(lián)網(wǎng)層(Internetlayer),該層對(duì)應(yīng)的協(xié)議是IP協(xié)議,它所解決的問題是使網(wǎng)絡(luò)上的任意兩臺(tái)主機(jī)之間能夠傳送分組,也就是在任意兩臺(tái)主機(jī)之間找一條由物理信道和路由器組成的通路,使分組能沿這條通路由一臺(tái)主機(jī)傳送到另一臺(tái)主機(jī)。IP協(xié)議是一種“不可靠的”協(xié)議,從主機(jī)A發(fā)送給主機(jī)B的一個(gè)分組序列在傳送過程中有可能會(huì)丟失分組或被重新排序,盡管發(fā)生的幾率并不高。IP提供的這種不可靠的通信服務(wù)被稱為“數(shù)據(jù)報(bào)”服務(wù)。第三層是傳輸層(Transportlayer),該層有兩個(gè)協(xié)議:TCP和UDP。應(yīng)用程序可選擇這兩個(gè)協(xié)議中的任何一個(gè)進(jìn)行數(shù)據(jù)通信。本課程主要就是講解如何在你自己編寫的應(yīng)用程序中利用這兩個(gè)協(xié)議通過網(wǎng)絡(luò)進(jìn)行通信。TCP和UDP所要解決的一個(gè)共同問題是應(yīng)用程序的尋址問題,即當(dāng)主機(jī)收到一個(gè)分組后應(yīng)如何確定分組的目的進(jìn)程。答案是利用端口號(hào)。TCP和UDP是把數(shù)據(jù)從一個(gè)進(jìn)程運(yùn)送到另一個(gè)進(jìn)程,因此是一種端到端的傳輸協(xié)議(end-to-endtransportprotocol),IP則不是,因?yàn)樗荒馨逊纸M從一臺(tái)主機(jī)傳送到另一臺(tái)主機(jī)。最高一層是應(yīng)用層(Applicationlayer),這一層的協(xié)議都是針對(duì)某種具體應(yīng)用的,它定義了某種應(yīng)用的具體框架,直接為用戶的應(yīng)用程序提供服務(wù),例如HTTP用于瀏覽器向Web服務(wù)器請(qǐng)求網(wǎng)頁內(nèi)容,SMTP則用于郵件的發(fā)送。對(duì)與你自己開發(fā)的應(yīng)用程序,根據(jù)程序的具體功能,你可以選擇使用已有的標(biāo)準(zhǔn)協(xié)議,也可以開發(fā)并是自己的應(yīng)用層協(xié)議。但對(duì)大多數(shù)網(wǎng)絡(luò)應(yīng)用程序,你都需要設(shè)計(jì)并實(shí)現(xiàn)你自己的應(yīng)用層協(xié)議。1.2IP協(xié)議IP協(xié)議即互聯(lián)網(wǎng)協(xié)議,它被用來實(shí)現(xiàn)不同網(wǎng)絡(luò)的互聯(lián)互通,負(fù)責(zé)對(duì)數(shù)據(jù)分組進(jìn)行尋址和路由。使用IP協(xié)議通信的計(jì)算機(jī)網(wǎng)絡(luò)通常被稱為IP網(wǎng)絡(luò),因特網(wǎng)就是全世界最大的一個(gè)IP網(wǎng)絡(luò)。目前存在兩個(gè)版本的IP協(xié)議,IPv4和IPv6,盡管在不遠(yuǎn)的將來IPV6肯定會(huì)完全取代IPV4,但目前以及在今后的若干年內(nèi),IPV4仍被廣泛使用。1.2.1IP地址在IP網(wǎng)絡(luò)中,每一臺(tái)主機(jī)都至少會(huì)分配一個(gè)IP地址,準(zhǔn)確一點(diǎn)說,IP地址不是分配給主機(jī)的,而是分配給主機(jī)上的網(wǎng)絡(luò)接口的。網(wǎng)絡(luò)接口是主機(jī)與底層物理通信信道的連接,每一個(gè)IP地址都代表了一臺(tái)計(jì)算機(jī)與底層物理通信信道的一個(gè)連接。每一個(gè)網(wǎng)絡(luò)接口都是屬于一臺(tái)主機(jī)的,因此只要它連接到網(wǎng)絡(luò),使用該接口的IP地址就可以定位這臺(tái)主機(jī)。主機(jī)可以有多個(gè)網(wǎng)絡(luò)接口,如果要使它們都可以使用,則每一個(gè)網(wǎng)絡(luò)接口都必需至少分配一個(gè)IP地址。IP地址IP地址的一個(gè)重要作用是區(qū)分同一個(gè)IP網(wǎng)絡(luò)中的不同網(wǎng)絡(luò)接口,因此同一IP網(wǎng)絡(luò)中不存在相同的IP地址。IP地址的另一個(gè)作用就是標(biāo)識(shí)計(jì)算機(jī)所在的地理位置,路由器在轉(zhuǎn)發(fā)送分組時(shí)所依據(jù)的就是分組所攜帶的目的主機(jī)的IP地址。當(dāng)計(jì)算機(jī)從網(wǎng)絡(luò)的一個(gè)位置移動(dòng)到另一個(gè)位置時(shí),機(jī)器的IP地址必需作出相應(yīng)變更。IPv4的地址是一個(gè)32位的二進(jìn)制數(shù),通常采用點(diǎn)分十進(jìn)制表示,即將這32位二進(jìn)制數(shù)平均分為4組,并用點(diǎn)(.)隔開,然后再將每組的8位二進(jìn)制數(shù)寫為對(duì)應(yīng)的十進(jìn)制數(shù)。例如,一個(gè)二進(jìn)制表示的IP地址11001010110000101000010100000001分組后成為11001010.11000010.10000101.00000001將每組二進(jìn)制數(shù)寫成是進(jìn)制就變?yōu)?2位的IPV4地址通常包含兩個(gè)部分,前面一部分被稱為網(wǎng)絡(luò)號(hào)(網(wǎng)絡(luò)ID),后面一部分被稱為主機(jī)號(hào)(主機(jī)ID)。網(wǎng)絡(luò)號(hào)用于標(biāo)識(shí)主機(jī)所在的網(wǎng)絡(luò),主機(jī)號(hào)則用于區(qū)分同一網(wǎng)絡(luò)中的不同主機(jī)。網(wǎng)絡(luò)號(hào)很重要,路由器在轉(zhuǎn)發(fā)分組時(shí)所依據(jù)的就是分組所攜帶的目的主機(jī)的IP地址的網(wǎng)絡(luò)號(hào)。當(dāng)計(jì)算機(jī)從一個(gè)網(wǎng)絡(luò)移動(dòng)到另一個(gè)網(wǎng)絡(luò)時(shí),計(jì)算機(jī)的IP地址必需作出相應(yīng)變更,因?yàn)椴煌W(wǎng)絡(luò)的網(wǎng)絡(luò)號(hào)是不同的。網(wǎng)絡(luò)號(hào)的長度不是固定的。不同范圍的網(wǎng)絡(luò),其網(wǎng)絡(luò)號(hào)長度是不同的。網(wǎng)絡(luò)號(hào)的長短是由子網(wǎng)掩碼決定的。子網(wǎng)掩碼是一個(gè)由若干個(gè)連續(xù)的1和連續(xù)的0組成的32位的二進(jìn)制串,其中連續(xù)的1的個(gè)數(shù)表示IP地址中網(wǎng)絡(luò)號(hào)的位數(shù)。子網(wǎng)掩碼在書寫時(shí)通常也是采用點(diǎn)分十進(jìn)制方式。例如,11111111111111111111111100000000通常寫為。計(jì)算機(jī)或路由器通過將分組的目的IP地址與其子網(wǎng)掩碼做“邏輯與”運(yùn)算來獲取分組的目的網(wǎng)絡(luò)號(hào)。同一個(gè)網(wǎng)絡(luò)中的所有計(jì)算機(jī)的網(wǎng)絡(luò)號(hào)通常情況下是相同的,但有時(shí)也有例外,比如,劃分了虛擬局域網(wǎng)(VLAN)的情況。通常網(wǎng)絡(luò)號(hào)完全相同的一組主機(jī)被稱為一個(gè)IP子網(wǎng),當(dāng)然,屬于同一個(gè)IP子網(wǎng)的計(jì)算機(jī)必須是在同一個(gè)網(wǎng)絡(luò)上。不同IP子網(wǎng)的計(jì)算機(jī)之間通信必須要經(jīng)過路由器。1.2.2IPv4的分組結(jié)構(gòu)一個(gè)IP分組由由首部和數(shù)據(jù)兩部分組成。如圖1.11所示,首部的前一部分是固定長度的,共20字節(jié),是所有IP數(shù)據(jù)報(bào)必須具有的。固定部分的后面是一些可選字段,其長度是可變的。固定部分又被劃分為位數(shù)不等的字段,每一個(gè)字段都有特定的含義和功能。比如,首部最前面的4個(gè)二進(jìn)制位表示IP協(xié)議的版本號(hào),其值為0100,即4,表示是IPv4。緊跟版本字段的是該數(shù)據(jù)分組的首部長度,也占4位,可表示的最大數(shù)值是15個(gè)單位(一個(gè)單位為4字節(jié)),因此IP分組的首部長度的最大值是60字節(jié)。大多數(shù)IP分組的首部長度字段值都是5,即20字節(jié),也就是只包含固定首部。1.2.3路由與路由器路由是一種為數(shù)據(jù)分組找到到達(dá)目的主機(jī)的路徑的機(jī)制。路由與數(shù)據(jù)轉(zhuǎn)發(fā)的功能均是由路由器來完成的。路由器是一種具有多個(gè)輸入端口和多個(gè)輸出端口的專用計(jì)算機(jī),其主要任務(wù)是連接多個(gè)網(wǎng)絡(luò),并實(shí)現(xiàn)分組的路由選擇與轉(zhuǎn)發(fā)。路由選擇就是通過路由協(xié)議來獲取網(wǎng)絡(luò)拓?fù)?,并根?jù)獲取的網(wǎng)絡(luò)拓?fù)湫畔?gòu)造和維護(hù)路由表。分組轉(zhuǎn)發(fā)則是將路由器某個(gè)輸入端口收到的分組,按照分組要去的目的地(即目的網(wǎng)絡(luò)),通過查找路由表,把該分組從路由器的某個(gè)合適的輸出端口發(fā)送給下一跳路由器。下一跳路由器也按照這種方法處理分組,直到該分組到達(dá)終點(diǎn)為止。路由表是在路由器上存儲(chǔ)的一個(gè)具有如下結(jié)構(gòu)的一個(gè)表格。下一跳地址是指分組應(yīng)交付的下一站路由器的輸入接口的IP地址。輸出接口則是指本路由器的與下一跳路由器直接相連的網(wǎng)絡(luò)接口。目的網(wǎng)絡(luò)地址子網(wǎng)掩碼下一跳地址輸出接口(接口的IP地址)直接交付E0()255E1()E1()E3()路由器R1到主機(jī)H2所在網(wǎng)絡(luò)的路由中,下一跳地址應(yīng)該是路由器R2與廣域網(wǎng)()相連的那個(gè)端口的IP地址。如果分組的目的主機(jī)就在路由器的某個(gè)接口直接相連的網(wǎng)絡(luò)上,則下一跳地址應(yīng)標(biāo)記為直接交付,比如路由器R1到主機(jī)H1所在網(wǎng)絡(luò)的路由,其下一跳地址應(yīng)標(biāo)記為直接交付。特定主機(jī)路由:如果一條路由的目的網(wǎng)絡(luò)地址是一個(gè)主機(jī)的IP地址,其掩碼為55。特定主機(jī)路由為特定的目的主機(jī)指明一個(gè)路由。默認(rèn)路由:在路由表中的目的網(wǎng)絡(luò)地址為,子網(wǎng)掩碼也是。當(dāng)一個(gè)分組的目的網(wǎng)絡(luò)與路由表中的所有路由都不匹配時(shí),路由器將按默認(rèn)路由轉(zhuǎn)發(fā)該分組。路由器收到一個(gè)分組后,轉(zhuǎn)發(fā)該分組的過程如下:(1)從收到的分組的首部提取目的IP地址D。(2)對(duì)與路由器直接相連的子網(wǎng)(下一跳地址為“直接交付”的那些表項(xiàng)對(duì)應(yīng)的網(wǎng)絡(luò)),先用各網(wǎng)絡(luò)的子網(wǎng)掩碼和D逐位相“與”,看是否和相應(yīng)的網(wǎng)絡(luò)地址匹配。若匹配,則將分組直接交付。否則執(zhí)行(3)。(3)若路由表中有目的地址為D的特定主機(jī)路由,則將分組傳送給指明的下一跳路由器;否則,執(zhí)行(4)。(4)對(duì)路由表中的其余的每一表項(xiàng)的子網(wǎng)掩碼和D逐位相“與”,若其結(jié)果與某一項(xiàng)的目的網(wǎng)絡(luò)地址匹配,則將分組傳送給該項(xiàng)指明的下一跳路由器,若結(jié)果與多項(xiàng)都匹配,則選子網(wǎng)掩碼最大的路由表項(xiàng)作為該分組的路由;若無匹配項(xiàng),則執(zhí)行(5)。(5)通過ICMP協(xié)議,向源主機(jī)報(bào)告轉(zhuǎn)發(fā)分組出錯(cuò)。如果存在默認(rèn)路由,由于其掩碼為,與IP地址D進(jìn)行“與運(yùn)算”后的結(jié)果也為,因此上述過程中的第(4)步必然能至少找到一個(gè)匹配項(xiàng)。1.2.4主機(jī)的路由表及IP分組的發(fā)送過程在某臺(tái)運(yùn)行WindowsXP的計(jì)算機(jī)的CMD窗口中輸入routeprint命令后,顯示出的本機(jī)的路由表。網(wǎng)絡(luò)號(hào)是的路由是“回送地址”的路由?;厮偷刂肥且唤M保留地址,包括所有第一個(gè)字節(jié)值為127的所有地址?;厮偷刂酚糜诒緳C(jī)網(wǎng)絡(luò)軟件的環(huán)回測試(lookbacktest)和本地進(jìn)程間的通信,TCP/IP協(xié)議規(guī)定,目的地址是回送地址的分組不能出現(xiàn)在任何網(wǎng)絡(luò)上。無論什么程序,一旦使用了回送地址作為目的地址來發(fā)送數(shù)據(jù),則本機(jī)中的協(xié)議軟件不會(huì)將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,而是會(huì)送給上層軟件處理。主機(jī)發(fā)送IP分組的過程由主機(jī)發(fā)出的分組,要么交付給默認(rèn)網(wǎng)關(guān)再由其轉(zhuǎn)發(fā),要么直接交付給本網(wǎng)絡(luò)的其它主機(jī)。具體為:(1)當(dāng)主機(jī)上運(yùn)行的IP協(xié)議收到上層交給的數(shù)據(jù)時(shí),先將數(shù)據(jù)封裝成IP分組(分組的目的地址往往是由發(fā)送數(shù)據(jù)的應(yīng)用程序提供的);(2)用目的地址依次與路由表中各項(xiàng)的掩碼進(jìn)行與運(yùn)算并將運(yùn)算結(jié)果與目的網(wǎng)絡(luò)進(jìn)行比較,找出所有匹配項(xiàng);(3)在所有匹配的表項(xiàng)中選擇網(wǎng)絡(luò)號(hào)最長的一條路由作為本數(shù)據(jù)分組的路由。上述過程也可以簡單理解為:當(dāng)主機(jī)要發(fā)送一個(gè)IP分組時(shí),首先檢查一下該分組的目的主機(jī)是否與本主機(jī)在同一網(wǎng)絡(luò)中,如果在,則直接交付,否則,交給默認(rèn)網(wǎng)關(guān)。1.3TCP與UDP協(xié)議TCP/IP體系結(jié)構(gòu)中的運(yùn)輸層協(xié)議利用網(wǎng)絡(luò)層的IP協(xié)議,直接為其上層的應(yīng)用程序提供通信服務(wù)。TCP/IP的運(yùn)輸層包括TCP和UDP兩個(gè)協(xié)議協(xié)議。應(yīng)用程序可使用其中任何一個(gè)進(jìn)行數(shù)據(jù)通信。二者的主要區(qū)別:TCP是一個(gè)面向連接的可靠協(xié)議,在傳送數(shù)據(jù)之前必需先建立連接,通信完成之后還需要釋放鏈接,發(fā)送過程中檢測數(shù)據(jù)可能發(fā)生的丟失、失序等錯(cuò)誤,并采取一定的措施更正這些錯(cuò)誤。UDP是無連接的不可靠的協(xié)議,它不會(huì)嘗試從IP的錯(cuò)誤中進(jìn)行恢復(fù),它只是將IP主機(jī)到主機(jī)之間的不可靠的“數(shù)據(jù)報(bào)”服務(wù)簡單地?cái)U(kuò)展為應(yīng)用程序到應(yīng)用程序之間,它在通信時(shí)并不建立連接,因而是無連接的。TCP與UDP的不同TCP是一個(gè)可靠的協(xié)議,它檢測IP傳送的數(shù)據(jù)中可能發(fā)生的丟失、失序等錯(cuò)誤,并采取一定的措施更正這些錯(cuò)誤,從而為用用程序提供可靠的數(shù)據(jù)通信服務(wù)。UDP則不會(huì)嘗試從IP的錯(cuò)誤中進(jìn)行恢復(fù),它只是將IP主機(jī)到主機(jī)之間的不可靠的“數(shù)據(jù)報(bào)”服務(wù)簡單地?cái)U(kuò)展為應(yīng)用程序到應(yīng)用程序之間。TCP為了實(shí)現(xiàn)可靠的通信,在傳送數(shù)據(jù)之前必需先建立TCP連接,因而是一種面向連接的服務(wù),而UDP則是無連接的。端口號(hào)主機(jī)上可能同時(shí)運(yùn)行有多個(gè)應(yīng)用進(jìn)程,主機(jī)收到一個(gè)IP分組后,如何判定該分組的目的進(jìn)程?答案是采用端口號(hào)機(jī)制。端口號(hào)機(jī)制是運(yùn)輸層要實(shí)現(xiàn)的一個(gè)主要功能。端口號(hào)用于區(qū)分同一主機(jī)上的使用同一運(yùn)輸層協(xié)議的不同進(jìn)程的一個(gè)數(shù)。傳輸層協(xié)議為每個(gè)需要通信的應(yīng)用程序都至少分配一個(gè)通訊端口號(hào),用于區(qū)分同一主機(jī)上采用相同網(wǎng)絡(luò)通信新協(xié)議的應(yīng)用進(jìn)程。對(duì)任何一個(gè)通信程序,在通信之前,都必須為它指定一個(gè)端口號(hào),該端口號(hào)在本機(jī)上必須是唯一的,即同一臺(tái)機(jī)器上使用同一協(xié)議進(jìn)行通信的不同進(jìn)程不應(yīng)使用相同的端口號(hào)。該端口號(hào)必須以某種方式告知通信的對(duì)方。只有對(duì)方得知該端口號(hào)后,對(duì)方才能發(fā)送數(shù)據(jù)過來。TCP與UDP的端口號(hào)TCP和UDP協(xié)議的端口號(hào)均是一個(gè)16個(gè)二進(jìn)制位的無符號(hào)整數(shù),通常簡稱為端口(port)。其取值范圍為0~65535。在TCP/IP協(xié)議族中,傳輸層的兩個(gè)協(xié)議TCP和UDP是完全獨(dú)立的兩個(gè)軟件模塊,因此各自的端口號(hào)也是互相獨(dú)立的。例如TCP的255號(hào)端口和UDP的255號(hào)端口是毫無關(guān)聯(lián)的,二者可以并存并可被不同的應(yīng)用進(jìn)程所使用。能夠利用計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行通信的程序通常被稱為網(wǎng)絡(luò)程序。正在運(yùn)行中的網(wǎng)絡(luò)程序稱為網(wǎng)絡(luò)進(jìn)程,計(jì)算機(jī)網(wǎng)絡(luò)主要是為不同計(jì)算機(jī)上的網(wǎng)絡(luò)進(jìn)程提供通信服務(wù)。進(jìn)程是操作系統(tǒng)的核心概念之一,是指程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過程,是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。通俗一點(diǎn)說,進(jìn)程就是程序在計(jì)算機(jī)上的一次執(zhí)行活動(dòng),當(dāng)你啟動(dòng)了一個(gè)程序,你就啟動(dòng)了一個(gè)進(jìn)程,退出一個(gè)程序也就結(jié)束了一個(gè)進(jìn)程。端口號(hào)分類端口號(hào)被分為三類,一類是0~1023范圍內(nèi)的端口,被稱為熟知端口(Well-KnowPort),這些端口號(hào)已被分配給了因特網(wǎng)上的著名應(yīng)用程序,比如Web服務(wù)器(HTTP)的默認(rèn)端口號(hào)是80,F(xiàn)TP服務(wù)器的默認(rèn)端口號(hào)是21。端口0:不使用1~255:保留給特殊的應(yīng)用256~1023:保留給其他服務(wù)第二類端口被稱為登記端口,范圍是1024~49151,為沒有熟知端口號(hào)的應(yīng)用程序使用的。使用這個(gè)范圍的端口號(hào)必須在IANA登記,以防止重復(fù)。第三類是客戶端口號(hào)或短暫端口號(hào),數(shù)值為49152~65535,留給客戶進(jìn)程選擇暫時(shí)使用。當(dāng)服務(wù)器進(jìn)程收到客戶進(jìn)程的報(bào)文時(shí),就知道了客戶進(jìn)程所使用的動(dòng)態(tài)端口號(hào)。通信結(jié)束后,這個(gè)端口號(hào)可供其他客戶進(jìn)程以后使用。進(jìn)程的網(wǎng)絡(luò)地址對(duì)于一個(gè)網(wǎng)絡(luò)進(jìn)程來說,使用IP地址可以確定運(yùn)行該進(jìn)程的計(jì)算機(jī);如果再知道該進(jìn)程通信所采用的傳輸協(xié)議是TCP還是UDP,并且知道所使用的端口號(hào),則在網(wǎng)絡(luò)上就可以唯一確定這個(gè)進(jìn)程。因此,在網(wǎng)絡(luò)通信程序中,通常使用以下三元組來標(biāo)識(shí)一個(gè)通信進(jìn)程進(jìn)程的網(wǎng)絡(luò)地址==(傳輸層協(xié)議,主機(jī)IP地址,端口號(hào))該三元組通常被稱為進(jìn)程的網(wǎng)絡(luò)地址。進(jìn)程的網(wǎng)絡(luò)地址中的

{主機(jī)IP地址,端口號(hào)}稱為套接字。網(wǎng)絡(luò)中,一個(gè)通信連接(一個(gè)會(huì)話)的標(biāo)識(shí):(傳輸層協(xié)議,本地主機(jī)IP地址,本地傳輸層端口號(hào),遠(yuǎn)端主機(jī)IP地址,遠(yuǎn)端傳輸層端口號(hào))1.4網(wǎng)絡(luò)應(yīng)用編程接口——套接字

套接字編程接口在網(wǎng)絡(luò)協(xié)議的層次結(jié)構(gòu)中,傳輸層和網(wǎng)絡(luò)層的協(xié)議都是作為操作系統(tǒng)的核心模塊來實(shí)現(xiàn)的,而應(yīng)用層協(xié)議則是由應(yīng)用程序的開發(fā)者來實(shí)現(xiàn)。應(yīng)用層的通信功能必須借助其下層傳輸層的功能才能實(shí)現(xiàn),那么在編寫網(wǎng)絡(luò)應(yīng)用程序時(shí),如何方便地調(diào)用操作系統(tǒng)中的傳輸層協(xié)議軟件的功能?能不能在應(yīng)用程序與傳輸層協(xié)議軟件之間提供一個(gè)方便的“接口”來解決這個(gè)問題?答案當(dāng)然是肯定的。美國加利福尼亞大學(xué)Berkeley分校在為其BSDUNIX(BerkeleySoftwareDistributionUNIX)操作系統(tǒng)實(shí)現(xiàn)TCP/IP協(xié)議時(shí)最先遇到并解決了這一問題。其解決方法就是提出并實(shí)現(xiàn)了我們現(xiàn)在所說的套接字應(yīng)用程序編程接口(SocketApplicationProgramInterface,SocketAPI),簡稱套接字編程接口。由于BSDUNIX操作系統(tǒng)的廣泛使用,人們逐漸熟悉并接受了套接字編程接口,UNIX的其他版本以及后來出現(xiàn)的操作系統(tǒng)如Linux、Windows等并沒有另外開發(fā)一套網(wǎng)絡(luò)編程接口,而是選擇了對(duì)套接字編程接口的支持。為了便于在不同系統(tǒng)上實(shí)現(xiàn)套接字編程接口,Berkeley制訂了一個(gè)套接字規(guī)范,規(guī)定了一系列與套接字實(shí)現(xiàn)有關(guān)的庫函數(shù);該規(guī)范得以實(shí)現(xiàn)并被廣泛流傳,一般被稱為BerkeleySockets。套接字編程接口給出了應(yīng)用程序能夠調(diào)用的一組過程(Socket函數(shù)),每個(gè)過程完成一種與協(xié)議軟件交互的一種操作;比如用來創(chuàng)建套接字的Creat過程,用來發(fā)送數(shù)據(jù)的send過程,和用來從網(wǎng)絡(luò)上接收數(shù)據(jù)的receive過程等。應(yīng)用程序通過調(diào)用這些過程就可達(dá)到利用網(wǎng)絡(luò)進(jìn)行通信的目的。套接字是Socket的中文譯名,其本意是插座、插槽的意思,在這里應(yīng)該把它理解為應(yīng)用程序連接到網(wǎng)絡(luò)的“插座”,是應(yīng)用程序調(diào)用網(wǎng)絡(luò)協(xié)議進(jìn)行通信的接口。它是一個(gè)復(fù)雜的軟件結(jié)構(gòu)的抽象,不僅包含有記錄通信雙方IP地址和連接狀態(tài)等信息特定數(shù)據(jù)結(jié)構(gòu),還包含很多選項(xiàng),但這些內(nèi)容由操作系統(tǒng)管理,對(duì)編程者來說是不可見的。一個(gè)應(yīng)用程序可以使用多個(gè)套接字,這些套接字既可以是TCP套接字也可以是UDP套接字;每一個(gè)套接字都要關(guān)聯(lián)到一個(gè)端口號(hào),而且允許多個(gè)套接字關(guān)聯(lián)到同樣一個(gè)端口號(hào)。應(yīng)用程序通過調(diào)用socket函數(shù)獲得一個(gè)套接字的使用權(quán),并使用bind函數(shù)使該套接字與你所希望使用的端口號(hào)進(jìn)行關(guān)聯(lián)。WindowsSockets規(guī)范為了讓W(xué)indows支持套接字編程接口,微軟以BSDUNIX的BerkeleySockets規(guī)范為基礎(chǔ),定義了基于Windows的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論