網(wǎng)絡(luò)編程技術(shù)復(fù)習(xí)課_第1頁(yè)
網(wǎng)絡(luò)編程技術(shù)復(fù)習(xí)課_第2頁(yè)
網(wǎng)絡(luò)編程技術(shù)復(fù)習(xí)課_第3頁(yè)
網(wǎng)絡(luò)編程技術(shù)復(fù)習(xí)課_第4頁(yè)
網(wǎng)絡(luò)編程技術(shù)復(fù)習(xí)課_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.,網(wǎng)絡(luò)編程復(fù)習(xí)課 2014.6,.,CS模型,會(huì)聚點(diǎn)問(wèn)題 CS模型要求在任何一對(duì)進(jìn)行通信的應(yīng)用進(jìn)程中,有一 方必須在啟動(dòng)執(zhí)行后(無(wú)限期地)等待對(duì)方與其聯(lián)系。 這種解決方案減少了下層軟件的復(fù)雜性,因?yàn)橄聦訁f(xié) 議不必自己對(duì)收到的通信請(qǐng)求做出響應(yīng)。 CS模型應(yīng)用分類(lèi) CS模型根據(jù)通信發(fā)起的方向?qū)Τ绦蜻M(jìn)行分類(lèi),即區(qū)別 一個(gè)程序是客戶還是服務(wù)器。一般來(lái)說(shuō),發(fā)起對(duì)等通 信的應(yīng)用程序稱(chēng)為客戶。,.,CS模型,特權(quán) 為完成計(jì)算和返回結(jié)果,服務(wù)器軟件擁有系統(tǒng)特權(quán)來(lái) 訪問(wèn)受操作系統(tǒng)保護(hù)的對(duì)象(如文件、數(shù)據(jù)庫(kù)、設(shè)備 或協(xié)議端口),但應(yīng)注意不要將特權(quán)傳遞給使用服務(wù) 的客戶。通常服務(wù)器含有處理以下安全問(wèn)題的代碼: 鑒

2、別驗(yàn)證客戶身份 授權(quán)判斷某個(gè)庫(kù)胡是否被允許訪問(wèn)服務(wù)器服務(wù) 數(shù)據(jù)安全確保數(shù)據(jù)不被無(wú)意泄漏或損壞 保密防止未經(jīng)授權(quán)訪問(wèn)信息 保護(hù)確保網(wǎng)絡(luò)應(yīng)用程序不能濫用系統(tǒng)資源,.,CS模型,狀態(tài) 服務(wù)器所維護(hù)的與客戶交互活動(dòng)的信息稱(chēng)為狀態(tài)息。不保 存任何狀態(tài)信息的服務(wù)器稱(chēng)為無(wú)狀態(tài)服務(wù)器,反之稱(chēng)為有 狀態(tài)服務(wù)器。如果應(yīng)用協(xié)議不能使操作成為冪等(注1)的, 就可能不能使無(wú)狀態(tài)服務(wù)器。 有狀態(tài)服務(wù)器的條件 在理想情況下,只要網(wǎng)絡(luò)能可靠地交付所有的報(bào)文,并且 計(jì)算機(jī)從不崩潰,則在這種情況下,使服務(wù)器為每個(gè)進(jìn)行 著的交互保持少量狀態(tài)信息,就可以使交互的報(bào)文小些, 并使分布式應(yīng)用更像非分布式應(yīng)用。,.,UNIX API 系

3、統(tǒng)篇,創(chuàng)建進(jìn)程:fork 父進(jìn)程通過(guò)fork()創(chuàng)建子進(jìn)程,返回兩次,一次在父進(jìn) 程,一次在子進(jìn)程;出錯(cuò)則返回-1。 創(chuàng)建線程:pthread_create 在當(dāng)前進(jìn)程中,創(chuàng)建一個(gè)新的線程,與當(dāng)前運(yùn)行的線程并 發(fā)執(zhí)行。 執(zhí)行新程序:exec系列 當(dāng)前進(jìn)程映像替換成新的程序文件,而且該程序通常main 函數(shù)開(kāi)始執(zhí)行。,.,UNIX API 系統(tǒng)篇,多路轉(zhuǎn)接:select 確定一個(gè)或多個(gè)描述符的狀態(tài)(可讀性、可寫(xiě)性、錯(cuò)誤狀 態(tài)),實(shí)現(xiàn)對(duì)多個(gè)描述符狀態(tài)的并發(fā)“監(jiān)聽(tīng)”??捎糜趯?shí) 現(xiàn)單線程的并發(fā)。 等待子進(jìn)程終止:wait 父進(jìn)程通過(guò)調(diào)用wait()而阻塞,并等待子進(jìn)程終止。當(dāng) 有子進(jìn)程終止時(shí),父進(jìn)程可

