




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Windows網(wǎng)絡(luò)編程基礎(chǔ)課后習(xí)題作業(yè)軟件1202羅偉(1205290203)第一章:1. TCP/IP協(xié)議棧的五個(gè)層次是什么?在這些層次中,每層的主要任務(wù)是什么?解答:TCP/IP參考模型分為五個(gè)層次:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層和物理層。以下分別介紹各層的主要功能。應(yīng)用層是網(wǎng)絡(luò)應(yīng)用程序及其應(yīng)用層協(xié)議存留的層次。該層包括了所有與網(wǎng)絡(luò)相關(guān)的高層協(xié)議,如文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)、超文本傳輸協(xié)議(Hypertext Transfer Protocol,HTTP)、Telent(遠(yuǎn)程終端協(xié)議)、簡單郵件傳送協(xié)議(Simple Mail Transfer
2、Protocol,SMTP)、因特網(wǎng)中繼聊天(Internet Relay Chat,IRC)、網(wǎng)絡(luò)新聞傳輸協(xié)議(Network News Transfer Protocol,NNTP)等。傳輸層的功能是使源端主機(jī)和目標(biāo)端主機(jī)上的對(duì)等實(shí)體可以進(jìn)行會(huì)話。在傳輸層定義了兩種服務(wù)質(zhì)量不同的協(xié)議,即:傳輸控制協(xié)議(Transmission Control Protocol,TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP)。網(wǎng)絡(luò)層是整個(gè)TCP/IP協(xié)議棧的核心。它的功能是通過路徑選擇把分組發(fā)往目標(biāo)網(wǎng)絡(luò)或主機(jī),進(jìn)行網(wǎng)絡(luò)擁塞控制以及差錯(cuò)控制。鏈路層負(fù)責(zé)物理層和網(wǎng)絡(luò)層之間的通信
3、,將網(wǎng)絡(luò)層接收到的數(shù)據(jù)分割成特定的可被物理層傳輸?shù)膸?,并交付物理層進(jìn)行實(shí)際的數(shù)據(jù)傳送。物理層的任務(wù)是將該幀中的一個(gè)一個(gè)比特從一個(gè)節(jié)點(diǎn)移動(dòng)到下一個(gè)節(jié)點(diǎn)。該層中的協(xié)議仍然是鏈路相關(guān)的,并且進(jìn)一步與鏈路(如雙絞線、單模光纖)的實(shí)際傳輸媒體相關(guān)。對(duì)應(yīng)于不同的傳輸媒體,跨越這些鏈路移動(dòng)一個(gè)比特的方式不同。2. 請(qǐng)分析路由器、鏈路層交換機(jī)和主機(jī)分別處理TCP/IP協(xié)議棧中的哪些層次?解答:路由器處理TCP/IP協(xié)議棧的物理層、鏈路層和網(wǎng)絡(luò)層;鏈路層交換機(jī)處理TCP/IP協(xié)議棧的物理層和鏈路層;主機(jī)處理TCP/IP協(xié)議棧的物理層、鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。3. 請(qǐng)闡述NAT技術(shù)的主要實(shí)現(xiàn)方式,并思考N
4、AT技術(shù)對(duì)網(wǎng)絡(luò)應(yīng)用程序的使用帶來哪些影響?解答:網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT)是接入廣域網(wǎng)(WAN)的一種技術(shù),能夠?qū)⑺接校ūA簦┑刂忿D(zhuǎn)化為合法的IP地址,它被廣泛應(yīng)用于各種類型Internet接入方式和各種類型的網(wǎng)絡(luò)中。NAT的實(shí)現(xiàn)方式有三種,即靜態(tài)轉(zhuǎn)換、動(dòng)態(tài)轉(zhuǎn)換和端口多路復(fù)用。NAT有效解決了IP地址短缺的問題,但是它也帶來了一些新的問題。主要體現(xiàn)在:處于NAT后面的主機(jī)不能充當(dāng)服務(wù)器直接接收外部主機(jī)的連接請(qǐng)求,必須對(duì)NAT設(shè)備進(jìn)行相應(yīng)的配置才能完成外部地址與內(nèi)部服務(wù)器地址的映射;處于不同NAT之后的兩臺(tái)主機(jī)無法建立直接的UDP或TCP連接,
5、必須使用中介服務(wù)器來幫助它們完成初始化的工作。4. 某業(yè)務(wù)要求實(shí)現(xiàn)一個(gè)局域網(wǎng)上網(wǎng)行為監(jiān)控的軟件,能夠?qū)钟蚓W(wǎng)內(nèi)用戶的上網(wǎng)行為(包括訪問站點(diǎn)、使用聊天工具、發(fā)布言論等)進(jìn)行截獲和分析,請(qǐng)選擇一個(gè)合適的網(wǎng)絡(luò)程序設(shè)計(jì)方法,并說明該軟件設(shè)計(jì)的主要流程。解答:選擇使用具有較強(qiáng)數(shù)據(jù)捕獲能力的網(wǎng)絡(luò)編程方法,如WinPcap編程或WinSock編程中的原始套接字。局域網(wǎng)上網(wǎng)行為監(jiān)控軟件的主要流程包括:1) 通過交換機(jī)的鏡像端口或分光方式,搭建局域網(wǎng)流量截獲環(huán)境,能夠?qū)⒕钟蚓W(wǎng)上下行的網(wǎng)絡(luò)流量復(fù)制出來進(jìn)行后續(xù)分析;2)對(duì)鏡像出的網(wǎng)絡(luò)流量進(jìn)行捕獲,得到原始數(shù)據(jù);3)對(duì)原始數(shù)據(jù)進(jìn)行過濾,識(shí)別并保留與上網(wǎng)行為監(jiān)控相關(guān)的
6、協(xié)議數(shù)據(jù),如HTTP、SMTP、QQ通信協(xié)議等;4)提取不同協(xié)議中監(jiān)控者感興趣的信息,如訪問網(wǎng)址、聊天對(duì)象、發(fā)布言論等;5)分析數(shù)據(jù),進(jìn)行重點(diǎn)用戶監(jiān)控和異常行為檢測。第二章 網(wǎng)絡(luò)程序通信模型習(xí)題1. 面向少量客戶持續(xù)請(qǐng)求的服務(wù)器和面向大量客戶短期請(qǐng)求的服務(wù)器在設(shè)計(jì)中有哪些區(qū)別?解答:面向少量客戶持續(xù)請(qǐng)求的服務(wù)器在單位時(shí)間內(nèi)處理的客戶請(qǐng)求數(shù)量是有限的,但服務(wù)器與每個(gè)客戶端之間的交互時(shí)間和頻率是持續(xù)的。在這種情況下,服務(wù)器一般設(shè)計(jì)為并發(fā)服務(wù)器,為每個(gè)客戶端分配專門的線程以處理其復(fù)雜的業(yè)務(wù)需求。面向大量客戶短期請(qǐng)求的服務(wù)器在同一時(shí)間可能面臨成百上千個(gè)客戶的大量請(qǐng)求,但每個(gè)客戶端的請(qǐng)求與響應(yīng)比較簡單。
7、在這種情況下,服務(wù)器需要根據(jù)客戶的具體業(yè)務(wù)需求來設(shè)計(jì)。如果是類似于時(shí)間服務(wù)的單次查詢-響應(yīng)服務(wù),可選擇循環(huán)服務(wù)器串行響應(yīng)每個(gè)客戶端的請(qǐng)求,避免線程膨脹和維護(hù)的復(fù)雜性;如果是類似于Web訪問較復(fù)雜的服務(wù),可選擇基于完成端口的異步I/O,與線程池聯(lián)合管理多個(gè)客戶端的請(qǐng)求。2. 某業(yè)務(wù)需要實(shí)現(xiàn)一個(gè)文件服務(wù)器,請(qǐng)給出該文件服務(wù)器的設(shè)計(jì)要點(diǎn)。解答:文件服務(wù)器主要處理文件的上傳與下載業(yè)務(wù),在設(shè)計(jì)時(shí)需要考慮以下要點(diǎn):1) 用戶鑒別與權(quán)限管理。文件服務(wù)器應(yīng)具備一定的用戶登錄和權(quán)限管理能力,以辨別用戶身份,保護(hù)文件訪問的合法性。2) 數(shù)據(jù)傳輸可靠性。為了確保文件服務(wù)器的傳輸可靠性,在傳輸協(xié)議選擇上,可以使用TC
8、P協(xié)議自定義文件傳輸過程,完成數(shù)據(jù)傳輸;或者使用FTP協(xié)議,用控制流進(jìn)行用戶授權(quán)和傳輸管理,用數(shù)據(jù)流具體傳送文件。3) 數(shù)據(jù)傳輸?shù)男?。考慮到用戶上傳和下載大數(shù)據(jù)的現(xiàn)實(shí)體驗(yàn),文件服務(wù)器應(yīng)提供高效的數(shù)據(jù)傳輸能力,比如使用多線程機(jī)制提高效率,使用P2P模型支持多點(diǎn)下載等。4) 斷點(diǎn)續(xù)傳文件服務(wù)器應(yīng)提供斷點(diǎn)續(xù)傳能力,確保在用戶下載過程中斷并恢復(fù)后,能夠保存之前的數(shù)據(jù)和狀態(tài)并繼續(xù)后續(xù)的下載任務(wù)。實(shí)驗(yàn)1. 結(jié)合Wireshark網(wǎng)絡(luò)流量分析工具對(duì)網(wǎng)頁郵件登錄過程進(jìn)行捕獲和分析,說明其基本的工作流程。解答:分析流程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。2. 結(jié)合Wireshark網(wǎng)絡(luò)流量分析工具對(duì)迅雷登錄和文
9、件下載過程進(jìn)行捕獲和分析,說明其基本的工作流程。解答:分析流程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。第三章 網(wǎng)絡(luò)數(shù)據(jù)的內(nèi)容與形態(tài)習(xí)題1. 假設(shè)應(yīng)用程序使用有符號(hào)短整型給端口號(hào)賦值,當(dāng)端口號(hào)大于32768時(shí),端口號(hào)的具體值為多少?是否合理?解答:有符號(hào)短整型能夠表示的數(shù)據(jù)范圍是-3276832767,當(dāng)端口號(hào)n大于32768時(shí),短整型最左邊一位為1,端口號(hào)的值為負(fù)數(shù),即-(216-n),這樣表示是不合理的,應(yīng)該選用無符號(hào)短整型來描述端口號(hào)。2. 大端字節(jié)順序和小端字節(jié)順序是CPU處理多字節(jié)數(shù)的不同方式。例如“漢”字的Unicode編碼是0x6C49。那么存儲(chǔ)在內(nèi)存中時(shí)數(shù)據(jù)是如何存儲(chǔ)呢?請(qǐng)?jiān)谧约旱南到y(tǒng)
10、平臺(tái)下觀察字節(jié)在內(nèi)存中的具體存儲(chǔ)方式。解答:在基于X86平臺(tái)的PC機(jī)中,漢字的Unicode編碼是6C49,存儲(chǔ)在內(nèi)存中是小端字節(jié)序的,具體存儲(chǔ)順序如下:3. 試考慮一個(gè)15字節(jié)的消息結(jié)構(gòu):struct integerMessage uint8_t onebyte;uint16_ttwobytes;uint32_tfourbytes;uint64_teightbytes;請(qǐng)問,該消息結(jié)構(gòu)在內(nèi)存中的實(shí)際布置如何?該結(jié)構(gòu)的長度為多少?解答:由于字節(jié)對(duì)齊的原因,該消息結(jié)構(gòu)在內(nèi)存中的實(shí)際布置如下:該消息結(jié)構(gòu)的長度為16.4. 假設(shè)一個(gè)端口掃描應(yīng)用程序被設(shè)計(jì)為遞增IP地址和TCP端口,并手工構(gòu)造和發(fā)送T
11、CP掃描包給目標(biāo)方,那么在每次發(fā)送數(shù)據(jù)前,TCP掃描包的哪些字段需要修改,如何修改?解答:TCP端口掃描程序面向給定的目的主機(jī),對(duì)指定的端口范圍進(jìn)行掃描,掃描過程一般是向目標(biāo)主機(jī)的端口號(hào)發(fā)送SYN請(qǐng)求,并接收對(duì)方的應(yīng)答,如果對(duì)方反饋了SYN應(yīng)答包則說明該端口開放,否則認(rèn)為端口不開放。手工構(gòu)造TCP掃描包涉及到IP首部和TCP首部的構(gòu)造,那么在探測過程中,每次TCP掃描包需要修改的字段主要有:IP首部中目的IP地址、IP首部的校驗(yàn)和清零后重新計(jì)算、TCP首部的目標(biāo)端口號(hào)、TCP首部的校驗(yàn)和清零后重新計(jì)算。5. 請(qǐng)?jiān)O(shè)計(jì)一個(gè)遠(yuǎn)程投票系統(tǒng)的消息傳送協(xié)議,具體內(nèi)容包括:1)投票協(xié)議標(biāo)識(shí)2)投票消息類型3
12、)投票候選人標(biāo)識(shí)4)投票結(jié)果使用文本串和二進(jìn)制兩種方式設(shè)計(jì)投票消息以滿足以上需求。解答:基于文本串的消息描述方式需要定義一些固定含義的文本串來標(biāo)識(shí)消息內(nèi)容。比如:“VOT”指明投票協(xié)議,“TYPE:”指明消息類型,“CANDIDATE:”指明候選人,“RESULT:”指明結(jié)果。則一個(gè)具體的消息可以表示為由消息標(biāo)識(shí)聲明的文本串,如“VOT TYPE:2;CANDIDATE:peter;RESULT:true”,假設(shè)投票消息傳送協(xié)議基于TCP協(xié)議承載,在具體傳輸過程中,使用一種編碼方式(如:Unicode編碼)對(duì)該文本串進(jìn)行描述,并作為TCP協(xié)議的數(shù)據(jù)部分傳輸?;诙M(jìn)制的消息描述方式使用固定大小
13、的數(shù)據(jù)區(qū)域存儲(chǔ)消息內(nèi)容,比如設(shè)計(jì)投票消息傳送協(xié)議格式如下:定義:協(xié)議標(biāo)識(shí)0x01代表投票協(xié)議 消息類型0x02代表投票消息 候選人標(biāo)識(shí)0x05代表候選人“peter”的唯一標(biāo)識(shí) 投票結(jié)果0x01代表投票,0x02代表反對(duì)那么一次對(duì)候選人peter的贊成投票的投票消息為:0x01020501.假設(shè)投票消息傳送協(xié)議基于TCP協(xié)議承載,在具體傳輸過程中,二進(jìn)制描述的投票消息可以直接作為TCP協(xié)議的數(shù)據(jù)部分傳輸。第四章 協(xié)議軟件接口習(xí)題1 闡述使用Windows Sockets編程的環(huán)境配置過程。解答:Windows Sockets實(shí)現(xiàn)一般由兩部分組成:開發(fā)組件和運(yùn)行組件。開發(fā)組件是供程序員開發(fā)Win
14、dows Sockets應(yīng)用程序使用的,它包括介紹Windows Sockets實(shí)現(xiàn)的文檔、Windows Sockets應(yīng)用程序接口(API)引入庫和一些頭文件。頭文件winsock.h、winsock2.h分別對(duì)應(yīng)于WinSock 1.1和WinSock2.2,是Windows Sockets最重要的頭文件,它們包括了Windows Sockets實(shí)現(xiàn)所定義的宏、常數(shù)值、數(shù)據(jù)結(jié)構(gòu)和函數(shù)調(diào)用接口原型。運(yùn)行組件是Windows Sockets應(yīng)用程序接口的動(dòng)態(tài)鏈接庫(DLL),應(yīng)用程序在執(zhí)行時(shí)通過裝入它實(shí)現(xiàn)網(wǎng)絡(luò)通信功能。兩個(gè)版本的動(dòng)態(tài)鏈接庫以及與其對(duì)應(yīng)的接口引入庫和頭文件如下所示。表4-1 W
15、indows Sockets 版本中相應(yīng)的動(dòng)態(tài)鏈接庫版本頭文件靜態(tài)鏈接庫文件動(dòng)態(tài)鏈接庫文件1.1winsock.hwinsock.libwinsock.dll2.2winsock2.hws2_32.libws2_32.dll對(duì)動(dòng)態(tài)鏈接的使用,需要在程序編譯前將對(duì)應(yīng)的頭文件引入源文件,以便編譯環(huán)境可以找到相應(yīng)函數(shù)和變量的聲明,并在項(xiàng)目中引入靜態(tài)鏈接庫文件,以便在程序編譯通過后,連接時(shí)可以找到套接字函數(shù)的執(zhí)行地址。以Windows Sockets 2.2版本為例,對(duì)頭文件的引入使用以下代碼段:#include “winsock2.h”對(duì)靜態(tài)鏈接庫的引入使用以下代碼段:#pragma comment
16、(lib,"ws2_32.lib")或者在開發(fā)環(huán)境中的項(xiàng)目菜單中配置增加對(duì)“ws2_32.lib”文件的引入,如下圖所示。2 考慮一種提供消息傳遞的操作系統(tǒng),闡述如何擴(kuò)展應(yīng)用程序接口使其適用于網(wǎng)絡(luò)通信?解答:提供消息傳遞的操作系統(tǒng)典型的例子是Windows操作系統(tǒng),該系統(tǒng)最大的特點(diǎn)是圖形化的操作界面,其圖形化界面是建立在消息處理機(jī)制這個(gè)基礎(chǔ)之上的。程序不斷等待,等待任何可能的輸入,然后做判斷,根據(jù)不同的消息調(diào)用消息處理函數(shù)進(jìn)行適當(dāng)?shù)奶幚?。這種輸入是操作系統(tǒng)捕捉到后以消息形式(一種數(shù)據(jù)結(jié)構(gòu))進(jìn)入程序之中的。有了消息機(jī)制的推動(dòng),套接字接口也可以借助消息機(jī)制來通知應(yīng)用程序網(wǎng)絡(luò)事件
17、滿足,具體思路是:首先為應(yīng)用程序創(chuàng)建消息傳遞所需的消息接收窗口和消息隊(duì)列;然后定義與網(wǎng)絡(luò)事件相關(guān)聯(lián)的消息;之后通過系統(tǒng)調(diào)用注冊(cè)網(wǎng)絡(luò)事件與消息的對(duì)應(yīng)關(guān)系;最后,當(dāng)網(wǎng)絡(luò)事件發(fā)生時(shí),系統(tǒng)觸發(fā)消息通知應(yīng)用程序處理。通過以上基本步驟實(shí)現(xiàn)了基于消息機(jī)制的異步網(wǎng)絡(luò)操作。 3 闡述程序、套接字、端口和協(xié)議之間的關(guān)系。解答:程序和套接字的關(guān)系:一個(gè)程序可以同時(shí)使用多個(gè)套接字,不同套接字完成不同的傳輸任務(wù)。多個(gè)應(yīng)用程序可以同時(shí)使用同一個(gè)套接字,不過這種情況并不常見。套接字和端口的關(guān)系:每個(gè)套接字都有一個(gè)關(guān)聯(lián)的本地TCP或UDP端口,它用于把傳入的分組指引到應(yīng)該接收它們的應(yīng)用程序。一個(gè)端口上可能關(guān)聯(lián)多個(gè)套接字,流式
18、套接字的服務(wù)器上可能同時(shí)有監(jiān)聽套接字和連接套接字,它們都與一個(gè)TCP的端口號(hào)相關(guān)聯(lián);一個(gè)套接字一般只會(huì)關(guān)聯(lián)一個(gè)唯一的本地端口號(hào)。端口和協(xié)議的關(guān)系:TCP和UDP的端口號(hào)是獨(dú)立使用的。實(shí)驗(yàn)1調(diào)用Windows Sockets的API函數(shù)獲得本地主機(jī)和遠(yuǎn)端域名的IP地址,如果一個(gè)主機(jī)名稱對(duì)應(yīng)了多個(gè)IP地址,請(qǐng)依次打印。解答:實(shí)現(xiàn)過程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。第五章 流式套接字編程習(xí)題1. 思考套接字接口層與TCP實(shí)現(xiàn)之間的關(guān)系,結(jié)合數(shù)據(jù)發(fā)送和接收分析數(shù)據(jù)的傳遞過程以及兩個(gè)層次的具體工作。解答:對(duì)應(yīng)于TCP數(shù)據(jù)的發(fā)送和接收,套接字實(shí)現(xiàn)設(shè)計(jì)了兩個(gè)獨(dú)立的緩沖區(qū),分別用于緩存應(yīng)用程序請(qǐng)求發(fā)送的數(shù)據(jù)
19、和等待接收的數(shù)據(jù)(一般以先進(jìn)先出隊(duì)列的形式保存)。從應(yīng)用程序?qū)崿F(xiàn)、套接口實(shí)現(xiàn)和協(xié)議實(shí)現(xiàn)三個(gè)層次來觀察數(shù)據(jù)發(fā)送的過程,數(shù)據(jù)發(fā)送在實(shí)施過程中主要涉及到兩個(gè)緩沖區(qū):一個(gè)是應(yīng)用程序發(fā)送緩沖區(qū),即調(diào)用send()函數(shù)時(shí)由用戶申請(qǐng)并填充的緩沖區(qū),這個(gè)緩沖區(qū)保存了用戶即將使用協(xié)議棧發(fā)送的TCP數(shù)據(jù);另一個(gè)是TCP套接口的發(fā)送緩沖區(qū),在這個(gè)緩沖區(qū)中保存了TCP協(xié)議尚未發(fā)送的數(shù)據(jù)和已發(fā)送但未得到確認(rèn)的數(shù)據(jù)。數(shù)據(jù)發(fā)送涉及到兩個(gè)層次的寫操作:從應(yīng)用程序發(fā)送緩沖區(qū)拷貝數(shù)據(jù)到TCP套接口的發(fā)送緩沖區(qū),和從TCP套接口的發(fā)送緩存將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)中。數(shù)據(jù)接收在實(shí)施過程中主要涉及到另外兩個(gè)緩沖區(qū),一個(gè)是TCP套接口的接收緩沖
20、區(qū),在這個(gè)緩沖區(qū)中保存了TCP協(xié)議從網(wǎng)絡(luò)中接收到的與該套接口相關(guān)的數(shù)據(jù);另一個(gè)是應(yīng)用程序的接收緩沖區(qū),即調(diào)用recv()函數(shù)時(shí)由用戶分配的緩沖區(qū),這個(gè)緩沖區(qū)用于保存從TCP套接口的接收緩存收到并提交給應(yīng)用程序的網(wǎng)絡(luò)數(shù)據(jù)。數(shù)據(jù)接收也涉及到兩個(gè)層次的寫操作:從網(wǎng)絡(luò)上接收數(shù)據(jù)保存到TCP套接口的接收緩沖區(qū),和從TCP套接口的接收緩沖區(qū)拷貝數(shù)據(jù)到應(yīng)用程序的接收緩沖區(qū)中。2. 在基于流式套接字的網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)中,假設(shè)客戶端以8字節(jié)-12字節(jié)-8字節(jié)-12字節(jié)的順序交替發(fā)送數(shù)據(jù)給服務(wù)器,請(qǐng)思考,服務(wù)器的接收操作每次能夠接收到多少字節(jié)的數(shù)據(jù)?為什么?解答:服務(wù)器接收操作每次能夠接收到的數(shù)據(jù)長度是不確定的,
21、這是因?yàn)門CP傳送數(shù)據(jù)的形態(tài)是沒有間隔的字節(jié)流,數(shù)據(jù)接收僅與接收調(diào)用的時(shí)間和當(dāng)前主機(jī)內(nèi)核緩存中尚未提交應(yīng)用程序的數(shù)據(jù)有關(guān),與發(fā)送端發(fā)送多少次和TCP如何傳送沒有直接的關(guān)系,我們不能準(zhǔn)確地預(yù)測一個(gè)特定的接收操作到底返回多少字節(jié)。3. 思考使用TCP進(jìn)行數(shù)據(jù)傳輸?shù)膽?yīng)用程序是否一定不會(huì)出現(xiàn)數(shù)據(jù)丟失?應(yīng)用程序應(yīng)在哪些具體操作上考慮可靠性問題?解答:使用TCP進(jìn)行數(shù)據(jù)傳輸?shù)膽?yīng)用程序也可能會(huì)出現(xiàn)數(shù)據(jù)丟失,這是因?yàn)門CP是一個(gè)端到端的協(xié)議,這意味著通信的雙方只關(guān)心自己提供了一個(gè)可靠的傳輸機(jī)制,“端”是對(duì)等方的TCP協(xié)議實(shí)現(xiàn),而不是對(duì)等方的應(yīng)用程序。應(yīng)用程序的可靠性需要應(yīng)用程序自己提供。導(dǎo)致TCP傳輸出現(xiàn)失敗
22、的現(xiàn)象有:在正常的TCP連接上,TCP確認(rèn)的數(shù)據(jù)實(shí)際上有可能不會(huì)到達(dá)它的目的應(yīng)用程序,服務(wù)器的TCP實(shí)現(xiàn)不確認(rèn)接收到了數(shù)據(jù),如:發(fā)生永久的或暫時(shí)的網(wǎng)絡(luò)紊亂,對(duì)等方的應(yīng)用程序崩潰,對(duì)等方的應(yīng)用程序運(yùn)行的主機(jī)崩潰等。網(wǎng)絡(luò)程序設(shè)計(jì)人員應(yīng)注意到這些失敗模式對(duì)TCP應(yīng)用程序的影響,在數(shù)據(jù)發(fā)送、接收、連接關(guān)閉等操作上,注意函數(shù)調(diào)用時(shí)機(jī),關(guān)注函數(shù)調(diào)用結(jié)果,盡可能全面地處理TCP傳輸中可能遇到的失敗模式。實(shí)驗(yàn)1. 使用流式套接字編程設(shè)計(jì)一個(gè)并發(fā)的回射服務(wù)器,該服務(wù)器具有并發(fā)處理客戶請(qǐng)求的功能,當(dāng)多個(gè)客戶端同時(shí)請(qǐng)求服務(wù)器回射時(shí),服務(wù)器能夠同時(shí)接收到多個(gè)客戶端的請(qǐng)求并相應(yīng)做出回射響應(yīng)。解答:實(shí)現(xiàn)過程具體見Wind
23、ows網(wǎng)絡(luò)編程實(shí)驗(yàn)。2. 設(shè)計(jì)一個(gè)網(wǎng)絡(luò)測試程序,客戶端能夠模擬“發(fā)送-發(fā)送-接收”的操作序列,采用send()和WSASend()兩種發(fā)送方式進(jìn)行請(qǐng)求發(fā)送,測試在這兩種發(fā)送操作下服務(wù)器的響應(yīng)時(shí)間有何差別,并說明原因。解答:實(shí)現(xiàn)過程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。第六章 數(shù)據(jù)報(bào)套接字編程習(xí)題3. 思考套接字接口層與UDP實(shí)現(xiàn)之間的關(guān)系,結(jié)合數(shù)據(jù)發(fā)送和接收分析數(shù)據(jù)的傳遞過程以及兩個(gè)層次的具體工作。解答:數(shù)據(jù)發(fā)送過程和接收過程類似,以數(shù)據(jù)接收為例,從應(yīng)用程序?qū)崿F(xiàn)、套接口實(shí)現(xiàn)和協(xié)議實(shí)現(xiàn)三個(gè)層次來觀察接收的過程,數(shù)據(jù)接收在實(shí)施過程中主要涉及到兩個(gè)緩沖區(qū),一個(gè)是UDP套接口的接收緩沖區(qū),在這個(gè)緩沖區(qū)中保
24、存了UDP協(xié)議從網(wǎng)絡(luò)中接收到的與該套接口相關(guān)的數(shù)據(jù);另一個(gè)是應(yīng)用程序的接收緩沖區(qū),即調(diào)用recvfrom()函數(shù)時(shí)由用戶分配的緩沖區(qū)recvbuf,這個(gè)緩沖區(qū)用于保存從UDP套接口的接收緩存收到并提交給應(yīng)用程序的網(wǎng)絡(luò)數(shù)據(jù)。數(shù)據(jù)接收涉及到兩個(gè)層次的寫操作:從網(wǎng)絡(luò)上接收數(shù)據(jù)保存到UDP套接口的接收緩沖區(qū),和從UDP套接口的接收緩沖區(qū)拷貝數(shù)據(jù)到應(yīng)用程序的接收緩沖區(qū)中,如下圖所示。4. 在基于數(shù)據(jù)報(bào)套接字的網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)中,假設(shè)客戶端向服務(wù)器發(fā)送了兩個(gè)數(shù)據(jù)報(bào),一個(gè)報(bào)文長度為800字節(jié),另一個(gè)報(bào)文長度為1200字節(jié),設(shè)置服務(wù)器端的接收緩沖區(qū)為1000字節(jié),進(jìn)行三次接收操作,請(qǐng)思考,服務(wù)器在三次接收操作
25、時(shí)各發(fā)生何種現(xiàn)象,實(shí)際接收到的字節(jié)長度為多少? 解答:第一次接收操作接收到完整的800字節(jié)的報(bào)文,recvfrom()函數(shù)返回800;第二次接收操作接收1000字節(jié)的報(bào)文,recvfrom()函數(shù)返回1000,第二個(gè)報(bào)文后續(xù)的200字節(jié)內(nèi)容被截?cái)鄟G棄;第三次接收操作依賴于套接字的工作模式,如果是阻塞模式,則接收函數(shù)阻塞,如果設(shè)置了接收超時(shí),則在超時(shí)時(shí)間到時(shí)返回接收超時(shí)錯(cuò)誤;如果是非阻塞模式,則接收函數(shù)立刻返回,錯(cuò)誤類型是WSAEWOULDBLOCK.5. 總結(jié)使用UDP進(jìn)行數(shù)據(jù)傳輸?shù)膽?yīng)用程序應(yīng)在哪些具體操作上考慮可靠性問題?解答:由于UDP協(xié)議是一個(gè)不可靠的協(xié)議,使用UDP進(jìn)行數(shù)據(jù)傳輸?shù)膽?yīng)用程
26、序會(huì)因?yàn)榫W(wǎng)絡(luò)環(huán)境、主機(jī)環(huán)境的差異帶來數(shù)據(jù)傳遞過程中發(fā)生丟失、亂序、重復(fù)等問題,那么在程序運(yùn)行過程中需要考慮:發(fā)送操作:發(fā)送出去的數(shù)據(jù)可能會(huì)丟失,需要考慮超時(shí)重傳問題;發(fā)送目的地可能并不存在,需要判斷目的應(yīng)用程序的狀態(tài)。接收操作:接收到的數(shù)據(jù)可能重復(fù),需要判斷重復(fù)數(shù)據(jù);接收到的數(shù)據(jù)可能是噪音,需要排除噪音;接收到的數(shù)據(jù)可能亂序,需要考慮重組;可能無法接收到預(yù)期的數(shù)據(jù),需要考慮反饋確認(rèn)和流量控制問題。實(shí)驗(yàn)1. 設(shè)計(jì)一個(gè)網(wǎng)絡(luò)測試程序,客戶端能夠高速發(fā)送數(shù)據(jù),服務(wù)器端接收數(shù)據(jù)并統(tǒng)計(jì)接收到的數(shù)據(jù)報(bào)文個(gè)數(shù),測試當(dāng)前系統(tǒng)和網(wǎng)絡(luò)環(huán)境下,服務(wù)器的丟包率為多少?解答:實(shí)現(xiàn)過程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。2.
27、 在上題的測試程序基礎(chǔ)上,修改系統(tǒng)接收緩存,測試系統(tǒng)接收緩存的大小與程序丟包率之間的關(guān)系,并解釋原因。解答:實(shí)現(xiàn)過程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。第七章 原始套接字編程習(xí)題1. 原始套接字在處理數(shù)據(jù)發(fā)送和接收時(shí)與流式套接字和數(shù)據(jù)報(bào)套接字有哪些不同?解答:在使用原始套接字進(jìn)行數(shù)據(jù)傳輸?shù)木幊踢^程中,增加了諸多操作,如套接字選項(xiàng)的設(shè)置、傳輸協(xié)議首部的構(gòu)造、網(wǎng)卡工作模式的設(shè)定以及接收數(shù)據(jù)的過濾與判斷等。使用原始套接字發(fā)送數(shù)據(jù)需要填寫的數(shù)據(jù)內(nèi)容更加復(fù)雜,根據(jù)應(yīng)用的不同,原始套接字可以有兩種數(shù)據(jù)填充的選擇:僅構(gòu)造IP數(shù)據(jù)或構(gòu)造IP首部和IP數(shù)據(jù)。此時(shí)程序設(shè)計(jì)人員需要根據(jù)實(shí)際需要對(duì)套接字選項(xiàng)IP_HDR
28、INCL進(jìn)行配置。使用原始套接字接收數(shù)據(jù)時(shí),網(wǎng)絡(luò)接口提交給原始套接字的數(shù)據(jù)并不一定是網(wǎng)卡接收到的所有數(shù)據(jù),如果希望得到特定類型的數(shù)據(jù)包,應(yīng)用程序需要對(duì)套接字的接收進(jìn)行控制,設(shè)定接收選項(xiàng)SIO_RCVALL,或者通過bind()、connect()函數(shù)明確端點(diǎn)地址。由于原始套接字的數(shù)據(jù)傳輸也是無連接的,網(wǎng)絡(luò)接口提交給原始套接字的數(shù)據(jù)很可能存在噪音,因此在接收到數(shù)據(jù)后,需要對(duì)數(shù)據(jù)進(jìn)行一定條件的過濾。2. 某程序員在Windows 7環(huán)境下,使用原始套接字構(gòu)造TCP的SYN請(qǐng)求實(shí)現(xiàn)半開端口掃描,但結(jié)果發(fā)現(xiàn)網(wǎng)絡(luò)中并沒有看到SYN請(qǐng)求的發(fā)送,請(qǐng)分析原因并給出解決思路。解答:在Windows環(huán)境下,原始套
29、接字的支持一直是個(gè)備受爭議的問題,不同版本的Windows環(huán)境對(duì)原始套接字給出了一些限制。在Windows7、Windows Vista、Windows XP SP2和Windows XP SP3中,通過原始套接字發(fā)送數(shù)據(jù)的能力受到了諸多限制,其中對(duì)TCP的限制是TCP的數(shù)據(jù)不能通過原始套接字發(fā)送。因此,如果仍要在Windows7環(huán)境下開發(fā)SYN半開端口掃描,那么需要選擇其它的編程方法,如WinPcap編程。實(shí)驗(yàn)1. 使用原始套接字編程,實(shí)現(xiàn)UDP回射客戶端的主要功能。該客戶端具備IP原始數(shù)據(jù)包的構(gòu)造、發(fā)送和接收功能,能夠從控制臺(tái)獲取用戶輸入,將用戶輸入的字符串作為UDP的數(shù)據(jù)填充回射請(qǐng)求,發(fā)
30、送給回射服務(wù)器,接收服務(wù)器發(fā)回的響應(yīng),并將響應(yīng)打印到命令行中。解答:實(shí)現(xiàn)過程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。2. 設(shè)計(jì)一個(gè)路徑探測器,能夠?qū)崿F(xiàn)類似于traceroute功能,獲取從探測源到達(dá)目的主機(jī)的路由器路徑和延遲。解答:實(shí)現(xiàn)過程具體見Windows網(wǎng)絡(luò)編程實(shí)驗(yàn)。第八章 網(wǎng)絡(luò)通信中的I/O操作習(xí)題1. 簡述阻塞與非阻塞、同步與異步的區(qū)別。解答:同步和異步概念與消息的通知機(jī)制有關(guān)。對(duì)于消息處理者而言,在同步的情況下,由處理消息者自己去等待消息是否被觸發(fā);在異步的情況下,由觸發(fā)機(jī)制來通知處理消息者,然后進(jìn)行消息的處理。同步和異步僅僅是關(guān)于所關(guān)注的消息如何通知的機(jī)制,而不是處理消息的機(jī)制。阻塞和
31、非阻塞與消息的處理機(jī)制有關(guān)。阻塞模式是指在指定套接字上調(diào)用函數(shù)執(zhí)行操作時(shí),在沒有完成操作之前,函數(shù)不會(huì)立即返回。非阻塞模式是指在指定套接字上調(diào)用函數(shù)執(zhí)行操作時(shí),無論操作是否完成,函數(shù)都會(huì)立即返回。同步與阻塞,異步與非阻塞并不是兩對(duì)相同的概念,要注意消息的通知和消息的處理是不同的。2. 簡述WSAAsyncSelect模型和WSAEventSelect模型的主要區(qū)別和各自在使用中的優(yōu)缺點(diǎn)。解答:WSAAsyncSelect模型和WSAEventSelect模型都是Windows Sockets引入的異步處理網(wǎng)絡(luò)I/O的基本方法。WSAEventSelect模型與基于WSAAsyncSelect的
32、異步I/O模型的最主要的區(qū)別是網(wǎng)絡(luò)事件發(fā)生時(shí)系統(tǒng)通知應(yīng)用程序的方式不同。WSAAsyncSelect模型依賴消息通知,而WSAEventSelect模型允許在多個(gè)套接字上接收以事件為基礎(chǔ)的網(wǎng)絡(luò)事件的通知。WSAAsyncSelect模型基于Windows消息機(jī)制實(shí)現(xiàn),其優(yōu)點(diǎn)是:在系統(tǒng)開銷不大的情況下可以較簡單地同時(shí)處理多個(gè)客戶端的網(wǎng)絡(luò)I/O。其缺點(diǎn)是:消息的運(yùn)轉(zhuǎn)需要有消息隊(duì)列,為了支持消息機(jī)制,就必須創(chuàng)建一個(gè)窗口來接收消息,另外,在一個(gè)窗口中處理大量的消息也可能成為性能的瓶頸。WSAEventSelect模型不依賴于消息,所以可以在沒有窗口的環(huán)境下比較簡單地實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)通信的異步操作。該模型的缺
33、點(diǎn)是等待的事件對(duì)象的總數(shù)是有限制的(每次只能等待64個(gè)事件),在有些應(yīng)用中可能會(huì)因此受到限制。3. 假設(shè)某Web服務(wù)器使用TCP協(xié)議通信,在同一時(shí)間會(huì)有上萬個(gè)客戶端同時(shí)在線訪問,試選擇一種網(wǎng)絡(luò)I/O通信的模型,使其能夠充分發(fā)揮服務(wù)器所在系統(tǒng)的性能,并闡明原因。解答:選擇使用完成端口模型處理網(wǎng)絡(luò)I/O,該模型內(nèi)部提供了線程池的管理,可以避免反復(fù)創(chuàng)建線程的開銷,同時(shí)可以根據(jù)CPU的個(gè)數(shù)靈活地決定線程個(gè)數(shù),減少線程調(diào)度的次數(shù),從而提高了程序的并行處理能力。由于其穩(wěn)定、高效的并發(fā)通信能力,該模型適合于具有大量并發(fā)用戶請(qǐng)求的場合。4. 假設(shè)某時(shí)間服務(wù)器使用UDP協(xié)議通信,同一時(shí)間僅有少量客戶端請(qǐng)求,每次請(qǐng)求的主要過程是建立連接后獲取時(shí)間,之后斷開連接,試選擇一種適合的網(wǎng)絡(luò)I/O通信模型,并闡明原因。解答:選擇使用WSAAsyncSelect模型或WSAEventSelect模型處理網(wǎng)絡(luò)I/O,這兩個(gè)模型使用異步方式進(jìn)行I/O事件通知,不會(huì)使應(yīng)用程序阻塞于網(wǎng)絡(luò)事件的等待上,靈活性較好,同時(shí)程序的實(shí)現(xiàn)比較簡單,可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東省平邑縣英語八年級(jí)第二學(xué)期期中達(dá)標(biāo)檢測試題含答案
- 網(wǎng)絡(luò)信息檢索試題及答案
- 聽胎心試題及答案
- 2025年醫(yī)療機(jī)構(gòu)藥材訂購協(xié)議示例
- 2025年雙方策劃共同出資購買房產(chǎn)協(xié)議書
- 2025年會(huì)計(jì)師事務(wù)所策劃業(yè)務(wù)聯(lián)盟協(xié)議(草案)
- 2025年版權(quán)授權(quán)代理協(xié)議模板
- 數(shù)字化轉(zhuǎn)型對(duì)企業(yè)風(fēng)險(xiǎn)管理的影響
- 2025年心血管科醫(yī)院合作策劃協(xié)議書
- 改革開放新形勢下國企國際化發(fā)展策略
- 2023-2024學(xué)年廣東省中山市高二數(shù)學(xué)第一學(xué)期期末考試試題含解析
- 《荷花淀》說課課件
- 房屋建筑學(xué)中國建筑發(fā)展史
- li3000c中文操作手冊(cè)
- 國開中國當(dāng)代文學(xué)專題形考任務(wù)2-3-5-6答案
- 醫(yī)療安全(不良)事件匯總登記表(科室)
- TRIZ矛盾矩陣48參數(shù)
- 學(xué)校超市經(jīng)營服務(wù)方案
- 列車員初級(jí)技能鑒定復(fù)習(xí)題庫
- 解讀血?dú)夥治?課件
- 設(shè)備點(diǎn)檢記錄表
評(píng)論
0/150
提交評(píng)論