客戶服務(wù)器模式與套接子_第1頁(yè)
客戶服務(wù)器模式與套接子_第2頁(yè)
客戶服務(wù)器模式與套接子_第3頁(yè)
客戶服務(wù)器模式與套接子_第4頁(yè)
客戶服務(wù)器模式與套接子_第5頁(yè)
已閱讀5頁(yè),還剩60頁(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)介

第3章:互聯(lián)網(wǎng)應(yīng)用模式和API第3.1節(jié)、客戶—服務(wù)器工作模式第3.2節(jié)、應(yīng)用程序接口API1第3.1節(jié)、客戶—服務(wù)器工作模式3.1.1C/S的基本概念3.1.2C/S關(guān)系與軟件特點(diǎn)3.1.3C/S工作過程與并發(fā)3.1.4協(xié)議端口號(hào)謝希仁教材1.6節(jié)2C/S模式部分的重點(diǎn)與難點(diǎn)1、C/S模式的基本概念2、C/S的工作過程,以及C/S軟件的各自特點(diǎn)3、**協(xié)議端口號(hào)及應(yīng)用4、插口地址概念重點(diǎn)理解:主要了解:1、熟知的協(xié)議端口號(hào)與使用2、互聯(lián)網(wǎng)C/S工作模式與TCP/IP的關(guān)系3、服務(wù)器并發(fā)處理3相互作用的客戶-服務(wù)器(Client/Server)模型在TCP/IP互聯(lián)網(wǎng)中,進(jìn)程間相互訪問的模式主要是客戶—服務(wù)器交互模式客戶和服務(wù)器分別是兩個(gè)應(yīng)用程序(進(jìn)程)??蛻粝蚍?wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器做出響應(yīng)。服務(wù)器客戶互聯(lián)網(wǎng)進(jìn)程(Process)就是運(yùn)行中的程序。解決具體應(yīng)用問題的邏輯處理和通信進(jìn)程總稱為“應(yīng)用進(jìn)程”。4為什么選擇客戶-服務(wù)器模式第一個(gè)原因:互聯(lián)網(wǎng)中資源、運(yùn)算能力和信息不均等的現(xiàn)實(shí)。資源、運(yùn)算能力不均:小到一個(gè)物理網(wǎng)絡(luò),往往是某些主機(jī)擁有大容量的外存,某些主機(jī)只有很少外存或沒有外存,有些主機(jī)擁有打印機(jī),有些主機(jī)沒有;大到整個(gè)互聯(lián)網(wǎng),少數(shù)網(wǎng)點(diǎn)擁有超速運(yùn)算能力,而大量網(wǎng)點(diǎn)由PC機(jī)構(gòu)成…….信息分布不均:比如名字信息、地址信息等。這些信息往往以數(shù)據(jù)庫(kù)形式存在于少數(shù)特權(quán)主機(jī)當(dāng)中,供局部或全局訪問。這些信息一般具有公用性,為了節(jié)約整個(gè)網(wǎng)絡(luò)的資源,沒有必要在每一臺(tái)機(jī)器上都維持一個(gè)拷貝。不均等現(xiàn)象不可避免,而客戶-服務(wù)器模式體現(xiàn)了這種現(xiàn)象并很好地適應(yīng)了這種現(xiàn)象。5第二個(gè)原因:是技術(shù)性的。

互聯(lián)網(wǎng)進(jìn)程通信與單機(jī)進(jìn)程通信不同:互聯(lián)網(wǎng)通信完全是異步的,無(wú)法知道哪個(gè)主機(jī)會(huì)在何時(shí)發(fā)起通信。因此,需要一種機(jī)制,為準(zhǔn)備通信的進(jìn)程之間建立聯(lián)系,為兩者的數(shù)據(jù)交換提供同步。

C/S模式是客觀現(xiàn)實(shí)與技術(shù)實(shí)現(xiàn)相結(jié)合的產(chǎn)物!首先,什么是早期單機(jī)應(yīng)用軟件的工作方式?和早期單機(jī)應(yīng)用軟件一般只和本機(jī)資源交互,包括通信串/并口。當(dāng)出現(xiàn)網(wǎng)絡(luò)應(yīng)用后,應(yīng)用軟件需要通過網(wǎng)絡(luò)訪問資源、交互信息,尋找一種基于網(wǎng)絡(luò)的信息交互/計(jì)算分布模式。6網(wǎng)絡(luò)中計(jì)算機(jī)進(jìn)程間通信同樣存在主叫和被叫,但沒有振鈴機(jī)制。通信進(jìn)程間收/發(fā)協(xié)調(diào)怎么辦?互聯(lián)網(wǎng)采用最簡(jiǎn)單的約定方式—C/S模式電話通信的呼叫模式:主叫發(fā)起通信、被叫振鈴和提機(jī)、開始通信。振鈴機(jī)制實(shí)現(xiàn)依賴信令系統(tǒng)控制處理,協(xié)調(diào)雙方通信(收/發(fā))矛盾。在網(wǎng)絡(luò)環(huán)境下,許多問題的解決往往是通過位于不同主機(jī)中的多個(gè)進(jìn)程之間的通信和協(xié)同工作來(lái)完成的。網(wǎng)絡(luò)的進(jìn)程之間怎樣相互協(xié)同開始工作,為什么要C/S模式?72000年前后,SIP協(xié)議的發(fā)展類似信令系統(tǒng)的互聯(lián)網(wǎng)會(huì)話(呼叫)系統(tǒng),可定義更豐富的會(huì)話模式。傳統(tǒng)TCP/IP網(wǎng)絡(luò)應(yīng)用程序使用客戶/服務(wù)器模式,但C/S不是所有應(yīng)用交互會(huì)話模式,如IP電話、視頻會(huì)議、多方游戲等。在客戶-服務(wù)器模式中,每次通信均由客戶進(jìn)程發(fā)起,服務(wù)器進(jìn)程從開機(jī)起就處于等待狀態(tài)。這可保證服務(wù)器隨時(shí)對(duì)客戶請(qǐng)求做出響應(yīng)8C/S模式是約定客戶請(qǐng)求(發(fā)起)通信、服務(wù)器響應(yīng)通信(提供特定的服務(wù)),基本可以理解為請(qǐng)求/應(yīng)答的分布計(jì)算(會(huì)話)模式?;ヂ?lián)網(wǎng)將網(wǎng)絡(luò)軟件分為客戶(client)、服務(wù)器(server),客戶和服務(wù)器都指通信中所涉及的兩個(gè)應(yīng)用進(jìn)程。即本質(zhì)是計(jì)算機(jī)軟件。9客戶軟件的特點(diǎn)在進(jìn)行通信時(shí)臨時(shí)成為客戶,但它也可在本地進(jìn)行其他的計(jì)算,提供用戶端基本應(yīng)用功能框架。被用戶調(diào)用,在用戶本地計(jì)算機(jī)上運(yùn)行,在需要時(shí)主動(dòng)向遠(yuǎn)地服務(wù)器發(fā)起通信??膳c多個(gè)服務(wù)器進(jìn)行通信。通常不需要特殊的硬件和很復(fù)雜的操作系統(tǒng)。

