2003年度軟考網路設計師下午考試真題
試題一(10分)閱讀以下說明,回答問題1和問題2,將解答填入答題紙的對應欄內。[說明]某學校擬組建一個小型校園網,具體設計如下:1、設計要求(1)終端用戶包括:48個校園網普通用戶;一個有24個多媒體用戶的電子閱覽室;一個有48個用戶的多媒體教室(性能要求高於電子閱覽室)。(2)伺服器提供web、dns、e-mail服務。(3)支持遠程教學,可以接入網際網路,具有廣域網訪問的安全機制和網路管理功能。(4)各樓之間的距離為500米。2、可選設備設備名稱 數量 特 性交換機switchl 1台 具有兩個l001]ase—tx連線埠和24個lobase—t連線埠交換機switch2 2台 各具有兩個100m快速乙太網連線埠(其中一個loobase—tx、一個l00base—fx)和24個10base—t連線埠交換機switch3 2台 各配置2連線埠loobase—fx模組、24個100 base—tx快速乙太網連線埠交換機switch4 1台 配置4連線埠loobase-fx模組、24個100base-tx快速乙太網連線埠:具有mib管理模組。路由器routerl 1台 提供了對內的10/100m區域網路接口,對外的128k的isdn或專線連線,同時具有防火牆功能。3、可選介質 3類雙絞線、5類雙絞線、多模光纖。該校網路設計方案如圖1所示: [問題1](7分)依據給出的可選設備進行選型,將(1) ~(5)處空缺的設備名稱填寫在答題紙相應位置(每處可選一台或多台設備)。[問題2](3分)將(6)~(8)處空缺的介質填寫在答題紙相應位置(所給介質可重複選擇)。 試題二(10分)閱讀以下說明,回答問題1和問題2,將解答填入答題紙的對應欄內。[說明]在一幢11層的大樓內組建一個區域網路,該區域網路的連線示意圖如圖2所示。[問題11(6分)指出上述解決方案存在什麼問題?需要增加什麼設備?如何連線?[問題2](4分)若在該區域網路實現vlan,路由器將起什麼作用? 試題三(10分)閱讀以下說明,回答問題,將解答填入答題紙的對應欄內。[說明]網路地址轉換(nat)的主要目的是解決ip地址短缺問題以及實現tcp負載均衡等。在圖3的設計方案中,與internet連線的路由器採用網路地址轉換。[問題]請根據路由器的nat表和圖3中給出的網路結構、ip地址,簡要敘述主機b向內部網路發出請求進行通信時,邊界路由器實現tcp負載均衡的過程。路由器的nat表協定 內部局部地址及連線埠號 內部全局ip地址及連線埠號 外部全局ip地址及連線埠號tcp 10.1.1.1:80 10.1.1.127:80 172.20.7.3:3058tcp 10.1.1.2:80 10.1.1.127:80 172.20.7.3:4371tcp 10.1.1.3:80 10.1.1.127:80 172.20.7.3:3062 試題四(10分)閱讀以下說明,回答問題1至問題3,將解答填入答題紙的對應欄內。[說明]windows組網是指把windows終端和伺服器連線起來。圖4給出了在windows作業系統中的典型lan配置。[問題1](3分)在osi參考模型中,netbios工作在哪一層?[問題2](4分)netbios包括哪些服務功能?[問題3](3分)windows組網中採用什麼工具來實現域的創建和管理?在什麼情況下需要設定“主域”? 試題五(10分)閱讀以下說明,將應填入__(n) __處的解答填寫在答題紙的對應欄內。[說明]某網路結構如圖5所示,如果router3與網路4之間的線路突然中斷,按照rip路由協定的實現方法,路由表的更新時間間隔為30秒,中斷30秒後router2的路由信息表1和中斷500秒後router2的路由信息表2如下。註:①若到達目的網路不需轉發或目的網路不可達,用“一”來表示“下一站地址”;②當目的網路不可達時,“跳數”為16。 路由信息表1目的網路 下一站地址 跳數10.0.0.0 __(1)__ __(2)__20.0.0.0 - 030.0.0.0 - 040.0.0.0 __(3)__ __(4)__路由信息表2目的網路 下一站地址 跳數10.0.0.0 20.0.0.1 120.0.0.0 __(5)__ __(6)__30.0.0.0 __(7)__ __(8)__40.0.0.0 __(9)__ __(10)__[問題]1.請填充中斷30秒後router2的路由信息表1。2.請填充中斷500秒後router2的路由信息表2。 試題六(10分) 閱讀以下說明,回答問題1和問題2,將解答填入答題紙的對應欄內。[說明]vpn是通過公用網路internet將分布在不同地點的終端聯接而成的專用網路。目前大多採用ipsec實現ip網路上端點間的認證和加密服務。[問題1](5分)某公司的網路拓撲結構如圖6所示,採用vpn來實現網路安全。請簡要敘述從公司總部主機到分支機構主機通過ipsec的通信過程。 [問題2](每空1分,共5分)某路由器的部分配置信息如下所示,請解釋其中標有下劃線部分的含義(“//”後為注釋內容)。*配置路由器信息version 12.0 //版本hostname secrouter//路由器名稱boot system flash c1700-osy56i-mz_120-3—t3.bin//套用ike共享密鑰進行認證//創建標識為“100”的ike策略crypto isakmp policy 100hash md5 (1)authentication pre-share (2)//與遠端ip為172.16.2.1的對等體的共享密鑰為“mcns”crypto isakmp key mcns address 172.16.2.1//配置名為l&2的交換集,指定esp-des和esp-md5-hmac兩種變換crypto ipsec transform—set l&2 esp—des esp—md5一hmac//配置加密圖//分配給該加密圖集的名稱:sharef,序號:10;//指定用ike來建立ipsec安全關聯,以保護由該加密圖條目所指定的數據流crypto map sharef 10 ipsec-isakmpset deer 172.16.2.1 (3)set transform-set l&2 (4)match address 151 //配置接口interface serial0ip address 172.16.1.1 255.255.255.252ip access-group 101 incrypto map sharef (5)interface fastethernet0end 試題七(15分)閱讀以下說明和java程式代碼,將應填入__(n) __處的字句寫在答題紙的對應欄內。[說明]1、smtp是傳送e-mail的協定,常用以下5條命令傳送e-mail:◆itelo<sp><domain><crlf>,與smtp伺服器握手,傳送本機域名;◆mall<sp>from:<reverse-path><crlf>,傳送發信者的信箱名稱;◆rcpt<sp>t0:<forward-path><crlf>,傳送接收者的信箱名稱;◆data<crlf>,傳送郵件數據e包括信頭和信體);◆quit<crlf>,退出與smtp伺服器的連線。2、試題中直接利用的類及方法如下:(1)類serversocket(intport)實現tcp伺服器插口(socket),它提供兩種構造函式,用它們來指定伺服器插口所用的連線埠,並監聽到達的連線請求。類中的主要方法有:accept():啟動伺服器插口監聽並等待,直到建立連線為止,一旦建立連線就返回socket類的一個對象。getlnetaddress():返回插口所連線的主機地址。getlocalport():返回在伺服器插口上建立了連線的連線埠。close():關閉伺服器插口。(2)類inetaddress包裝了internet地址。類中的主要方法有:getlocalhost():返回一個代表本機internet地址的inetaddress對象。getaddress():獲得數字表示的ip地址。gethostname():獲得域名。(3)類socket實現基於連線的客戶插口。類中的主要方法有:getlnetaddress():返回一個與插口連線的客戶機的internet地址,其類型為inetaddress。getlnputstream():用來訪問與插口相關的輸入流。getoutputstream():用來訪問與插口相關的輸出流。close():關閉插口。(4)readline()是輸入流類的一個方法,用於伺服器或客戶從對方讀入一行輸入流信息。(5)用戶自定義類nvtinputstream(1nputstream instream,outputstream outstream)實現了網路虛擬終端輸入接口。(6)用戶自定義類nvtoutputstream(0utputstreamoutstream)實現了網路虛擬終端輸出接口。3、下面是用java語言實現的一個簡單smtp伺服器程式的部分代碼。[程式代碼]import java, net.*;import java. io.*;import jdg. yan. nvtinputstream; //用戶自定義類包import jdg. yan. nvtoutputstream; //用戶自定義類包 public class smtpserverapp{public static void main(string args[]){smtpserver server=new $mtpservero;server, run 0;}} class smtpserver{static final int helo=1;static final int mail=2;static final int rcpt=3;static final int data=4;static final iht end data=5;static final iht quit=6;static final int finished=9;nvtoutputstream out;nvtinputstream in;string hostname; public smtpserver(){super();}public void run(){try {serversocket server=__(1)__; //在1145號連線埠建立tcp伺服器插口int localport= server, getlocalport() ; //監聽連線連線埠hostname=__ (2) __; //獲取本地主機域名system. out. println (“listening on port”+ localport+”.”);boolean finished=false;do {socket client=__(3)__; // 監聽等待,直到建立連線,返回對象cllentstring destname=__(4)__ ; //獲得所連線的客戶主機ip地址的域名int destport=client, getport () ; //所連線的客戶主機連線埠號system. out.println(“accepted connection to “+destname+” on port “+destport+”.”//控制台顯示連線out=new nvtoutputstream (client.getoutputstream());in=new nvtinputstream(__ (5) __); //建立與連線關聯的輸入流__(6)__ ; //接收郵件__(7)__ ; //關閉連線對象} while (! finished);}catch (unknownhostexception ex) {system.out. println (*unknownhostexception occurred.”); //出錯處理catch (ioexception ex) {system. out. println (“ioexception occurred.”);}}void getmail(){ //實現smtp的子集,從客戶接收郵件out. println(“server 220”+hostname+” ready!” ) ;int state =helo; //設定狀態為helo,state保存與客戶通信的狀態do { //接收並處理從郵件客戶接收到的命令string line=” ”;out.println(“server 250 helo , ok!”);try{line= __(8)__; //從虛擬終端讀取一行if (1ine==null ) state=finished;} catch(ioexception ex) {system. out. println (“server ioexception occurred.”);system. exit (1) ~}switch (state) {case helo:if (__(9)__) //若該行信息為傳送本機域名{out.println(“server 250 hello”):system.out.println(1ine);tate=mail;}else{out.println(“server 500 error”);system.out.println(*server*+line);}state:finished;break:case mall: //代碼省略case rcpt: //代碼省略case data:if(__(10)__) //若該行信息為傳送郵件數據{out.println(“354 mail input:end with<crlf>.<crlf>”);system.out.println(1ine);state=end_data;}else{out.println(*500 error*);system.out.println(1ine);}break;case end data://代碼省略case quit: //代碼省略}}while(state!=finished);}//判斷客戶收到的命令是否與指定的命令字元串相匹配boolean commandis(string s,string line){int n=s.1ength();if(s.equalslgnorecase(1ine.substring(0,n)))return true;return false;}}