如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
Posted meijl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?相关的知识,希望对你有一定的参考价值。
作为一名软件工程师,计算机网络知识以及网络编程技能是必不可少的,基于网络程序设计课程,结合自己的想法,总结一名软件工程师应有以下几项必备知识。
1、计算机网络基础知识
计算机网络性能的评判标准;
计算机网络的分层结构;
ISO/OSI参考模型和TCP/IP参考模型以及各层对应实现的功能;
2、操作系统基础知识
操作系统的运行机制;
中断和异常;
系统调用;
3、代码阅读和编程能力
高级语言的socket编程能力;
操作系统底层socket源码的阅读能力;
了解高级编程语言socket API与操作系统socket API调用之间的关系;
以下考察范围围绕上述方向:
一、选择题(每题4分,共5小题)
1、【原创】TCP中的滑动窗口的作用( )
A、流量控制 B、拥塞控制 C、路由控制 D、差错控制
答案:A。本题考察范围为计算机网络传输层知识,这里是一个较易混淆的知识点,容易混淆流量控制与拥塞控制的概念。TCP提供基于滑动窗口协议的流量控制机制,是接收方根据自己的缓存窗口大小,通过TCP报文首部的“窗口”值动态的调整发送方发送数据的速率;容易误选的是B,区别就是流量控制是点对点的控制,而拥塞控制是一个全局的考虑,它综合考虑网络负载,动态的调整发送方的发送速率。发送窗口通常取TCP首部中“窗口值”与拥塞窗口值中最小值。
2、【2011计算机联考真题】在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是( )
A、0 B、1 C、2 D、4
答案:C。本题考察范围为计算机网络网络层知识。主要考察子网划分的概念。在192.168.4.0/30这个网络中,主机号只占两位,但是全0和全1的网络地址是不能指派的。全0主机号为子网的网络号,全1主机号为子网的广播地址,故只剩4-2=2台主机。这是部署局域网的必备知识。
3、【原创】下列关于系统调用的说法正确的是( )
① 用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和陷入(trap)指令;
② 用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和屏蔽中断指令;
③ 系统调用功能是操作系统向用户程序提供的接口;
④ 用户及其应用程序和应用系统是通过系统调用提供的支持和服务来使用系统资源完成其操作的;
A、①,③ B、②,④ C、①,③,④ D、②,③,④
答案:C。本地考察操作系统中系统调用知识,这是老师在课上讲述以及实验中需要了解的基础知识,①正确,系统调用通过触发trap进入内核态;②错误,用户程序无法屏蔽中断指令;③正确,这就是系统调用的目的;④正确,用户程序通过系统调用接口完成对系统资源的申请使用,对具体实现过程不予关注。
4、【2011计算机联考真题】主机甲向主机乙发送一个(SYN=1,seq=11220)的TCP报文段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确TCP段可能是( )
A、(SYN=0,ACK=0,seq=11221,ack=11221)
B、(SYN=1,ACK=1,seq=11220,ack=11220)
B、(SYN=1,ACK=1,seq=11221,ack=11221)
B、(SYN=0,ACK=0,seq=11220,ack=11220)
答案:C。考察TCP三次握手时,TCP首部中标志位的设置以及确认号。第二次握手为确认报文,同步位SYN和确认位ACK都必须为1;返回的确认号ack必须时接收到的请求报文序列号加1,故ack=11221;至于主机乙的序列号seq则是一个随机值,可以任意设置。
5、【2010计算机联考真题】如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机和本地域名服务器发送的域名请求条数分别为( )
A、1条,1条 B、1条,多条 C、多条,1条 D、多条,多条
答案:A。本题考察计算机网络应用层中DNS系统的基础知识。不同网络的计算机进行通信时,离不开DNS系统的功劳。在使用递归查询另一主机域名时,用户主机和本地域名服务器都只请求一次,将任务交给上级处理,上级处理完会将结果返回,因此都只用请求一次。
二、填空题(每题5分,共4小题)
1、【原创】在学习计算机网络时,我们通常采取综合ISO/OSI参考模型和TCP/IP参考模型的优点,采用具有五层协议的体系架构,它们是 物理层 , 数据链路层 , 网络层 , 传输层 , 应用层 。
2、【原创】为了解决网络中随机接入发送数据造成的冲突,开发了随机访问介质访问控制协议,其中就有被广泛使用的CSMA/CD协议(载波侦听多路访问/碰撞检测),它的工作流程可以被概括为:先听后发, 边听边发 , 冲突停发 ,随机重发。
3、应用层协议DHCP(动态主机配置协议)常用于动态地分配IP地址,实现了即插即用的联网机制,它基于传输层的 UDP 协议。(解释:动态的配置,所以提前不知道ip地址和端口号,是不能建立TCP连接的,所以可以推断出使用UDP协议。)
4、【百度文库】计算机网络常用的交换技术有电路交换、 报文交换 和 分组交换 。
三、简答题(共60分)
1、【原创】简述TCP三次握手和四次挥手过程。
参考答案:
三次握手:step1,客户机的TCP向服务器的TCP发送一个连接请求报文段。其中首部将SYN标志位置1,并选择一个随机的起始序号N,使seq=N,此时不能携带应用层数据;
step2,服务器收到TCP连接请求后,如同意建立连接,就向客户机发挥确认,并为该TCP连接分配TCP缓存和变量。其中确认报文段首部中SYN和ACK标志位均被置1,确认号ack=N+1,也随机一个起始序号M作为seq的值,seq=M,此时也不能携带应用层数据;
step3,当客户机收到确认报文段后,还要向服务器给出确认,并给该TCP连接分配缓存和变量。这个报文段的ACK标志位置1,确认号ack=M+1,序号seq=N+1,该报文段可以携带数据了,如果不携带数据,不消耗序号;
四次挥手:step1,客户机打算关闭连接,就向服务器发送连接释放报文段,并停止发送数据,但是还可以接收数据。该报文段中FIN标志位置1,seq=X(前面已发送数据的最后一个字节号加1);
step2,服务器收到连接释放报文后发出确认报文,确认号ack=X+1,序号seq=Y(前面已发送数据的最后一个字节加1)。此时TCP处于半关闭状态,服务器还可以接收和发送数据;
step3,若服务器也不需要发送数据了,则通知TCP释放连接,发送连接释放报文,报文首部中FIN标志位置1,ack=X+1,seq=Y(假设上一步到现在没有发送数据)
step4,客户机收到连接释放报文后,还要发出确认(这个确认里是没有数据的)。确认报文段中ACK标志位置1,确认号为ack=Y+1,序号为seq=X+1。此时TCP还没有完全释放掉,要等待2MSL时间后,再彻底关闭连接,等待是为了等待网络中可能还未到达的数据。
2、【原创】简述ARP协议工作过程
参考答案:①首先,每个主机都会在自己的ARP缓存区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系;
②当主机A需要向主机B发送数据时,首先检查自己的ARP列表中是否有主机B的IP地址和MAC地址,如果有,则直接发送数据;否则向本网段所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机IP地址;
③本网段中所有主机收到ARP数据包,将其中的目的主机IP地址与自己的比较,不同则丢弃,如果相同,就取出其中源主机IP地址和MAC地址存入自己ARP列表,并将自己的MAC地址写入ARP响应包,发送给A;如果目的主机不在本网段,则收到ARP请求包的路由器会去网络上找到该主机,并返回ARP数据包给主机A;
④主机A最终收到ARP响应包,将目的主机的IP地址和MAC地址写入自己的ARP列表中,并使用这些信息发送数据;
⑤如果主机A一直没有收到ARP响应数据包,表示ARP查询失败。
3、【原创】简述域名解析过程(以y.abc.com为例)
①客户机查询本地缓存,如有,直接解析;否则,向本地域名服务器发出解析请求;
②本地域名服务器查询本地缓存,如有,将返回查询到的IP地址返回给客户机;否则,向根域名服务器发出解析请求;
③根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器;
④本地域名服务器向顶级域名服务器dns.com发出解析请求;
⑤顶级域名服务器收到请求后,判断该域名属于abc.com域,将对应的授权域名服务器服务器dns.abc.com的IP地址返回给本地域名服务器;
⑥ 本地域名服务器向授权域名服务器dns.abc.com发出解析请求;
⑦授权域名服务器收到请求后,查询到y.abc.com的IP地址,返回给本地域名服务器;
⑧本地域名服务器将查询结果保存在本地缓存中,并将结果返回给客户机;
⑨解析结束。
以上解析过程中客户机使用递归查询,即只进行一次查询,就收到结果;本地服务器使用迭代查询,可能经过多次查询才得到结果。
以上是关于如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?的主要内容,如果未能解决你的问题,请参考以下文章
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?