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

1.计算机网络基本知识

集线器、路由器、光纤、同轴电缆等硬件设备的基本了解;
TCP/IP网络的五个层次;
TCP/IP协议栈的初始化,网络数据收发的具体过程;
ARP、DNS、L2交换网络的基本了解;

2.代码作业能力

熟悉Linux Socket网络编程;
追踪了解Socket API与系统调用的关系;
能够阅读并分析涉及网络数据收发过程的函数源代码;

3.学习能力

善于阅读源代码与技术文档;
善于搜索并学习他人经验;

 

二. 课程收获

首先从整体上来看用户态、内核态与客户端和服务器交互的对应关系(包括对应的协议层),

课程核心部分以实际Socket编程展开,具体部分可查看:Java的Socket编程与操作系统的SocketAPI关系探究。

img

在传输层着重对TCP协议进行探究,通过搭建调试Linux内核网络代码的环境MenuOS系统,之后对Linux背后的三次握手以及数据收发进行了着重探究,具体可参考:深入理解TCP协议及其源代码。

img

 

在网络层的主要任务:

1.进行路由处理,即选择下一跳

2.完成IP与MAC地址映射

其中关于路由转发部分

路由表的转发过程:

img

在讲ARP时提到,ARP是根据IP地址获取物理地址的一个TCP/IP协议。 每个在运行的时候,都会有个arp表,在这个表里面有IP地址和mac地址的对应关系。在网络底层数据交换过程中,每一个终端都会有一个固定的mac地址,这个地址是全世界唯一的,出厂的时候就固化到硬件里面了。网络访问的时候实际上是通过这个唯一的地址来确定数据包的流向的。所以,任何一次数据传输,都需要先访问arp表,从而获得对应的mac地址,才知道传输的对象在哪里。

课程还讲授了关于以太网的一些基础知识,其中重点讲述了交换机的工作原理。交换机实质就是一个多端口的网桥,具备学习能力与转发能力,其工作原理如下:

1. 从某个端口收到的二层报文,解析二层报文的源MAC和目的MAC

2. 根据源MAC学习形成MAC表

3. 根据目的MAC,将该报文转发到出端口,从而保证最终目的设备能收到这个报文。

 

 

三、测试题目

试题来源网络及历年408真题

一,选择题(20分)

1,【百度文库】为了解决在不同体系结构的主机之间进行数据传递可能会造成歧义的问题,以下(  )函数常常用来在发送端和接收端对双字节或者四字节数据类型进行字节序转换。

  A、htons()/htonl()/ntohs()/ntohl()

  B、inet_addr()/inet_aton()/inet_...

  C、gethostbyname()/gethostbyaddr()

  D、(struct sockaddr *)&(struct sockaddr_in类型参数)

答:A。考察对socket编程中常见函数的掌握。

 

2,【2010年408真题】如果本地域名服务无缓存,当采用递归方法解析另一网络某主机域名时,用户主机本地域名服务器发送的域名请求条数分别为(   )

  A、1条,多条

  B、1条,1条

  C、多条,1条

  D、多条,多条

答:B,考察对DNS中的递归方法的掌握

 

3,【2012年408真题】ARP协议的功能是(  )

  A、根据域名查询IP地址

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

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

  D、根据IP地址查询域名

答:C,考察ARP的基本概念。

 

4,【2009年408真题】在OSI参考模型中,自下而上第一个提供端到端服务的层次是 (  )

  A、数据链路层 

  B、传输层

  C、会话层 

  D、应用层 

答:B,考察端到端概念和对OSI参考模型的掌握。

 

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基础概念。

 

6,【原创】下面哪个函数负责构造一个携带SYN标志位的TCP头并发送出去,同时还设置了计时器超时重发(  )

  A、tcp_transmit_skb

  B、inet_csk_accept

  C、tcp_v4_rcv

  D、tcp_connect

答:D,考察对Linux网络协议栈的了解。

 

7,【2011年408真题】在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是(  )

  A、0

  B、1

  C、2

  D、4

答:C,首先分析192.168.4.0/30这个网络。主机号占两位,地址范围192.168.4.0/30~192.168.4.3/30,即可以容纳(4-2=2)个主机。主机位为全1时,即192.168.4.3,是广播地址,因此网内所有主机都能收到,因此选C。

 

8,【百度文库】TCP使用(  )进行流量控制。 

  A、三次握手机制

  B、窗口控制机制

  C、自动重发机制

  D、端口机制

答:B,考察流量控制基础概念。

 

9,【原创】下列所示调用关系正确的是(  )

  A、应⽤程序、封装例程、系统调⽤处理程序、系统调⽤服务例程

  B、应⽤程序、系统调用处理程序、封装例程、系统调⽤服务例程

  C、应⽤程序、封装例程、系统调⽤服务例程,系统调⽤处理程序

  D、应⽤程序、系统调用服务例程、系统调⽤处理程序、封装例程

答:A,考察系统调用相关概念。

 

10,【原创】下面哪个协议属于常见的二层协议(  )

  A、RARP

  B、VLAN

  C、NFS

  D、SPX

