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

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

作者:互联网

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

主要从三个方面进行评测

1、计算机网络基本理论知识

2、代码编写能力

3、自学能力

二、基于Linux源码的网络协议栈简介

1.网络层次结构

2.Linux Socket

socket 位于应用层,它为网络应用编程提供API。通过Linux Socket,网络应用程序得以访问内核空间的协议栈,从而形成通信。同时,Linux系统中一切皆文件,Socket也是文件的一部分,调用Socket API进行数据收发时控制的是收发缓冲区的文件描述符。Linux Socket API的定义在./net/socket.c中。以下是UDP Socket与TCP Socket处理过程

3.TCP/IP协议栈

TCP位于传输层,其主要功能包括建立连接(三次握手)、滑动窗口和拥塞控制,Linux中TCP栈的基本处理过程如下:

IP位于网络层,其主要功能包括IP Fragment的分片转发和路由处理,Linux中IP栈的基本处理过程如下:

三、计算机网络知识水平与编程能力测试卷

一、选择题(10小题,每小题2分,共20分)

1.计算机网络中使用最广泛的交换技术是( ) 【网课“计算机网络”测试题】
A.电路交换

B.报文交换

C.分组交换

D.线路交换
答案:C,最常用的TCP/IP协议数据传输形式为分组

2.关于TCP/IP的IP层协议描述不正确的是( ) 【网课“计算机网络”测试题】
A. 是点到点的协议

B. 不能保证IP报文的可靠传送

C. 是无连接的数据报传输机制

D. 每一个IP数据包都需要对方应答
答案:A,IP协议为面向无连接

3.对地址转换协议(ARP)描述正确的是( )【2012考研真题】
A. ARP封装在IP数据报的数据部分

B. ARP是采用广播方式发送的

C. ARP是用于IP地址到域名的转换

D. 发送ARP包需要知道对方的MAC地址
答案:B,主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址。不需要提前知道MAC地址。

4.在TCP/IP体系结构中,直接为ICMP提供服务的协议是( ) 【2012考研真题】
A.PPP

B.IP

C.UDP

D.TCP
答案:C, ICMP报文包含在IP数据报内。

5.TCP/IP参考模型的网络层提供的是(A)。【2011年408考研】

A. 无连接不可靠的数据报服务
  
B. 无连接可靠的数据报服务

C. 有连接不可靠的虚电路服务  
D. 有连接可靠的虚电路服务
答案:A, TCP/IP的网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。此外考察IP首部,如果是面向连接的,则应有用于建立连接的字段,但是没有;如果提供可靠的服务,则至少应有序号和校验和两个字段,但是IP分组头中也没有(IP首部中只是首部校验和)。因此网络层提供的无连接不可靠的数据服务。有连接可靠的服务由传输层的TCP提供

6.以太网交换机进行转发决策时使用的 PDU 地址是__。【2009年408考研】
A.目的物理地址  

B.目的 IP 地址

C.源物理地址  

D.源 IP 地址

答案:A。考查交换机的工作原理。交换机实质上是一个多端口网桥,工作在数据链路层,数据链路层使用物理地址进行转发,而转发通常都是根据目的地址来决定出端口。

7.使用浏览器访问某大学 Web 网站主页时,不可能使用到的协议是 __。【2014年408考研T40】

A.PPP  

B.ARP   

C.UDP  

D.SMTP

解析:D。考察应用程序使用的服务和协议。当接入网络时可能会用到PPP协议,A可能用到;而当计算机不知道某主机的MAC地址时,用IP地址查询相应的MAC地址时会用到ARP协议,B可能用到;而当访问Web网站时,若DNS缓冲没有存储相应域名的IP地址,用域名查询相应的IP地址时要使用DNS协议,而DNS是基于UDP协议的,所以C可能用到,SMTP只有使用邮件客户端发送邮件,或是邮件服务器向别的邮件服务器发送邮件时才会用到,单纯的访问Web网页不可能用到。

