第18章
计算机网络及分布式系统
网络面试例题主要包括局域网、广域网、IP管理等诸方面。
18.1 网络结构
面试例题1:在OSI参考模型中,物理层的作用是 (1) 。对等实体在一次交互作用中传送的信息单位称为 (2) ,它包括 (3) 两部分。上下层实体之间的接口称为服务访问点(SAP),网络层的服务访问点也称为 (4) ,通常分为 (5) 两部分。[中国某著名综合软件公司2005年面试题]
(1)
A.建立和释放连接
B.透明的传输比特流
C.在物理实体间传送数据祯
D.发送和接收用户数据
(2)
A.接口数据单元
B.服务数据单元
C.协议数据单元
D.交互数据单元
(3)
A.控制信息和用户数据
B.接口信息和用户数据
C.接口信息和控制信息
D.控制信息和校验信息
(4)
A.用户地址
B.网络地址
C.端口地址
D.网卡地址
(5)
A.网络号和端口号
B.网络号和主机地址
C.超网号和子网号
D.超网号和端口地址
解析:网络问题。
OSI参考模型有7层,其分层原则如下:
● 根据不同层次的抽象分层。
● 每层应当有一个定义明确的功能。
● 每层功能的选择应该有助于制定网络协议的国际标准。
● 各层边界的选择应尽量节省跨过接口的通信量。
● 层数应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过于庞大。
根据以上标准,OSI参考模型分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
物理层涉及在信道上传输的原始比特流。
数据链路层的主要任务是加强物理层传输原始比特流的功能,使之对应的网络层显现为一条无错线路。发送包把输入数据封装在数据帧,按顺序传送出去并处理接收方回送的确认帧。
网络层关系到子网的运行控制,其中一个关键问题是确认从源端到目的端如何选择路由。
传输层的基本功能是从会话层接收数据而且把其分成较小的单元传递给网络层。
会话层允许不同机器上的用户建立会话关系。
表示层用来完成某些特定的功能。
应用层包含着大量人们普遍需要的协议。
答案:B,C,A,B,B。
面试例题2:TCP和UDP有什么区别?[中国著名金融软件公司S 2005年面试题]
解析:举例说明两者间的区别。
TCP连接就像打电话,两者之间必须有一条不间断的通路,数据不到达对方,对方就一直在等待,除非对方直接挂电话。先说的话先到,后说的话后到,有顺序。
UDP就像寄一封信,发信者只管发,不管到。但是你的信封上必须写明对方的地址。发信者和收信者之间没有通路,靠邮电局联系。信发到时可能已经过了很久,也可能根本没有发到。先发的信未必先到,后发的也未必后到。
答案:TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能从一端传到另一端。
UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
18.2 网络协议问题
面试例题1:If we divide the network 40.15.0.0 into two subnets, and the first one is 40.15.0.0/17, then the second subnet will be__.(如果把一个网络40.15.0.0分为两个子网,第一个子网是40.15.0.0/17,那么第二个子网将会是__。)[中国台湾某著名杀毒软件公司2005年10月面试题]
A.40.15.1.0/17
B.40.15.2.0/16
C.40.15.100.0/17
D.40.15.128.0/17
解析:让主网分成两个网段,子网掩码分别是0xff 0xff 0x80 0x00和0xff 0xff 0x00 0x00。
答案:D
面试例题2:If a worm scans the hosts in Class A IP address space on a home PC, it is quite probably that the host will received a lot of __.(如果一个蠕虫病毒攻击了一个家用PC的A类地址主机的话,这个地址最有可能接收很多__。)[中国台湾某著名杀毒软件公司2005年10月面试题]
A.HTTP response packet(HTTP回应包)
B.DNS response packet(DNS回应包)
C.ICMP destination unreachable packet(ICMP目的无法抵达包)
D.ARP response(ARP回应)
解析:大量发出IP请求,肯定很多不可达,返回不可达错误。
答案:C
面试例题3:Before an IP datagram arrived at the destination, it __.(在一个IP数据包到达目的地址之前,它__。)[中国台湾某著名杀毒软件公司2005年10月面试题]
A.may be fragmented but never reassembled(可能成为碎片,而且不会重组)
B.may be fragmented or reassembled(可能成为碎片,或者重组)
C.can't be fragmented or reassembled(不能成为碎片,或者重组)
D.can't be fragmented but may be reassembled(不能成为碎片,但是可能会重组)
解析:网络问题,包未达到终点不可能重组,但可以分散成碎片。
答案:A
面试例题4:In TCP/IP protocol stack, which of following is taken as an indication of congestion?(在TCP/IP协议栈里,如果出现阻塞情况,下面哪种情况最有可能发生?)[中国台湾某著名杀毒软件公司2005年10月面试题]
A.Link failure(连接错误)
B.Free buffer(释放缓存)
C.Packet loss(丢包)
D.Packet error(包错误)
解析:网络阻塞问题。拥塞导致丢包。
答案:C
面试例题5:If the TCP based server program crashed before the client data arrived on the connection that established earlier, the TCP/IP stack may return a__.(如果TCP服务器在客户端发出数据报之前已经崩溃了,TCP/IP栈可能返回一个__。)[中国台湾某著名杀毒软件公司2005年10月面试题]
A.RST
B.FIN
C.SYN
D.ACK
解析:SYN包是TCP连接的第一个包,是非常小的一种数据包。SYN攻击包括大量此类的包。由于这些包看上去来自实际不存在的站点,因此无法有效地进行处理。SYN攻击就是利用TCP连接的3次握手机制,但发起攻击端只来一两次握手,而被攻击端一直在试图完成TCP连接,因此造成资源不足。
答案:C
面试例题6:如何编写Socket套接字?[中国著名通信企业H公司2008年面试题]
解析:Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。如果你要编写的是一个服务程序,那么先调用socket()创建一个套接字,调用bind()绑定IP地址和端口,然后启动一个死循环,循环中调用accept()接受连接。对于每个接受的连接,可以启动多线程方式进行处理,在线程中调用send()、recv()发送和接收数据。
如果你要编写的是一个客户端程序,那么就简单多了。先调用socket()创建一个套接字,然后调用connect()连接服务器,之后就是调用send()、recv()发送和接收数据了。
答案:服务器端程序编写:
(1)调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上。
(2)调用accept(),监听连接请求,则接收连接,返回通信套接字。
(3)调用Socket类的getOutStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。
(4)关闭通信套接字.Socket.close()。
客户端程序编写:
(1)调用Socket()创建一个流套接字,并连接到服务器端。
(2)调用Socket类的getOutputStream()和fetInputStream获取输出流和输入流,开始网络数据的发送和接收。
(3)关闭通信套接字.Socket.close()。
面试例题7:与10.110.12.29 Mask 255.255.255.224属于同一网段的主机IP地址是哪个?[中国台湾某著名软件公司2012年10月面试题]
A.10.110.12.0
B.10.110.12.30
C.10.110.12.31
D.10.110.12.32
解析:10.110.12.0-10.110.12.31。网络号是0,广播地址是31,可用地址1~30。
答案:B
18.3 网络安全问题
面试例题1:入侵检测与防火墙有何不同,各有什么优缺点?[中国著名通信企业H公司2008年面试题]
答案:
防火墙的优点:它能增强机构内部网络的安全性,用于加强网络间的访问控制,防止外部用户非法使用内部网的资源,保护内部网络的设备不被破坏,防止内部网络的敏感数据被窃取。防火墙系统决定了哪些内部服务可以被外界访问;外界的哪些人可以访问内部的哪些服务,以及哪些外部服务可以被内部人员访问。
防火墙的缺点:对于发生在内网的攻击无能为力;对于部分攻击,可以绕过防火墙,防火墙发现不了;防火墙的策略是静态的,不能实施动态防御;等等。
入侵检测的优势:入侵监测系统扫描当前网络的活动,监视和记录网络的流量,根据定义好的规则来过滤从主机网卡到网线上的流量,提供实时报警。大多数的入侵监测系统可以提供关于网络流量非常详尽的分析。它们可以监视任何定义好的流量。很多系统对FTP、HTTP和Telnet流量都有默认的设置,还有其他的流量,如NetBus、本地和远程登录失败,等等。也可以自己定制策略。如果定义了策略和规则,便可以获得FTP、SMTP、Telnet和任何其他的流量。这种规则有助于追查该连接和确定网络上发生过什么,以及现在正在发生什么。这些程序在需要确定网络中策略实施的一致性情况时是非常有效的工具。
入侵检测的缺点:目前入侵检测技术的方法主要停留在异常检测统计方法和误用检测方法上,这两种方法都还存在这样或那样的问题。网络入侵技术在不断地发展,入侵的行为表现出不确定性、多样性等特点。网络应用的发展又带来新的安全问题。如高速网络技术出现流量大的特点,那么基于网络的入侵检测系统如何适应这种情况?基于主机审计数据怎样做到既减少数据量,又能有效地检测到入侵?入侵检测研究领域急需其他学科知识提供新的入侵检测解决方法。入侵检测只是仅仅试图发现计算机网络中的安全问题,要解决网络安全的问题还需要其他的网络安全技术。另外,入侵检测系统本身还存在安全问题。入侵检测系统也可能会受到攻击。
终上所述,其实防火墙和入侵检测各有优劣。打个比方,防火墙就相当于一栋大楼外的门卫系统,而入侵检测就相当于大楼内的监控系统,两者缺一不可。应该将入侵检测系统与防火墙联动起来,当入侵检测系统发现到有入侵行为时,应及时报告防火墙,以阻断入侵。
面试例题2:25端口是做什么用的,有什么漏洞么?[中美合资通信企业HS公司2008年面试题]
答案:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。比如在使用电子邮件客户端程序的时候,在创建账户时会要求输入SMTP服务器地址,该服务器地址默认情况下使用的就是25端口。
端口漏洞:利用25端口,黑客可以寻找SMTP服务器,用来转发垃圾邮件。25端口被很多木马程序开放,比如Ajan、Antigen、Email Password Sender、ProMail、Trojan、Tapiras、Terminator、WinPC、WinSpy,等等。拿WinSpy来说,通过开放25端口,可以监视计算机正在运行的所有窗口和模块。
扩展知识(端口概念)
在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL MODEM、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口,等等;二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围为0~65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口,等等。我们这里将要介绍的就是逻辑意义上的端口。
逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类。
1)按端口号分布划分
①知名端口(Well-Known Ports)
知名端口即众所周知的端口号,范围为0~1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务,等等。
②动态端口(Dynamic Ports)
动态端口的范围为1024~65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。
不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626,WAY 2.4是8011,Netspy 3.0是7306,YAI病毒是1024,等等。
2)按协议类型划分
按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口。
①TCP端口
TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口,等等。
②UDP端口
UDP端口,即用户数据包协议端口,无须在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口,等等。
对于常见网络端口如端口0、1、7、21、22、23、53、67、68、69、79、80、99等,读者要有一定理解。请查阅相关网络书籍,这里不再赘述。
18.4 网络其他问题
面试例题1:如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少。关于以下几种典型的数据传输速率:[中美合资某著名通信企业面试题]
在通常情况下,关于这几个传输速率的排序正确的是:
A.4<1<2<3
B.1<4<2<3
C.4<1<3<2
D.1<4<3<2
解析:普通U盘写数据约6MB/s,即48Mbps;100M以太网的速率就是100Mbps;
卡车拉硬盘,1000x1000x8/3600=2222Mbps;MP3在256kbps码率下也平均只有1分钟2MB,所以约0.3Mbps。。
答案:A
面试例题2:网络中常见的ping命令是什么协议?[中美合资通信企业HS公司面试题]
解析:ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
在网络中经常会使用到ICMP协议,只不过觉察不到而已。比如经常使用的用于检查网络通不通的ping命令,这个“ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令,如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月某公司“悬赏”50万元测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上。可见,ICMP的重要性绝不可以忽视。
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death”攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。
答案:
ping.exe的原理是,向指定的IP地址发送一定长度的数据包,按照约定,若指定IP地址存在的话,会返回同样大小的数据包,当然,若在特定的时间内没有返回,就是“超时”,就认为指定的IP地址不存在。由于ping使用的是ICMP协议,有些防火墙软件会屏蔽ICMP协议,所以有时候ping的结果只能作为参考,ping不通并不一定说明对方IP不存在。
ping命令是一个非常有用的网络命令,大家常用它来测试网络连通情况。但同时它也是一把“双刃剑”,别人使用ping命令能探测到你计算机上的很多敏感信息,造成不安全。为了安全,防止ping的方法也有很多,比如防火墙,又比如创建一个禁止所有计算机ping本机IP地址的安全策略。
由于ping使用的是ICMP协议,有些防火墙软件会屏蔽掉ICMP协议。IPSec安全策略是如何“防ping”的?其原理是通过新建一个IPSec策略过滤本机所有的ICMP数据包。这样确实可以有效地“防ping”,但同时也会留下后遗症。因为ping命令和ICMP协议有着密切的关系。在ICMP协议的应用中包含有11种报文格式,其中ping命令就是利用ICMP协议中的“Echo Request”报文进行工作的。但IPSec安全策略防ping时采用格杀勿论的方法,把所有的ICMP报文全部过滤了,特别是很多有用的其他格式的报文也同时被过滤了。因此在某些有特殊应用的局域网环境中,容易出现数据包丢失的现象,影响用户正常办公。因此建议使用防火墙。
扩展知识(常见网络协议)
请读者对参考计算机网络书籍对以下协议作一定的了解:
1.动态主机配置协议
2.边界网关协议
3.VoIP协议
4.P2P协议
5.ARP协议
6.IPX/SPX协议
7.SNMP协议
8.TCP
9.IP协议
10.Layer 2 Tunneling Protocol
11.NetBIOS Extend User Interface
面试例题3:说一下TCP的3次握手4次挥手全过程是什么样的?[中美合资某通信企业HS公司面试题]
答案:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用3次握手建立一个连接。
第1次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第2次握手:服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第3次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成3次握手。
完成3次握手,客户端与服务器开始传送数据。在上述过程中,还有一些重要的概念。
未连接队列:在3次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示未连接队列的最大容纳数目。
SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。