版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、網(wǎng)絡(luò)程序設(shè)計,1,主講:李榮lirong@jlu.edu.cn,2,課程簡介,使用教材《網(wǎng)絡(luò)編程實用教程》 人民郵電出版社 葉樹華 編著考核方式考試 80 分考勤 20 分,3,主要內(nèi)容,網(wǎng)絡(luò)編程基本概念和編程模式 UNIX套接字編程Sockets規(guī)范WinInet API和MFC WinInet類Win32的多進程多線程機制5種套接字I/O模型HTTP協(xié)議及編程電子郵件協(xié)議及編程,4,第1章 網(wǎng)絡(luò)編程基礎(chǔ),
2、5,1.1.1 網(wǎng)絡(luò)編程與進程通信1.進程與線程的基本概念 進程是處于運行過程中的程序?qū)嵗?,是操作系統(tǒng)調(diào)度和分配資源的基本單位。 一個進程實體由三部分構(gòu)成。程序代碼:規(guī)定進程所做的計算。數(shù)據(jù):計算的對象。進程控制塊:是操作系統(tǒng)為了控制進程建立的數(shù)據(jù)結(jié)構(gòu),用來管理進程的內(nèi)核對象,系統(tǒng)用來存放關(guān)于進程的統(tǒng)計信息。,,,1.1,網(wǎng)絡(luò)編程相關(guān)的基本概念,6,操作系統(tǒng)給進程分配內(nèi)存空間:靜態(tài)分配空間:用來裝入進程所有的可執(zhí)
3、行模塊或動態(tài)鏈接庫模塊的代碼及數(shù)據(jù)。動態(tài)分配空間:棧區(qū)空間和堆區(qū)空間。各種計算機應(yīng)用程序在運行時,都以進程的形式存在,網(wǎng)絡(luò)應(yīng)用程序也不例外。Windows系統(tǒng)不但支持多進程,還支持多線程。進程是分配資源的單位;線程是執(zhí)行和調(diào)度的單位。由線程負責執(zhí)行包含在進程的地址空間中的代碼.,1.進程與線程的基本概念,7,一個進程可以包含若干個線程,同時執(zhí)行進程地址空間中的代碼。當創(chuàng)建一個進程時,系統(tǒng)會自動創(chuàng)建它的第一個線程,稱為主線程
4、。然后,該線程可以創(chuàng)建其他的線程,而這些線程又能創(chuàng)建更多的線程。每個線程擁有自己的一組CPU寄存器和堆棧。進程至少擁有一個線程,否則將被撤銷。Windows 2000能在有多個CPU的計算機上運行,每個CPU上運行不同的線程,達到多線程同時運行。,1.進程與線程的基本概念,8,,1.進程與線程的基本概念,圖1.1 單CPU分時地運行進程中的各個線程,9,,從計算機網(wǎng)絡(luò)體系結(jié)構(gòu)的角度來看,網(wǎng)絡(luò)應(yīng)用進程處于網(wǎng)絡(luò)層次結(jié)構(gòu)的最上層。
5、從功能上,可以將網(wǎng)絡(luò)應(yīng)用程序分為兩部分:一部分是專門負責網(wǎng)絡(luò)通信的模塊,它們與網(wǎng)絡(luò)協(xié)議棧相連接,借助網(wǎng)絡(luò)協(xié)議棧提供的服務(wù)完成網(wǎng)絡(luò)上數(shù)據(jù)信息的交換。另一部分是面向用戶或者作其他處理的模塊,它們接收用戶的命令,或者對借助網(wǎng)絡(luò)傳輸過來的數(shù)據(jù)進行加工。這兩部分模塊相互配合,來實現(xiàn)網(wǎng)絡(luò)應(yīng)用程序的功能。,2.網(wǎng)絡(luò)應(yīng)用進程在網(wǎng)絡(luò)體系結(jié)構(gòu)中的位置,10,,圖1.2 網(wǎng)絡(luò)應(yīng)用程序在網(wǎng)絡(luò)體系結(jié)構(gòu)中的位置,2.網(wǎng)絡(luò)應(yīng)用進程在網(wǎng)絡(luò)體系結(jié)構(gòu)中的位置,11
6、,網(wǎng)絡(luò)應(yīng)用程序這兩部分的關(guān)系:通信模塊,是網(wǎng)絡(luò)分布式應(yīng)用的基礎(chǔ);其他模塊,對網(wǎng)絡(luò)交換的數(shù)據(jù)進行加工處理。網(wǎng)絡(luò)應(yīng)用程序要實現(xiàn)網(wǎng)絡(luò)資源的共享,共享的基礎(chǔ)就是必須能夠通過網(wǎng)絡(luò)輕松地傳遞各種信息。網(wǎng)絡(luò)編程首先要解決網(wǎng)間進程通信的問題,然后才能在通信的基礎(chǔ)上開發(fā)各種應(yīng)用功能。,2.網(wǎng)絡(luò)應(yīng)用進程在網(wǎng)絡(luò)體系結(jié)構(gòu)中的位置,12,,3.實現(xiàn)網(wǎng)間進程通信必須解決的問題 網(wǎng)間進程通信是指網(wǎng)絡(luò)中不同主機中的應(yīng)用進程之間的相互通信問題,必須解
7、決以下問題:網(wǎng)間進程的標識問題(不能只用進程號標識);如何與網(wǎng)絡(luò)協(xié)議棧連接的問題(通過定義套接字網(wǎng)絡(luò)編程接口來解決);多重協(xié)議的識別問題(不同協(xié)議工作方式不同);不同通信服務(wù)的問題(要求不同,如文件傳輸要求可靠、無差錯、無亂序、無丟失,網(wǎng)絡(luò)聊天要求不高,可選TCP和UDP服務(wù))。,13,1.1.2 因特網(wǎng)中網(wǎng)間進程的標識,1.傳輸層在網(wǎng)絡(luò)通信中的地位,TCP/IP協(xié)議棧的特點是“兩頭大、中間小”應(yīng)用層有多個應(yīng)用進程,使用不同
8、應(yīng)用層協(xié)議;網(wǎng)絡(luò)接口層,有多種數(shù)據(jù)鏈路層協(xié)議,支持不同的物理網(wǎng)絡(luò)連接;網(wǎng)絡(luò)層有IP協(xié)議,傳輸層有TCP和UDP協(xié)議。按照OSI七層協(xié)議的描述,傳輸層與網(wǎng)絡(luò)層在功能上的最大區(qū)別,是傳輸層提供進程通信的能力。TCP/IP協(xié)議提出了傳輸層協(xié)議端口(簡稱端口)的概念,成功地解決了通信進程的標識問題。,14,,1.1.2 因特網(wǎng)中網(wǎng)間進程的標識,1.傳輸層在網(wǎng)絡(luò)通信中的地位 傳輸層是計算機網(wǎng)絡(luò)中,通信主機內(nèi)部進行獨立操
9、作的第一層,是支持端到端的進程通信的關(guān)鍵的一層。,圖1.3 基于TCP/IP協(xié)議棧的進程間的通信,15,,2.端口的概念,端口是TCP/IP協(xié)議族中,應(yīng)用層進程與傳輸層協(xié)議實體間的通信接口在OSI七層協(xié)議描述中,將其稱為應(yīng)用層進程與傳輸層協(xié)議實體間的服務(wù)訪問點(SAP)。應(yīng)用層進程通過系統(tǒng)調(diào)用與某個傳輸層端口進行綁定,然后通過該端口接收或發(fā)送數(shù)據(jù)。類似于文件描述符,每個端口都擁有一個叫作端口號(port number)的16
10、位整數(shù)型標識符??梢杂枚丝跇俗R通信的網(wǎng)絡(luò)應(yīng)用程序。,16,,2.端口的概念,圖1.4 UDP與TCP的報文格式,傳輸層TCP和UDP兩個協(xié)議是完全獨立的軟件模塊,因此各自的端口號也獨立。使用時必須說明是UDP端口還是TCP端口,兩種協(xié)議的端口間沒有任何聯(lián)系。TCP 和UDP都可以提供65536個端口。端口是操作系統(tǒng)可分配的一種資源。,17,從實現(xiàn)的角度講,端口是一種抽象的軟件機 制,包括一些數(shù)據(jù)結(jié)構(gòu)和I/O緩沖區(qū)。進程通過
11、系統(tǒng)調(diào)用與某端口建立綁定關(guān)系后,傳輸層傳給該端口的數(shù)據(jù)都被相應(yīng)進程接收,相應(yīng)進程發(fā)給傳輸層的數(shù)據(jù)都通過該端口輸出。 在TCP/IP實現(xiàn)中端口操作類似于一般的I/O操作。進程獲取一個端口,相當于獲取本地唯一的I/O文件,可以用一般的讀寫原語訪問。,2.端口的概念,18,,3.端口號的分配機制網(wǎng)絡(luò)進程通信前必須獲知對方的進程地址。由于網(wǎng)絡(luò)應(yīng)用程序大多采用C/S模式開發(fā),通信總是由客戶機發(fā)起,因此事先只需讓客戶機知道服務(wù)器進程的端口
12、號即可。Internet中眾所周知的服務(wù)是有限的。TCP/IP協(xié)議采用了全局分配(靜態(tài)分配)和本地分配(動態(tài)分配)相結(jié)合的分配方法。對于TCP,或者UDP,將它們的全部65536個端口號分為保留端口號和自由端口號兩部分。,19,保留端口號:范圍是0-1023,又稱為眾所周知的端口或熟知端口(well-known port),只占少數(shù),采用全局分配或集中控制的方式,由一個公認的中央機構(gòu)根據(jù)需要進行統(tǒng)一分配,靜態(tài)地分配給因特網(wǎng)上著名的
13、眾所周知的服務(wù)器進程,并將結(jié)果公布于眾。,3.端口號的分配機制,表1.1 一些典型的應(yīng)用層協(xié)議分配到的保留端口,20,,自由端口號:范圍是1024-65535,采用本地分配,又稱為動態(tài)分配的方法。 TCP或UDP端口的分配規(guī)則是:端口0:不使用,或者作為特殊的用途;端口1-255:保留給特定的服務(wù),TCP和UDP均規(guī)定,小于256的端口號才能分配給網(wǎng)上著名的服務(wù);端口256-1023:保留給其他的服務(wù),如路由;端口1024-
14、4999:可以用作任意客戶機的端口;端口5000-65535:可以用作用戶的服務(wù)器端口。,3.端口號的分配機制,21,,3.端口號的分配機制,我們可以描述一下,在這樣的端口分配機制下,客戶機進程C與服務(wù)器進程S第一次通信的情景。,圖1.5 客戶機與服務(wù)器的第一次通信,22,為確保服務(wù)器進程為多個客戶機進程服務(wù),服務(wù)器的保留端口是專門用來監(jiān)聽客戶端的連接請求的。當服務(wù)器從保留端口接收到一個客戶機的請求后,立即創(chuàng)建另外一個線程,并為這
15、個線程分配一個自由端口(在5000-65535選擇分配),然后繼續(xù)接收新的客戶機請求。,3.端口號的分配機制,23,4.進程的網(wǎng)絡(luò)地址的概念 在因特網(wǎng)中,用一個三元組可以在全局中唯一地標識一個應(yīng)用層進程: 應(yīng)用層進程地址=(傳輸層協(xié)議,主機的IP地址, 傳輸層的端口號)這樣一個三元組,叫做一個半相關(guān)(half-association),它標識了因特網(wǎng)中進程間通信的一個端點,也把它稱為進
16、程的網(wǎng)絡(luò)地址。,24,5.網(wǎng)絡(luò)中進程通信的標識 一個完整的網(wǎng)間通信需要一個五元組在全局中唯一地來標識:(傳輸層協(xié)議,本地機IP地址,本地機傳輸層端口, 遠地機IP地址,遠地機傳輸層端口)這個五元組稱為一個全相關(guān)(association),即兩個協(xié)議相同的半相關(guān)才能組合成一個合適的全相關(guān),或完全指定一對網(wǎng)間通信的進程。,25,1.1.3 網(wǎng)絡(luò)協(xié)議的特征,在網(wǎng)絡(luò)分層體系結(jié)構(gòu)中,各層之間是嚴格單向依賴的,各層次的分工和協(xié)作集中
17、體現(xiàn)在相鄰層之間的接口上。服務(wù)是描述相鄰層之間關(guān)系的抽象概念。下層是服務(wù)提供者、上層是服務(wù)使用者;服務(wù)的表現(xiàn)形式是原語操作,一般以系統(tǒng)調(diào)用或函數(shù)庫的形式提供。系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核向網(wǎng)絡(luò)應(yīng)用程序或高層協(xié)議提供的服務(wù)原語。N層要向N+1層提供比N-1層更完善的服務(wù)。,26,網(wǎng)絡(luò)層及以下各層稱為通信子網(wǎng),提供點到點通信,沒有程序或進程的概念。傳輸層實現(xiàn)的是端到端的通信,引進了網(wǎng)間進程的概念,同時還要解決差錯控制、流量控制、報文排
18、序和連接管理等問題。不同的傳輸層協(xié)議以不同的方式向應(yīng)用層提供不同的服務(wù)。網(wǎng)絡(luò)程序開發(fā)者應(yīng)了解常用網(wǎng)絡(luò)協(xié)議的基本特征,掌握特定協(xié)議在程序中的行為方式。,1.1.3 網(wǎng)絡(luò)協(xié)議的特征,27,1.1.3 網(wǎng)絡(luò)協(xié)議的特征,1.面向連接的服務(wù)和無連接的服務(wù)協(xié)議可以提供面向連接的服務(wù),或者提供無連接的服務(wù)。面向連接服務(wù)是電話系統(tǒng)服務(wù)模式的抽象,即每一次完整的數(shù)據(jù)傳輸都要經(jīng)過建立連接,使用連接,終止連接的過程。傳輸過程中數(shù)據(jù)分組不攜帶目的
19、地址;TCP提供面向連接的虛電路服務(wù),建立連接時確定通信路徑,并經(jīng)過協(xié)商做好通信準備。連接需要很多開銷,如差錯控制和流量控制。,28,無連接服務(wù),是郵政系統(tǒng)服務(wù)的抽象,每個分組都攜帶完整的目的地址,各分組在系統(tǒng)中獨立傳送。 不能保證分組按序到達,不能進行分組出錯的恢復與重傳,不能保證傳輸?shù)目煽啃?。通信前不需建立連接,不管接收端是否做好準備接收數(shù)據(jù)。UDP是無連接協(xié)議。,1.面向連接的服務(wù)和無連接的服務(wù),29,2.面向消息的協(xié)議
20、與基于流的協(xié)議(1)面向消息的協(xié)議 面向消息的協(xié)議以消息為單位在網(wǎng)上傳送數(shù)據(jù),在發(fā)送端,消息一條一條地發(fā)送,在接收端,也只能一條一條地接收,每一條消息是獨立的,消息之間存在著邊界。,保護消息邊界:是指傳輸協(xié)議把數(shù)據(jù)當作一條獨立的消息在網(wǎng)上傳輸,接收端只能接收獨立的消息,即接收端一次只能接收發(fā)送端發(fā)出的一個數(shù)據(jù)包。,30,圖1.6 保護消息邊界的數(shù)據(jù)報傳輸服務(wù),UDP就是面向消息的,適合于交換結(jié)構(gòu)化數(shù)據(jù)。,(1)面向消息的協(xié)議,31
21、,(2)基于流的協(xié)議,基于流的協(xié)議不保護消息邊界,將數(shù)據(jù)當作字節(jié)流連續(xù)地傳輸,不管實際消息邊界是否存在。,發(fā)送端允許系統(tǒng)將原始消息分解成幾條小消息分別發(fā)送,或把幾條消息積累在一起形成大數(shù)據(jù)包發(fā)送,多次發(fā)送的數(shù)據(jù)統(tǒng)一編號。如果發(fā)送端連續(xù)發(fā)送數(shù)據(jù),接收端有可能在一次接收動作中接收兩個或更多的數(shù)據(jù)包。只要數(shù)據(jù)一到達,網(wǎng)絡(luò)堆棧就開始讀取并將其緩存,等待進程處理。,32,(2)基于流的協(xié)議,圖1.7 無消息邊界的流傳輸服務(wù),TCP是基于流的
22、協(xié)議。流傳輸,把數(shù)據(jù)當作一串數(shù)據(jù)流,不認為數(shù)據(jù)是一個一個的消息,編程時不要忽略這一點。,33,3.可靠性和次序性 可靠性:保證了發(fā)送端發(fā)出的每個字節(jié)都能到達既定的接收端,不出錯,不丟失,不重復,保證數(shù)據(jù)的完整性,稱為保證投遞。次序性:是指對數(shù)據(jù)到達接收端的順序進行處理。保護次序性的協(xié)議保證接收端收到數(shù)據(jù)的順序就是數(shù)據(jù)的發(fā)送順序,稱為按序遞交。,協(xié)議的可靠性和次序性與是否面向連接密切相關(guān),面向連接的協(xié)議可保證可靠性和次序性。,34,
23、1.1.4 高效的用戶數(shù)據(jù)報協(xié)議UDP,用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP),是一種盡力傳送的、無連接的、不保障可靠的傳輸服務(wù),是一種保護消息邊界的數(shù)據(jù)傳輸?;赨DP的應(yīng)用程序在高可靠性、低延遲的網(wǎng)絡(luò)中運行良好;在網(wǎng)絡(luò)層的基礎(chǔ)上只增加了端口號的支持;傳輸效率高,適用于交易型的應(yīng)用程序,如TFTP、SNMP、DNS等應(yīng)用進程。,35,1.1.5 可靠的傳輸控制協(xié)議TCP,1.可靠性是很多應(yīng)
24、用的基礎(chǔ) 2.TCP為應(yīng)用層提供的服務(wù) 傳輸控制協(xié)議TCP (Transmission Control Protocol,TCP)為應(yīng)用層進程提供一個面向連接的、端到端的、完全可靠的(無差錯、無丟失、無重復或失序)全雙工的流傳輸服務(wù)。,IP為TCP提供的是無連接的、盡力傳送的、不可靠的傳輸服務(wù),TCP為了向應(yīng)用層進程提供可靠的傳輸服務(wù),采取了一系列保障機制。TCP提供流傳輸服務(wù),對傳輸數(shù)據(jù)的內(nèi)部結(jié)構(gòu)一無所知,只負責將字節(jié)流原
25、封不動的傳送到對方的應(yīng)用進程。,36,3.TCP利用IP數(shù)據(jù)報實現(xiàn)了端對端的傳輸服務(wù)TCP被稱作一種端對端(end to end)協(xié)議,因為它提供一個直接從一臺計算機上的應(yīng)用進程到另一遠程計算機上的應(yīng)用進程的連接。應(yīng)用進程能請求TCP構(gòu)造一個連接,通過這個連 接發(fā)送和接收數(shù)據(jù),以及關(guān)閉連接。由TCP提供的連接叫做虛連接,虛連接是由軟件實現(xiàn)的。事實上,底層的因特網(wǎng)系統(tǒng)并不對連接提供硬件或軟件支持,只是兩臺機器上的TCP軟件模塊通過交
26、換消息來實現(xiàn)連接的虛擬。,37,圖1.8 TCP是一個端到端的傳輸協(xié)議,3.TCP利用IP數(shù)據(jù)報實現(xiàn)了端對端的傳輸服務(wù),從TCP角度來看,整個Internet是一個通信系統(tǒng),能夠接收和傳遞消息,而不會改變和干預消息的內(nèi)容。,38,4.三次握手為確保連接的建立和終止都是可靠的,TCP使用三次握手(3-way handshake)的方式來建立連接.,圖1.9 TCP的三次握手過程,39,已證明:三次握手是在包丟失、重復和延遲的情況下確
27、保非模糊協(xié)定的充要條件。如圖所示,前兩個被稱為SYN段。TCP會重發(fā)丟失的SYN段。三次握手確保TCP不會打開或關(guān)閉一個連接,直到兩端達成一致。創(chuàng)建一個連接的三次握手中,要求每一端產(chǎn)生一個隨機32位序列號。 在計算機重啟后,嘗試建立一個新的TCP連接時,要選擇一個新的隨機數(shù),可保證不受老連接的重復或延遲包的影響。,4.三次握手,40,1.2.1 基于TCP/IP協(xié)議棧的網(wǎng)絡(luò)編程,最基本的網(wǎng)絡(luò)編程方式,主要是使用各種編程語言,
28、利用操作系統(tǒng)提供的套接字網(wǎng)絡(luò)編程接口,直接開發(fā)各種網(wǎng)絡(luò)應(yīng)用程序。本門課程主要講解這種網(wǎng)絡(luò)編程的相關(guān)技術(shù)。直接利用網(wǎng)絡(luò)協(xié)議棧提供的服務(wù)來實現(xiàn)網(wǎng)絡(luò)應(yīng)用,層次比較低,編程者自由度比較大,在利用套接字實現(xiàn)了網(wǎng)絡(luò)進程通信以后,可以編寫各種網(wǎng)絡(luò)應(yīng)用程序。需掌握套接字網(wǎng)絡(luò)編程接口及應(yīng)用層網(wǎng)絡(luò)協(xié)議,41,1.2.2 基于WWW應(yīng)用的網(wǎng)絡(luò)編程,WWW稱為萬維網(wǎng)或Web,是因特網(wǎng)上最廣泛的應(yīng)用。 基于WWW應(yīng)用的網(wǎng)絡(luò)編程技術(shù),包括:所見即所得的
29、靜態(tài)網(wǎng)頁制作;HTML、JavaScript等。動態(tài)服務(wù)器頁面的制作。 ASP、PHP、JSP、J2EE、Hibernate、Spring、Struts等技術(shù)。,42,1.2.3 基于.NET框架的Web Services網(wǎng)絡(luò)編程1.關(guān)于.NET平臺微軟公司在2000年7月公布的.NET平臺是一個全新的開發(fā)框架,集成了微軟二十世紀九十年代后期的許多技術(shù),如COM+組件技術(shù)、ASP Web開發(fā)框架、XML和OOP面向?qū)ο笤O(shè)計等
30、。.NET支持新的Web服務(wù)協(xié)議,如簡單對象訪問協(xié)議(SOAP),Web服務(wù)描述語言(WSDL),統(tǒng)一描述、發(fā)現(xiàn)和集成規(guī)范(UDDI),以及以Internet為中心的理念。,43,(1) .NET平臺有四組產(chǎn)品 ① 開發(fā)工具:一組語言(C#和VB.NET)、一組開發(fā)工具(Visual Studio.NET)、一個綜合類庫(用于創(chuàng)建Web服務(wù)、Web應(yīng)用程序和Windows應(yīng)用程序)、一個用于執(zhí)行對象的公共語言運行環(huán)境(CLR)。②
31、 專用服務(wù)器:.NET企業(yè)級服務(wù)器,提供關(guān)系型數(shù)據(jù)存儲。③ Web 服務(wù)④ 設(shè)備:.NET驅(qū)動的數(shù)字化智能設(shè)備。,1.關(guān)于.NET平臺,44,(2) MS的.NET使軟件成為一種服務(wù),除了以Web為中心外,還順應(yīng)了軟件工業(yè)的趨勢,包括以下幾個方面: ① 分布式計算 ② 組件化 ③ 企業(yè)級別的服務(wù) ④ WEB 范型轉(zhuǎn)移,1.關(guān)于.NET平臺,這些都有助于互操作性、可伸縮性
32、、易得性、可管理性指標的實現(xiàn)。,45,(3) .NET平臺由三層軟件構(gòu)成 ① 頂層是全新的開發(fā)工具VS.NET:用于開發(fā)Web服務(wù)和其他應(yīng)用程序,支持4種語言和跨語言調(diào)試的集成開發(fā)環(huán)境。 ② 中間層包括三部分.NET服務(wù)器.NET服務(wù)構(gòu)件.NET框架 ③ 底層是WINDOWS操作系統(tǒng),46,(4) .NET框架的設(shè)計要支持的目標① 簡化組件的使用; ② 實現(xiàn)語言的集成; ③ 支持Internet的互操作;
33、④ 簡化軟件的開發(fā); ⑤ 簡化組件的部署;⑥ 提高可靠性;⑦ 提高安全性。,1.關(guān)于.NET平臺,47,2.關(guān)于Web服務(wù) 什么是Web服務(wù)?Web服務(wù)是松散耦合的可復用的軟件模塊,在Internet上發(fā)布后,能通過標準的Internet 協(xié)議在程序中訪問,具有以下的特點:(1)可復用;(2)松散耦合; (3)封裝;(4)Web服務(wù)可以在程序中訪問;(5)Web服務(wù)在Internet上發(fā)布。,48,W
34、eb服務(wù)用發(fā)現(xiàn)機制來定位服務(wù),實現(xiàn)松散耦合。Web服務(wù)發(fā)現(xiàn),是定位或發(fā)現(xiàn)特定的Web服務(wù)文檔的過程,文檔用Web服務(wù)描述語言(WSDL)來描述。Web服務(wù)發(fā)現(xiàn)通過.disco文件實現(xiàn),當一個Web服務(wù)出現(xiàn)后,為之發(fā)布一個.disco文件,是一個XML文檔,其中包括指向描述Web服務(wù)的其他信息資源的鏈接。程序可以動態(tài)的使用這些鏈接獲取說明文檔,最終得知Web服務(wù)的詳細信息。,2.關(guān)于Web服務(wù),49,Web服務(wù)的基本結(jié)構(gòu):Web服
35、務(wù)目錄:發(fā)布Web服務(wù)提供者能夠提供的Web服務(wù),供客戶查找;Web服務(wù)發(fā)現(xiàn):統(tǒng)一描述、發(fā)現(xiàn)和集成規(guī)范UDDI定義了一種發(fā)布和發(fā)現(xiàn)Web服務(wù)相關(guān)信息的標準方法;Web服務(wù)描述:Web服務(wù)的基本結(jié)構(gòu)建立在通過基于XML的消息進行通信的基礎(chǔ)上,而消息必須遵守Web服務(wù)描述的約定,是一個用WSDL表示的XML文檔,定義Web服務(wù)可以理解的消息格式。,2.關(guān)于Web服務(wù),50,Web服務(wù)建立在3個角色的交互上,交互的內(nèi)容包括3個操作。3個
36、角色:服務(wù)的提供者、注冊處和請求者; 3個操作:發(fā)布、查找和綁定。 這些角色和操作都圍繞Web服務(wù)本身和服務(wù)說明兩個產(chǎn)品展開。,2.關(guān)于Web服務(wù),51,Web服務(wù)的運行機理:服務(wù)提供者有一個可以通過網(wǎng)絡(luò)訪問的軟件模塊,即Web服務(wù)的實現(xiàn),并為此Web服務(wù)定義了服務(wù)描述,并把它發(fā)布給服務(wù)的請求者或服務(wù)的注冊處;服務(wù)請求者用查找操作從本地或注冊處得到服務(wù)描述,并使用描述中的信息與服務(wù)提供者實現(xiàn)綁定,然后與Web服務(wù)交互,調(diào)用其中的
37、操作。服務(wù)提供者和服務(wù)請求者是Web服務(wù)的邏輯基礎(chǔ),一個Web服務(wù)既可以是提供者也可以是請求者。,2.關(guān)于Web服務(wù),52,服務(wù)提供者從商業(yè)的角度來說是服務(wù)的擁有者,從Web服務(wù)的架構(gòu)來說是擁有服務(wù)的平臺;服務(wù)請求者是需要某種功能的商業(yè)機構(gòu),從商業(yè)的角度來說是查找調(diào)用服務(wù)的應(yīng)用程序,包括人使用的瀏覽器,或無用戶界面的應(yīng)用程序。服務(wù)注冊處從Web服務(wù)的架構(gòu)來說是供服務(wù)提供者發(fā)布服務(wù)描述的地方,供請求者找到服務(wù)以及與服務(wù)綁定的信
38、息,包括開發(fā)時的靜態(tài)綁定和運行時的動態(tài)綁定。,2.關(guān)于Web服務(wù),53,Web服務(wù)開發(fā)的生命周期,包括4個階段:創(chuàng)建:開發(fā)測試Web服務(wù)的實現(xiàn),包括服務(wù)接口描述的定義和服務(wù)實現(xiàn)描述的定義;安裝:把服務(wù)接口和服務(wù)實現(xiàn)的定義發(fā)布到服務(wù)請求者或服務(wù)注冊處,把服務(wù)的可執(zhí)行程序放到Web服務(wù)器的可執(zhí)行環(huán)境中;運行:Web服務(wù)等待調(diào)用請求,被不同的請求者通過網(wǎng)絡(luò)訪問或調(diào)用,服務(wù)請求者此時可以查找或綁定操作。管理:對Web服務(wù)應(yīng)用程序進行監(jiān)督
39、、檢查和控制,包括安全性、性能和服務(wù)質(zhì)量管理等。,2.關(guān)于Web服務(wù),54,本節(jié)著重于因特網(wǎng)上的高級服務(wù),以及提供這些服務(wù)的應(yīng)用軟件。討論網(wǎng)絡(luò)應(yīng)用軟件的客戶機/服務(wù)器交互模式,并說明網(wǎng)絡(luò)協(xié)議操作的方式為什么需要這種模式。這是構(gòu)筑所有網(wǎng)絡(luò)應(yīng)用的基礎(chǔ)。,55,因特網(wǎng)僅僅提供一個通用的通信構(gòu)架,它只負責傳送信息,而對于信息傳過去干什么用,利用因特網(wǎng)究竟提供什么服務(wù),由哪些計算機來運行這些服務(wù),如何確定服務(wù)的存在,如何使用這些服務(wù)等等問題,
40、都要由應(yīng)用軟件和用戶解決。計算機能夠利用因特網(wǎng)提供什么服務(wù)?何時啟動這些服務(wù)?都需要高層應(yīng)用軟件及用戶解決。,1.3.1 網(wǎng)絡(luò)應(yīng)用軟件的地位和功能,56,1.3.2 客戶機/服務(wù)器模式,網(wǎng)絡(luò)應(yīng)用進程通信時,普遍采用客戶機/服務(wù)器交互模式(client-server paradigm of interaction),簡稱C/S模式.這是因特網(wǎng)上應(yīng)用程序最常用的通信模式。C/S模式的建立基于以下兩點:客戶機與服務(wù)器之間的關(guān)系是非
41、對等的,服務(wù)器提供資源,客戶機請求共享這些資源;網(wǎng)間進程通信是完全異步的,互相通信的進程間既不存在父子關(guān)系,又沒有共享內(nèi)存緩沖區(qū),需要一種機制為二者間的數(shù)據(jù)交換提供同步.,57,1、服務(wù)器的工作過程C/S模式過程中服務(wù)器處于被動服務(wù)的地位。服務(wù)器要先啟動,并根據(jù)客戶機請求提供相應(yīng)服務(wù):打開一通信通道,并告知服務(wù)器所在的主機,并愿意在某一公認的地址上(熟知知端口,如FTP為21)接收客戶機請求。等待客戶機的請求到達該端口。服務(wù)
42、器接收到服務(wù)請求,處理該請求并發(fā)送應(yīng)答信號。為了能并發(fā)地接收多個客戶機的服務(wù)請求,要激活一個新進程或新線程來處理這個客戶機請求(如UNIX系統(tǒng)中用fork、exec)。服務(wù)完成后,關(guān)閉此新進程與客戶機的通信鏈路并終止.返回第二步,等待并處理另一客戶請求。在特定的情況下,關(guān)閉服務(wù)器。,58,2、客戶端的工作過程客戶方采取的是主動請求方式:打開一通信通道,并連接到服務(wù)器所在主機的特定監(jiān)聽端口。向服務(wù)器發(fā)送請求報文,等待并接收應(yīng)答;
43、繼續(xù)提出請求,與服務(wù)器的會話按照應(yīng)用協(xié)議進行。請求結(jié)束后,關(guān)閉通信通道并終止。,59,1.3.2 客戶機/服務(wù)器模式,表1.2 一些常見的網(wǎng)絡(luò)應(yīng)用,60,1.3.3 客戶機與服務(wù)器的特性,客戶端軟件的特點服務(wù)器端軟件的特點基于因特網(wǎng)的C/S模式的應(yīng)用程序的特點,61,1.3.3 客戶機與服務(wù)器的特性,1.客戶端軟件特點在進行網(wǎng)絡(luò)通信時臨時成為客戶機,但它也可在本地進行其他的計算。被用戶調(diào)用,只為一個會話運行。在打算通
44、信時主動向遠地服務(wù)器發(fā)起通信。能訪問所需的多種服務(wù),但在某一時刻只能與一個遠程服務(wù)器進行主動通信。主動地啟動與服務(wù)器的通信。在用戶的計算機上運行,不需要特殊的硬件和很復雜的操作系統(tǒng)。,62,2.服務(wù)器軟件的特點是一種專門用來提供某種服務(wù)的程序,可同時處理多個遠地客戶機的請求。當系統(tǒng)啟動時即自動調(diào)用,并且連續(xù)運行著,不斷地為多個會話服務(wù)。接受來自任何客戶機的通信請求,但只提供一種服務(wù)。被動地等待并接受來自多個遠端客戶機的通信
45、請求。在共享計算機上運行,一般需要強大的硬件和高級的操作系統(tǒng)支持。,1.3.3 客戶機與服務(wù)器的特性,63,3.基于因特網(wǎng)的C/S模式的應(yīng)用程序的特點客戶機和服務(wù)器都是軟件進程,C/S模式是網(wǎng)絡(luò)上通過進程通信建立分布式應(yīng)用的常用模型。非對稱性:服務(wù)器通過網(wǎng)絡(luò)提供服務(wù),客戶機通過網(wǎng)絡(luò)使用服務(wù),這種不對稱性體現(xiàn)在軟件結(jié)構(gòu)和工作過程上。對等性:客戶機和服務(wù)器必有一套共識的約定,必與以某種應(yīng)用層協(xié)議相聯(lián),并且協(xié)議必須在通信的兩端實現(xiàn)。
46、比如瀏覽器和3W服務(wù)器就都基于HTTP超文本傳輸協(xié)議。,1.3.3 客戶機與服務(wù)器的特性,64,服務(wù)器的被動性:服務(wù)器必須先行啟動,時刻監(jiān)聽,日夜值守,及時服務(wù),只要有客戶機請求,就立即處理并響應(yīng),回傳信息。但決不主動提供服務(wù)??蛻魴C的主動性:客戶機可以隨時提出請求,通過網(wǎng)絡(luò)得到服務(wù),也可以關(guān)機走人,一次請求與服務(wù)的過程是由客戶機首先激發(fā)的。一對多:一個服務(wù)器可以為多個客戶機服務(wù),客戶機也可以打開多個窗口,連接多個服務(wù)器。分布性
47、與共享性:資源在服務(wù)器端組織與存儲,通過網(wǎng)絡(luò)分散在多個客戶機使用。,1.3.3 客戶機與服務(wù)器的特性,3.基于因特網(wǎng)的C/S模式的應(yīng)用程序的特點,65,1.3.4 容易混淆的術(shù)語,1.服務(wù)器程序與服務(wù)器類計算機服務(wù)器(server)這個術(shù)語來指那些運行著的服務(wù)程序。服務(wù)器類計算機(server-class computer)這一術(shù)語來稱呼那些運行服務(wù)器軟件的強大的計算機。,66,圖1.10 用戶、客戶機、服務(wù)器、服務(wù)器類計算機
48、,2.客戶機與用戶“客戶機”(client)和服務(wù)器都指的是應(yīng)用進程,即計算機軟件?!坝脩簟?user)指的是使用計算機的人。,1.3.4 容易混淆的術(shù)語,67,1.3.5 客戶機與服務(wù)器的通信過程,客戶機與服務(wù)器的通信過程一般是這樣的:通信之前,服務(wù)器應(yīng)先行啟動,并通知它的下層協(xié)議棧做好接收客戶機請求的準備,然后被動地等待客戶機的通信請求,稱服務(wù)器處于監(jiān)聽狀態(tài)。一般是先由客戶機向服務(wù)器發(fā)送請求,服務(wù)器向客戶機返回應(yīng)答。客戶
49、機隨時可以主動啟動通信,向服務(wù)器發(fā)出連接請求,服務(wù)器接收這個請求,建立了二者的通信關(guān)系??蛻魴C與服務(wù)器的通信關(guān)系一旦建立,客戶機和服務(wù)器都可發(fā)送和接收信息。信息在客戶機與服務(wù)器之間可以沿任一方向或兩個方向傳遞。在某些情況下,客戶機向服務(wù)器發(fā)送一系列請求,服務(wù)器相應(yīng)地返回一系列應(yīng)答。,68,1.3.6 網(wǎng)絡(luò)協(xié)議與C/S模式的關(guān)系,客戶機與服務(wù)器作為兩個軟件實體,它們之間的通信是虛擬的,是概念上的,實際的通信要借助下層的網(wǎng)絡(luò)協(xié)議棧來進行
50、。網(wǎng)絡(luò)應(yīng)用進程與應(yīng)用層協(xié)議間的關(guān)系:為了解決具體應(yīng)用問題而彼此通信的進程,稱為網(wǎng)絡(luò)應(yīng)用進程;應(yīng)用層協(xié)議并不解決任何具體問題,而是規(guī)定了網(wǎng)絡(luò)應(yīng)用進程通信時必須遵守的約定。應(yīng)用層協(xié)議在網(wǎng)絡(luò)應(yīng)用進程之下,并為網(wǎng)絡(luò)應(yīng)用進程服務(wù),幫助應(yīng)用進程組織數(shù)據(jù)。,69,1.3.7 錯綜復雜的C/S交互,在C/S模式中,存在著三種一個與多個的關(guān)系: 一個服務(wù)器同時為多個客戶機服務(wù);一個用戶的計算機上同時運行多個連接不同服務(wù)器的客戶機;一個服務(wù)
51、器類的計算機同時運行多個服務(wù)器。,70,圖1.11 一臺計算機中的多個服務(wù)器被多個計算機的客戶機訪問,1.3.7 錯綜復雜的C/S交互,71,1.3.8 服務(wù)器如何同時為多個客戶機服務(wù),并發(fā)性是客戶機/服務(wù)器交互模式的基礎(chǔ),并發(fā)允許多個客戶機獲得同一種服務(wù),而不必等待服務(wù)器完成對上一個請求的處理。這樣才能很好地同時為多個客戶機提供服務(wù)。,72,1.3.8 服務(wù)器如何同時為多個客戶機服務(wù),圖1.12 服務(wù)器創(chuàng)建多個線程來為多個客
52、戶機服務(wù),73,1.3.9 標識一個特定服務(wù),在一臺服務(wù)器類的計算機中可以并發(fā)地運行多個服務(wù)器進程。它們都要借助協(xié)議棧來交換信息,協(xié)議棧就是多個服務(wù)器進程傳輸數(shù)據(jù)的公用通道, 這有了一個問題,既然在一個服務(wù)器類計算機中運行著多個服務(wù)器,如何能讓客戶機無二義性地指明所希望的服務(wù)?,74,圖1.13 沙漏計時器形狀的TCP/IP協(xié)議族,1.3.9 標識一個特定服務(wù),75,這個問題由傳輸協(xié)議棧提供的一套機制來解決。這種機
53、制必須賦給每個服務(wù)一個唯一的標識,并要求服務(wù)器和客戶機都使用這個標識。當服務(wù)器開始執(zhí)行時,它在本地的協(xié)議棧軟件中登記,指明它所提供的服務(wù)的標識。當客戶機與遠程服務(wù)器通信時,客戶機在提出請求時,通過這個標識來指定所希望的服務(wù)??蛻魴C端機器的傳輸協(xié)議棧軟件將該標識傳給服務(wù)器端機器。服務(wù)器端機器的傳輸協(xié)議棧則根據(jù)該標識來決定由哪個服務(wù)器程序來處理這個請求。。,1.3.9 標識一個特定服務(wù),76,隨著應(yīng)用規(guī)模的不斷擴大,軟件復雜度不斷
54、提高,面對巨大的用戶群,單服務(wù)器成了性能的瓶頸 ,為了解決這些問題,就出現(xiàn)了P2P技術(shù)。,1.4.1 P2P的定義和特征,P2P技術(shù)就是一種在計算機之間直接進行資源和服務(wù)的共享,不需要服務(wù)器介入的網(wǎng)絡(luò)技術(shù)。在P2P網(wǎng)絡(luò)中,每臺計算機同時充當著Server和Client的角色,當需要其他電腦的文件和服務(wù)時,兩臺電腦直接建立連接,本機是Client;而當響應(yīng)其他電腦的資源要求時,本機又成為提供資源與服務(wù)的Server。,77,P2P系統(tǒng)具
55、有以下特征:,(1)分散性。 (2)規(guī)模性。 (3)擴展性。 (4)Servent性。 (5)自治性。(6)互助性。(7)自組織性。,1.4.1 P2P的定義和特征,78,1.4.2 P2P的發(fā)展,P2P的發(fā)展分為三代:第一代以Napster系統(tǒng)為代表 .第二代P2P使用基于分布式哈希表(Distributer Hash Table,DHT)的協(xié)議.第三代P2P采用混合型的覆蓋網(wǎng)絡(luò)結(jié)構(gòu),不需要專門的服務(wù)器.,79,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論