8.下列IP地址中,只能作为IP分组的源IP地址但不能作为目的IP地址的是__。【2017年408考研T36】

A.0.0.0.0      

B.127.0.0.1

C.200.10.10.3   

D.255.255.255.255

解析:A。考察IP地址分类。全0的IP地址表示本地计算机,在点对点通信中不能作为目标地址。127.0.0.1是环回地址,只能用作目的地址。直接广播地址(主机号全为1的IP地址)用于将一个分组发送给特定网络上的所有主机,只用于目的地址。受限广播地址(网络号和主机号都为1的IP地址)是对当前网络进行广播,也只用于目的地址。而200.10.10.3是一个普通的C类地址,可以用作源地址也可以用作目的地址

9.以下关于API与系统调用之间关系描述不正确的是( ) 【原创】
A. API可能直接提供用户态的服务

B. 单个单独的API可能调用多个系统调用

C. 每个API都调用了系统调用

D. 不同的API可能调用了同一个系统调用

答案:C, API可能不调用系统调用

10.404是网页访问常见的返回码,以下不可能导致返回404码的情况是()【原创】

A. 所访问的网页不存在

B. 所访问的网页存在,但是被改动或删除了

C. 用户输入了一个错误的URL

D. 用户没有访问指定资源的权限

答案:D。A、B、C均是可能导致返回404的原因,用户无访问权限时返回状态码为401。

二、填空题(10分)

(1)计算机网络程序设计是利用( 网络应用编程接口 )编写网络应用程序,实现网络应用进程间的信息交互功能

(2)( 地址解析 (Address Resolution) )就是将计算机中的协议地址翻译成物理地址 (或称 MAC 地址, 即媒体映射地址 )

(3)一个系统的全域名由( 主机名、 域名和扩展名 )三部分组成, 各部分间使用 “. ”分隔, 例如 www.sina.com 。

(4)在 TCP/IP 应用中,( 域名系统 (DNS) )是一个分布的数据库,由它来提供 IP 地址和主机名之间的映
射信息。
(5)以太网数据帧的长度必须在( 46~1518 )字节之间

三、判断题(10分)

1、NAT是ipv4为解决地址枯竭而开发的技术,ipv6中用不到NAT。()
【答案】×。前半句正确,后半句错误。ipv6仍在延用NAT,因为除了扩充ip地址外,NAT还可以提高网络安全性。考察对NAT协议的基本认识。

2、在TCP/IP协议中,路由器负责对IP数据报进行分片和重组。()
【答案】×。为了降低路由器任务量,提升通信速度,分片的工作从IP层提升至传输层。在传输层通过路径MTU发现技术确定IP数据报的大小,这样路由器不必做分片任务,只负责转发。只有目标主机有权对分片进行重组,路由器不能也没必要重组分片。考察对IP和TCP协议细节的理解

3、TCP客户端在完成Socket连接初始化后,调用listen()来等待服务器响应自己的连接请求。()
【答案】×。这描述的是TCP服务器的处理步骤。本题考察socket通信中客户端和服务器对常见api的调用关系。

4、在socket网络编程中,对于TCP套接字,三次握手发生在connect()函数调用时。()
【答案】√。调用connect函数将激发TCP连接三次握手。本题考查对socket网络编程常见api的功能了解。

5、在关闭TCP连接时,shutdown()函数不论描述符引用是否为0,都会激发TCP四次挥手终止连接。()
【答案】√。关闭TCP连接有两个函数,一个是close,一个是shutdown。前者将描述符数值减一,如果为0,才关闭套接字。后者则不论引用计数,直接激发TCP连接终止过程。

四、简答题(30分)

1、简述三次握手流程和缺陷(15分)

解析:三次握手的具体流程

所谓三次握手,即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

(1)第一次握手:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序号seq=J(连接请求报文不携带数据,但要消耗一个序号)。

(2)第二次握手:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为J+1,并且服务器随机产生起始序号seq=K(确认报文不携带数据,但也要消耗一个序号)。

