四川大学2016年攻读博士学位研究生入学考试试题(计算机网络3129)一、(10分)在互联网中,对IP数据报进行分片传送,这些数据报片的组装有2种方式:一种方式是在最后的目的主机进行组装;另一种方式是数据报片通过一个网络就进行一次组装,请问第一种方式有何优越性?答:在目的站而不是中间的路由器进行组装是由于:(1)路由器处理数据报更简单些;效率高,延迟小。(2)数据报的各分片可能经过各自的路径,因此在每一个中间的路由器进行组装可能总会缺少几个数据报片;(3)也许分组后面还要经过一个网络,它要给这些数据报片划分成更小的片。如果在中间的路由器进行组装就可能会组装多次。为使用路径上不同链路段所能许可的不同分片规模,可能要重新分片或组装。二、(15分)请比较RIP协议与OSPF协议的异同。rip协议是距离矢量路由选择协议,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。ospf协议是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。路由协议分为静态路由协议和动态路由协议。动态路由协议有很多种,如RIP、OSPF、EIGRP等。1、RIP(路由信息协议)是路由器生产商之间使用的第一个开放标准。RIP有两个版本:RIPv1和RIPv2,它们均基于经典的距离向量路由算法,最大跳数为15跳。RIPv1路由上不包括掩码信息,所以网络上的所有设备必须使用相同的子网掩码,不支持VLSM(可变长子网掩码)。RIPv2可发送子网掩码信息,支持VLSM。RIP的算法简单,但在路径较时收敛速度慢,广播路由信息时占用的带宽资源较多,它适用于网络拓扑结构相对简单且数据链路故障率极低的小型网络,在大中型企业网络中,一般不使用RIP。2、OSPF(开放式最短路径优先协议)是一种为IP网络开发的内部网关路由选择协议,使用了Dijkstra提出的最短路径算法(SPF),此算法是向本自治系统中所有路由器发送信息,这里使用的方法是泛洪法。发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。只有当链路状态发生变化时,路由器才用泛洪法向所有路由器发送此消息。OSPF不会产生路由环路,不受路数限制,能够用于规模很大的网络,收敛速度快,支持大型异构网络的互联,并且不容易出现错误的路由信息;支持多重路径;支持路由验证,提高了网络的安全性;支持负载均衡;支持VLSM。相同点:1、都是动态路由协议。2、都是内部路由协议。3、如果RIP是版本2(RIPv2)的话,那OSPF一样都支持边长子网掩码,支持VLSM。不同点:1、RIP是按跳数来算路由的,OSPF是状态路由协议。2、RIP的算法简单,但在路径较时收敛速度慢,广播路由信息时占用的带宽资源较多,它适用于网络拓扑结构相对简单且数据链路故障率极低的小型网络,在大中型企业网络中,一般不使用RIP。OSPF不会产生路由环路,不受路数限制,能够用于规模很大的网络,收敛速度快,支持大型异构网络的互联,并且不容易出现错误的路由信息;支持多重路径;支持路由验证,提高了网络的安全性;支持负载均衡;支持VLSM。RIP的局限性在大型网络中使用所产生的问题:RIP的15跳限制,超过15跳的路由被认为不可达RIP不能支持可变长子网掩码(VLSM),导致IP地址分配的低效率周期性广播整个路由表,在低速链路及广域网云中应用将产生很大问题收敛速度慢于OSPF,在大型网络中收敛时间需要几分钟RIP没有网络延迟和链路开销的概念,路由选路基于跳数。拥有较少跳数的路由总是被选为最佳路由即使较长的路径有低的延迟和开销RIP没有区域的概念,不能在任意比特位进行路由汇总一些增强的功能被引入RIP的新版本RIPv2中,RIPv2支持VLSM,认证以及组播更新。但RIPv2的跳数限制以及慢收敛使它仍然不适用于大型网络相比RIP而言,OSPF更适合用于大型网络:没有跳数的限制支持可变长子网掩码(VLSM)使用组播发送链路状态更新,在链路状态变化时使用触发更新,提高了带宽的利用率收敛速度快具有认证功能OSPF协议主要优点:1、OSPF是真正的LOOP-FREE(无路由自环)路由协议。源自其算法本身的优点。(链路状态及最短路径树算法)2、OSPF收敛速度快:能够在最短的时间内将路由变化传递到整个自治系统。3、提出区域(area)划分的概念,将自治系统划分为不同区域后,通过区域之间的对路由信息的摘要,大大减少了需传递的路由信息数量。也使得路由信息不会随网络规模的扩大而急剧膨胀。4、将协议自身的开销控制到最小。三、(15分)什么是web服务?请描述SOAP协议的作用和工作机制。Webservice是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。WebService技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据WebService规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。WebService是自描述、自包含的可用网络模块,可以执行具体的业务功能。WebService也很容易部署,因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。WebService减少了应用接口的花费。WebService为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。SOAP是WebService的基本通信协议。因为SOAP与DCOM和CORBA在概念上有相同之处,所以很多人在问:“SOAP是怎样激活对象的?”或“SOAP在使用什么命名服务(NamingService)?”。或许在执行SOAP的过程当中会用到这些,但这些并不在SOAP规范要考虑的范畴之内。SOAP只是定义SOAP消息的XML格式(XMLFormat),如果你用一对SOAP标记(SOAPElements)把XML文档括起来,那么这个就是一个SOAP消息,这不是很简单吗?SOAP规范还定义了怎样用XML来描述程序数据(ProgramData),怎样执行RPC(RemoteProcedureCall)。这些可选的规范是为了构建RPC-style的应用程序(客户端SOAP消息包含函数名和在函数中用到的参数,而服务器端SOAP消息包含执行函数之后的结果)。大多数SOAP解决方案都支持RPC-style应用程序,因为很多程序员已对DCOM或CORBA熟悉。SOAP还支持Document-style应用程序(SOAP消息只包含XML文本信息)。Document-style应用程序有很好的灵活性,所以很多用RPC很难构建的WebService用这种方式构建。最后SOAP规范还定义了HTTP消息是怎样传输SOAP消息的。这并不代表SOAP只能用HTTP来作为传输协议,MSMQ、SMTP、TCP/IP都可以做SOAP的传输协议。很多大公司根据SOAP规范,都开发出了自己的SOAP解决方案。这些解决方案都是相对于某种语言。比如说MicrosoftSOAPtoolkit2.0把COM函数转换成SOAP消息,而Apachetoolkit把JAVA函数转换成SOAP消息。这样难免带来一些兼容性问题。现在SOAP的很多另人瞩目的特性已成为现实(SOAP已经运行于不同的硬件和软件平台),而且有70多个解决方案。之所以SOAP被人们所爱戴,是因为SOAP比其他同类技术(CORBA、DCE)简单易用。安全性对于应用程序来说是很重要的。那么SOAP的安全性如何呢?对于把HTTP作为传输协议的SOAP来说是没有问题的,因为HTTP协议已经有很好的安全构架。那么用其他传输协议会出现安全问题吗?不是的,你不必担心,因为已经有这方面的规范了四、(15分)请详述TCP连接释放的过程。TCP建立连接的“三次握手”过程:TCP释放连接的“四次握手”过程:三次握手所谓三次握手(Three-WayHandshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:图2TCP三次握手(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。SYN攻击:在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-openconnect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击是一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:#netstat-nap|grepSYN_RECV三、四次挥手三次握手耳熟能详,四次挥手估计就,所谓四次挥手(Four-WayWavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:图3TCP四次挥手由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。上面是一