如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平? I

一、Linux协议栈总结

  本课程重点关注传输层协议和socket以及内核初始化和相关函数调用,顺序如下, 试题主要也是按照此顺序编写

  Linux网络总体结构 --->  TCP/IP简介 --->   socket和Linux内核函数调用 ---> IP   ---> ARP --->  L2 Switching(二层交换机)  ---> DNS

  1. linux网络总体结构

   

    

   2. TCP/IP

    网络协议通常分不同层开发,每一层分别负责不同的通信功能。

  一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。 通常被认为是一个四层协议系统,如下图

   

   TCP/IP协议族中不同层次的协议如下:

    

  TCP和UDP是两种最为著名的运输层协议,二者都使用 IP 作为网络层协议。
    TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务
    UDP为应用程序发送和接收数据报, 但它是不可靠的
  
  IP是网络层上的主要协议,同时被TCP和UDP使用。
    TCP和UDP的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。
  
  ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
  
  ARP(地址解析协议)是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址。

  3. socket和Linux内核函数调用

  

扫描二维码关注公众号,回复: 8495011 查看本文章

二、网络程序设计试题

一、选择题(依据课程顺序讲解内容涉及的相关的概念)

1. 在OSI七层参考模型中,通信子网不涉及以下哪一层(     )

A. 物理层   B.  数据链路层  C. 网络层   D. 传输层 

答案:D    

考察:网络体系按功能分 通信子网 和 资源子网。

     通信子网包括物理层、数据链路层和网络层,提供各种面向网络的服务。资源子网包括应用层、表示层和会话层,提供各种面向用户的服务。

     传输层位于通信子网和资源子网的连接处,主要功能是实现底层协议和高层协议的接口与转换。

来源:  个人

2. 在OSI七层参考模型中,资源子网不涉及以下哪一层(     )

A. 应用层   B.  表示层  C. 会话层  D. 传输层 

答案:D    

考察:同上

来源:  个人

3. 以下对TCP协议描述错误的是()

A. 提供面向连接

B. 可靠的字节流服务

C. 超时重发

D. 是用户数据报协议

答案:D    

考察:TCP基本概念了解,

      TCP传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。

    UDP是用户数据报协议,主要特点是无连接 , 尽最大努力交付(不保证可靠传输), 面向报文等。

来源:  个人

4. 以下不属于socket套接字类型的是()

A. 流式套接字

B. 数据报套接字

C. 原始套接字

D. 网络套接字

答案:D

考察:socket类型基本知识

来源:  https://wenku.baidu.com/view/a5a64a9accbff121dd3683ba.html + PPT

5. 在实现基于TCP的网络应用程序时,服务器端正确的处理流程是()

A. socket() -> bind() -> listen() -> connect() -> read()/write() -> close()

B. socket() -> bind() -> listen() -> read()/write() -> close()

C. socket() -> bind() -> listen() -> accept() -> read()/write() -> close()

D. socket() -> connect() -> read()/write() -> close()

答案:C    

考察:socket编程相关知识点

来源:  https://wenku.baidu.com/view/a5a64a9accbff121dd3683ba.html

6. IP数据报的片重组由什么设备完成(  )。 

A、源主机                        

B、目的主机 

C、中间路由器                    

D、最后一个路由器

答案:B    

考察:IP数据报分片和重组;

     IP数据报在互联网上传输时,可能要经过多个物理网络才能从源端传输到目的端。

     不同的网络由于链路层和介质的物理特性不同,因此在进行数据传输时,对数据帧的最大长度都有一个限制,这个限制值即最大传输单元MTU;

     分片: 一个数据报为了适合网络传输而分成多个数据报的过程称为分片,被分片后的各个IP数据报可能经过不同的路径到达目标主机。

     重组:  当分了片的IP数据报到达最终目标主机时,目标主机对各分片进行组装,恢复成源主机发送时的IP数据报。

来源:  https://wenku.baidu.com/view/8b2f34bd67ec102de2bd89fe.html

7. ARP协议的主要功能是()。 

A. 将IP地址解析为物理地址 

B. 将物理地址解析为IP 

C. 将主机名解析为IP地址 

D. 将IP地址解析为主机名 

答案:A   