(3)第三次握手:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置1,确认字段为K+1,该报文段可以携带数据,若不携带数据则不消耗序号。
成功进行以上三步后,就建立了TCP连接。

SYN泛洪攻击利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,使得被攻击方资源耗尽,从而不能够为正常用户提供服务。SYN 泛洪攻击通过发送大量的伪造 TCP 连接报文而造成大量的 TCP 半连接,服务器端将为了维护这样一个庞大的半连接列表而消耗非常多的资源。这样服务器端将忙于处理攻击者伪造的TCP连接请求而无法处理正常连接请求。

2、为什么不采用两次握手建立连接(15分)

解析:这主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务端而产生错误。考虑下面这种情况,客户A向服务器B发出TCP连接请求,第一个连接请求报文在网络的某个节点长时间滞留,A超时后认为报文丢失,于是再重传一次连接请求,B收到后建立连接。数据传输完毕后双方断开连接。而此时,前一个滞留在网络中的连接请求到达服务端B,而B认为A又发来连接请求,此时若使用三次握手,则B向A返回确认报文段,由于是一个失效的请求,因此A不予理睬,建立连接失败。若采用的是两次握手,则这种情况下B认为传输连接已经建立,并一直等待A传输数据,而A此时并无连接请求,因此不予理睬,这样就造成了B的资源白白浪费。

五、应用题(30分)

1、某网络拓扑如题47图所示,其中路由器内网接口、DHCP服务器、WWW服务器与主机1均采用静态IP地址配置,相关地址信息见图中标注;主机2~主机N通过DHCP服务器动态获取IP地址等配置信息。(15分)

请回答下列问题。
(1)DHCP服务器可为主机2~主机N动态分配IP地址的最大范围是什么?主机2使用DHCP协议获取IP地址的过程中,发送的封装DHCP Discover报文的IP分组的源IP地址和目的IP地址分别是什么?
(2)若主机2的ARP表为空,则该主机访问Internet时,发出的第一个以太网帧的目的M&C地址是什么?封装主机2发往Internet的IP分组的以太网帧的目的MAC地址是什么?
(3)若主机1的子网掩码和默认网关分别配置为255.255.255.0和111.123.15.2,则该主机是否能访问WWW服务器?是否能访问Internet?请说明理由。

解析:

(1)DHCP服务器可为主机2~主机N动态分配IP地址的最大范围是:111.123.15.5~111.123.15.254;主机2发送的封装DHCPDiscover报文的IP分组的源IP地址和目的IP地址分别是0.0.0.0和255.255.255.255。

(2)主机2发出的第一个以太网帧的目的MAC地址是ff-ff-ff-ff-ff-ff;封装主机2发往Internet的IP分组的以太网帧的目的MAC地址是00-al-al-al-al-al。

(3)主机1能访问WWW服务器,但不能访问Internet。由于主机1的子网掩码配置正确而默认网关IP地址被错误地配置为111.123.15.2(正确IP地址是111.123.15.1),所以主机1可以访问在同一个子网内的WWW服务器,但当主机1访问Internet时,生机1发出的IP分组会被路由到错误的默认网关(111.123.15.2),从而无法到达目的主
机。

2、现有一个公司需要创建内部的网络,该公司包括工程技术部、市场部、财务部和办公室4个部门,每个部门约有20~30台计算机。试问:

若要将几个部门从网络上进行分开。如果分配该公司使用的地址为一个C类地址,网络地址为192.168.161.0,如何划分网络,将几个部门分开?确定各部门的网络地址,并写出分配给每个部门网络中的主机IP地址范围。(15分)

解析:考察简单的子网划分过程

因为此公司有四个内部部门,故必须有四个子网或以上,这里分为四个子网,在C类地址192.168.161.0中的主机号里拿出两位来当子网号(00,01,10,11)。可得子网分别如下:

一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

标签:一一,IP,编程,水平,TCP,计算机网络,主机,IP地址,连接
来源: https://www.cnblogs.com/kttme/p/12176573.html