如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
Posted hehe_x
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?相关的知识,希望对你有一定的参考价值。
一、软件工程师必备的能力素质
一、具有良好的编程能力和算法基础。编程能力直接决定了项目开发的效率,软件工程师至少精通一门编程语言,熟悉基本语法、技术特点和API。
二、运用数据库和正则表达式的能力。正则表达式和数据库语言犹如两把利刃,两者结合、灵活运用可以减少代码编写量。
三、具有软件工程的概念。从项目需求分析开始到安装调试完毕,软件工程师必须清楚地理解和把握这些过程,并能胜任各种环节的具体工作。
四、培养对行业的认知。软件工程师要就市场论技术,强调面向对象的分析与设计能力。
五、软实力。除去专业技能,还要有一定的沟通交流能力、团队合作能力、学习能力,尤其是需要较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与编程高手交流、发布帮助请求同样离不开英文。
二、Linux下网络协议栈分析
应用层
应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的。Linux Socket 是从 BSD Socket 发展而来的,它是 Linux 操作系统的重要组成部分之一,它是网络应用程序的基础。从层次上来说,它位于应用层,是操作系统为应用程序员提供的 API,通过它,应用程序可以访问传输层协议。
- socket 位于传输层协议之上,屏蔽了不同网络协议之间的差异
- socket 是网络编程的入口,它提供了大量的系统调用,构成了网络程序的主体
- 在Linux系统中,socket 属于文件系统的一部分,网络通信可以被看作是对文件的读取,使得我们对网络的控制和对文件的控制一样方便
传输层
传输层的最终目的是向它的用户提供高效的、可靠的和成本有效的数据传输服务,主要功能包括 :(1)构造 TCP segment;(2)计算 checksum;(3)发送回复(ACK)包; (4)滑动窗口(sliding windown)等保证可靠性的操作。
TCP 栈简要过程:
- tcp_sendmsg 函数会首先检查已经建立的 TCP connection 的状态,然后获取该连接的 MSS,开始 segement 发送流程。
- 构造 TCP 段的 playload:它在内核空间中创建该 packet 的 sk_buffer 数据结构的实例 skb,从 userspace buffer 中拷贝 packet 的数据到 skb 的 buffer。
- 构造 TCP header。
- 计算 TCP 校验和(checksum)和 顺序号 (sequence number)。发到 IP 层处理:调用 IP handler 句柄 ip_queue_xmit,将 skb 传入 IP 处理流程。
- TCP 校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。TCP校验和覆盖 TCP 首部和 TCP 数据。
- TCP的校验和是必需的
- 发到 IP 层处理:调用 IP handler 句柄 ip_queue_xmit,将 skb 传入 IP 处理流程。
UDP 栈简要过程:
- UDP 将 message 封装成 UDP 数据报
- 调用 ip_append_data() 方法将 packet 送到 IP 层进行处理。
网络层
网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。其主要任务包括 (1)路由处理,即选择下一跳 (2)添加 IP header(3)计算 IP header checksum,用于检测 IP 报文头部在传播过程中是否出错 (4)可能的话,进行 IP 分片(5)处理完毕,获取下一跳的 MAC 地址,设置链路层报文头,然后转入链路层处理。 IP 头格式:
数据链路层
功能上,在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
实现上,Linux 提供了一个 Network device 的抽象层,其实现在 linux/net/core/dev.c。具体的物理网络设备在设备驱动中(driver.c)需要实现其中的虚函数。Network Device 抽象层调用具体网络设备的函数。
物理层
- 物理层在收到发送请求之后,通过 DMA 将该主存中的数据拷贝至内部RAM(buffer)之中。在数据拷贝中,同时加入符合以太网协议的相关header,IFG、前导符和CRC。对于以太网网络,物理层发送采用CSMA/CD,即在发送过程中侦听链路冲突。
- 一旦网卡完成报文发送,将产生中断通知CPU,然后驱动层中的中断处理程序就可以删除保存的 skb 了。
三、计算机网络知识技能水平的测评试题
一、选择题(20分)
1.【2009年408考研T35】数据链路层采用后退 N 帧(GBN)协议,发送方已经发送了编号为 0~7 的帧。当计时器超时时,若发送方只收到 0、2、3 号帧的确认,则发送方需要重发的帧数是______。
A.2 B.3 C.4 D.5
解析:C。考察传输层流量控制协议:GBN协议。GBN采用累计确认,只按序接收,确认的是截止到目前正确按序接收的数据帧,即,确认号是N,则N及以前的都正确接收,题目中最大确认号是3,说明4-7没有正确收到,发送方需要重传4个数据帧。
2.【2009年408考研T36】以太网交换机进行转发决策时使用的 PDU 地址是______。
A.目的物理地址 B.目的 IP 地址
C.源物理地址 D.源 IP 地址
解析:A。考查交换机的工作原理。交换机实质上是一个多端口网桥,工作在数据链路层,数据链路层使用物理地址进行转发,而转发通常都是根据目的地址来决定出端口。
3.【2009年408考研T38】主机甲与主机乙之间已建立一个 TCP 连接,主机甲向主机乙发送了两个连续的 TCP 段,分别包含 300 字节和 500 字节的有效载荷,第一个段的序列号为 200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是______。
A.500 B.700 C.800 D.1000
解析:D。考察TCP报文格式及其含义。确认号是发送方希望接收的下一个序列号。乙正确接收了两个报文段,结合第一个报文段序列号和两个报文段总长,可以知道乙的确认号是200+300+500=1000,选D。
4.【2009年408考研T39】一个 TCP 连接总是以 1KB 的最大段长发送 TCP 段,发送方有足够多的数据要发送。当拥塞窗口为 16KB时发生了超时,如果接下来的 4 个 RTT(往返时间)时间内的 TCP 段的传输都是成功的,那么当第 4 个RTT 时间内发送的所有 TCP 段都得到肯定应答时,拥塞窗口大小是______。
A.7 KB B.8 KB C.9 KB D.16 KB
解析:C。考查 TCP 的拥塞控制方法。无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(没有按时收到确认),就要把慢开始门限sthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于 2),然后把拥塞窗口 cwnd 重新设置为 1,执行慢开始算法。因此,在发送拥塞后,慢开始门限 ssthresh 变为 16/2 = 8 KB,发送窗口变为 1 KB。在接下来的 3个 RTT 内,拥塞窗口执行慢开始算法,呈指数形式增加到 8 KB,此时由于慢开始门限 ssthresh 为 8 KB,因此转而执行拥塞避免算法,即拥塞窗口开始“加法增大”。因此第 4 个 RTT 结束后,拥塞窗口的大小为9 KB。
5.【2011年408考研T37】某网络拓扑如下图所示,路由器R1只有到达子网192.168.1.0/24的路由。为使R1可以将IP分组正确地路由到图中所有子网,则在R1中需要增加的一条路由(目的网络,子网掩码,下一跳)是______。
A.192.168.2.0 255.255.255.128 192.168.1.1
B.192.168.2.0 255.255.255.0 192.168.1.1
C.192.168.2.0 255.255.255.128 192.168.1.2
D.192.168.2.0 255.255.255.0 192.168.1.2
解析:D。此题主要考察路由聚合。要使R1能够正确将分组路由到所有子网,则R1中需要有到192.168.2.0/25和192.168.2.128/25的路由。观察发现网络192.168.2.0/25和
192.168.2.128/25的网络号的前24位都相同,于是可以聚合成超网192.168.2.0/24。从图中可以看出下一跳地址应该是192.168.1.2。
6.【2014年408考研T33】在 OSI 参考模型中,直接为会话层提供服务的是______。
A.应用层 B.表示层 C.传输层 D.网络层
解析:C。考察OSI参考模型,上层使用下层的服务,会话层的下层是传输层。
7.【2014年408考研T40】使用浏览器访问某大学 Web 网站主页时,不可能使用到的协议是 ______。
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.【2017年408考研T36】下列IP地址中,只能作为IP分组的源IP地址但不能作为目的IP地址的是______。
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.【2017年408考研T38】若将网络21.3.0.0/16划分为128个规模相同的子网,则每个子网可分配的最大IP地址个数是______。
A.254 B.256
C.510 D.512
解析:C。考察IP地址划分。网络前缀是16,128个子网需要占用7位子网号,故主机号占9位,共有2^9=512个地址,除去主机号全0的网络地址和全1的广播地址,可用的有510个。
10.【2017年408考研T40】下列关于FTP协议的叙述中,错误的是______。
A.数据连接在每次数据传输完毕后就关闭
B.控制连接在整个会话期间保持打开状态
C.服务器与客户端的TCP 20端口建立数据连接
D.客户端与服务器的TCP 21端口建立控制连接
解析:C。考察FTP协议和常用端口。当客户端向服务器发出连接请求时,客户端与服务器的21端口建立控制连接,并告诉服务器自己的另一个端口号码,用于建立数据连接,接着服务器就用自己的20端口与客户端所提供的端口号进行数据连接(注意20和21都是服务器端的端口)。
二、填空题(20分,主要来自百度文库)
1. 常用的物理层设备有中继器和 集线器 ,数据链路层设备有网桥和 交换机 。
解析:考察各层次常用设备。
2. 数据交换技术有电路交换、报文交换和 分组交换 ,而后一种包含数据报和 虚电路 两种实现方式。
解析:考察数据交换技术。
3. 外部网关协议有BGP,内部网关协议有 RIP 和 OSPF 。
解析:考察路由协议。
4. 从IPv4到IPv6过渡的两种策略是 隧道技术 和 双协议栈技术 。
解析:记忆题。
5. 传输层提供 TCP 和 UDP 两种服务。
解析:送分题。
三、综合题(60分)
1.【2009年408考研T47】某网络拓扑如下图所示,路由器 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 个,子网号至少要占用一位。由 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 和局域网 2 的地址可以聚合为 202.118.1.0/24,而对于路由器 R2 来说,通往局域网 1 和 2 的转发路径都是从 L0 接口转发,因此采用路由聚合技术后,路由器 R2 到局域网 1 和局域网 2 的路由为:
2.【2011年408考研T47】某主机的 MAC 地址为 00-15-C5-C1-5E-28,IP 地址为 10.2.128.100(私有地址)。题 47-a 图是网络拓扑,题 47-b 图是该主机进行 Web 请求的 1 个以太网数据帧前 80 个字节的十六进制及 ASCII 码内容。
图 47-a 图 网络拓扑
请参考图中的数据回答以下问题。
(1)Web 服务器的 IP 地址是什么?该主机的默认网关的 MAC 地址是什么?
(2)该主机在构造题 47-b 图的数据帧时,使用什么协议确定目的 MAC 地址?封装该协议请求报文的以太网帧的目的 MAC 地址是什么?
(3)假设 HTTP/1.1 协议以持续的非流水线方式工作,一次请求-响应时间为 RTT,rfc.html 页面引用了 5 个 JPEG 小图像,则从发出题 47-b 图中的 Web 请求开始到浏览器收到全部内容为止,需要多少个 RTT?
(4)该帧所封装的 IP 分组经过路由器 R 转发时,需修改 IP 分组头中的哪些字段?
注:以太网数据帧结构和 IP 分组头结构分别如题 47-c 图、题 47-d 图所示。
解析:
(1)64.170.98.32 00-21-27-21-51-ee
以太网帧头部 6+6+2=14 字节,IP 数据报首部目的 IP 地址字段前有 4*4=16 字节,从以太网数据帧第一字节开始数 14+16=30 字节,得目的 IP 地址 40 aa 62 20(十六进制),转换为十进制得 64.170.98.32。以太网帧的前六字节 00-21-27-21-51-ee 是目的 MAC 地址,本题中即为主机的默认网关 10.2.128.1 端口的 MAC 地址。
(2)ARP FF-FF-FF-FF-FF-FF
ARP 协议解决 IP 地址到 MAC 地址的映射问题。主机的 ARP 进程在本以太网以广播的形式发送 ARP 请求分组,在以太网上广播时,以太网帧的目的地址为全 1,即 FF-FF
-FF-FF-FF-FF。
(3)6
HTTP/1.1 协议以持续的非流水线方式工作时,服务器在发送响应后仍然在一段时间内保持这段连接,客户机在收到前一个响应后才能发送下一个请求。第一个 RTT 用于请求 web页面,客户机收到第一个请求的响应后(还有五个请求未发送),每访问一次对象就用去一个RTT。故共 1+5=6 个 RTT 后浏览器收到全部内容。
(4)源 IP 地址 0a 02 80 64 改为 65 0c 7b 0f,生存时间(TTL)减 1,校验和字段重新计算
私有地址和 Internet 上的主机通信时,须有 NAT 路由器进行网络地址转换,把 IP 数据报的源 IP 地址(本题为私有地址 10.2.128.100)转换为 NAT 路由器的一个全球 IP 地址(本题为 101.12.123.15)。因此,源 IP 地址字段 0a 02 80 64 变为 65 0c 7b 0f。IP 数据报每经过一个路由器,生存时间 TTL 值就减 1,并重新计算首部校验和。若 IP 分组的长度超过输出链路的 MTU,则总长度字段、标志字段、片偏移字段也要发生变化。
3.【2015年408考研T47】某网络拓扑如题47图所示,其中路由器内网接口、DHCP服务器、WWW服务器与主机1均采用静态IP地址配置,相关地址信息见图中标注;主机2~主机N通过DHCP服务器动态获取IP地址等配置信息。
题47图
请回答下列问题。
(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),从而无法到达目的主
机。
以上是关于如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?的主要内容,如果未能解决你的问题,请参考以下文章
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?