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

要评测一个软件工程师的计算机网络知识与网络编程水平,需要考察他的以下能力:

①架构设计能力

可以设计出高效稳定的网络结构,并使得网络架构具有良好的拓展能力和鲁棒性

②性能优化能力

计算机综合素质高,最大化现有硬件性能

③应急能力

可以快速定位问题,并进行合理操作恢复网络正常运行

④安全意识

具有一定的网路安全知识,提前制定处理突发情况的方案

 

linux网络协议栈简单总结

上图即可大致描述Linux网络协议栈在整个网络体系中所对应的层次。

 

试题

一、选择题

1.ARP协议的功能是( C )

  A、根据域名查询IP地址

  B、根据MAC地址查询IP地址

  C、根据IP地址查询MAC地址

  D、根据IP地址查询域名

2.TCP使用(  B  )进行流量控制。 

  A、三次握手机制

  B、窗口控制机制

  C、自动重发机制

  D、端口机制

3.路由器是根据哪一层的信息作为数据报选择路由(   C  )

  A、物理层

  B、数据链路层

  C、网络层

  D、传输层

4.在OSI参考模型中,自下而上第一个提供端到端服务的层次是 ( B )

  A、数据链路层 

  B、传输层

  C、会话层 

  D、应用层 

5.下列哪一个选项不是UDP协议的特点?(  C  )

  A、数据包有丢失的可能

  B、数据包无序到达

  C、采用流式套接字编程

  D、报文中加入校验和

6.TCP可靠传输的实现中,不包括(  D )

  A、以字节为单位的滑动窗口

  B、超时重传时间的选择

  C、TCP报文选项字段的ACK字段

  D、TCP报文的紧急指针字段

7. A、B两个网络,IP均为静态分配,且IP段不同。当一台主机从一个A网络移到B一个网络时,以下说法正确的是(  B  )

  A、必须改变它的IP地址和MAC地址

  B、必须改变它的IP地址,但不需改动MAC地址

  C、必须改变它的MAC地址,但不需改动IP地址

  D、MAC地址、IP地址都不需改动

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

  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()

二、判断题

1. 发起对等通信的应用程序为服务器。(F)

  解析:发起对等通信的应用程序为客户端。

2. 循环服务器描述的是一个时刻可以处理多个请求的一种服务器实现。(F)

  解析:循环服务器在同一个时刻只可以响应一个客户端的请求。

3. bind()函数用于将套接字和某个地址绑定。(T)

  解析:实验中阅读源码以及查阅资料可知正确。

4. IP地址是识别Internet网络中的主机及网络设备的唯一标识。(T)

  解析:IP是Internet网络中设备的 唯一标识。

5. ICMP是用在传输层的协议。(F)

  解析:ICMP是网络层协议。

三、解答题

1.简述DNS的工作原理? 

应用进程将待解析的域名放在DNS请求报文中,以UDP数据报的形式发送给本地域名服务器,本地域名服务器查找到相应域名的IP地址后(主机向本地域名服务器的查询一般都是采用递归查询),就将该域名的IP地址信息放入应答报文中返回给客户进程。如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他域名服务器继续发送查询请求报文(本地域名服务器向根域名服务器的查询通常采用迭代查询)。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器查询”。然后让本地域名服务器进行后续的查询。

 

2.某网络拓扑如下图所示,路由器 R1 通过接口 E1、E2分别连接局域网 1、局域网 2,通过接口 L0连接路由器 R2,并通过路由器 R2 连接域名服务器与互联网。R1 的 L0 接口的 IP 地址是 202.118.2.1;R2的 L0接口的 IP 地址是 202.118.2.2,L1 接口的 IP 地址是 130.11.120.1,E0接口的 IP 地址是 202.118.3.1;域名服务器的 IP 地址是 202.118.3.2。

⑴ 将 IP 地址空间 202.118.1.0/24 划分为 2 个子网,分别分配给局域网 1、局域网 2,每个局域网需分配的IP 地址数不少于 120个。请给出子网划分结果,说明理由或给出必要的计算过程。

