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

Posted rings

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?相关的知识,希望对你有一定的参考价值。

        通过一个学期的学习,网络程序设计这门课程也是结束了,通过这一学期的理论结合实践,在潜移默化中,我们学会了初步的网络编程,对于计算机网络的知识,更是在实践中有了比原来清晰很多的认识。学完了课程,需要我们自己出一些认为比较不错的题目。当然,题目不错体现在与我们所学的知识能有所关联,而不在于题目难度多大。我倾向于简单的题目,题目涉及的知识点尽量选取我们实验过程中有所体会的。

  • 网络编程的水平体现在哪些方面

        ①网络编程,顾名思义,是与网络有关的。计算机网络的知识是基本。原来考研时学408也有一门计算机网络,当时就觉得这门课十分的繁杂抽象,很难与实际联系起来。这门课最大的优点便是理论结合实际了,学这门课时,我们也更加深入地了解了一些网络协议,还有socket编程的基本知识。

        ②如果说网络知识是地基,那么编程能力才真正建成高楼大厦,掌握好一门语言,有一定的编程能力才可以完成实际中需要的功能。对于跨考生来说,这门课的实验要做好,对于编程能力也是一个锻炼。

        ③思维能力。这个包括很多方面,大到创新能力,这个属于高水平。我们既然学了这门课,要养成一定的思维能力,比如对于一些协议,为什么需要它,为什么要制定成如今的规则,要有一定的理解,而不是背背规则完事。

  • 题目部分

       ①下列有关Socket的说法,错误的是()(牛客网)

       A、Socket是一个用于描述ip地址和端口,是一个通信链的句柄

       B、Socket通信必须建立连接

       C、Socket客户端的端口是不固定的

       D、Socket服务端的端口是固定的

       答:D。PV4下,两种基本的通信方式分别是TCP和UDP,前者是面向连接的可靠的字节流服务,通信之前必须要先建立起socket连接,而后者是面向无连接的数据包服务,通信之前无需建立起任何连接,因而B选项是错误的。

 

        ②路由器会根据下列哪一种协议的包头信息来转发数据包()(牛客网)

        A、TCP

        B、UDP

        C、IP

        D、HTTP

        答:C。路由器属于网络层器件,跟IP协议有关

        TCP,UDP为传输层协议
        HTTP 为应用层协议
 
        ③在实现基于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编程,就需要实现这个流程。
 
        ④在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是()(408真题)
        A、0
        B、1
        C、2
        D、4
        答:C。30位的子网掩码。还剩2位的主机号。2^2=4,去掉主机号全0的网络地址与全1的广播地址,则只剩下2个地址可供主机使用。
 
        ⑤ping网络中的主机的ip地址成功,但是ping其域名时失败,下列哪种情况导致该问题出现()(计算机三级题目)
        A、地址或名称解析出错
        B、网线故障
        C、操作系统故障
        D、网卡坏掉
        答:A。域名是使人们能够方便记忆而设置的。网络通信时,要通过DNS找到对应的ip地址。那么ping ip可以成功说明网线、操作系统、网卡应该都是没问题的。A选项可导致题设情况出现。
 
        ⑥几道判断题:
        IP地址均为32位(❌)解析:ipv4为32位;ipv6为64位IP地址
        无论是TCP socket,还是UDP socket,它们的服务器端必须调用bind()函数来绑定一个地址,这样客户端才可以和服务器端通信(✔)
       为了区分一台主机接收到的网络数据包应该递交给哪个套接字来处理,要根据端口号(✔)
        bind()函数用于将套接字和某个地址绑定(✔)
        
       ⑦某网络拓扑如下图所示,路由器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。(408真题)

 

 

        
 
 
 
 
 
 
 
 
 
R1 和R2 的路由表结构为:
 
目的网络ip地址 子网掩码 下一跳ip地址 端口

⑴ 将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 个,子网号至少要占用一位。

  由 2^6-2<120<2^7-2 可知,主机号至少要占用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 分配给局域网1,子网2 分配给局域网2)

目的网络IP地址 子网掩码 下一跳IP地址 接口
202.118.1.0 255.255.255.128 - E1
202.118.1.128 255.255.255.128 - E2
202.118.3.2 255.255.255.255 202.118.2.2 L0
0.0.0.0 0.0.0.0 202.118.2.2 L0

       (若子网1 分配给局域网2,子网2 分配给局域网1)

目的网络IP地址 子网掩码 下一跳IP地址 接口
202.118.1.128 255.255.255.128 - E1
202.118.1.0 255.255.255.128 - E2
202.118.3.2 255.255.255.255 202.118.2.2 L0
0.0.0.0 0.0.0.0 202.118.2.2 L0

 

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

以上是关于如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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