答:B,考察对二层协议的了解,来源讲义。

 

二、简答题(5小题,每小题8分,共40分)

1.简述TCP协议建立连接的过程,并画出示意图。【百度文库】
答案:第1次握手:客户端通过将一个含有“同步序列号(SYN)”标志位的数据段发送给服务器。
第2次握手:服务器用一个带有“确认应答(ACK)”和“同步序列号(SYN)”标志位的 数据段响应客户端。
第3次握手:客户端发送一个数据段确认收到服务器的数据段,并开始传送实际数据。

 

2. 什么是DNS?主要功能是什么?如何理解域名www.edu.cn?【百度文库】
答案:DNS是域名服务,即Domain Name Service,它提供将域名与IP地址之间的双向解析功能,即可以将域名解析成对应的IP,可以将IP反向解析为对应的域名。
www.edu.cn的顶级域名是cn,代表中国,而edu是二级域名,代表教育单位,www是主机名。

 

3. 简述ARP协议进行地址解析的过程。【原创】

答案:保存睡眠状态,直到从IP层收到IP数据包、下一跳地址和接口号。收到IP数据包后检查高速缓存表,查找该IP数据包的下一跳地址。

若找到且状态是已发送请求且已经应答,则从项目中提取硬件MAC地址,将分组连同硬件MAC地址一起发送到数据链路层;若状态是已发送请求但未应答,把分组放入相应的队列;若未找到,创建一个高速缓存项目,创建一个队列将分组放入队列,然后向局域网广播ARP请求。

 

4. API和系统调用各自的定义,关系和区别。【原创】
答案:系统调用为操作系统为⽤户态进程与硬件设备进⾏交互提供的⼀组接口,应⽤编程接⼜(application program interface, API)和系统调⽤是不同的,API只是⼀个函数定义;不是每个API都对应⼀个特定的系统调⽤,API可能直接提供⽤户态的服务(如⼀些数学函数),⼀个单独的API可能调⽤⼏个系统调⽤,不同的API可能调⽤了同⼀个系统调⽤。

 

5. 简述交换机是如何"学习"及工作的?【原创】

1.它收到一个帧的时候,先检查源MAC地址,看看自己维护的一个地址表中有没有这个地址。如果有,则2;如果没有,则将这个MAC地址、进入的端口、进入的时间放入这个表中【这样交换机就“学习”到了新的转发MAC地址】; 2.检查目的MAC地址,然后到该表中查找,如果有匹配项,则按照表项中的端口号进行转发;如果没有,则转发到除进口之外的其他所有端口。

 

三、综合题(2小题,每小题20分,共40分)

1.【2009年408真题】某公司网络拓扑图如下图所示,路由器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划分为两个子网,分配给局域网1、局域网2,每个局域网分配的地址数不少于120个,请给出子网划分结果。说明理由或给出必要的计算过程。 请给出R1的路由表,使其明确包括到局域网1的路由、局域网2的路由、域名服务器的主机路由和互联网的路由。 请采用路由聚合技术,给出R2到局域网1和局域网2的路由。

答:

(1)本题中网络地址位数是24,由于IP地址是32位,因此其主机号部分就是8位。因此,子网掩码就是11111111 11111111 11111111 00000000,即255.255.255.0。根据无类IP地址的规则,每个网段中有两个地址是不分配的:主机号全0表示网络地址,主机号全1表示广播地址。因此8位主机号所能表示的主机数就是254台。该网络要划分为两个子网,每个子网要120台主机,因此主机位数X应该满足下面三个条件:a X<8。 b 2的X次方>120。c X是整数。得到X=7.子网掩码就是11111111 11111111 11111111 10000000,即255.255.255.128。所以划分的两个网段是:202.118.1.0/25与202.118.1.128/25。 

(2)局域网1的网络地址为202.118.1.0,掩码为255.255.255.128。由于局域网1是直接连接到路由器R1的E1口上的,因此,下一跳地址填写直接路由(Direct)。接口填写E1;局域网2的网络地址为202.118.1.128,掩码为255.255.255.128.由于局域网2是直接连接到路由器R1的E2口上的,因此,下一跳地址填写直接路由。接口填写E2。由于域名服务器的IP地址为202.118.3.2,而该地址为主机地址,因此掩码为255.255.255.255。同时,路由器R1要到DNS服务器,就需要通过路由器R2的接口L0才能到达,因此下一跳地址填写L0的IP地址(202.118.2.2)。填写互联网路由实质是编写默认路由。

  

(3)局域网1和局域网2的地址可以聚合为 202.118.1.0/24,而R2去往局域网1和局域网2都是同一条路径。因此,路由表里面只需要填写到202.118.1.0/24网络的路由即可,如下表所示 

        目的网络IP地址     子网掩码          下一跳IP地址        接口  

        202.118.1.0       255.255.255.0       202.118.2.1          L0

 

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

请回答下列问题。
(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),从而无法到达目的主
机。

 

posted on 2020-01-10 17:57  SeanXXX  阅读(231)  评论(0编辑  收藏  举报