考察:ARP的基本概念;

    ARP地址解析协议,其基本功能为通过目标设备的IP地址,查询目标设备MAC地址,保证通信顺利进行。

    所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转成目标MAC地址的过程。

来源:  https://www.nowcoder.com/questionTerminal/c4d87cfad30e494799bbaea770754d6b

8. L2Switching二层交换机是根据以下哪个表进行帧转发?()

A. ARP表

B. MAC地址表

C. RIB表

D. FIB表

答案:B  

考察: MAC地址表:  MAC协议在数据链路层(2层),MAC地址与交换机接口的对应关系

       ARP表: 工作在网络层的协议, 记录IP和MAC的对应关系

       RIB 就是路由表存储所有的路由信息;

    FIB转发表 用于判断基于 IP 包的网络前缀,如何进行转发。

    L2Switching: 

         工作于OSI模型的第2层(数据链路层),可以识别数据报中MAC信息,根据MAC地址进行转发,

      并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。

来源:  https://www.nowcoder.com/questionTerminal/c4d87cfad30e494799bbaea770754d6b

9. 如果本地域名服务无缓存,当采用递归方法解析另一网络某主机域名时,用户主机 、本地域名服务器发送的域名请求消息数分别为() 

A.1条,1条

B.1条,多条

C.多条,1条

D.多条,多条

答案: A 

考察: 递归查询是: 客户机发送一条查询请求到本地域名服务器,发现缓存中没有主机名和IP地址对的信息,那么本地域名服务器就往上继续查询。

     本地域名服务器发送一个查询报文,如果在某一级域名服务器找到了主机名和IP地址对信息,直接返回。

     如果找不到,那么这个域名服务器又会作为客户机去请求上一级域名服务器,直至根域名服务器。

     根名称服务器收到DNS请求后,把所查询得到的所请求的DNS域名中发送给顶级域名服务器,顶级域名服务器再往下级域名服务器请求查找,如果找到了就原路返回。

     所以在递归查询中,主机发送的请求为1次,本地域名服务器发送的请求也为1次。

来源:  https://blog.csdn.net/qq_34115899/article/details/82981007

  

10. 数据完整性指的是( )

A. 保护网络中各个系统之间交换的数据,防止因数据被截获而造成泄密

B. 提供链接实体身份的鉴别

C. 防止非法实体对用户的主动攻击,保证数据接收方收到的信息和发送方发送的信息完全一致

D. 确保数据是由合法实体发出的

答案: C

考察: 网络安全相关基本知识

来源:  https://wenku.baidu.com/view/58457d0f7e192279168884868762caaedc33ba65.html

二、简答题(TCP/IP详解卷1; PPT)

1. 子网号为16bit的A类地址和子网号为8bit的B类地址的子网掩码有何不同? 

 答: 没有不同,子网掩码皆是225.225.225.0

   (来源: TCP/IP详解卷1)

2. 讨论一个DNS名字解析器和DNS域名服务器作为客户程序、服务器或者同时作为客户和服务器的情况?

 答: 一个解析器总是一个客户,一个域名服务器是一个客户又是一个服务器

    (来源: TCP/IP详解卷1)

3. 简述tcp连接建立的时候3次握手 (来源: 个人)

 答:第一次握手: 客户端connect连接到server,

     第二次握手: server accept client的请求之后,向client端发送一个消息,即向客户端确认你已经连接上我了

     第三次握手: client向server发送的,就是对第二次握手消息的确认。

          之后client和server就开始通讯了。

4. 描述基于TCP的Socket通信过程并画出相关连接图  (来源:PPT+个人)

 答:

  客户端:

  socket()  创建套接字

  connect()  向服务器主动发出连接请求

  send()/recv()  和服务器端进行通信

  close()  关闭套接字

  服务端:

  socket()   创建套接字

  bind()    绑定套接字到一个IP地址和一个端口上

  listen()   使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求

  accept()  请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字

  send()/recv()  用返回的套接字与客户端进行通信

  close()   关闭套接字

    

5. 什么是系统调用,用什么方式陷入内核态? (来源: https://wenku.baidu.com/view/43c9a28ccf2f0066f5335a8102d276a20129604e.html)

  系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。 

  系统调用是通过软件中断方式陷入内核的

猜你喜欢

转载自www.cnblogs.com/zhouz/p/12034223.html