4、獲得子進(jìn)程的退出狀態(tài),清理 子進(jìn)程的殘余數(shù)據(jù),并從阻塞中返回。,.,UNIX API 套接字篇,socket 應(yīng)用調(diào)用socket創(chuàng)建一個(gè)新的套接字,該新的套接字用于網(wǎng)絡(luò)通 信,并返回該套接字的描述符。 connect 創(chuàng)建一個(gè)套接字后,客戶程序調(diào)用connect以便同遠(yuǎn)程服務(wù)器建 立主動(dòng)的連接,并通過(guò)描述符來(lái)傳輸數(shù)據(jù)。 send(sendto) 客戶和服務(wù)器使用send在TCP上傳輸數(shù)據(jù)??蛻舫J褂胹end傳輸 請(qǐng)求,而服務(wù)器使用send傳輸應(yīng)答。 recv(recvfrom) 客戶和服務(wù)器使用recv在TCP上接收數(shù)據(jù)。服務(wù)器通過(guò)其接收客 戶端請(qǐng)求,而客戶端通過(guò)其來(lái)接收應(yīng)答。,.,UNIX

5、 API 套接字篇,close 客戶或服務(wù)器一旦結(jié)束使用某個(gè)套接字,便調(diào)用close將該套接 字撤銷(xiāo)(引用為0時(shí)注1)。 bind 應(yīng)用程序使用bind為一個(gè)套接字指定本地端點(diǎn)地址。對(duì)于TCP/IP 協(xié)議,端點(diǎn)地址使用sockaddr_in結(jié)構(gòu),它包含了IP地址和協(xié)議 端口號(hào)。 listen 面向連接的服務(wù)器調(diào)用listen將一個(gè)套接字置為被動(dòng)模式,并使 其準(zhǔn)備接受傳入連接。 accept 對(duì)于TCP套接字,服務(wù)器將調(diào)用accept以獲取所指明的套接字的下一 個(gè)傳入連接請(qǐng)求。,.,服務(wù)器模型,循環(huán)、無(wú)連接服務(wù)器(UDP) 1、創(chuàng)建套接字并將其綁定到所提供服務(wù)的熟 知端口上; 2、重復(fù)地讀取來(lái)自

6、客戶的請(qǐng)求,構(gòu)造響應(yīng), 按照應(yīng)用協(xié)議向客戶發(fā)回響應(yīng)。,.,服務(wù)器模型,循環(huán)、面向連接服務(wù)器(TCP) 1、創(chuàng)建套接字并將其綁定到它所提供服務(wù)的熟知端口上。 2、將該端口設(shè)置為被動(dòng)模式,使其準(zhǔn)備為服務(wù)器所用。 3、從該套接字上接受下一個(gè)連接請(qǐng)求,獲得該連接的新的 套接字。 4、重復(fù)地讀取來(lái)自客戶的請(qǐng)求,構(gòu)造響應(yīng),按照應(yīng)用協(xié)議 向客戶發(fā)回響應(yīng)。 5、與某個(gè)特定的客戶完成交互時(shí),關(guān)閉連接,并返回步驟 3以接受新的連接。,.,服務(wù)器模型,并發(fā)、面向連接服務(wù)器(TCP) 主1.創(chuàng)建套接字并將其綁定到所提供服務(wù)的熟知地 址上 主2.將該端口設(shè)置為被動(dòng)模式,使其準(zhǔn)備為服務(wù)器 所用 主3.反復(fù)阻塞等待接受請(qǐng)求

7、以便接收來(lái)自客戶的下 一個(gè)連接請(qǐng)求,并創(chuàng)建新的從進(jìn)程來(lái)處理響應(yīng) 從1.針對(duì)主進(jìn)程傳遞來(lái)的連接請(qǐng)求開(kāi)始 從2.用該連接與客戶進(jìn)行交互:讀取請(qǐng)求并發(fā)回響 應(yīng) 從3.關(guān)閉連接并退出,在處理完來(lái)自客戶的所有請(qǐng) 求后,從進(jìn)程就退出,.,服務(wù)器模型,單線程、并發(fā)服務(wù)器(TCP) 1、創(chuàng)建套接字并將其綁定到這個(gè)服務(wù)的熟知端 口上。將該套接字加到一個(gè)表中,該表中的項(xiàng)為 可以進(jìn)行IO的描述符; 2、使用多路轉(zhuǎn)接技術(shù)在已有套接字上等待IO; 3、如果最初的套接字準(zhǔn)備就緒,通過(guò)接受連接 請(qǐng)求獲得下一個(gè)連接,并將這個(gè)新的套接字加入 到表中,該表中的項(xiàng)是可以進(jìn)行IO的描述符; 4、如果是最初的套接字以外的某些套接字準(zhǔn)備

