填空题最佳管理的园区网通常是按照分级模型来设计的。在分级设计模型中,通常把网络设计分为3层,即核心层、汇聚层和接入层。图1-1所示的是某公司的网络拓扑图,但该公司采用的是紧缩核心模型,即将核心层和汇聚层由同一交换机来完成。
填空题 下面是路由器R2的配置命令列表,在空白处填写合适的命令参数,实现R2的正确配置。
Router>en Router#conf term
Router(config)#hostname R2 R2(config)#int e0
R2(config-if)#ip address 192.168.3.1 255.255.255.0
R2(config-i0#no shutdown R2(config-if)#int s0
R2(config-if)#ip address 192.168.2.2 255.255.255.0
R2(config-if)#no shutdown R2(config-if)# {{U}}(4)
{{/U}} R2(config)#ip routing R2(config)#ip
route 0.0.0.0 0.0.0.0 {{U}}(5) {{/U}} R2(config)#ip
classless R2(config)#exit R2# copy run
start
填空题阅读以下说明,根据要求回答问题1~问题4。[说明]为了保障网络安全,某公司安装了一款防火墙,对内部网络、Web服务器以及外部网络进行逻辑隔离,其网络结构如图所示。
填空题阅读以下说明,回答问题1至问题4。[说明]某单位的网络结构如图所示,其中维护部通过DDN专线远程与总部互通。
填空题 [说明]
VLAN成员模式有两种:静态VLAN和动态VLAN。Cisco的交换机可以使用名为VMPS(VLAN Management Policy
Server,VLAN成员策略服务器)的服务来创建一个MAC地址数据库,并用于动态地管理VLAN。VMPS实际上就是一个MAC地址到VLAN的映射数据库。
某公司在组建局域网时,考虑到该公司内大多数用户都使用笔记本电脑,而且经常会在办公区域内移动,决定采用动态VLAN成员模式,图2-1是该公司的网络拓扑图。
为了创建了一个动态VLAN,该公司的网络管理员收集到所有员工计算机的MAC地址,并将其存放在vmps.txt的文本文件中,该文件的内容是:
… ! vmps domain ABC !vmps mode
open ! vmps fall back-NONE-
vmps-mac-address address 00e0.87ec.3483.e189f vlan-name
v2 address 00e0.efl2.3d93.1e4a vlan-name v2
address 00e0.095a.428d.0d7a vlan-name v3
现有虚拟局域网络的四种划分方式为{{U}} (1) {{/U}}、{{U}} (2)
{{/U}}、{{U}} (3) {{/U}}、{{U}} (4) {{/U}}。本方案中使用是{{U}}
(5) {{/U}}。
填空题若采用策略路由将来自192.168.4.0/24网络去往Internet的数据流转发到ISP1,将来自192.168.1.0/24网络去往Internet的数据流转发到ISP2,请将以下(7)~(12)空缺处的内容填写完整。 R1 (config)#access-list 1 permit 192.168.1.0 0.0.0.255 R1 (config)#access-list 2 permit 192.168.4.0 0.0.0.255 R1 (config)# roune-map ISP1 permit 10 R1 (config-route-map)# match ip address (7) R1 (config-route-map)# set interface (8) R1 (config-route-map# exit R1 (config)# route-map ISP2 permit 20 R1 (config-route-map)# match iP address (9) R1 (config-route-map)# set interface (10) R1 (config-toure-map)# exit R1 (config)# interface f0/1 R1 (config-if)#ip policy route-map ISP2 R1 (config-if)# interface f0/2 R1 (config-if)#ip policy route-map (11) R1 (config-if)# interface (12) R1 (config-if)#ip policy route-map ISP1 R1 (config-if)#
填空题三个vlan各自的IP地址范围为 (14) 、 (15) 、 (16) 。
填空题图3-1中,路由器除了实现内部局域网与Internet之间数据路由的功能之外,还具有的功能为 (1) ,且通常称具有这种功能的路由器为 (2) 。
填空题
[说明]如图4-1所示,企业中共有三个部门:工程部、财务部、技术部。只有一个公网地址为172.16.1.1/24,PC1、PC3、PC5分别为三个部门的部门经理使用。所有的员工通过一个公网地址与互联网通讯;使各部门经理之间能相互通信,普通员工之间不能相互通信。
通过配置{{U}} (1)
{{/U}}使企业中所有的计算机都能通过唯一的公网地址与互联网通信。通过配置{{U}} (2) {{/U}}划分各个部门,并配置{{U}}
(3) {{/U}}实现每个部门经理之间能够通讯,普通员工之间不能相互通讯。
填空题[说明]
在一个基于TCP/IP协议的网络中,每台主机都有一个IP地址,根据获得IP地址方式的不同,可以分为静态IP和动态IP。例如:用宽带入网,会有一个固定的IP地址,每次连入Internet,IP都一样;而用拨号上网,每次连入Internet时都从ISP那里获得一个IP地址且每次获得的可能不同,这是因为DHCP服务器的存在。在Linux中建立DHCP服务器的配置文件是“dhcpd.conf”,每次启动DHCP服务器都要读取该文件。下面是一个dhcp.conf文件的实例:
1 default-lease-time 1200;
2 max-lease-time 9200;
3 option subnet-mask 255.255.255.0;
4 option broadcast-address 192.168.1.255;
5 option router 192.168.1.254;
6 option domain-name-serves 192.168.1.1, 192.1 68.1.2
7 option domain-name "abc.com"
8 subnet 192.168.1.0 netmask 255.255.255.0
9 {
10 range 192.168.1.20 192.168.1.200;
11 }
12 host fixed{
13 option host-name " fixed.abc.com";
14 hardware Ethernet 00:A0:78:8E:9E:AA;
15 fixed-address 192.168.1.22;
16 }
填空题阅读以下有关网络设备安装与调试的叙述,分析设备配置文件,回答问题1至问题3,把解答填入对应栏内。
虚拟局域网(Virtual
LAN)是与地理位置无关的局域网的一个广播域,由一个工作站发送的广播信息帧只能发送到具有相同虚拟网号的其他站点,可以形象地认为,VLAN是在物理局域网中划分出的独立通讯区域。在以交换机为核心的交换式局域网络中,VLAN技术应用广泛,其优势在于控制了网络上的广播风暴,增加了网络的安全性,利于采用集中化的管理控制。其中,基于端口的VLAN划分方式较为常见,通过将网络设备的端口划归不同的VLAN实现广播帧的隔离。
填空题为了配置动态VLAN,在交换机1上执行如下命令,请解释以下语句的含义。 Switch1>(enable)set vmph tftpserver 192.168.0.10 vmps.txt (9) Switch1>(enable)set vmps state enable (10) Switch1>(enable)set port membership 4/1-22 dynamic (11)
填空题根据网络需求分析和网络设备连接图,所有接入交换机都直接连接至相应的汇聚交换机(食堂与礼堂的两台接入交换机之间呈级连关系),每台汇聚交换机最多向下连接12台接入交换机,则该政府机构网络中至少需要 (11) 台24口的接入交换机;至少需要 (12) 台汇聚交换机(暂不考虑包括服务器使用的交换机)。
填空题[说明]如下图所示,为了实现交换机SW1和SW2之间的冗余连接以提高传输速度和可靠性,在这两台交换机使用两条双绞线互连。为了避免网络环路的出现,在两台交换机之间使用了生成树协议(SpanningTreeProtocol,STP),通过修改Tmnk(干道)端口的属性,使不同的VLAN数据从不同的端口中传输。
填空题该DHCP服务器指定的默认网关、域名以及指定的DNS服务器分别是 (2) 、 (3) 、 (4) 。
填空题1.HTTP协议。 ●HTTP请求消息示例: GET/index, htmlHTTP/1.1 Accept: image/gif, image/jpeg,* / Accept-Language: zh-ch Accept-encoding: gzip, deflate User-Agent: Mozilla/4.0(compatible; MSIE6.0; Windows NT5.1 ) Host: localhost: 8080 Connection: Keep-Alive ●HTTP响应消息示例: HTTP/1.1 200 OK Servert: Microsoft-IIS/4.0 Date:Mon,3 Jan 1998 13:13:33 GMT Content-Type: text/html Last-Modified:Mon,11 Jan 1998 13:23:42 GMT Contelit-Length: 112 <html> … </html> 2.相关类及主要成员函数。 SewerSocket类: 服务器端套接字,它监听固定端口,以接收来自客户端的连接请求,一旦建立连接就返回一个Socket类型的对象。类中的主要成员函数如表1-4所示。{{B}} 表1-4 类中的主要成员函数{{/B}}
函数名
功能说明
ScrvcrSocket(PORT)
构造函数
accept()
返回建立连接的Sockct类型的对象
close()
关闭当前的SerrorSocket类型的对象 基于连接的套接字。类中的主要成员函数如表1-5所示。{{B}} 表1-5 类中的主要成员函数 {{/B}}
函 数 名
功能说明
getnetAddress()
返回InetAddress类型的对象,该对象封装了与该套接字所关联的客户机的IP地址
gctInputSffeam()
返回当前对象所关联的输入流
gctouputStream()
返回当前对象所关联的输出流
close()
关闭当前对象 【Java源程序;一个简单的Web服务器】 /**********************************************/ /* WebScrvc.java */ /**********************************************/ packageobjclass; import java.net. *; import java.io. *; public class WebServer{ //Web服务器侦听的端口号 public static final int PORT=8080; //WEB—ROOT变量存放Web服务器工作目录,该目录存放HTML、GIF图片等静态文件资源 public static final String WEB_ROOT= System.getProperty("user.dir")+File.separator+"webroot"; //SHUTDOWN_COMMAND变量保存关闭服务器的命令 private static final String SHUTDOWN_COMMAND="/shutdown"; //是否收到关闭服务器命令的标志 private boolean shutdown=false; public static void main(Sting [] args) { WebServerserver; newWebServer( ); Server.await( ); } public void await() { ServerSocke serversocke=null; try{ //创建侦听端口号为PORT的ServerSocket类型的对象 ServerSocket=new {{U}}(1) {{/U}}; System.out.println( "WebServerStarted!"); } catch(IOException e) { e.printStackTrace( ); System.exit(1); } //循环等待客户端连接 while(!shutdown) { Socket socket=null; InputStream input=null; OutputStream output=null; try{ //创建来自客户端的连接套接宇 Socket={{U}} (2) {{/U}}; //创建输入流 input=socket.{{U}} (3) {{/U}}; //创建输出流 Output=socket.{{U}} (4) {{/U}}; //创建request对象 Request request=new Request(input); //解析客户端HTTP请求 request.{{U}} (5) {{/U}}; //创建Response对象 Response response=new Response(output); //将request对象传递给response对象 response.setRequest(request); //给客户端发送所请求的静态资源 response.{{U}} (6) {{/U}}; //关闭连接套接字 {{U}} (7) {{/U}}; //判断当前HTTP请求中的URI是否是关闭服务器命令 shutdown=request.{{U}} (8) {{/U}}.equals(SHUTDOWN_COMMAND); } Catch(Exception e){ e.printStackTrace(); continue; } } } } /**********************************************/ /* Request.java /**********************************************/ package objclass; import java.io.InputStream; import java.io.IOEexception; public ClassRequest{ private InputStream input; private String uri; public Request(InputStream input){this.input=input;} //解析客户端HTTP请求消息 public void parse()[…parseUr1();…] //解析客户端HTTP请求中的URL private String parseUr1(String requestString){……} public String getUr1(){return uri;} } /**********************************************/ /*Response.java /**********************************************/ package objclass; import java.io.*; public class Response{ private static final int BUFFER_SIZE=1024; Request request; OutputStream output; public Response(OutputStrearn output){this.output=output;} public void set_Request(Requestrequest){this.request=request;} //向客户端发送所请求的静态资源 public void sendStaticResource() throwsIOException{…} } 【运行测试】 在本机运行WebServer程序,然后打开IE浏览器。 1.在IE地址栏中,输入请求“/index.html”页面的命令:{{U}} (9) {{/U}}。 2.在IE地址栏中,输入关闭Web服务器的命令:{{U}} (10) {{/U}}。
填空题【说明】
网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。
一般发起通信请求的应用程序称为客户软件,该应用程序通过与服务器进程建立连接,发送请求,然后等待服务器返回所请求的内容。服务器软件一般是指等待接收并处理客户机请求的应用程序,通常由系统执行,等待客户机请求,并且在接收到请求之后,根据请求的内容,向客户机返回合适的内容。
本题中的程序较为简单,客户机接收用户在键盘上输入的文字内容,服务器将客户机发送来的文字内容直接返回给客户机,在通信过程中服务器方和客户机方都遵守的通信协议如下:
由客户机首先发送请求,该请求由首部和内容两大部分组成,两个部分各占一行文字,通过行结束符“/n”隔离。
首部只有一个Length域,用于指定请求的内容部分的长度,首部的结构为:“关键词 Length”+“”+数值+“/n”。
内容部分为一行文字,其长度必须与Length域的数值相符例如,客户机的请求为“Length14/nHello,my baby!”,服务器接收请求处理后返回文字"Hello,my baby!”。
【Socket程序】
服务器主程序部分:
#indude<stdio.h>
……//引用头文件部分略>
#define SERVER PORT 8080 //服务器监听端口号为8080
#define BACKLOG 5 //连接请求队列长度
int main(int argc,char * argv[]){
int listenfd,connfd //监听套接宇、连接套接字描述符
struct sockaddr_in servaddr; //服务器监听地址
listenfd={{U}} (1) {{/U}}; //创建用于监听的套接字
if(listenfd<0){
fprintf(stderr,“创建套接字错误!”)
exit(1);
} //套接字创建失败时打印错误信息
bzero(;){
connfd={{U}} (5) {{/U}};
//从监听套接字的连接队列中接收已经完成的连接,并创建新的连接套接字
if(connfd<0){
fprintf(stderr,“接收连接失败!”);
exit(1);
} //接收失败打印错误信息
serv_respon(connfd);//运行服务器的处理函数
{{U}} (6) {{/U}}; //关闭连接套接字}
close(listenfd); //关闭监听套接字}
服务器通信部分:
#include<stdio.h>
……//引用头文件部分略>
void serv_respon(int sockfd){
int nbytes;char buf[1024];
for(;;){
nbytes=read_requ(sockfd,buf,1024);
//读出客户机发出的请求,并分析其中的协议结构,获知请求的内容部分的长度,并将内容复制到缓冲区buf中,
if(nbytes==0)return;//如客户机结束发送就退出
else if (bytes<0){
fprintf(siderr,“读错误情息:%s/n”,strerror(errno));
return;
}//读请求错误打印错误信息
if(write_all(sockfd,buf,nbytes)<0)
//将请求中的内容部分反向发送回客户机
fprintf(siderr,“写错误信息:%s/n”,strerror(errno));
}
}
int read_requ(int sockfd,char*buf int size){
char inbuf[256];
int n;int i;
i=read_line(sockfd,inbuf,256);
//从套接字接收缓冲区中读出一行数据,该数据为客户请求的首部
if(1<O)return(i);
else if(i==0)return(0);
if(strncmp(inbuf," ",6)==0)
sscanf({{U}} (7) {{/U}},“%d”,&n); //从缓冲区buf中读出长度信息
else{
sprintf(buf," ",14);
return(14);
} //取出首部Length域中的数值,该数值为内容部分的长度
return(read_all(sockfd,buf,n));//从接收缓冲区中读出请求的内容部分
}
int get_char(int fd,char * ch){
static int offset=0;
static int size=0;
static char buff[1024];
//声明静态变量,在get_char多次被调用期间,该变量的内存不释放
for(;size<=0||{{U}} (8) {{/U}};){
size=read(fd,buf,1024); //一次从套接字缓冲区中读出一个数据块
if(size<0){
if(errno==EINTR){
size=0;
contine;
//EINTR表示本次读操作没有成功,但可以继续使用该套接字读出数i
}else
return(-1);
}
offset=0;//读出数据后,将偏址置为0
*ch=buf[{{U}} (9) {{/U}}]; //将当前的字符取出,并将偏址移向下一字符
return(1);
}
int read_line(int fd,char*buf,int maxlen){
int i,n;
char ch;
for(i=0;i<maxlen;){
n=get_char(fd,&ch);//取出一个字符
if(n==1){
buff[i++]=ch; //将字符加入字符串中
if({{U}} (10) {{/U}})break;
} else if(n<)return(-1);
else break;
}
bur[i]='/0';
return(i);
}
//函数read_line的作用是读出请求的首部,其处理的方法是每次调用get_char函数,取出一个字符,检查该字符是否是回车符'/n',如果是回车符,就返回请求的首部。
//get_char的处理方式较为特殊,并不是每次调用read函数读一个字符,而是一次从缓冲区中读一块内容,再一次一个字符提交给函数read_line,如果提交完了就再读一块,这样就可以提高读缓冲区的效率。另外,由于客户机是分两次调用writ_all函数将请求的首部和内容发送给服务器,因此get-char不会取出请求内容部分的字符。
部分SOCKET数据结构与函数:
1.地址结构。
sockaddr_in:
sockaddr_in类型的结构定义,sockaddr_in是通用套接字结构sockaddr在TCP/IP协议下的结构重定义,为TCP/IP套接字地址结构。
Struct sockaddr_in{
short int sin_family; //地址类型AF_XXX,其中AF_INET为TCP/IP专用
unsigned short int sin_port; //端口号
struct in_addr sin_addr; //Internet地址
//端口号以及Internet地址使用的是网络字节顺序,需要通过函数htons转换
}
struct_inaddr{
_u32s_addr;//类型为unsignel long
}
hostent:
hostent类型的结构定义
struct hostnet{
char*h_name; //主机的正式名称
char* *h_aliases; //别名列表
nit h_addrtvPe; //主机地址类型:AF_XXX
int h_length; //主机地址长度:4字节(32位)
char* * h_addr_list;//主机IP地址列表
}
#define h_addr h_addr_list[0]
2.基本函数。
int socket(int domain,int type,int protocol);
函数socket创建一个套接字描述符,如果失败则返回-1。domain为地址类型,type为套接字类型,本题中为SOCK_STREAM;protocol指定协议,本题中为0。
Int connect(int sockfd,struct sockaddr *servaddr,int addrlen);
函数connect与服务器建立一个连接,成功返回0,失败返回-1。servaddr为远程服务器的套接字地址,包括服务器的IP地址和端口号;addrlen为地址的长度。
int read(int fd,char * buf,int len);
int write(int fd,char * buf,int len);
函数read和write从套接字读和写数据,成功返回数据量大小,否则返回-1。buf指定数据缓冲区,len指定接收或发送的数据量大小。
int bind(int sockfd,struct sockaddr * myaddr,int addrlen);
函数bind将本地地址与套接字绑定在一起,成功返回0,否则返回-1;myaddr是本机地址;addrlen为套接字地址结构的长度。
int listen(int sockfd, int backlog);
函数listen将一个套接宇转换为倾听套接字,成功返回0,否则返回-1;backlog为请求队列的最大长度。
Int accept(int sockfd,struct sockaddr * addr,int * addrlen);
函数accept从倾听套接字的完成连接中接收一个连接,如果完成连接队列为空,那么这个进程睡眠,失败时返回-1,成功时返回新的套接字描述符。Sockfd为倾听套接字,addr为客户机的地址,addlen为地址长度,在调用时用常量NULL代替addr与addlen表示无须取出客户机的地址信息
struct hostent * gethostbyname(const char * hostname);
函数gethostbyname查询指定的域名地址对应的IP地址,返回一个hostent结构的指针,如果不成功返回NULL。
3.用户自定义函数。
int read_all(int fd,void * buf,int nbyte);
函数read all从参数fd指定的套接字描述符中读取nbytes字节数据至缓冲区buf中,成功返回实际读的字节数(可能小于nbyte),失败返回-1。
int write_all(int fd,void * buf,int nbyte);
函数write_all向参数fd指定的套接宇描述符中写入缓冲区buf前nbyte字节的数据,成功返回实际写的字节数(始终等于nbyte),失败返回-1。
write_requ函数为客户机发送请求的函数;read_requ函数为服务器获取请求的函数。
填空题完成下列命令行,对网络接口进行地址初始化的配置: firewall(config)#ip address inside (1) (2) firewali(config)#ip address outside (3) (4)
填空题 [说明] 下面是某路由器的部分配置信息,解释部分语句的含义。
[配置路由器信息] Current configuration:
! hostname router1 isdn switch-type
basic-net3
{{U}}(1) {{/U}} !
interface Ethernet0 ip address 10.0.0.1
255.255.255.0 ip nat inside
{{U}} (2) {{/U}} !
interface bri 0 ip address negotiated
{{U}} (3) {{/U}} ip nat outside
encapsulation PPP PPP authentication pap callin
{{U}}(4) {{/U}} PPP multlink
{{U}} (5) {{/U}}
dialer-group 1 dialer string 2633 PPP pap
sent-username 263 password 263
{{U}}(6) {{/U}} ip route 0.0.0.0 0.0.0.0 bri
0 access-list 2 permit any
{{U}}(7) {{/U}} dialer-list 1 protocol ip permit
{{U}}(8) {{/U}} ip nat inside source list 2 interface
bri 0 overload {{U}}(9) {{/U}} ……
End
填空题Linux操作系统安装后,其默认的主机名是localhost。若要将提供DNS、FTP、SMTP和POP3这4种服务的Linux服务器主机名修改为ns.test.com,则需要进行以下3个操作步骤。 ①使用“ (1) ns.test.com”命令修改当前主机名。 ②修改/etc/sysconfig/network配置文件中的HOSTNAME的值,该文件修改后的相关项信息如下: NETWORKING= (2) HOSTNAME=ns.test.com ③修改本机的域名解析文件/etc/hosts。修改后的/etc/hosts文件如下: 127.0.0.1 localhost.localdomain localhost 127.0.0.1 ns.test.com.localdomain (3)
