![第2講 協(xié)議軟件接口_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/2445ea6a-9f08-4047-b569-5a0b0eda6120/2445ea6a-9f08-4047-b569-5a0b0eda61201.gif)
![第2講 協(xié)議軟件接口_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/2445ea6a-9f08-4047-b569-5a0b0eda6120/2445ea6a-9f08-4047-b569-5a0b0eda61202.gif)
![第2講 協(xié)議軟件接口_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/2445ea6a-9f08-4047-b569-5a0b0eda6120/2445ea6a-9f08-4047-b569-5a0b0eda61203.gif)
![第2講 協(xié)議軟件接口_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/2445ea6a-9f08-4047-b569-5a0b0eda6120/2445ea6a-9f08-4047-b569-5a0b0eda61204.gif)
![第2講 協(xié)議軟件接口_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/2445ea6a-9f08-4047-b569-5a0b0eda6120/2445ea6a-9f08-4047-b569-5a0b0eda61205.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第2 2講講 協(xié)議軟件接口協(xié)議軟件接口WindowsWindows網(wǎng)絡(luò)編程基礎(chǔ)網(wǎng)絡(luò)編程基礎(chǔ)1.1.協(xié)議的軟件接口協(xié)議的軟件接口1.TCP/IP協(xié)議軟件接口的特點(diǎn)現(xiàn)象:TCP/IP標(biāo)準(zhǔn)沒有規(guī)定應(yīng)用軟件與TCP/IP協(xié)議軟件如何接口的細(xì)節(jié),只建議了所需的功能集。操作系統(tǒng)操作系統(tǒng)應(yīng)用程序應(yīng)用程序TCP/IP實(shí)現(xiàn)實(shí)現(xiàn)?TCP/IP協(xié)議軟件接口協(xié)議軟件接口特點(diǎn):不精確指明TCP/IP的設(shè)計(jì)者盡量避免使用任何一家廠商的內(nèi)部數(shù)據(jù)表示。TCP/IP標(biāo)準(zhǔn)盡量避免讓接口使用那些只在某一家廠商的操作系統(tǒng)中可用的特征目的:使得協(xié)議的兼容性強(qiáng),可以運(yùn)行在多廠商的環(huán)境之中。目前的一些協(xié)議軟件接口Berkeley UNI
2、X:套接字接口(或socket)微軟:Windows SocketAT&T UNIX(System V):TLI(Transport Layer Interface)1.TCP/IP協(xié)議軟件接口的特點(diǎn)2.如何訪問TCP/IP協(xié)議?兩種基本方法:設(shè)計(jì)者發(fā)明一種新的系統(tǒng)調(diào)用,應(yīng)用程序用它們來訪問TCP/IP;列舉出所有的概念性操作為每個(gè)操作指定一個(gè)名字和參數(shù)將每個(gè)操作實(shí)現(xiàn)為一個(gè)系統(tǒng)調(diào)用設(shè)計(jì)者使用一般的I/O調(diào)用訪問TCP/IP擴(kuò)充一般的I/O原語兩種方法綜合問題的引入Linux系統(tǒng)的I/O模型一般模式:打開打開讀讀/ /寫寫關(guān)閉關(guān)閉步驟: 調(diào)用“打開”獲得對文件或設(shè)備的使用權(quán),并返回整型的
3、文件描述符,此后使用它對該文件或設(shè)備進(jìn)行I/O操作; 多次調(diào)用“讀/寫”傳輸數(shù)據(jù); 所有傳輸操作完成后,用戶調(diào)用“關(guān)閉”,通知操作系統(tǒng)已經(jīng)完成了對某個(gè)對象的使用。Linux中提供的基本I/O功能操作 含義open為輸入或輸出操作準(zhǔn)備一個(gè)設(shè)備或文件close終止使用以前已經(jīng)打開的設(shè)備或文件read從輸入設(shè)備或文件中獲得數(shù)據(jù),將數(shù)據(jù)放到應(yīng)用程序的存儲(chǔ)器中write將數(shù)據(jù)從應(yīng)用程序的存儲(chǔ)器傳導(dǎo)輸出設(shè)備或文件lseek轉(zhuǎn)到文件或設(shè)備中的某個(gè)指定位置ioctl控制設(shè)備或用于訪問該設(shè)備軟件(如:指明緩存的大小或改變字符集的映射)Linux中對文件操作打開一個(gè)文件讀取一個(gè)文件關(guān)閉文件int desc;des
4、c=open(“filename”,O_RDWR,0);read(desc, buffer, 128);close(desc);TCP/IP的角色:相當(dāng)于一種新的I/O操作,但比普通應(yīng)用程序與傳統(tǒng)的I/O操作的相互作用復(fù)雜得多。網(wǎng)絡(luò)應(yīng)用程序要解決的問題: 進(jìn)行網(wǎng)絡(luò)I/O操作的兩個(gè)進(jìn)程在不同機(jī)器上,如何建立它們之間的聯(lián)系? 網(wǎng)絡(luò)協(xié)議有很多種,如何建立一種通用機(jī)制以支持多種協(xié)議?如何擴(kuò)充一般的I/O原語?1.1.協(xié)議的軟件接口協(xié)議的軟件接口2.2.套接字套接字一個(gè)本地主機(jī)建立或擁有的應(yīng)用程序一個(gè)本地主機(jī)建立或擁有的應(yīng)用程序, 在操作系在操作系統(tǒng)控制下的統(tǒng)控制下的,與其它與其它(遠(yuǎn)程遠(yuǎn)程)應(yīng)用進(jìn)程之
5、間發(fā)送和接應(yīng)用進(jìn)程之間發(fā)送和接收數(shù)據(jù)的接口。收數(shù)據(jù)的接口。socketsocketsocketsocket(套接字)(套接字)socket 是進(jìn)行程序間通訊(IPC)的 BSD 方法??蛻魧⒉孱^插入一個(gè)服務(wù)器端口建立一個(gè)雙向的連接管道客戶端服務(wù)器插口(port)socket的抽象表示Berkeley套接字時(shí)間:20世紀(jì)80年代早期資助方:遠(yuǎn)景研究規(guī)劃局(Advanced Research Projects Agency,ARPA)研究方:加利福尼亞大學(xué)伯克利分校產(chǎn)品:套接字接口(套接字API)方法:擴(kuò)充已有的系統(tǒng)調(diào)用增加新的系統(tǒng)調(diào)用方法socket程序設(shè)計(jì)中的幾個(gè)重要概念端口:為網(wǎng)絡(luò)通信進(jìn)程設(shè)
6、置一些抽象的訪問點(diǎn),提供了多路輸出數(shù)據(jù)到指定應(yīng)用程序的方法;端口數(shù)據(jù)管理:每一端口有一緩沖區(qū)來存放進(jìn)入該端口的數(shù)據(jù)隊(duì)列;OS提供機(jī)制,創(chuàng)建或喚醒相應(yīng)進(jìn)程來處理相應(yīng)端口數(shù)據(jù)。 半相關(guān): 三元組(協(xié)議,本地地址,本地端口號(hào)) 唯一標(biāo)識(shí)本地通信一方;全相關(guān): 五元組(協(xié)議,本地地址,本地端口號(hào),遠(yuǎn)地地址,遠(yuǎn)地端口號(hào)),標(biāo)識(shí)一個(gè)完整的網(wǎng)絡(luò)通信。進(jìn)行網(wǎng)絡(luò)進(jìn)行網(wǎng)絡(luò)I/OI/O操作的兩個(gè)進(jìn)程在操作的兩個(gè)進(jìn)程在不同機(jī)器不同機(jī)器上,如何建上,如何建立它們之間的聯(lián)系?立它們之間的聯(lián)系?全相關(guān)在客戶-服務(wù)器應(yīng)用中的體現(xiàn)客戶端:(主動(dòng)一方) 服務(wù)器的IP地址:知道向誰請求服務(wù) 客戶機(jī)的IP地址:讓服務(wù)器知道把數(shù)據(jù)傳送
7、給誰 服務(wù)器的端口號(hào):知道服務(wù)器上究竟是誰來提供服務(wù) 客戶端的端口號(hào):服務(wù)器知道最終把數(shù)據(jù)傳送到哪 使用的傳輸層服務(wù):要求可靠的傳輸,還是不可靠的傳輸?服務(wù)器:(被動(dòng)方,與客戶端類似) 解決方法套接字類型 流式套接字(SOCK_STREAM): 提供面向連接的、可靠的字節(jié)流服務(wù),用于TCP。 數(shù)據(jù)報(bào)套接字(SOCK_DGRAM): 提供無連接的,不可靠的數(shù)據(jù)報(bào)服務(wù),用于UDP。 原始套接字(SOCK_RAW): 允許對較低層的協(xié)議,如IP、ICMP直接訪問。網(wǎng)絡(luò)協(xié)議有很多種,如何建立一種網(wǎng)絡(luò)協(xié)議有很多種,如何建立一種通用通用機(jī)制以支持機(jī)制以支持多種協(xié)議多種協(xié)議? ?將Linux中的 I/O用于
8、TCP/IP擴(kuò)展文件描述符集(+網(wǎng)絡(luò)通信所使用的描述符)擴(kuò)展read和write這兩個(gè)系統(tǒng)調(diào)用(+網(wǎng)絡(luò)操作功能)其它考慮:指明地址(IP,PORT)指明通訊方式(TCP,UDP,IP)確定通訊角色(Client,Server)處理數(shù)據(jù)格式套接字描述符和文件描述符用于文件用于文件1的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于文件用于文件0的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于文件用于文件2的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于文件用于文件3的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于套接字用于套接字1的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)3.2 套接字的抽象概念 文件描述符表文件描述符表(一個(gè)進(jìn)程一張)(一個(gè)進(jìn)程一張)0:1:2:3:4:5
9、:針對套接字的系統(tǒng)數(shù)據(jù)結(jié)構(gòu) 文件描述符表文件描述符表(一個(gè)進(jìn)程一張)(一個(gè)進(jìn)程一張)0:1:2:3:4:5:用于文件的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于文件的內(nèi)部數(shù)據(jù)結(jié)構(gòu)Family:PF_INETService:SOCK_STREAMLocalIP:RemoteIP:Local Port:4000Remote Port:8000用于套接字的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于套接字的內(nèi)部數(shù)據(jù)結(jié)構(gòu)端點(diǎn)地址端點(diǎn)地址socket編程步驟 建立一個(gè)socket 配置socket 連接socket 通過socket發(fā)送數(shù)據(jù) 通過socket接收數(shù)據(jù) 關(guān)閉socketOSIOSI模型與套接口模型
10、與套接口套套接接口口用戶進(jìn)程用戶進(jìn)程內(nèi)核內(nèi)核應(yīng)用層細(xì)節(jié)應(yīng)用層細(xì)節(jié)通信細(xì)節(jié)通信細(xì)節(jié)思考考察一種提供消息傳遞的操作系統(tǒng),你將如何擴(kuò)展應(yīng)用程序接口使其適用于網(wǎng)絡(luò)通信?猜一宋詞名句猜一宋詞名句if ( (item) & (!people) ) everything = false ; if (tears.setFlowing() try Speaker skr = new Speaker() catch IOException e; 1.1.協(xié)議的軟件接口協(xié)議的軟件接口2.2.套接字套接字3.Winsock3.Winsock 1.1983年,加利弗尼亞大學(xué)Berkely學(xué)院推出了UNIX下的網(wǎng)
11、絡(luò)通信接口Socket。 2.90年代初,Sun Microsystems、JSB Corporation、FTP software、Microdyne和微軟等公司共同參與制定了Windows Socket規(guī)范,試圖使Windows下的Sockets程序設(shè)計(jì)標(biāo)準(zhǔn)化。 3.1992年制定Windows Socket規(guī)范1.0版,將Socket從UNIX移植到DOS和Windows下。 4.1993年1月,制定了Windows Socket 1.1版。 5.1994年5月,WinSock小組啟動(dòng)WinSock2規(guī)范制定工作。 6.1997年5月,WinSock2的正式規(guī)范版本2.2.1發(fā)布。l 發(fā)
12、展歷史6 Windows socket Windows Socket API是Windows的網(wǎng)絡(luò)程序接口,它包括一個(gè)標(biāo)準(zhǔn)的Berkeley Socket功能函數(shù)集合,和為Windows所作的擴(kuò)充。 擴(kuò)充的功能都冠以WSA(Windows Socket Asynchronous)的前綴,表明它們都允許異步的I/O操作,并且采用了符合Windows消息機(jī)制的網(wǎng)絡(luò)事件異步選擇機(jī)制。WinSock API 開發(fā)組件 功能:供程序員開發(fā)Windows Socket應(yīng)用程序 組成:a. 介紹Windows Socket實(shí)現(xiàn)的文檔 b. Windows Socket應(yīng)用程序接口(API)導(dǎo)入庫 c. 一些
13、頭文件 其中WINSOCK.H:包括了WinSock實(shí)現(xiàn)所定義的宏、常數(shù)值、數(shù)據(jù)結(jié)構(gòu)和函數(shù)調(diào)用接口原型; 運(yùn)行組件 WINSOCK.DLL:Windows應(yīng)用程序接口的動(dòng)態(tài)鏈接庫(DLL),應(yīng)用程序在執(zhí)行時(shí)通過裝入它實(shí)現(xiàn)網(wǎng)絡(luò)通信功能。 兩組運(yùn)行必須的組件:第一版:winsock.h winsock.dll winsock.lib第二版:winsock2.h ws2_32.dll ws2_32.lib1. WinSock的組成 異步選擇機(jī)制當(dāng)使用它登記的網(wǎng)絡(luò)事件發(fā)生時(shí),Windows應(yīng)用程序相應(yīng)的窗口接收到一個(gè)消息,消息中指示了發(fā)生的網(wǎng)絡(luò)事件,以及與事件相關(guān)的一些信息。 異步請求函數(shù)增加了異步請
14、求服務(wù)函數(shù)WSAAsyncGetXByY( );允許應(yīng)用程序采用異步方式獲取請求信息,并在請求的服務(wù)完成時(shí)給應(yīng)用程序的窗口發(fā)送一個(gè)消息。 阻塞處理方法當(dāng)一個(gè)應(yīng)用程序的套接字處于阻塞時(shí),使其放棄CPU,讓其它應(yīng)用程序運(yùn)行。2. 對Berkeley Socket的擴(kuò)充出錯(cuò)處理WSAGetLastError():獲取最近錯(cuò)誤號(hào) WSASetLastError():設(shè)置最近錯(cuò)誤號(hào)啟動(dòng)與終止在使用任何Windows Sockets API調(diào)用之前,必須先調(diào)用啟動(dòng)函數(shù)WSAStartup()來完成Windows Sockets DLL的初始化,協(xié)商版本支持,分配必要的資源。 在應(yīng)用程序完成了對Window
15、s Sockets的使用之后,必須調(diào)用函數(shù)WSACleanup()從Windows Sockets實(shí)現(xiàn)中注銷自己,并允許實(shí)現(xiàn)釋放為其分配的任何資源。 2. 對Berkeley Socket的擴(kuò)充 套接字函數(shù) 數(shù)據(jù)庫函數(shù) Windows擴(kuò)充的專有函數(shù)Windows Socket 1.1庫函數(shù)第一類:套接字函數(shù) 功能: 完成套接字的創(chuàng)建、關(guān)閉以及對套接字的命名和名字獲取。 一套接字函數(shù)第二類:網(wǎng)絡(luò)連接函數(shù)功能: 完成網(wǎng)絡(luò)連接的建立與關(guān)閉。 一套接字函數(shù)第三類:數(shù)據(jù)傳輸函數(shù) 功能: 完成數(shù)據(jù)的發(fā)送與接收。 一套接字函數(shù)第四類:字節(jié)順序轉(zhuǎn)換函數(shù) 功能: 完成主機(jī)字節(jié)順序和網(wǎng)絡(luò)字節(jié)順序之間的轉(zhuǎn)換。 一套
16、接字函數(shù)第五類:地址轉(zhuǎn)換函數(shù) 功能: 完成IP地址的點(diǎn)分十進(jìn)制形式和二進(jìn)制整數(shù)形式之間的轉(zhuǎn)換。 一套接字函數(shù)第六類:套接字控制函數(shù) 功能: 設(shè)置/獲取套接字的選項(xiàng);控制/檢測套接字的工作狀態(tài)。 一套接字函數(shù)獲得一組套接字的狀態(tài),以實(shí)現(xiàn)異步獲得一組套接字的狀態(tài),以實(shí)現(xiàn)異步I/O操作操作二. 數(shù)據(jù)庫函數(shù)第一類:啟動(dòng)與終止函數(shù) 三. Windows Socket專用的增設(shè)函數(shù)啟動(dòng)函數(shù):WSAStartup () 函數(shù)定義:int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ) 輸入?yún)?shù):wVersionRequested:用戶使用的
17、Windows Socket最高版本,低字節(jié)為主版本,高字節(jié)為次版本。 lpWSAData:存放了Windows Socket實(shí)現(xiàn)的細(xì)節(jié)。 返回值:成功返回0;失敗返回錯(cuò)誤碼。 終止函數(shù):WSACleanup() 函數(shù)定義:int WSACleanup (void) 說明說明:必須在所有的套接字函數(shù)之前調(diào)用:必須在所有的套接字函數(shù)之前調(diào)用說明說明:必須在:必須在套接字操作完成后調(diào)用該函數(shù)套接字操作完成后調(diào)用該函數(shù)第二類:異步服務(wù)函數(shù) 三. Windows Socket專用的增設(shè)函數(shù)第三類:基于消息機(jī)制的異步I/O函數(shù) 第四類:阻塞處理函數(shù)第四類:阻塞處理函數(shù) 三. Windows Socket專用的增設(shè)函數(shù)函數(shù)名功能WSAAsyncSelect( )Berkeley套接字中的select在WinSock中的擴(kuò)充,獲得一組套接字的狀態(tài),以實(shí)現(xiàn)基于消息機(jī)制的異步I/O操作。第五類:錯(cuò)誤處理函數(shù) 說明:說明:調(diào)試程序時(shí)非常有用;調(diào)試程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年供應(yīng)商季度合作合同模板
- 2025年互聯(lián)網(wǎng)公司專利授權(quán)協(xié)議
- 2025年日化產(chǎn)品策劃與技術(shù)創(chuàng)新協(xié)議
- 2025年交易賣方購貨合同樣本
- 2025年借款抵押合同范例
- 2025年工程設(shè)計(jì)與施工補(bǔ)充合同
- 2025年債務(wù)履約保證協(xié)議
- 2025年電力線路設(shè)計(jì)與施工合同參考
- 2025年江西貨運(yùn)從業(yè)資格考試題目和答案大全
- 2025年信息技術(shù)并購協(xié)議
- 2023年上海市秋考語文真題試卷含答案(整理版)
- 2023年心理咨詢師之心理咨詢師基礎(chǔ)知識(shí)考試題庫附完整答案【有一套】
- 路緣石安裝一級(jí)安全交底
- 一級(jí)建造師繼續(xù)教育最全題庫及答案(新)
- LS/T 1226-2022糧庫智能通風(fēng)控制系統(tǒng)
- 直線加速器專項(xiàng)施工方案
- 聯(lián)苯二氯芐生產(chǎn)工藝及產(chǎn)排污分析
- 儲(chǔ)能設(shè)備項(xiàng)目采購供應(yīng)質(zhì)量管理方案
- 美國房地產(chǎn)市場特征、框架與周期演變
- 光伏發(fā)電工程施工組織設(shè)計(jì)施工工程光伏發(fā)電工程光伏發(fā)電施工組織設(shè)計(jì)
- 民政局離婚協(xié)議書模板(4篇)
評論
0/150
提交評論