8、 就緒,就讀下一個(gè)請(qǐng)求,構(gòu)造并發(fā)送響應(yīng);,.,服務(wù)器模型,多協(xié)議服務(wù)器 一個(gè)多協(xié)議服務(wù)器的設(shè)計(jì)允許設(shè)計(jì)者創(chuàng)建一個(gè)單一的過(guò)程, 此過(guò)程響應(yīng)某個(gè)給定服務(wù)的請(qǐng)求,響應(yīng)該過(guò)程的調(diào)用,而 不必關(guān)心這些請(qǐng)求是來(lái)自UDP還是TCP。 多協(xié)議服務(wù)器允許設(shè)計(jì)者將某個(gè)給定服務(wù)的所有代碼封裝 到一個(gè)程序里,這樣就消除了重復(fù),并且也更容易協(xié)調(diào)各 種變化。,.,服務(wù)器模型,多服務(wù)、多協(xié)議服務(wù)器 可以選擇一種多服務(wù)的實(shí)現(xiàn)方法來(lái)構(gòu)建多服務(wù)服務(wù)器, 以減少需要執(zhí)行的服務(wù)器的數(shù)量;可以使用多協(xié)議以 便把無(wú)連接和面向連接的服務(wù)結(jié)合進(jìn)一個(gè)服務(wù)器中。 程序員可以使用并發(fā)進(jìn)程或線程實(shí)現(xiàn)一種并發(fā)的、多 服務(wù)服務(wù)器,也可以在單執(zhí)行線程中使

9、用多路轉(zhuǎn)接技 術(shù)以提供表面上的并發(fā)性。,.,服務(wù)器模型,從進(jìn)程/線程預(yù)分配 當(dāng)使用預(yù)分配時(shí),服務(wù)器在啟動(dòng)時(shí)就創(chuàng)建若干個(gè)并發(fā)的從線程/ 進(jìn)程。預(yù)分配避免了在每次請(qǐng)求到達(dá)時(shí)創(chuàng)建進(jìn)程的開(kāi)銷(xiāo),因而降 低了服務(wù)器時(shí)延,同時(shí)允許在處理一個(gè)請(qǐng)求時(shí),與另一個(gè)請(qǐng)求相 關(guān)聯(lián)的I/O活動(dòng)也在重疊進(jìn)行。 延遲分配技術(shù) 當(dāng)使用延遲分配技術(shù)時(shí),服務(wù)器開(kāi)始將循環(huán)地處理每個(gè)請(qǐng)求。僅 當(dāng)處理要花大塊時(shí)間時(shí),服務(wù)器才創(chuàng)建一個(gè)并發(fā)的從線程/進(jìn)程 來(lái)處理該請(qǐng)求。這種時(shí)延允許主服務(wù)器在創(chuàng)建一個(gè)進(jìn)程或切換環(huán) 境前,先檢查有無(wú)差錯(cuò)并處理一些短的請(qǐng)求。,.,服務(wù)器模型,預(yù)分配與延遲分配統(tǒng)一的基礎(chǔ) 兩者基于同一原理:通過(guò)把服務(wù)器的并 發(fā)等級(jí)從當(dāng)前活躍的請(qǐng)求數(shù)目中分離出 來(lái),設(shè)計(jì)人員可獲得靈活性并提高服務(wù) 器效率。,.,封裝技術(shù)與隧道技術(shù),封裝 將一個(gè)IP數(shù)據(jù)報(bào)放進(jìn)一個(gè)網(wǎng)絡(luò)分組或幀以便在下層的網(wǎng)絡(luò)上發(fā)送 它。封裝涉及網(wǎng)絡(luò)接口如何使用分組交換硬件。 隧道技術(shù) 是指使用高層傳輸網(wǎng)絡(luò)服務(wù)運(yùn)送來(lái)自另一個(gè)服務(wù)的分組或報(bào)文。 區(qū)別 當(dāng)IP直接使用硬件發(fā)送數(shù)據(jù)報(bào)時(shí),它將每個(gè)數(shù)據(jù)包封裝進(jìn)一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論