10服務(wù)器器軟件件的特特點(diǎn)專門用用來(lái)提提供某某種服服務(wù)的的程序序,可可同時(shí)時(shí)處理理多個(gè)個(gè)遠(yuǎn)地地或本本地客客戶的的請(qǐng)求求。在共享享計(jì)算算機(jī)上上運(yùn)行行。當(dāng)當(dāng)系統(tǒng)統(tǒng)啟動(dòng)動(dòng)時(shí)即即自動(dòng)動(dòng)調(diào)用用并一一直不不斷地地運(yùn)行行著。。被動(dòng)等等待并并接受受來(lái)自自多個(gè)個(gè)客戶戶的通通信請(qǐng)請(qǐng)求。。一般需需要強(qiáng)強(qiáng)大的的硬件件和高高級(jí)的的操作作系統(tǒng)統(tǒng)支持持。11兩個(gè)術(shù)術(shù)語(yǔ)在C/S模模式中中:服務(wù)器器:被動(dòng)動(dòng)等待待通信信的程序。不是計(jì)計(jì)算機(jī)機(jī)。服務(wù)器器級(jí)計(jì)計(jì)算機(jī)機(jī):運(yùn)行行服務(wù)務(wù)器軟軟件的的功能能強(qiáng)大大的計(jì)算機(jī)機(jī)。硬件廠廠商把把具有有高速速CPU、、大容容量存存儲(chǔ)器器、功功能強(qiáng)強(qiáng)大的的操作作系統(tǒng)統(tǒng)的計(jì)計(jì)算機(jī)機(jī)稱為為服務(wù)務(wù)器,,其實(shí)實(shí)應(yīng)該該稱為為服務(wù)務(wù)器級(jí)級(jí)計(jì)算算機(jī)。。12數(shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層數(shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層①發(fā)起連接建立請(qǐng)求應(yīng)用層層應(yīng)用層層客戶服務(wù)器因特網(wǎng)網(wǎng)②接受連接接受請(qǐng)求計(jì)算機(jī)機(jī)A計(jì)算機(jī)機(jī)B1C/S工工作作建立立過程程請(qǐng)求、、應(yīng)答答、數(shù)數(shù)據(jù)交交互,TCP/IP系統(tǒng)統(tǒng)支持持。C/S都需要TCP/IP系統(tǒng)支持C/S工工作過過程和和并發(fā)發(fā)13C/S模式式的傳傳輸機(jī)機(jī)制面向連連接傳傳輸:使用用面向向連接接的傳傳輸協(xié)協(xié)議時(shí)時(shí),兩兩個(gè)應(yīng)應(yīng)用必必須首首先建建立一一個(gè)連連接,,然后后在該該連接接上發(fā)發(fā)送數(shù)數(shù)據(jù)。。無(wú)連接接傳輸輸:應(yīng)用用可以以利用用無(wú)連連接接接口在在任何何時(shí)間間向任任何目目的發(fā)發(fā)送消消息。??蛻艉秃头?wù)務(wù)器在在通信信時(shí),,既可可以使使用面面向連連接傳傳輸協(xié)協(xié)議,,又可可以使使用無(wú)無(wú)連接接傳輸輸協(xié)議議。當(dāng)使使用面面向連連接傳傳輸時(shí)時(shí),客客戶需需要首首先形形成一一個(gè)到到特定定服務(wù)務(wù)器的的連接接,該該連接接在客客戶發(fā)發(fā)送請(qǐng)請(qǐng)求和和接收收響應(yīng)應(yīng)的過過程中中保持持不變變。當(dāng)當(dāng)客戶戶完成成對(duì)服服務(wù)的的使用用時(shí),,必須須關(guān)閉閉這一一連接接。14一臺(tái)計(jì)計(jì)算機(jī)機(jī)上可可以運(yùn)運(yùn)行多多種服服務(wù)器器:1.充分利利用硬硬件資資源。硬件件可以以被多多種服服務(wù)所所共享享。減少系系統(tǒng)管管理負(fù)負(fù)載。因?yàn)闉檫@種種情況況可以以減少少被管管理的計(jì)算算機(jī)系系統(tǒng)的的數(shù)量量。如果對(duì)對(duì)服務(wù)務(wù)的需需求比比較低低,那那么把把服務(wù)務(wù)器合合并到到一臺(tái)臺(tái)計(jì)算機(jī)機(jī)上能夠顯顯著地地減少少開銷銷,而且且并不會(huì)會(huì)明顯顯地降降低性性能。152服服務(wù)務(wù)器多多重服服務(wù):?jiǎn)斡?jì)算算機(jī)可可安裝裝多服服務(wù)器器軟件件來(lái)提提供多多重服服務(wù),,在等等待的的時(shí)候候不占占用資資源,,但同同時(shí)響響應(yīng)需需要系系統(tǒng)較較多資資源支支持?jǐn)?shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層數(shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層數(shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層應(yīng)用層層應(yīng)用層層應(yīng)用層層計(jì)算機(jī)機(jī)A計(jì)算機(jī)機(jī)B計(jì)算機(jī)機(jī)C客戶1服務(wù)器器1服務(wù)器器2客戶2因特網(wǎng)網(wǎng)16并發(fā)性性—客戶戶-服服務(wù)器器交互互模型型的基基礎(chǔ)并發(fā)服服務(wù)器器可以以同時(shí)時(shí)為多多個(gè)客客戶提提供服服務(wù),,并不不需要要每個(gè)個(gè)客戶戶等待待前一一個(gè)客客戶的的請(qǐng)求求完成成大多數(shù)數(shù)并發(fā)發(fā)服務(wù)務(wù)器都都是動(dòng)動(dòng)態(tài)操操作的的。即即只有有當(dāng)請(qǐng)請(qǐng)求到到達(dá)時(shí)時(shí),服服務(wù)器器才會(huì)會(huì)動(dòng)態(tài)態(tài)地為為到來(lái)來(lái)的請(qǐng)請(qǐng)求創(chuàng)創(chuàng)建一一個(gè)新新的線線程。。服務(wù)器器程序序由兩兩部分分組成成:主線程程和服服務(wù)線線程。。主線程程:負(fù)責(zé)責(zé)接收收請(qǐng)求求并為為請(qǐng)求求創(chuàng)建建一個(gè)個(gè)服務(wù)務(wù)線程程來(lái)處處理請(qǐng)請(qǐng)求。。并使使服務(wù)務(wù)器保保持活活躍狀狀態(tài),,主線線程在在創(chuàng)建建處理理請(qǐng)求求的服服務(wù)線線程之之后,,會(huì)等等待另另一個(gè)個(gè)請(qǐng)求求的到到來(lái)。。服務(wù)線線程:負(fù)責(zé)責(zé)處理理每個(gè)個(gè)請(qǐng)求求,然然后終終止。。如果N個(gè)客客戶同同時(shí)請(qǐng)請(qǐng)求一一臺(tái)計(jì)計(jì)算機(jī)機(jī)上的的給定定服務(wù)務(wù),則則會(huì)有有N+1個(gè)個(gè)線程程提供供服務(wù)務(wù)。主主線程程等待待額外外的請(qǐng)請(qǐng)求,,N個(gè)個(gè)服務(wù)務(wù)線程程與每每個(gè)客客戶進(jìn)進(jìn)行交交互在互聯(lián)聯(lián)網(wǎng)中中,客客戶發(fā)發(fā)起請(qǐng)請(qǐng)求完完全是是隨機(jī)機(jī)的,,很有有可能能出現(xiàn)現(xiàn)多個(gè)個(gè)請(qǐng)求求同時(shí)時(shí)到達(dá)達(dá)服務(wù)務(wù)器的的情況況。17數(shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層數(shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層數(shù)據(jù)鏈鏈路層層物理層層運(yùn)輸層層網(wǎng)絡(luò)層層應(yīng)用層層應(yīng)用層層應(yīng)用層層計(jì)算機(jī)機(jī)A計(jì)算機(jī)機(jī)B計(jì)算機(jī)機(jī)C客戶1因特網(wǎng)網(wǎng)客戶23服服務(wù)務(wù)器并并發(fā)::服務(wù)器1*副本一個(gè)服服務(wù)器器同時(shí)時(shí)響應(yīng)應(yīng)多個(gè)個(gè)請(qǐng)求求,即即服務(wù)務(wù)器并并發(fā)執(zhí)執(zhí)行是是基本本的,,而不不是逐逐個(gè)響響應(yīng)。。一個(gè)個(gè)服務(wù)務(wù)器軟軟件包包括::接收收請(qǐng)求求、處處理單單個(gè)請(qǐng)請(qǐng)求和和生成成新線線程三三部分分;當(dāng)當(dāng)請(qǐng)求求到達(dá)達(dá)時(shí),,服務(wù)務(wù)器將將它交交給一一個(gè)控控制線線程((副本本),,和已已有線線程并并發(fā)。。服務(wù)器器118復(fù)雜的的C/S交交互::實(shí)際大大型網(wǎng)網(wǎng)絡(luò)應(yīng)應(yīng)用S軟件件系統(tǒng)統(tǒng)中,,C/S的的交互互可能能是復(fù)復(fù)雜的的過程程。1、客客戶應(yīng)應(yīng)用不不限制制訪問問一個(gè)個(gè)服務(wù)務(wù)器,,客戶戶一個(gè)個(gè)應(yīng)用用可以以成為為多個(gè)個(gè)不同同服務(wù)務(wù)器((可能能不同同計(jì)算算機(jī)上上)的的客戶戶,要要處理理多個(gè)個(gè)服務(wù)務(wù)器通通信。。2、提提供某某種服服務(wù)的的服務(wù)務(wù)器同同時(shí)能能成為為另一一個(gè)服服務(wù)的的客戶戶,如如文件件服務(wù)務(wù)器在在進(jìn)行行文件件服務(wù)務(wù)處理理時(shí)需需要記記錄時(shí)時(shí)間,,可能能又要要訪問問時(shí)間間服務(wù)務(wù)器。。3、可可能發(fā)發(fā)生服服務(wù)器器的循循環(huán)依依懶,,在兩兩個(gè)服服務(wù)器器間,,或多多服務(wù)務(wù)器之之間的的依懶懶環(huán)。。19數(shù)據(jù)鏈路層層物理層運(yùn)輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層層物理層運(yùn)輸層網(wǎng)絡(luò)層N個(gè)服務(wù)器因特網(wǎng)計(jì)算機(jī)A計(jì)算機(jī)BN個(gè)客戶協(xié)議端口號(hào)C與S之間間怎樣準(zhǔn)確確識(shí)別特定服服務(wù)?20一臺(tái)運(yùn)行多多種服務(wù)器器的計(jì)算機(jī)機(jī)上,每種種服務(wù)器如如何識(shí)別發(fā)發(fā)給自己的的請(qǐng)求?解決方法:傳輸協(xié)議為為每種服務(wù)務(wù)分配一個(gè)個(gè)惟一的標(biāo)識(shí)符,服務(wù)器和和客戶必須須使用這一一標(biāo)識(shí)符。服務(wù)器開始運(yùn)行時(shí)時(shí),它向本地協(xié)議軟軟件注冊(cè)它使用的服服務(wù)標(biāo)識(shí)符符。客戶訪訪問遠(yuǎn)程服服務(wù)器時(shí),,需要指定對(duì)應(yīng)的服務(wù)務(wù)標(biāo)識(shí)符。??蛻粲?jì)算機(jī)機(jī)上的傳輸協(xié)協(xié)議軟件在在發(fā)送請(qǐng)求求時(shí),向服服務(wù)器計(jì)算算機(jī)發(fā)送這一標(biāo)識(shí)符符,服務(wù)器器計(jì)算機(jī)上上的傳輸協(xié)協(xié)議軟件使使用這一標(biāo)標(biāo)識(shí)符決定定處理這一一請(qǐng)求的服服務(wù)器程序序。21端口端口就是運(yùn)運(yùn)輸層服務(wù)務(wù)訪問點(diǎn)TSAP端口的作用就是讓應(yīng)用用層的各種種應(yīng)用進(jìn)程程都能將其其數(shù)據(jù)通過過端口向下下交付給運(yùn)運(yùn)輸層,以以及讓運(yùn)輸輸層知道應(yīng)應(yīng)當(dāng)將其報(bào)報(bào)文段中的的數(shù)據(jù)向上上通過端口口交付給應(yīng)應(yīng)用層相應(yīng)應(yīng)的進(jìn)程。。從這個(gè)意義義上講,端口是用來(lái)來(lái)標(biāo)志應(yīng)用用層的進(jìn)程程。服務(wù)器通通過它明確確所提供的的服務(wù)22FTPTELNETSMTPDNSTFTPSNMPTCPUDP2123255369161應(yīng)用層傳輸層端口層23102823…..源端口目的端口TELNETB目的端口號(hào)號(hào)=23把把包發(fā)送到到我的TELNET應(yīng)用中AB24端口端口用一個(gè)個(gè)16bit端端口號(hào)進(jìn)進(jìn)行標(biāo)志。。端口號(hào)只具具有本地意意義,即端端口號(hào)只是是為了標(biāo)志本本計(jì)算機(jī)應(yīng)應(yīng)用層中的的各進(jìn)程。在因特網(wǎng)網(wǎng)中不同計(jì)計(jì)算機(jī)的相相同端口號(hào)號(hào)是沒有聯(lián)聯(lián)系的。25兩類端口一類是熟知端口,其數(shù)值一一般為0~1023。當(dāng)一一種新的應(yīng)應(yīng)用程序出出現(xiàn)時(shí),必必須為它指指派一個(gè)熟熟知端口。。另一類則是是一般端口,用來(lái)隨時(shí)時(shí)分配給請(qǐng)請(qǐng)求通信的的客戶進(jìn)程程。26TCP/IP定義的的應(yīng)用程序序熟知端口口:FTP:21,Telnet:23,SMTP:25,DNS:53,TFTP:69,HTTP:80,SNMP:161,協(xié)議端口號(hào)定義義而一般端口口,是可以以由系統(tǒng)開開發(fā)人員隨隨時(shí)定義分分配的。27名稱TCP端口號(hào)TCP端口號(hào)描述EchoDiscardDaytimeChargenTime7913193779131937服務(wù)器返回客戶發(fā)送的所有內(nèi)容服務(wù)器丟棄客戶發(fā)送的所有內(nèi)容服務(wù)器以可讀形式返回日期與時(shí)間當(dāng)客戶發(fā)一個(gè)數(shù)據(jù)報(bào)時(shí),服務(wù)器發(fā)送一連續(xù)字符流,直至客戶中斷連接;UDP發(fā)一隨機(jī)長(zhǎng)度的數(shù)據(jù)報(bào)從服務(wù)器返回一個(gè)32bit數(shù),表示UTC時(shí)間1900.1.1午夜至今的秒數(shù)通常TCP/IP的的主要端口口號(hào):1——225之之間,端口號(hào)256—1023由Unix系系統(tǒng)占用,,端口號(hào)1024—5000作作為臨時(shí)端端口分配,,5000以以上(作為為其他服務(wù)務(wù)器)不常常出現(xiàn)。標(biāo)準(zhǔn)簡(jiǎn)單服服務(wù)端口號(hào)28為什么服務(wù)務(wù)器端口號(hào)號(hào)一定是唯唯一定義的的,而客戶戶端的端口口號(hào)可以是是按定義的的,也可以以臨時(shí)自指指定的,只只具有本地地意義?為什么服務(wù)務(wù)器端口號(hào)號(hào)一定是唯唯一定義的的,而客戶戶端的端口口號(hào)可以是是按定義的的,也可以以臨時(shí)指定定的?答:協(xié)議端端口號(hào)解決決是C/S交互過程程中服務(wù)器器定位問題題,使所有有客戶都能能正確找到到需要的服服務(wù),所以以服務(wù)器端端口一定唯唯一確定的的,而客戶戶源端口號(hào)號(hào)只對(duì)客戶戶自己有效效。一計(jì)算機(jī)可可以有多個(gè)個(gè)應(yīng)用進(jìn)程程,通過不不同的端口口號(hào)(源不不同/目的的相同,源源同/目的的不同,均均不同),,同時(shí)進(jìn)行行多任務(wù)處處理,此時(shí)時(shí)TCP/UDP、、IP完成成復(fù)用與分分用。協(xié)議端口號(hào)號(hào)解決是C/S交互互過程中服服務(wù)器定位位問題,使使所有客戶戶都能正確確找到需要要的服務(wù),,所以服務(wù)務(wù)器端口一一定唯一確確定的,而而客戶源端端口號(hào)只對(duì)對(duì)客戶自己己有效。29實(shí)際通過TCP應(yīng)用用,除端口口外,還必必須有IP地址。TCP連接接的兩個(gè)端端點(diǎn)(端與與端通信)),是由端端點(diǎn)地址((IP地址址,端口號(hào)號(hào))確定,,(IP地址址,端口號(hào)號(hào))也被稱稱為插口((Socket),,或者端地地址(EndpointAddress)。。實(shí)際通過TCP通信信,除端口口外,為什什么必須有有IP地址址?30TCP/UDP協(xié)議議插口04101631

源端口

目的端口

TCP/UDP頭部數(shù)據(jù)其它字段TCP/UDP頭部數(shù)據(jù)IP頭部32bit源地址32bit目的地址其它字段從IP包結(jié)結(jié)構(gòu)看,網(wǎng)網(wǎng)絡(luò)應(yīng)用進(jìn)進(jìn)程通信需需要端地址址(IP地地址,端口口號(hào))31第3.1總總結(jié)1、什么是是C/S工作模式?2、網(wǎng)絡(luò)應(yīng)應(yīng)用為什么么需要C/S模式?3、為什么通常常服務(wù)器軟軟件復(fù)雜?4、應(yīng)用進(jìn)進(jìn)程通信端端口地址,,為什么還還要IP地地址?是否否需要物理理網(wǎng)地址??32第3.1章章作業(yè)1、客戶軟軟件和服務(wù)務(wù)器軟件主主要特點(diǎn)。。2、一個(gè)服務(wù)器器軟件通常常需要包括括哪些主要要的功能部部分。3、為什么通常常服務(wù)器端端口號(hào)是唯唯一定義的的,而客戶戶端的端口口號(hào)可以臨臨時(shí)指定??33第3.2節(jié)節(jié)、應(yīng)用程程序接口API應(yīng)用程序接接口概述3.2.2套接字字API基基本結(jié)構(gòu)3.2.3實(shí)現(xiàn)套套接字API的過程程3.2.4套接字字API的的其它問題題3.2.5套接字字API實(shí)實(shí)現(xiàn)實(shí)例34第3.2節(jié)節(jié):重點(diǎn)與與難點(diǎn)1、應(yīng)用編編程接口的的概念與重重要性2、套接字字API的的特點(diǎn)/函函數(shù)/參數(shù)數(shù)3、Socket套接字API實(shí)現(xiàn)的的基本過程程重點(diǎn)理解::主要了解::1、套接字API主要過過程的作用用2、套接字字繼承與服服務(wù)器并發(fā)發(fā)35應(yīng)用程序接接口概述C/S模式式解決了應(yīng)應(yīng)用程序通通過互聯(lián)網(wǎng)網(wǎng)交互方式式—等待/請(qǐng)求,并并通過端口口號(hào)來(lái)標(biāo)識(shí)識(shí)服務(wù)器提提供的某種種服務(wù)。盡管TCP/IP并并不復(fù)雜雜,但應(yīng)用用程序編寫寫當(dāng)然不希希望每次逐逐一填寫TCP/IP的各個(gè)個(gè)報(bào)頭;應(yīng)應(yīng)用程序?qū)?duì)網(wǎng)絡(luò)低層層通信細(xì)節(jié)節(jié)實(shí)際不想想關(guān)心,所所以在應(yīng)用用程序和通通信網(wǎng)絡(luò)之之間怎樣形形成標(biāo)準(zhǔn)的的接口—API,應(yīng)應(yīng)用程序只只需要通過過API就就能完成通通信和數(shù)據(jù)據(jù)交互,是是網(wǎng)絡(luò)應(yīng)用用發(fā)展的一一大進(jìn)步。。互聯(lián)網(wǎng)應(yīng)用用程序怎樣樣和TCP/IP協(xié)協(xié)議通信接接口?即C、S編編程怎樣使使用TCP/IP協(xié)協(xié)議進(jìn)行通通信與數(shù)據(jù)據(jù)交互。傳統(tǒng)通過網(wǎng)網(wǎng)絡(luò)(DDN、FR、ATM)的交互互,使用計(jì)計(jì)算機(jī)串行行接口或LAN仿真真,通信網(wǎng)網(wǎng)把數(shù)據(jù)傳傳遞到對(duì)方方計(jì)算機(jī),,其余需要要計(jì)算機(jī)應(yīng)應(yīng)用處理。。網(wǎng)網(wǎng)絡(luò)編程程接口發(fā)展展背景存在問題::1、計(jì)算算機(jī)應(yīng)用和和網(wǎng)絡(luò)兩層層皮;2、、計(jì)算機(jī)應(yīng)應(yīng)用必須和和底層硬件件(接口))打交道;;嚴(yán)重阻礙礙網(wǎng)絡(luò)應(yīng)用用發(fā)展。36數(shù)據(jù)鏈路層層物理層運(yùn)輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層層物理層運(yùn)輸層網(wǎng)絡(luò)層N個(gè)服務(wù)器器因特網(wǎng)計(jì)算機(jī)A計(jì)算機(jī)BN個(gè)客戶應(yīng)用進(jìn)程通通過端地址址建立可靠靠雙工通信信連接和收收發(fā)數(shù)據(jù),,應(yīng)用程序序或編程人人員怎樣處處理各種協(xié)協(xié)議(TCP/IP/IGMP)的具具體報(bào)格式式?需要逐一包包文內(nèi)容填填寫?37實(shí)際互聯(lián)網(wǎng)網(wǎng)應(yīng)用程序序只需要通通過API完成通信和和數(shù)據(jù)交互互的調(diào)用,,從而不需需要處理網(wǎng)網(wǎng)絡(luò)的細(xì)節(jié)節(jié),是網(wǎng)絡(luò)絡(luò)應(yīng)用發(fā)展展的一大進(jìn)進(jìn)步。API體現(xiàn)現(xiàn)了現(xiàn)代網(wǎng)網(wǎng)絡(luò)又一個(gè)個(gè)重要思想——應(yīng)用程程序與網(wǎng)絡(luò)絡(luò)“一體”又又“分離””。一體:把網(wǎng)絡(luò)通通信對(duì)上抽抽象API成為計(jì)算算機(jī)體系組組成部分,,網(wǎng)絡(luò)API定義與與設(shè)計(jì)已成成為所有處處理網(wǎng)絡(luò)應(yīng)應(yīng)用與網(wǎng)絡(luò)絡(luò)通信底層層接口的實(shí)實(shí)際方法,,在3G/4G,NGN網(wǎng)絡(luò)絡(luò)中最大標(biāo)標(biāo)準(zhǔn)組就是是解決其API的問問題。分離:實(shí)現(xiàn)高效效、簡(jiǎn)捷API,就就意味著實(shí)實(shí)現(xiàn)應(yīng)用與與網(wǎng)絡(luò)通信信底層“分分離”,就就可不關(guān)心心通信實(shí)現(xiàn)現(xiàn)的細(xì)節(jié),,大大降低低了網(wǎng)絡(luò)應(yīng)應(yīng)用開發(fā)難難度,促進(jìn)進(jìn)應(yīng)用發(fā)展展。38應(yīng)用程序接接口API是應(yīng)用程程序通過TCP/IP協(xié)議軟軟件進(jìn)行通通信交互的的接口,它它是一組定定義的操作作(非硬件件),API決定了了網(wǎng)絡(luò)應(yīng)用用所能達(dá)到到功能和這這些功能編編程開發(fā)的的難度。應(yīng)用程序接接口API是一般由操作系統(tǒng)統(tǒng)(或編程程系統(tǒng))提供,是由由應(yīng)用程序序調(diào)用的一一個(gè)過程及及過程所需需的參數(shù)。。通常一個(gè)個(gè)API基基本操作是是獨(dú)立過程程,如API一個(gè)過過程完成建建立通信,,另一個(gè)過過程完成數(shù)數(shù)據(jù)接收。。應(yīng)用程序接接口API概念A(yù)PI:ApplicationProgramInterface,應(yīng)用程序接接口或應(yīng)用用編程接口口39通信協(xié)議只只是規(guī)定協(xié)協(xié)議應(yīng)該提提供的操作作,并不指指定應(yīng)用程程序與協(xié)議議進(jìn)行交互互時(shí)的API。協(xié)議端口與API接口有有什么區(qū)別別?協(xié)議端口是是服務(wù)器軟軟件的標(biāo)識(shí)識(shí),16位位整數(shù);API是一一個(gè)執(zhí)行過過程。40套接字API(SocketAPI)互聯(lián)網(wǎng)API主要有有兩類:1、伯克利利版API(SocketAPI,,稱為套接接字API),從BSDUnix版版發(fā)展而來(lái)來(lái)。2、A&AT版TLI運(yùn)運(yùn)輸層接口口TransportLayInterface盡管互聯(lián)網(wǎng)網(wǎng)允許OS系統(tǒng)選擇擇API,,但目前Windows(WinSoc)、Unix、、Linux主流OS系統(tǒng)廣廣泛接受套接字API,所以以成為事實(shí)實(shí)上標(biāo)準(zhǔn)。。套接字API是操作作系統(tǒng)的一一個(gè)組成部部分。41SocketAPI:應(yīng)用程序與與TCP/IP協(xié)議議之間的接接口,它作為一種通通用的通信信編程接口口而設(shè)計(jì)。。42Socket是應(yīng)用用層與TCP/IP協(xié)議族通通信的中間間軟件抽象象層,它是是一組接口口。在設(shè)計(jì)計(jì)模式中,,Socket其實(shí)實(shí)就是一個(gè)個(gè)門面模式式,它把復(fù)復(fù)雜的TCP/IP協(xié)議族隱隱藏在Socket接口后面面,對(duì)用戶戶來(lái)說(shuō),一一組簡(jiǎn)單的的接口就是是全部,讓讓Socket去組組織數(shù)據(jù),,以符合指指定的協(xié)議議。43套接字API的基本本結(jié)構(gòu)套接字API是Unix操作作系統(tǒng)的發(fā)發(fā)展而來(lái)的的,套接字字API網(wǎng)網(wǎng)絡(luò)通信描描述基本保保持Unix對(duì)設(shè)備備、文件的的操作風(fēng)格格。如Unix文文件操作采采用“open—read——write—close””過程模式式,首先產(chǎn)產(chǎn)生一個(gè)操操作的描述述符,然后后每個(gè)過程程由函數(shù)+參數(shù)具體體組成。套接字API同樣用用描述符的的方法,在在使用通信協(xié)協(xié)議前必須須申請(qǐng)操作作系統(tǒng)生成成一個(gè)套接接字,系統(tǒng)返回回一個(gè)小整整型數(shù)(如如3、5))作為描述述符來(lái)識(shí)別別這個(gè)套接接字,以后后通信過程程中這個(gè)套套接字作為為參數(shù),而而不必每次次傳輸時(shí)指指明細(xì)節(jié)。。44API過程程中應(yīng)用程程序選擇的的端口、通通信地址、、客戶或服服務(wù)器、使使用協(xié)議等等怎么表達(dá)達(dá)呢?套接字API通過定定義多個(gè)函函數(shù)(而不是單個(gè)個(gè),為什么么?),來(lái)確定定參數(shù)和選選項(xiàng);既當(dāng)當(dāng)創(chuàng)建套接接字描述符符后,調(diào)用用多個(gè)函數(shù)數(shù)過程說(shuō)明明套接字使使用的具體體細(xì)節(jié)。總結(jié):套接接字API的使用是是通過首先先創(chuàng)建套接接字(返回回整型描述述符),然然后調(diào)用多多個(gè)包含具具體參數(shù)和和選項(xiàng)的函函數(shù)過程,,完成應(yīng)用用程序和協(xié)協(xié)議通信的的接口。為什么是多多個(gè)而不是是單個(gè),單單個(gè)絕對(duì)不不行嗎?45實(shí)現(xiàn)套接字字API的的過程Socket過程該過程創(chuàng)建建一個(gè)套接接字并返回回一個(gè)整數(shù)數(shù)描述字。。descriptor=socket(protofamily,type,protocol)close過程該過程告訴訴系統(tǒng)終止止對(duì)套接字字的使用。。close(socket)bind過過程服務(wù)器使用用該過程來(lái)來(lái)提供服務(wù)務(wù)器所使用用的、用于于等待連接接的協(xié)議端端口號(hào)。bind(socket,localaddr,addrlen)46listen過程服務(wù)器調(diào)用用該過程來(lái)來(lái)等待來(lái)自自客戶的連連接。listen(socket,queuesize)accept過程面向連接的的服務(wù)器必必須調(diào)用accept過程才才能接收下下一個(gè)連接接請(qǐng)求。newsock=accept(socket,caddress,caddresslen)connect過程程客戶調(diào)用該該過程建立立與特定服服務(wù)器之間間的連接。。connect(socket,saddress,saddresslen)47send過過程如果套接字字被連接,,可以利用用該過程發(fā)發(fā)送數(shù)據(jù)。。send(socket,data,length,flags)sendto過程和和sendmsg過程允許客戶或或服務(wù)器使使用無(wú)連接接套接字發(fā)發(fā)送數(shù)據(jù)。。sendto(socket,data,length,flags,destaddress,addresslen)sendmsg(socket,msgstruct,flags)是一個(gè)結(jié)構(gòu)構(gòu),該結(jié)構(gòu)構(gòu)包含了關(guān)關(guān)于目的地地址,目的的地址的長(zhǎng)長(zhǎng)度,發(fā)送送的消息,,以及消息息的長(zhǎng)度等等信息。48recv過過程應(yīng)用可以調(diào)調(diào)用該過程程從連接套套接字中接接收數(shù)據(jù)。。recv(socket,buffer,length,flags)recvfrom過過程和recvmsg過程程如果套接字字并沒有被被連接,應(yīng)應(yīng)用可以用用于接收來(lái)來(lái)自任意發(fā)發(fā)送者的消消息recvfrom(socket,buffer,length,flags,sndraddr,saddrlen)recvmsg(socket,msgstruct,flags)是一個(gè)結(jié)構(gòu)構(gòu),該結(jié)構(gòu)構(gòu)含有接收收消息的地地址和發(fā)送送者的IP地址。49實(shí)現(xiàn)套接字字API的的過程1、創(chuàng)建一個(gè)套套接字并返返回一個(gè)返回整型描描述符DescriAptor=socket(pf,type,protocol)Pf:協(xié)議議棧TCP/IP/AppleTalk,type:連接/無(wú)無(wú)連接,protocol:具體協(xié)協(xié)議tcp/udp2、Bind過程Bind(socket,locaaddr,addrlen)服務(wù)器使用Bind過程賦賦予套接字字特定的端地址,實(shí)現(xiàn)socket和端地地址聯(lián)編,,使用無(wú)連連接協(xié)議時(shí)時(shí)已準(zhǔn)備好好接收信息息。Locaaddr是是本地端地地址的一般般socket地址址描述結(jié)構(gòu)構(gòu),TCP/IP地地址和協(xié)議議端口號(hào)將將按socket地地址結(jié)構(gòu)表表達(dá)。504、Listen過過程Listen(socket,queuesize)如服務(wù)器是是面向連接接的,需要要使用Listen過程將將套接字設(shè)設(shè)置為被動(dòng)動(dòng)模式,然然后必須接接受一個(gè)連連接請(qǐng)求。。Queuesize:客戶請(qǐng)請(qǐng)求隊(duì)列的的長(zhǎng)度,開開始為空。。3、Close過程程close(socket)close過程的調(diào)調(diào)用告訴系系統(tǒng)終止對(duì)對(duì)一個(gè)套接接字socket的的使用,系系統(tǒng)對(duì)套接接字進(jìn)行釋釋放,應(yīng)用用程序與傳傳輸協(xié)議間間停止數(shù)據(jù)據(jù)交互。如如果套接字字在使用面面向連接的的傳輸時(shí),,在關(guān)閉套套接字前先先關(guān)閉連接接。515、Accept過過程newsock=accept(caddress,caddresslen)使用面向連連接通信時(shí)時(shí),Accept過程在套套接字中確確定了連接接客戶的地地址,服務(wù)務(wù)器通過調(diào)調(diào)用Accept過過程接受下下一個(gè)連接接。然后Accept為該連連接創(chuàng)建一一個(gè)新套接接字newsock返回調(diào)調(diào)用者,服服務(wù)器將用用這個(gè)新套套接字和客客戶通信,,直至與該該客戶通信信結(jié)束。caddress::按照socket地址結(jié)構(gòu)構(gòu)表達(dá)的客客戶端IP地址。4-5步驟驟是面向連連接通信時(shí)時(shí)服務(wù)器必必須的過程程調(diào)用,完完成被動(dòng)地地接受一個(gè)個(gè)連接請(qǐng)求求,然后創(chuàng)創(chuàng)建一個(gè)服服務(wù)器與特特定客戶TCP連接接的新的套套接字,依依次通信,,同時(shí)原套套接字仍保保持不變;;當(dāng)該客戶戶連接結(jié)束束后,使用用原套接字字接受來(lái)自自下一個(gè)客客戶的連接接。526、客戶端Connect過程Connect(socket,saddress,saddresslen)當(dāng)使用面向連連接的TCP,Connect過過程啟動(dòng)一個(gè)個(gè)指定服務(wù)器器的運(yùn)輸層連連接,本質(zhì)上上說(shuō)Connect是客客戶與已經(jīng)調(diào)調(diào)用了Accept過程程的服務(wù)器進(jìn)進(jìn)行連接的過過程。saddress是按一般般socket地址結(jié)構(gòu)構(gòu)表達(dá)的服務(wù)務(wù)器IP地址址和協(xié)議端口口號(hào)。非常有意思的的是,當(dāng)客戶戶使用無(wú)連接接的UDP協(xié)協(xié)議時(shí),也可可以使用Connect過程,此此時(shí)并不啟動(dòng)動(dòng)一個(gè)連接,,而僅僅使得得socket與服務(wù)器端地址址聯(lián)編。通常對(duì)無(wú)連接接的傳輸一般般每一個(gè)IP報(bào)指明目的的地址,但許許多應(yīng)用客戶戶只和一個(gè)服服務(wù)器通信,,也即具有同同樣的端目的的地址。此時(shí)時(shí)客戶可以通通過套接字的的地址記錄,,發(fā)送多條信信息,而不必必每條指明地地址。無(wú)連接傳輸?shù)牡腃onnect過程調(diào)調(diào)用,建立連連續(xù)無(wú)地址的的IP包傳輸輸,實(shí)際上理理解為客戶程程序不需要要給API指指明端地址,,而使用API默認(rèn)地址址。537、Send過程send(socket,data,length,flags)當(dāng)套接字連接接建立后,客客戶與服務(wù)務(wù)器就需要發(fā)發(fā)送信息,客客戶與服務(wù)器器使用Send過程完完成數(shù)據(jù)發(fā)送送。data是是內(nèi)存待發(fā)數(shù)數(shù)據(jù)的地址,,length是數(shù)據(jù)字字節(jié)數(shù),flags特殊選項(xiàng)項(xiàng)位(常用于于系統(tǒng)調(diào)試))。sendto(socket,data,length,flags,destaddress,addresslen)sendto過程是客戶戶或服務(wù)器在在未連接時(shí)發(fā)發(fā)送信息,destaddress是目的的地址的socket結(jié)結(jié)構(gòu)表達(dá)。sendmgs(socket,mgsstrucct,flags)sendmgs過程完全全同sendto,但定定義結(jié)構(gòu)簡(jiǎn)化化參數(shù)表達(dá),,mgsstrucct是包括目目的地址、地地址長(zhǎng)度,待待發(fā)信息位置置和信息長(zhǎng)度度的結(jié)構(gòu)表達(dá)達(dá)(具體不展展開)。允許客戶或服服務(wù)器使用無(wú)無(wú)連接套接字字發(fā)送數(shù)據(jù)。。548、Recv過程recv(socket,buffer,length,flags)當(dāng)套接字連接接建立后,客客戶與服務(wù)務(wù)器也同樣需需要接收信息息,客戶與服服務(wù)器使用Recv過程程完成從一個(gè)個(gè)連接的套接接字中接收數(shù)數(shù)據(jù)。buffer是內(nèi)存中中存放接收到到的數(shù)據(jù)的地地址,length是緩緩沖區(qū)大小,,flags控制細(xì)節(jié)節(jié)選項(xiàng)。recvfrom(socket,buffer,length,flags,sndraddr,saddrlen)recvfrom過程是是客戶或服務(wù)務(wù)器在未連接接時(shí)接收任一一客戶發(fā)來(lái)的的信息,同時(shí)時(shí)對(duì)應(yīng)每收到到的信息返回回發(fā)送地址作作為應(yīng)答,sndraddr是發(fā)送送地址的socket結(jié)結(jié)構(gòu)表達(dá)。recvmgs(socket,mgsstrucct,flags)recvmgs過程完全全同recvfrom,,簡(jiǎn)化參數(shù)數(shù)的表達(dá),并并和sendmgs過過程對(duì)應(yīng)。mgsstrucct是一個(gè)結(jié)構(gòu),,該結(jié)構(gòu)含有有接收消息的的地址和發(fā)送送者的IP地地址。55其他套接子過過程:1.getpeername過程:服務(wù)器在調(diào)調(diào)用accept過程接接收連接請(qǐng)求之后,可可以調(diào)用該過過程,以獲得得啟動(dòng)連接的的遠(yuǎn)程客戶的完整地地址。2.gethostname過程:客戶或服務(wù)務(wù)器可以調(diào)用用該過程來(lái)獲取運(yùn)行該程程序的計(jì)算機(jī)機(jī)的信息。3.gethostbyname過程:通過計(jì)算機(jī)機(jī)名字返回該該計(jì)算機(jī)的IP地址。。客戶經(jīng)常使使用該過程將將用戶輸入的的名字轉(zhuǎn)換成相應(yīng)的協(xié)協(xié)議軟件所需需的IP地址址。4.gethostbyaddr過程:給出一臺(tái)計(jì)計(jì)算機(jī)的IP地址,它將將返回該計(jì)算機(jī)機(jī)的名字。當(dāng)當(dāng)要向人們顯顯示主機(jī)信息息時(shí),客戶或服務(wù)器就就可以使用該該過程。write(socket,buffer,length)read(socket,buffer,length)套接字API繼承Unix的I/O一般操作,,對(duì)已建立連連接的套接字字,可通過write-read套套接字進(jìn)行網(wǎng)網(wǎng)絡(luò)數(shù)據(jù)傳輸輸,其功能同同send-recv過過程。56客戶-服務(wù)器器模式的socket實(shí)實(shí)現(xiàn)框架服務(wù)器Socket()bind()listen()accept()阻塞,等待客客戶連接請(qǐng)求求recv()處理服務(wù)請(qǐng)求求send()Socket()connect()send()recv()客戶建立連接服務(wù)請(qǐng)求服務(wù)響應(yīng)面向連接的客客戶-服務(wù)器器服務(wù)器必須首首先啟動(dòng),直直到它執(zhí)行完完accept()調(diào)用用,進(jìn)入等待待狀態(tài)后,方方能接受客戶戶請(qǐng)求。假如如客戶先啟動(dòng)動(dòng),則connect()將返回出出錯(cuò)代碼,連連接不成功。。服務(wù)器端地地址聯(lián)編創(chuàng)建套接字等待連接請(qǐng)求求,請(qǐng)求隊(duì)列長(zhǎng)度度客戶地址新套套接字建立連接服務(wù)器端地址址獲取IP地址址與定義端口口57套接字、并發(fā)發(fā)與線程套接字API設(shè)計(jì)需要適適應(yīng)服務(wù)器并并發(fā),當(dāng)服務(wù)務(wù)器并發(fā)創(chuàng)建建一個(gè)副本時(shí)時(shí),每個(gè)新創(chuàng)創(chuàng)建的線程從從創(chuàng)建的線程程繼承所有套套接字的一個(gè)個(gè)副本,也即即繼承擁有了了所有套接字字的訪問權(quán)。。一個(gè)并發(fā)服務(wù)務(wù)器首先打開開一個(gè)套接字字以接受連接接,但系統(tǒng)在在連接請(qǐng)求到到達(dá)時(shí),接著著創(chuàng)建一個(gè)新新套接字處理理特定的連接接;主線程不不使用新的套套接字,新線線程也不會(huì)使使用舊套接字字。58簡(jiǎn)單例子的API實(shí)例::客戶建立一個(gè)個(gè)與服務(wù)器的的連接,然后后等待輸出。。當(dāng)一個(gè)連接接請(qǐng)求到達(dá)時(shí),,服務(wù)器創(chuàng)建建一條ASCII文本消消息,記錄訪訪問它的客戶的數(shù)目,,然后通過連連接發(fā)送這一一消息,最后后關(guān)閉連接。??蛻麸@示接收收的數(shù)據(jù),然然后退出。如果一個(gè)客戶戶向該服務(wù)器器連接了10次,則客戶戶接到并打印印的信息為::Thisserverhasbeencontacted10times.59該實(shí)例套接字字過程調(diào)用順順序getprotobynamesocketbindlistenacceptsendclose服務(wù)器客戶gethostbynamegetprotobynamesocketconnectrecvclose產(chǎn)生協(xié)議內(nèi)部部二進(jìn)制標(biāo)識(shí)識(shí)創(chuàng)建一個(gè)套接接字說(shuō)明一個(gè)本地地協(xié)議端口將該套接字置置于被動(dòng)方式式接收連結(jié)請(qǐng)求求向客戶發(fā)送報(bào)報(bào)文關(guān)閉新的連結(jié)結(jié)無(wú)限循環(huán)將計(jì)算機(jī)名轉(zhuǎn)轉(zhuǎn)換為IP地地址跟服務(wù)器建立立連結(jié)接收來(lái)自服務(wù)務(wù)器的數(shù)據(jù)這是客戶構(gòu)造造一個(gè)連接并并等待服務(wù)器器輸出,一個(gè)個(gè)服務(wù)器每收收到一個(gè)請(qǐng)求求返回一個(gè)可可打印信息的的,然后關(guān)閉閉連接的實(shí)例例,對(duì)SocketAPI的調(diào)用用過程。Getprotobyname是計(jì)計(jì)算機(jī)名((IP地址))轉(zhuǎn)化Socket使用用的二進(jìn)制形形式。60為什么客戶端端沒有Socket與端端地址聯(lián)編((綁定)?對(duì)客戶端來(lái)說(shuō)說(shuō):本地IP地址是確定定,而端口定定義也是只有有本地意義缺缺?。纯梢砸允褂萌笔。?,所以Socket過過程不需特別別綁定,在IP/TCP/UDP;;而服務(wù)器則則一定需要端端口綁定Bind過程。。61套接字API實(shí)現(xiàn)的主要要過程:Bind創(chuàng)建套套接字Listen協(xié)議連接方式服務(wù)器端地地址聯(lián)編連接等待連接請(qǐng)求求,請(qǐng)請(qǐng)求隊(duì)列長(zhǎng)度度Accept客戶地址新套套接字建立連連接SendRecvConnect服務(wù)器端端地址SendRecvSendtoRecvto非連接服務(wù)器:客戶:創(chuàng)建套套接字客戶:創(chuàng)建套套接字有連接服務(wù)無(wú)連接服務(wù)Close本地機(jī)IP地地址與默認(rèn)端端口獲取IP地址址與定義端口口62作業(yè)1、API是是否由TCP/IP所定定義的,目前前互聯(lián)網(wǎng)最常常用的API體系是什么么。2、API接接口與協(xié)議端端口、插口有有什么區(qū)別??3、對(duì)一個(gè)面面向連接的TCP通信,,服務(wù)器端套接字API的實(shí)現(xiàn)要經(jīng)經(jīng)過那些過程程調(diào)用?4、對(duì)一個(gè)非連接接通信,客戶戶端套接字API的實(shí)現(xiàn)要經(jīng)經(jīng)過那些過程程調(diào)用?答2:兩者都都是應(yīng)用程序序與通信層交交互所定義的的。但API是編程接口口,用一組編編程規(guī)范來(lái)解解決應(yīng)用程序序怎樣調(diào)用TCP/IP通信;而協(xié)協(xié)議端口只是是TCP中的的一個(gè)參數(shù),,指明通信是是與哪一個(gè)應(yīng)應(yīng)用程序交互互。63思考題有人認(rèn)為API是應(yīng)用程程序和互聯(lián)網(wǎng)網(wǎng)之間的接口口,也有人說(shuō)說(shuō)API是應(yīng)應(yīng)用程序與操操作系統(tǒng)之間間的接口,哪哪種說(shuō)法正確確,為什么??649、靜夜四無(wú)無(wú)鄰,荒居居舊業(yè)貧。。。12月-2212月-22Saturday,December31,202210、雨中黃葉樹樹,燈下白頭頭人。。06:34:0006:34:0006:3412/31/20226:34:00AM11、以我獨(dú)沈久久,愧君相見見頻。。12月-2206:34:0006:34Dec-2231-Dec-2212、故人江海海別,幾度度隔山川。。。06:34:0006:34:0006:34Saturday,December31,202213、乍乍見見翻翻疑疑夢(mèng)夢(mèng),,相相悲悲各各問問年年。。。。12月月-2212月月-2206:34:0006:34:00December31,202214、他鄉(xiāng)生白發(fā)發(fā),舊國(guó)見青青山。。31十二月月20226:34:00上午06:34:0012月-2215、比不了得得就不比,,得不到的的就不要。。。。十二月226:34上上午12月-2206:34December31,202216、行動(dòng)出成成果,工作作出財(cái)富。。。2022/12/316:34:0006:34:0031Dece

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論