⑵ 请给出 R1 的路由表,使其明确包括到局域网 1 的路由、局域网 2的路由、域名服务器的主机路由和互联网的路由。

⑶ 请采用路由聚合技术,给出 R2 到局域网 1和局域网 2的路由。

解析:

⑴ CIDR 中的子网号可以全 0 或全 1,但主机号不能全 0 或全 1。因此若将 IP 地址空间 202.118.1.0/24 划分为 2 个子网,且每个局域网需分配的 IP 地址个数不少于 120 个,子网号至少要占用一位。可知,主机号至少要占用 7 位。由于源 IP 地址空间的网络前缀为 24 位,因此 主机号位数+子网号位数=8 。综上可得主机号位数为 7,子网号位数为 1。因此子网的划分结果为:子网 1:202.118.1.0/25,子网 2:202.118.1.128/25。地址分配方案:子网 1 分配给局域网 1,子网 2 分配给局域网 2,或子网 1 分配给局域网 2,子网 2 分配给局域网 1。

⑵ 由于局域网 1 和局域网 2 分别与路由器 R1 的 E1、E2 接口直接相连,因此在 R1 的路由表中,目的网络为局域网 1 的转发路径是直接通过接口 E1 转发,目的网络为局域网 2 的转发路径是直接通过接口 E1转发。由于局域网 1、2 的网络前缀均为 25 位,因此它们的子网掩码均为 255.255.255.128。根据题意,R1 专门为域名服务器设定了一个特定的路由表项,因此该路由表项中的子网掩码应为255.255.255.255。对应的下一跳转发地址是 202.118.2.2,转发接口是 L0。根据题意,到互联网的路由实质上相当于一个默认路由,默认路由一般写作 0/0,即目的地址为 0.0.0.0,子网掩码为 0.0.0.0。对应的下一跳转发地址是202.118.2.2,转发接口是 L0。

综上可得到路由器 R1 的路由表为:

⑶ 局域网 1 和局域网 2 的地址可以聚合为 202.118.1.0/24,而对于路由器 R2 来说,通往局域网 1 和 2 的转发路径都是从 L0 接口转发,因此采用路由聚合技术后,路由器 R2 到局域网 1 和局域网 2 的路由为:

                

 

3.TCP建立连接过程中的三次握手是什么?试用例子说明为什么在运输连接建立时要使用三次握手。说明不这样做可能会出现什么情况

解析:

三次握手 TCP连接是通过三次握手来连接的。第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SYN_SENT。第二次握手 当服务器收到客户端发送的SYN后,服务器要做的是确认客户端发送过来的SYN,在这里服务器发送确认包ACK,这里的ACK为x+1,意思是说“我收到了你发送的SYN了”,同时,服务器也会向客户端发送一个SYN包,这里我们设SYN为y。这时服务器的状态为SYN_RECV。 一句话,服务器端发送SYN和ACK两个包。第三次握手 客户端收到服务器发送的SYN和ACK包后,需向服务器发送确认包ACK,“我也收到你发送的SYN了,我这就给你发个确认过去,然后我们即能合体了”,这里的ACK为y+1,发送完毕后,客户端和服务器的状态为ESTABLISH,即TCP连接成功。 在三次握手中,客户端和服务器端都发送两个包SYN和ACK,只不过服务器端的两个包是一次性发过来的,客户端的两个包是分两次发送的。

三次握手完成两个重要功能,既要双方做好发送数据的准备工作(双方都知道彼此已经准备好),也要运行双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。假定B决定给A发送一个连接请求分组,A收到了分组,并发送了确认分组,按照两次握手的协定,A认为连接已经成功建立了,可以开始发送数据分组,可是B在A的应答分组在传输中被丢失的情况下,将不知道A是否已经准备完毕,不知道A建议什么样的序列号,B甚至怀疑A是否收到了自己的请求连接分组,在这种情况下还未建立成功,将忽略A发送过来的任何数据,只等待连接确认分组。而A发送的分组超时之后,重复发送同样的分组,这样就形成了死锁。

posted @ 2020-01-10 22:27  Xpeng2333  阅读(205)  评论(0编辑  收藏  举报