版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《網(wǎng)絡(luò)程序設(shè)計》復(fù)習(xí)題21、什么叫套接字?套接字按通信性質(zhì)可以分為哪兩類?多個TCP連接或多個應(yīng)用程序進(jìn)程可能需要通過同一個TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接字(Socket)的接口。套接字按通信性質(zhì)分:會話套接字和數(shù)據(jù)報套接字。2、理解線程的創(chuàng)建與使用方法,并能應(yīng)用到程序設(shè)計中。P663、異構(gòu)環(huán)境下的網(wǎng)絡(luò)程序設(shè)計需要考慮哪些問題?1)字節(jié)順序:不同的平臺以不同的方式存放一個二進(jìn)制數(shù)。最常見的有兩種格式:大數(shù)在前的字節(jié)順序和小數(shù)在前的字節(jié)順序。大數(shù)在前的字節(jié)順序是指將一個多字節(jié)數(shù)的高序字節(jié)存儲在內(nèi)存的起始地址;而小數(shù)在前的字節(jié)順序則相反,將低序字節(jié)存儲在內(nèi)存的起始地址。2)字的長度:不同的實現(xiàn)對于相同的數(shù)據(jù)類型可能有不同的表示長度。3)字節(jié)定界問題:不同的平臺上為結(jié)構(gòu)體(struct)或共同體(union)打包的方式也是不同的,這取決于所有數(shù)據(jù)類型的位數(shù)及機(jī)器的定界限制。4、為什么在數(shù)據(jù)結(jié)構(gòu)structsockaddr_in中,成員變量sin_addr和sin_port需要轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序,而sin_family不需要呢?Sin_addr和sin_port分別封裝在包的IP和UDP層,必須要是網(wǎng)絡(luò)字節(jié)順序。Sin_family域只是被內(nèi)核使用來決定在數(shù)據(jù)結(jié)構(gòu)中包含什么類型的地址,沒有發(fā)送到網(wǎng)絡(luò)上,所以它必須是本機(jī)字節(jié)順序5、從網(wǎng)絡(luò)編程的角度來簡述和比較IP地址和端口的作用。端口:是一種抽象的軟件結(jié)構(gòu)。應(yīng)用程序通過系統(tǒng)調(diào)用與某端口建立連接(binding)后,傳輸層傳給該端口的數(shù)據(jù)都被相應(yīng)進(jìn)程所接受,相應(yīng)進(jìn)程發(fā)給傳輸層的數(shù)據(jù)都通過該端口輸出。在TCP/IP協(xié)議的實現(xiàn)中,端口操作類似一般的I/O操作,進(jìn)程獲取一個端口,相當(dāng)于獲取本地唯一的I/O文件。地址:網(wǎng)絡(luò)通信中通信的兩個進(jìn)程在不同的機(jī)器上。這兩個機(jī)器可能位于不同的網(wǎng)絡(luò),這些網(wǎng)絡(luò)通過網(wǎng)絡(luò)互聯(lián)設(shè)備連接。因此需要三級尋址:某一主機(jī)與多個網(wǎng)絡(luò)相連,必須指定一特定網(wǎng)絡(luò)地址;網(wǎng)絡(luò)上每一主機(jī)應(yīng)有唯一的地址;每一主機(jī)上的每一進(jìn)程有在主機(jī)上的唯一標(biāo)識符。6、為什么網(wǎng)絡(luò)編程時需要考慮字節(jié)順序問題?7、WinSock編程中需要哪些文件?8、UDP程序的工作模型隱含著通信標(biāo)識五元組的建立過程。這五元組在UDP的客戶與服務(wù)端是由哪些函數(shù)分別確定的?9、什么是阻塞與非阻塞通信?請解釋兩者的區(qū)別。通信包括阻塞和非阻塞兩種模式。阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當(dāng)前線程會被掛起。函數(shù)只有在得到結(jié)果之后才會返回。非阻塞和阻塞的概念相對應(yīng),指在不能立刻得到結(jié)果之前,該函數(shù)不會阻塞當(dāng)前線程,而會立刻返回。區(qū)別:對于不同的協(xié)議,阻塞通信和非阻塞通信有不同的表現(xiàn)。以插口為例,在阻塞模式下,利用TCP協(xié)議發(fā)送一個報文時,如果低層協(xié)議沒有可用空間來存放用戶數(shù)據(jù),則應(yīng)用進(jìn)程將阻塞等待直到協(xié)議有可用的空間。而在非阻塞模式下,調(diào)用將直接返回而不需等待。在應(yīng)用進(jìn)程調(diào)用接收函數(shù)接收報文時,如果是在阻塞模式下,若沒有到達(dá)的數(shù)據(jù),則調(diào)用將一直阻塞直到有數(shù)據(jù)到達(dá)或出錯;而在非阻塞模式下,將直接返回而不需等待。對于UDP協(xié)議而言,由于UDP沒有發(fā)送緩存,因此所有UDP協(xié)議即使在阻塞模式下也不會發(fā)生阻塞。對于面向連接的協(xié)議,在連接建立階段,阻塞與非阻塞也表現(xiàn)不一。在阻塞模式下,如果沒有連接請求到達(dá),則等待連接調(diào)用將阻塞直到有連接請求到達(dá);但在非阻塞模式下,如果沒有連接請求到達(dá),等待連接調(diào)用將直接返回。10、簡述各種類型數(shù)據(jù)的發(fā)送與接收處理的方法。11、簡述基于UDP的客戶機(jī)/服務(wù)器端socket編程流程。12、什么是通信三元組和五元組?三元組和五元組每個元素在網(wǎng)絡(luò)連接中起到什么作用?三元組:(協(xié)議,本地地址,本地端口號);(在網(wǎng)絡(luò)中用一個三元組可以在全局唯一標(biāo)志一個進(jìn)程:(協(xié)議,本地地址,本地端口號)這樣一個三元組,叫做一個半相關(guān)(half-association),它指定連接的每半部分。)五元組:(協(xié)議,本地地址,本地端口號,遠(yuǎn)地地址,遠(yuǎn)地端口號)(即兩個協(xié)議相同的半相關(guān)才能組合成一個合適的相關(guān),或完全指定組成一連接。)13、為什么服務(wù)端在TCP通信過程中需要調(diào)用bind()函數(shù)而客戶端不需要?為什么客戶機(jī)通常不需要綁定自己的端口號?14、簡述套接字Select模型原理,以及select模型的優(yōu)勢和不足。15、簡述阻塞模式服務(wù)器和客戶端工作流程,以及阻塞模式套接字的優(yōu)勢和不足。16、在實際應(yīng)用中,很多TCP服務(wù)器程序在非正常退出時,如果立即重啟服務(wù)器進(jìn)程則會發(fā)生綁定服務(wù)器端口失敗的錯誤,從而無法啟動服務(wù)器進(jìn)程,但等待一段時間后就可以了。為什么會發(fā)生這種情況呢?如何解決這個問題(或采取什么措施可以立即重啟服務(wù)器進(jìn)程)?(要求掌握setsockopt()函數(shù)的用法)17、TCP程序的工作模型隱含著通信標(biāo)識五元組的建立過程。這五元組在TCP的客戶與服務(wù)端是由哪些函數(shù)分別確定的?18、accept()為什么要返回一個套接口?或者說,為什么要為每一個連接創(chuàng)建一個套接口來處理?UDP服務(wù)器端為什么不需要多個套接口?19、理解生產(chǎn)者-消費(fèi)者模型,理解線程的同步與互斥方法(event和critical-section),并能應(yīng)用到程序設(shè)計中。20、采用阻塞式I/O模型時,套接字函數(shù)recv()的返回值有哪幾種?分別對應(yīng)什么情況?21、closesocket()函數(shù)和shutdown()函數(shù)有何差別?shutdown()與closesocket()的區(qū)別shutdown()與closesocket()的區(qū)別。1)如果關(guān)閉讀,則接受緩沖區(qū)的未讀出的所有數(shù)據(jù)都將丟失,以后不會再接受任何數(shù)據(jù)2)如果關(guān)閉寫,如果輸出緩沖區(qū)內(nèi)有數(shù)據(jù),則所有的數(shù)據(jù)將發(fā)送出去后將發(fā)送一個FIN信號而close則是關(guān)閉該socket,馬上發(fā)送FIN信號,所有的未完成發(fā)送或者接受的數(shù)據(jù)都將被丟失對于慢速網(wǎng)絡(luò),應(yīng)該先進(jìn)行shutdown,然后一定的時間延遲,再close該socket.22、什么是TCP的三次握手機(jī)制?為什么要使用TCP的三次握手機(jī)制?含義:所謂的“三次握手”即對每次發(fā)送的數(shù)據(jù)量是怎樣跟蹤進(jìn)行協(xié)商使數(shù)據(jù)段的發(fā)送和接收同步,根據(jù)所接收到的數(shù)據(jù)量而確定的數(shù)據(jù)確認(rèn)數(shù)及數(shù)據(jù)發(fā)送、接收完畢后何時撤消聯(lián)系,并建立虛連接。為了提供可靠的傳送,TCP在發(fā)送新的數(shù)據(jù)之前,以特定的順序?qū)?shù)據(jù)包的序號,并需要這些包傳送給目標(biāo)機(jī)之后的確認(rèn)消息。TCP總是用來發(fā)送大批量的數(shù)據(jù)。當(dāng)應(yīng)用程序在收到數(shù)據(jù)后要做出確認(rèn)時也要用到TCP。原因:在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個連接。三次握手時在存在包丟失、重復(fù)和延遲的情況下,確保通信雙方信息交換確定性的充分必要條件。1.請求端(通常稱為客戶)發(fā)送一個SYN段,指明客戶打算連接的服務(wù)器的端口以及初始序號(SEQ)。這個SYN段為報文段1。2.服務(wù)器發(fā)回包含服務(wù)器的初始序號的SYN報文段(報文段2)作為應(yīng)答。同時,將確認(rèn)序號設(shè)置為客戶的ISN加1,用以對客戶的SYN報文段進(jìn)行確認(rèn)。一個SYN占用一個序號。3.客戶必須將確認(rèn)序號設(shè)置為服務(wù)器的ISN加1,用以對服務(wù)器的SYN報文段進(jìn)行確認(rèn)23、服務(wù)器端并發(fā)的兩種模型及編程實現(xiàn)。考試形式:閉卷考試時間:120分鐘考試題型:選擇題(2’×10=20’)、簡答題(10’×6=60’)、程序設(shè)計題(20’)函數(shù)參考:structsockaddr{unsignedshortsa_family,charsa_data[14]};structsockaddr_in{shortsin_family,unsignedshortsin_port,structin_addrsin_addr,charsin_zero[8]};u_shorthtons(u_shorthostshort);u_longhtonl(u_longhostlong);u_shortntohs(u_shorthostshort);u_longntohl(u_longhostlong);unsignedlonginet_addr(constchar*cp);char*FARinet_ntoa(structin_addrin);intWSAStartup(WORDwVersionRequested,LPWSADATAlpWSAData);#defineWINSOK_VERSIONMAKEWORD(2,2)intWSACleanup(void);intWSAGetLastError(void);SOCKETsocket(intaf,inttype,intprotocol);intclosesocket(SOCKETs);intbind(SOCKETs;conststructsockaddr*name,intnamelen);intrecvfrom(SOCKETs,char*buf,intlen,intflags,structsockaddr*from,int*fromlen);intsendto(SOCKETs,constchar*buf,intlen,intflags,conststructsockaddr*to,inttolen);intlisten(SOCKETs,intbacklog);SOCKETaccept(SOCKETs,structsockaddr*addr,int*addrlen);intconnect(SOCKETs,conststructsockaddr*name,intnamelen);intsend(SOCKETs,constchar*buf,intlen,intflags);intrecv(SOCKETs,char*buf,intlen,intflags);intshutdown(SOCKETs,inthow);intsetsockopt(SOCKETs,intlevel,intoptname,constcharFAR*optval,intoptlen);intselect(intntfs,fd_set*readthis,fd_set*writefds,fd_set*excepitids,conststructtimeval*timeout);FD_ZERO(*set);FD_SET(s,*set);FD_CLR(s,*set);FD_ISSET(s,*set);unsignedlong_beginthread(void(__cdecl*start_address)(void*),unsignedstack_size,void*arglist);HANDLECreateEvent(LPSECURITY_ATTRIBUTESlpEventAttributes,BOOLbManualReset,BOOLbInitialState,LPCTSTRlpName);BOOLSetEvent(HANDLEhEvent);DWORDWaitForSingleObject(HANDLEhHandle,DWORDdwMilliseconds);BOOLCloseHandle(HANDLEhObject);voidInitializ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學(xué)《結(jié)構(gòu)力學(xué)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財經(jīng)大學(xué)《小學(xué)教育教學(xué)敘事研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員《B證》考試題庫及答案
- 貴陽信息科技學(xué)院《教育史專題研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 硅湖職業(yè)技術(shù)學(xué)院《計算思維導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025甘肅建筑安全員-A證考試題庫及答案
- 廣州新華學(xué)院《物流與電子商務(wù)實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025遼寧省建筑安全員A證考試題庫
- 2025年湖南建筑安全員-A證考試題庫附答案
- 中華詩詞大賽題
- 中考語文真題專題復(fù)習(xí) 小說閱讀(第01期)(解析版)
- 《陸上風(fēng)電場工程概算定額》NBT 31010-2019
- 商務(wù)禮儀培訓(xùn)職業(yè)禮儀員工培訓(xùn)PPT
- 2022-2023年河南省駕照考試《小車》科目一預(yù)測試題(含答案)
- GB/T 24573-2009金庫和檔案室門耐火性能試驗方法
- ISO27001-2022信息安全管理體系管理手冊
- 經(jīng)濟(jì)困難學(xué)生家庭走訪情況登記表
- 《新中國獨(dú)立自主的外交》 教學(xué)課件
- 簡支箱梁橋畢業(yè)設(shè)計
- 監(jiān)理安全安全通知書(春節(jié)假期)
- 啟明星辰天鏡網(wǎng)站安全監(jiān)測系統(tǒng)用戶手冊
評論
0/150
提交評論