软件水平考试(中级)网络工程师下午(应用技术)试题模拟试卷21

0
收藏   分享
  • 卷面总分:75分
  • 试卷类型:模拟考试
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:3次
  • 作答时间:150分钟
试卷简介
试卷预览
1

请阅读以下说明和Socfon程序,将应填(n)处的字句写在对应栏内。

 【说明】

 网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。

 以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。

 程序中用到了两种结构hostent与sockaddr - in:

 hostent类型的结构定义如下:

   struct hostent {char*h_name; //主机的正式名称

            char * * h_aliases;  //别名列表

            int h_addrtype; //主机地址类型:AF_XXX

            Int H_length;  //主机地址长度:4B(32b)

            char * * h_addr_list;//主机IP地址列表}

   #define h_addr h_addr_list [0]

 sockaddr_in类型的结构定义:sockaddr_in是通用套接字结构sockaddr在TCP/IP协议下的结构重定义,为TCP/IP套接字地址结构。

   Struct sockaddrin{

     short int sin_family;//地址类型AF_XXX,其中AF_INET为TCP/IP专用

     unsigned short int sin_port;  //端口号

     struct in_addr sin_addr;    //Internet地址

    //端口号以及Internet地址使用的是网络字节顺序,需要通过函数htons转换

    }

    struct iN_addr{

     _u32s_addr;  //类型为unsignel_long

    }

 程序中使用到了多个函数:

    struct hostent * gethostbyname(const char*hostname);

 函数gethostbyname查询与指定的域名地址对应的IP地址,返回一个hostent结构的指针,如果不成功则返回NULL。

   int_socket(int domain,int_type,int protocol);

 函数socket创建一个套接字描述符,如果失败返回-1。domain为地址类型,type为套接字类型,本题中为SOCK_STRBEAM;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指定接收或发送的数据量大小。

 【Socket程序】

   //程序中引用的头文件略

   #define PORT 3490

   //定义端口号为3490

   int main(int argc,char*argv[])

   { int sockfd,nbytes; //套接字描述符、读入缓冲区的字节数

    char buf [1024];   //缓冲区

    struct hostent * he; //主机信息类型

    struct sockaddr_in srvaddr; //Internet套接字结构

      if( (1) )

        { perror(“调用参数为零,请输入服务器的主机名!\n”); exit(1);}

      if( (2) )  //如果通过主机名没有获得对应的主机信息就提示用户

        { perror(“无法通过主机名获得主机信息!\n”); exit(1);}

      if( (3) ) //在无法创建套接字时,提示用户

        { perror(“无法创建套按字!\n”); exit(1);}

      bzero(&srvaddr,sizeof(srvaddr)); //置空srvaddr

      srvaddr, sin_family=AF_INET;

      srvaddr, sin_port: (4) ;srvaddr.sin_addr: (5) ;

      //设置套接字结构的各项信息,其中的地址来自域名查询后的hp变量

      if(connect(sockfd, (n) ,sizeof(struct sockaddr))==-1)

         { perror(“连接失败!\n”); exit(1);}

      //连接服务器,如果失败则提示用户

       if((nbytes=read(sockfd,buf,MAXDATASIZE))==-1)

        { perror(“读失败!\n”);exit(1);}

      //从套容接字中读出

1

阅读以下说明和交换机的配置信息,回答问题1-3。

 【说明】

 某公司下设3个部门,为了便于管理,每个部门组成一个VLAN,公司网络结构如图1-5所示。

 【交换机Switch1的部分配置信息】

   Switch 1(config)#finterfacefO/9

                  

   Switch1(config-if)#switchport mode access

   Switch1(config-if)#switchport access vlan 11

   Switch1(config)#interface fO/1O

   Switch1(config-if)#switchport mode access

   Switch1(config-if)#switchport access vlan 12

   Switch1(config)#interface fO/17

   Switch1(config-if)#switchport mode access

   Switch1(config-if)#switchport access vlan 13

 【交换机Switch2的部分配置信息】

   Switch2(config)#interface fO/6

   Switch2(config-if)#switchport mode access

   Switch2(config-if)#switchport access vlan 11

   Switch2(config)#interface fO/8'

   Switch2(config-if)#switchport mode access

   Switch2(config-if)#switchport access vlan 12

   Switch2(config)#interface fO/11

   Switch2(config-if)#switchport mode access

   Switch2(config-if)#switchport access vlan 13

 【交换机Switch3的部分配置信息】

   Switch3(config)#interface fO/3

   Switch3(config-if)#switchport mode access

   Switch3(config-if)#switchport access vlan 11

   Switch3(config-if)#exit

   Switch3(config)#interface fO/7

   Switch3(config-if)#switchport mode access

   Switch3(config-if)#switchport access vlan 12

   Switch3(config)#interface fO/13

   Switch3(oonfig-if)#switchport mode access

   Switch3(config-if)#switchport access vlan 13

通常VLAN有静态和动态两种实现方式,这两种方式分别是如何实现的?各有什么特点?

 Switch1采用的是哪种实现方式?