网络协议分析复习提纲TCP/IP概述1.TCP/IP分层模型中的两个边界(P7)在TCP/IP分层模型中包含两个边界,即操作系统边界和协议地址边界。操作系统边界把系统和应用区分开来,传输层以及其下各层属于操作系统内部实现,应用层则属于操作系统外部实现,操作系统边界:传输层及其下各层的协议、应用层中被IETF标准化的协议以及操作系统厂商自定义的协议属于操作系统内部实现。协议地址边界则主要区分各层使用的地址形式,IP层及其上各层使用IP地址,网络接口层和硬件层则使用物理地址,并通过地址解析协议(ARP)和反向地址解析协议(RARP)实现相互之间的映射。2.“点到点”和“端到端”在协议分层模型中的含义(P8)应用层和传输层是端到端的,其下各层是点到点的。“点到点”指对等实体间的通信由一段一段直接相连的机器间的通信组成。“端到端”指对等实体间的通信拥有一条直接线路,而不管中间要经过多少个通信节点。点到点协议PPP1.认证协议PAP(P18)PAP是基于口令的认证方法。被认证方向认证方发送Authenticate-Request报文,其中包含了身份和口令信息;若通过认证,认证方回复Authenticate-Ack,否则返回Authenticate-Nak。在PPP身份认证过程中,PPP仅在建立链路阶段使用PAP,在数据传输中不能使用。优点:简单缺点:安全性差。在传送过程中采用明文传输,无法防止窃听、重放和穷举攻击。2.认证协议CHAP(P19)CHAP是基于挑战的认账协议。认证方向被认证方发出一个Challenge报文,其中包含了随机数C;作为响应,被认证方共享的秘密值s和c一起作为输入,计算散列值A1,并通过Response报文返回;认证方在本地将s和c作为输入,用同一散列函数计算散列值A2,并与A1进行比较。若相等,说明被认证方拥有正确的共享秘密,认证通过,返回Success;否则返回Failure。CHAP可以在链路建立和数据通信阶段多次使用。优点:密钥信息不需要在通信信道中传输,而且每次认证所交换的信息都不一样,可以很有效的避免监听攻击。缺点:密钥必须是明文信息进行保存,而且不能防止中间人攻击。Internet地址及地址解析1.ARP的思想和步骤ARP的基本思想是“询问”,但由于目标的物理地址还未知,因此必须用广播的方式提问,这种广播是物理广播,即物理帧的目的物理地址字段设置为物理广播地址。对于被提问者而言,它可以从请求报文中提取提问方的物理地址,因此可以直接用单播方式返回应答。简而言之,ARP的思想就是广播询问,单播回应。ARP的步骤如下:1)发送方主机发送一个ARP请求报文,该报文以广播方式发送,其中包含接收方的IP地址。2)网络上所有主机都会收到这个请求,他们把请求中包含的接收方IP地址与自身的IP地址相比较,若相同,则向发送方回应,回应中包含了自己的物理地址;否则不作回应。2.分析跨越2个或三个路由器转发IP数据报时ARP的使用步骤,以及经过每个步骤后通信双方及中间路由器ARP缓存的情况首先发送方主机A发送一个ARP请求报文,以广播的方式发送,其中包括接收方的IPB,同一网络上,所有主机都会收到,他们会将接收请求包中的IP与自身IP进行比较,相同,则发生请求,不同则不回应。当接收方不是该网段的,则会报递给R路由器的接口。此时IP数据报的目的IP为IPB,目的物理地址为IPR1的接口物理地址,之后利用ARP捕获下一个网段的IPR2的接口地址和物理地址,以同样的方式捕获IPR3的接口地址和物理地址,知道R3把数据送到目的主机B,此时,B以A发送方式回应A,三个路由器中则会存放整个网络的主机的IP地址以及MAC地址,以及路由器的各接口的IP地址和MAC地址。互联网协议IP1.IP数据报的分片和重组1)为什么要进行分片重组?需要解决什么问题?每种物理网络都限制了最大帧长度,这是由硬件特性决定的。然而,IP数据报的最大长度可达到65535字节,远大于多数物理网络的MTU。当一个数据报较大,无法使用一个帧传输时,IP模块要把它分成多个较小的片,并为各个分片构造一个单独的数据包,从而形成分片。当同一个数据报的各个分片到达目的主机后,IP模块则要将其重组,然后才能向上层交付数据。在分片重组过程中需要解决的三个问题:a)如何标识同一个数据报的各个分片。解决方案:数据报各分片使用与原数据报相同的标识值。b)如何标识同一个数据包各分片的顺序。解决方案:使用片偏移量来指示各分片中的数据在原数据报的起始位置。c)如何标识同一个数据报分片的结束。解决方案:IP数据报的首部中包含了三个比特的标志字段。DF(Don’tFragment),表示是否可以对该数据包进行分片。“0”表示可以,“1表示”不能分片。MF(MoreFragment),表示是否为最后一个分片。“0”表示最后一个,“1”表示不是最后一个。2)如何实现分片重组IP数据报使用标识、标志和片偏移量三个字段对数据包的分片进行。IP规定,数据报分片发生在发送方主机或中间路由器,而重组在信宿机。重组过程是分片的逆过程,它将若干分片重新组合后还原为原来的数据报。两个实际的分片重组算法:FreeBSD的算法和基于“洞”的算法。Internet控制报文协议ICMP1.设计网络的MTU算法源主机向目的主机发送数据报,将数据报中的DF(Don’tFragment,不要分片)置位。在数据报的发送过程中,一旦有任何需要分片(即大于MTU)的数据报,路由器即会将数据报丢弃,并返回源主机一个“需要分片但DF置位”的目的站不可达ICMP报文。然后源主机再逐渐修改发送数据报的大小,直到未收到该类报文为止,该数据报的大小即为MTU。为了使算法效率较高,可以将第一个探测的数据报设为最大值的数据报,然后使用二分算法来调整发送的数据报的大小,直到测得MTU。2.设计测量从源站到目的站的所有路由器的IP地址可以借用现有常用的Traceroute程序。其思想如下:当将IP数据报首部的TTL字段置1时,该数据报经过第一个路由器后TTL字段就递减为0,这个路由器会返回一个ICMP超时报文。这个报文也是封装在IP数据报中发送的,因此源端提取该IP数据报首部中的源IP地址字段即可得到第一个路由器地址。之后,TTL值以1为单位逐渐递增,最终获取路径中所有路由器的IP地址。传输层协议TCP1.ISN为什么不能选取为1TCP标准规定ISN不能为1。一方面可以防止连接失效后SOCKET被重用使得以前残留的包被错误的接受;另一方面,则是为了防止IP欺骗。见下图AB(2)SYNISN=1ACKIh+1在上图中,A允许B访问,但不允许黑客H访问。H若要冒充B访问,如果B在关机或者被H控制的情况下,那么H则会冒充B向A发送TCPSYN报文,并把ISN设置为ISNb,A在收到这个请求后则会向B回应一个SYN+ACK报文,并把ISN设置为ISNa。由于B已经关机,因此不会对这个报文产生回应。而H则必须冒充B向A发送最后一个ACK报文,并把确认号设置为ISNa+1。因此,假若我们每次将初始序列号ISN都从1开始或者每次都相同则很容易被H知道,从而H也就实现IP欺骗,这是不允许的。因此,ISN不能选取为1.2.糊涂窗口综合征产生的原因,如何避免当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小。极端情况下,有效载荷可能只有1个字节;而传输开销有40字节(20字节的IP头+20字节的TCP头),如此反复,就会造成一系列短的数据段,最终发送方和接收方形成一种稳定的状态,即TCP为一个字节的数据发送一个报文段。接收方的小窗口通告造成发送方发送一系列小的报文段,从而产生糊涂窗口综合症。TCP使用启发式方法来防止糊涂窗口综合症。对于发送方,强迫发送端的TCP收集数据,然后用一个更大的数据块来发送,被实现为Nagle算法。对于接收方,在通告窗口之后,要等到缓冲区可用空间至少达到总空间的一半或者MSS后才发送新的窗口通告。此外,在窗口大小不足以达到避免该症的策略所制定的限度时,则推迟发送确认。选路协议RIP1.RIP的慢收敛问题的原因及其对策慢收敛问题在所有采用向量距离算法的路由协议中普遍存在。想想距离算法依靠相邻路由器的依次传递,才能将路由信息传播到整个网络。当网络中的一条链接出现故障时,要使个路由器的路由信息重新达到一致,也就是重新达到收敛状态,所需的平均时间取决于网络直径,即网络中两个最远路由器的距离。当一个网点的连接断开,导致该网点成为互联网络中的孤立点时,该事件被相邻路由器R1检测到后,它将它到该网点的路径设置为不可达,并试图向R1的另一个相邻路由器R2通告该信息。与此同时,R2也可能向R1通告它所掌握的路由信息,于是可能就会出现两种情形,一种是我们所希望的理想情形,在此不赘述。另外一种情形则是:在R1通告变化后的路由信息之前,R2的更新报文已经到达。R1得知R2有一条到达断开网点的更短路径时,将立即设置一条到达该网点的路径。之后,R1将等待下一个更新周期的到来,并向R2通告有一条可达路径。在R2收到后,重新设置路由表项。从而导致路由循环,终止条件是,双方到达目标网点的距离为16。从而也就导致了慢收敛问题。H(3)ACKIa+1(1)SYNISN=Ih对策:1)简单分割范围法路由器记录从每个网络接口传入的路由信息。路由器向一个接口发送的路由更新报文中不包含从该接口获取的路径信息2)带毒性逆转的分割范围法也要记录每个接口传入的路由信息。当路由器向一个接口发送路由更新报文时,如果某个条目是通过带接口获得的,则将该条目的距离设置为无穷大。3)抑制法要求所有路由器在收到某个网络不可达的信息后,将相应表项的距离值设置为16,并将此信息保留一段时间。即使该网络在很短的时间内又可达,路由器也不立即更新路由表项。等待足够时间,确保所有路由器都收到坏消息后,才对路由表进行更新。保留坏消息的时间通常为路由更新周期的2倍,默认值为60s。4)触发更新法一旦发现网络连接消失,就将该网络设置为不可达,并立即发送路由更新报文,而不等待正常的路由更新周期时间到来。开放式最短路径优先OSPF1.OSPF的思想和过程OSPF基于自制系统内每个路由器的链路状态通告,以便这些路由器共同维护链路状态数据库。当自治系统中路由器数目大量增加时,会导致链路状态数据库规模的急剧膨胀,使得路由维护及路径选择非常低效。为了解决这一问题,OSPF将一个大规模网络划分为多个易于管理的区域,从而缩小了交换链路状态数据的路由器群组规模,这正是OSPF的思想所在,即将区域划分归类,路由器分类,然后再对路由汇总。OSPF的过程:OSPF将链路信息分为三种,分别是AS外部,区域间和区域内路由信息。AS外部路由信息用于不同烦人自治系统之间,区域间路由信息用于同一自治系统中的不同区域之间,他们的交换职能分别由预先配置的自治系统边界路由器和区域边界路由器行使。因此有效的区域内路由信息交换由邻接路由器才能完成。OSPF通过报文交换实现链路状态信息的交换。首先,通过Hello报文进行邻接关系的建立:(1)发现邻居。(2)维护邻居关系。(3)选举指定路由器和后备指定路由器(4)建立邻接关系。之后,通过进行数据库同步实现确保路由选择的一致性,此时则会用到数据库描述报文,链路状态请求报文以及链路状态更新报文来实现链路状态数据库的同步。2.RIP和OSPF的优缺点RIP:优点:对于小型网络,RIP就所占带宽而言开销小,易于配置、管理和实现,并且RIP还在大量使用中。缺点:RIP也有明显的不足,即当有多个网络时会出现环路问题。为了解决环路问题,IETF提出了分割范围方法,即路由器不可以通过它得知路由的接口去宣告路由。分割范围解决了两个路由器之间的路由环路问题,但不能防止3个或多个路由器形成路由环路。触发更新是解决环路问题的另一方法,它要求路由器在链路发生变化时立即传输它的路由表。这加速了网络的聚合,但容易产生广播泛滥。总之,环路问