网络协议与分析课后习题_第1页
网络协议与分析课后习题_第2页
网络协议与分析课后习题_第3页
网络协议与分析课后习题_第4页
网络协议与分析课后习题_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章

1、异构网络互连的问题是什么?试举例说明。

举例来说,用户A可以通过接入使用以太网技术的校园网,与另外一个使用电话点对点拨

号上网的用户B之间进行邮件通信,同时还和一个坐在时速300公里的高铁上的使用

WCDMA手机进行3G上网的用户C进行QQ聊天。但问题的关键在于,这些采用不同技术

的异构网络之间存在着很大差异:它们的信道访问方式和数据传送方式不同,其帧格式和物

理地址形式也各不相同。

2、请描述图1-2中,用户A和用户C进行QQ聊天似的数据转换和传输过程。

用户A的主机将发送的邮件数据先封装到IP数据包中,在封装到以太帧中,发送到其接入

的以太网中,并到达路由器R1。

路由器R1从以太帧中提取IP数据包,根据目标IP地址选择合适的路径,再将其封装成SDH

帧,转发到因特网主干网中,经过因特网主干网中若干路由器的选路和转发,到达路由器

R3

路由器R3从SDH帧中提取1P数据包,转换成WCDMA帧,发送到3G网络中,到达用户

C的主机。

用户C的主机提取出IP数据包,最总交付到上层的邮件应用程序,显示给用户C。

3、TCP/IP协议族中的协议主要有哪些?请列举出协议的名称并查找其对应的最新RFC编

号。

768UDP用户数据报协议

791IPInternet协议

792ICMP网际控制报文协议

793TCP传输控制协议

826ARP地址解析协议

959FTP文件传输协议

4、画出TCP/IP模型和OSI模型之间的层次对应关系,并举例TCP/IP模型中各层次上的协

议。

OSI七层模型与TCP/IP四层模型对照表

OSI模型TCP/IP模型

层数名称层数名称协议簇

第7层应用层

HTTP、FTP、SMTP、Telnets

第6层表示层第4层应用层

DNS及其他

第5层会话层

面向连接的传输控制协议TCP

第4层传输层第3层传输层

无连接的用户数据报协议UDP

Internet层/

最著名的IP,还有ICMP、ARPs

第3层网络层第2层互联网层/

RARP

网际层

第2层数据链路层主要参与IP分组时建立和网络介

座&访问层/

第1层质的物理连接

第1层物理层座&接口层

Ethernet-vAvvRvvPvwAvvnvvevvt、

应用层:应用层对应0S1模型的上面三层。应用层是用户和网络的接口,TCP/IP简化了

OSI的会话层和表示层,将其融合到了应用层,使得通信的层次减少,提高通信的

效率。应用层包含了一些常用的、基于传输层的网络应用协议,如Telnet、DNS、

DHCP、FTP、SMTP、POP3、HTTP、SNMP、RIP>BGP等。

传输层:传输层位于IP层之匕为两台主机上的应用程序提供端到端的通信服务。目前,

应用最广泛的传输层协议是TCP和UDPo

网络层:网络层又称为网际层、互联网层或工P层,是TCP/IP模型的关键部分。该层主要

完成IP数据包的封装、传输、选路和转发,使其尽可能到达目的主机。该层包括

的协议主要有IP、ARP、RARP、ICMP和IGMP,其中,IP协议是网络层的核心。

网络接口层:网络接口层对应0S1模型中的物理层和数据链路层,只要底层网络技术和标

准支持数据帧的发送和接收,就可以作为TCP/IP的网络接口,包括前面提到的各

种局域网、城域网、广域网技术,如以太网、电话拨号、3G网络等。

5、例举出某一个具体网络通信过程中的多路复用和多路分解过程,并说明……

多路复用是指多个上层协议复用同一层底层协议数据包

多路分解是指从底层协议数据包解封数据

第二章

1,简述HDLC是什么?有什么应用?

是什么:

高级数据链路控制(High-LevelDataLinkControl,HDLC)协议是由ISO标

准化组织制定的一个面向比特的同步数据链路层协议。它是由IBM的同步链路控制

(SynchronousDataLinkControl,SDLC)协议发展而来的。

HDLC协议提供了面向连接和无连接两种服务;它既可以工作在点到点线路方式,也可

以工作在点到多点线路方式。HDLC协议不依赖于任何一种字符编码集;数据报文可透明传

输;既支持半双工,也支持全双工通信,有较高的数据链路传输效率;所有帧采用了流量控

制和差错控制,传输可靠性高;传输控制与处理分离,具有较大的灵活性。

应用:

广泛应用于数据通信领域、X.25网络、帧中继网络以及作为数据链路层协议连接服务

器到广域网中。

2、简述PPP协议在SLIP的基础上做了哪些改进?查找资料,说明PPPoE协议和PPP协议

的关系,PPPoE的工作流程、帧结构及其应用?

1)改进

SLIP(串行线路因特网协议)协议是一种简单的帧封装方法,有许多缺陷,比如SLIP

不支持IP地址分配;SLIP帧中无类型字段,无法同时传输多个上层协议;SLIP中没有校验

字段,链路层上无法检测出由于线路噪声导致的差错。

PPP协议克服了SLIP协议中的所有缺陷,它支持多种网络协议、多种数据压缩方法、

多种身份认证方式、动态地址分配、差错控制和数据加密等。

2)PPPoE全称为PointtoPointProtocoloverEthernet(以太网上的点对点协议),简单地说,

就是以太网和PPP结合后的协议,目前广泛应用在ADSL接入方式中,用于宽带拨号上网,

使连接在以太网上的许多主机共享一条物理线路接入到因特网。

3、CSMA/CD和CSMA/CA分别是什么?有什么区别?

答:CSMA/CD载波侦听多路访问/冲突检测协议,是一种分布式介质访问控制协议。

其原理如下:

(1)多个站点平等的接入到共享访问介质(多路访问)。

(2)每个站在发送帧之前,首先要监听访问介质,只有访问介质空闲时,才允许发

送帧(载波监听)。

(3)如果两个以上的站同时监听到访问介质空闲并发送帧,则会产生冲突现象。因

此要求每个站在发送数据的同时,仍然继续监听访问介质(冲突检测)。如果出

现冲突,则发送站要发送干扰信号以使所有其它主机都能接收到冲突信号。然

后每一个发送站随机延时•段时间后,再次重新发送帧。

和采用总线拓扑结构的以太网类似,无线局域网中的传输介质也是共享的,需要一定的介

质访问控制协议来避免冲突。但是由于在无线传输中有''隐藏站"问题,无线局域网没有采

用基于冲突检测的CSMA/CD技术,而是设计了一种避免冲突的CSMA/CA(CarrierSense

MultipleAccess/CollisionAvoidance,载波侦听多路访问/冲突避免)协议。

CSMA/CA工作原理如下:

(1)发送站在检测到介质空闲后,先发送一个请求发送帧(RTS),帧中存放了它需

要占用介质的时间。

(2)接收站收到请求RTS后,发送准备发送帧(CTS),所有站点都会收到该帧,知

道了介质会被占用一段时间。

(3)发送站发送数据帧。

(4)接收站确认所收到的数据。

区别

①CSMA/CD可以一边检测冲突,一边收发数据,一旦检测到冲突,立刻停止数据收发。

CSMA/CA则是必须先检测是否有冲突,得到对端确认后,再发送数据,而不能同时进行,是

根据无线网络的特点设计出来的。

②两者的传输介质不同,CSMA/CD用于总线式以太网,而CSMA/CA则用于无线局域

网。

③检测方式不同,CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电

缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波

混合检测三种检测信道空闲的方式。

第三章

1、试描述ARP协议软件架构,说明函数间的调用关系。

ARP软件初始化是伴随着系统网络模块初始化进行的,网络初始化函数netstartO

会调用arpinitO函数初始化ARP软件,同时会创建slowtimer(网络计时器)进程,

该进程用于维护ARP缓存、IP分片队列和IP路由表信息。

ARP软件中用于维护ARP缓存信息的函数为arptimerO,该函数通过定期遍历ARP

缓存记录的状态释放超时的ARP缓存(通过arpdq()函数),或者重新发送ARP请求数据

包(通过arpsend()函数)。

当IP模块需要调用netwriteO函数通过网络接口发送或转发IP数据包时,需要调

用arpfind()函数查询当前ARP缓存中是否存在对应数据包下一跳协议地址的物理地址,

若查询失败,应该调用arpalloc()函数创建一个空的ARP缓存记录并通过arpsend()

函数发送一个ARP请求报文。

当网络接口收到一个ARP数据包时,网卡驱动会调用数据包复用函数ni_in(),该函

数会调用ARP输入处理函数arp_in(),arp_in()函数会查询相关的ARP缓存记录

(arpfind()函数),根据收至U的ARP报文添力口ARP缓存记录(arpadd()函数)或者发

送获得解析地址的IP数据包(arpqsend()函数)。

2、理解ARP报文处理算法,分析其利弊。

ARP是一个网络层协议,功能是将网络协议地址转换为物理地址。不妨设为1P转换为MAC

地址。即ARP算法的前提是知道目标IP地址。

ARP报文处理算法分为以下几个部分:

DA要发送数据报文时,会先在arp缓存中找。若存在对应项,直接提取即可。(这样可以

节省时间)

若arp缓存中没有该IP对应项,则将一个针对特定IP地址的ARP请求通过广播发送到本地

网络。

2)本地网络的主机会接收到arp请求报文,会对IP地址进行匹配,若是自己的则把自己的

mac作为数据发送arp回应报文给A。并在arp缓存中添加(更新)A的Ip的相关项,且在

这个过程中若arp缓存中存在A相关的项,收到该请求报文的主机在简单的判断该报文的协

议,地址类型,接U层定义等信息之后都会更新自己的arp缓存,更新跟A的IP相关的选

项。(不会添加)

即无论arp报文是不是发送给自己的,都更新相关项。这样可以防止突然的硬件地址的改变

并节约时间。

另外若是不在本网,则路由器相关接口会相应。

3)ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(一般15到20分

钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快

查询速度。

利:在网络环境安全的情况下,是一种效率很高的处理方法。

弊:ARP报文处理算法无条件的将一个看似合法的记录加入到缓冲区中,这种做法是十分危

险的,网络攻击者可以构造看似合法的ARP请求报文,进行ARP欺骗攻击。

3、简述主机发送IP数据包的过程。

个人觉得

1)数据封装成IP数据包

2)IP数据包在底层没法发送。应该是先运行arp协议得到硬件地址,然后发送到对应的硬

件地址的主机。

当工P模块需要调用netwrite()函数通过网络接口发送或转发IP数据包时,需要调

用arpfind()函数查询当前ARP缓存中是否存在对应数据包下一跳协议地址的物理地址,

若查询失败,应该调用arpalloc()函数创建一个空的ARP缓存记录并通过arpsend()

函数发送一个ARP请求报文。(这一段很重要哦)

可以分析下:即便是网络之间的传输也是要通过一次又一次点对点的发送,最终到达目的地。

4、略

5、简述ARP攻击的原理,并根据你对ARP攻击的理解提出一些改进方案

ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP

通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP

缓存中的IP-MAC条目,造成网络中断或中间人攻击。

改进方案:

1、不要把你的网络安全信任关系建立在IP基础上或MAC基础上,(rarp同样存在欺骗的问

题),理想的关系应该建立在IP+MAC基础上。

2、设置静态的MAC->IP对应表,不要让主机刷新你设定好的转换表。

3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。

4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。

确保这台ARP服务器不被黑。

5、使用硬件屏蔽主机。设置好你的路由,确保IP地址能到达合法的路径。(静态配置路由

ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。

6、管理员定期用响应的IP包中获得•个rarp请求,然后检查ARP响应的真实性。

通过以上的方法可以大大降低你受ARP攻击的可能。

第四章

1、试描述IP软件结构,说明函数之间的调用关系。

图4-2显示了IP软件中各个函数之间的调用关系。为了方便IP与其他协议的交互,

同时为了增强软件内部模块的耦合性,IP软件采用了独立工P进程的设计方式。从图4-2

中我们可以看到,整个IP软件以IP进程ipproc为中心,ipproc由网络初始化函数

netstart()创建。当一个工P数据包到达网络接口后,网络接口驱动会通过网络数据包解

复用函数ni_in()调用IP数据包入口函数ip_in()»ip_in()函数会将传入的数据包放

在系统内部的一个IP输入队列中。这个输入队列不仅仅存放从网络中传入的数据包,同时

它还存放上层协议希望通过ipsend()函数发送的IP数据包。IP进程会周期性的调用

ipgetp()函数从队列中获取待处理的数据包。获取到数据包以后,它会分别调用

ipnet2h()和cksum()函数转换首部字节序以及计算检验和。止匕外,它还会通过ipdbc()

函数和ipredirect()函数处理定向广播报文以及发送ICMP重定向报文。如果处理的IP

数据包需要被发送或者转发,ipproc可能会调用iph2net()函数将数据包首部字节序转

换为网络序。最后进程会调用ipputp()函数将数据包交付网络接口模块(注意这里的网络

接口既有可能是物理接口,也有可能是环回接口)。

图4-21P软件总体结构

当工P进程将数据包交给ipputp()函数处理后,如图4-3,ipputp()函数根据数据

包的去向将其交给物理网络接口发送,或者通过环回接口将数据包交付上层协议。在发送/

转发过程中,数据包可能会被分片。此时,ipputp()函数会调用ipfsend()函数进行

相关的分片处理,期间它们可能会调用ipfhcopy()将原来的数据包首部拷贝到分片数据

包上。随后,1P软件会调用netwrite()函数将数据包交付网络接口发送。如果当前数据

包需要从物理网络接口发送,netwrite()函数会调用相应的网络接口驱动发送数据包;若

数据包需要交付上层协议,netwrite()函数会调用loCal_out()函数将数据包通过环回

接口交付。由于此时需要将数据包交付更高层协议,因而1P软件需要对到达的分片数据包

进行重组。在1P软件中,local_out()函数会调用ipress()函数处理收到的分片数据

包。ipress()函数会通过ipfadd()函数将分片信息放入分片队列中,并调用ipfjoin()

函数查看是否所有的分片都已经到达。若分片到齐,ipfjoin。函数会调用ipfcons()

函数重组分片。最后,local_out()函数会将完整的IP数据包交付上层协议软件。

Ta,.llX,.ICMP.I(;MKOSH

网络接口骐动

图4-3IP软件输出模块结构

除了以上我们提到的函数之外,1P软件中还提供了•组用于访问路由表的接口函数。

这组函数主要包括rtadd()函数、rtdel()函数、rtget()函数和rttimer()函数。它

们分别用于添加、删除、获取以及定时刷新路由表。

2、根据IPV6首部设计其IP数据报首部数据结构

I)IPV6的数据报首部为:

:LO・:t.:l.工PvG的基本首部___________

位04121624

.版本流量类型|流标[

看1效载荷长度|下一个首部|跳数限制

的源地址

基(128位)

4。B目的地址

(128位)

structip{

charip_verlen;/*IPversion&headerlength(inlongs>)*/

charip_tos;/*typeofservice*/

shortip_len;/*totalpacketlength(inoctets)*/

shortip_id;/*datagramid*/

shortip_fragoff;/*fragmentoffset(in8-octefs)刃

charip_ttl;/*timetolive,ingatewayhops*/

charip_proto;/*IPprotocol(seeIPT_*above)*/

shortip_cksum;/*headerchecksum*/

IPaddrip_src;/*IPaddressofsource*/

IPaddrip_dst;/*IPaddressofdestination*/

charip_data[l];/*variablelengthdata*/

);

版本(4位)指明协议的版本对IPv6该字段总是6。

流量类型(8位)区分不同IPv6数据报的类别或优先级。相当于IPv4的“区分服务”字段。

流标号(20位):源端标记那些要求路由器提供服务质量支持的数据报属于同一个流的数据

报的流标号相同。

有效载荷长度(16位)指IPv6数据报除基本首部以外的字节数最大值是64KB。

下一个首部(8位)指该数据报中的数据要交付给哪个高层协议相当于IPv4的协议字

段。

跳数限制(8位)相当于IPv4的TTL字段。

源地址(128位)是数据报的发送站的IP地址。

目的地址(128位)是数据报的接收站的IP地址。

3、简述1P分片重组算法。

在数据报长度超过传输网络的限制时,若允许分片,对数据报进行分片。同一个数据包的

所有分片使用同一个标识。所有分片标识为分片。计算本数据包中的数据与起始端的偏移并

存储。然后按照正常的数据发送方式发送这些包。

接收时,需等到一个数据报的所有分片到齐,当内存足够时,一次性交给内存进行重组。

并提交给相关应用。

4、IP数据报首部中哪些字段在经过每•个路由器时会发生变化?

IP数据报转发过程中,TTL会发生变化,这样会导致检验和变化;如果IP数据报产生

分片,则IP数据报长度字段、标识字段、标志字段、分片偏移字段也会发生变化;如果IP

数据报首部存在分片,则首部长度字段有可能发生变化。

5、设计字节序转换函数

由于网络字节序采用的就是大端字节序,所以都统一到大端字节序。

其中不同位数的转换不同。16位转换宏如下:

#ifBYTE_ORDER=LITTLE_ENDIAN

#definehs2net(x)(unsigned)((((x)»8)&0xff)I(((x)&0xff)«8))

#definenet2hs(x)hs2net(x)

#endif

#ifBYTE_ORDER==BIG_ENDIAN

#definehs2net(x)(x)

#definenet2hs(x)(x)

#endif

6、不看

7、选路和转发的主要差异是什么?现在网络中普遍存在三层转发设备,请考虑三层转发的

实现方式。

选路和转发的主要差异及三层转发的实现方式如下:

选路的原理:当路由器收到一个需要它转发的IP数据报时,它会根据数据报中的目的

IP地址搜索路由表,找到相关的路山表项,并根据路山中的〈目的地址,下一跳,出接口〉

三元组将数据报从相关的出接口转发。而路由表的维护是由专门的路由选择协议来进行的,

IP层只需要在转发数据时搜索路由表即可。

转发的原理:交换机接收到源主机发送的数据帧后,在MAC地址表中查找数据帧中的

目的MAC地址。如果找到,就将该数据帧发送到相应的端口;如果找不到,就向所有的端

口发送。同时利用接收数据帧中的源MAC地址来建立MAC地址表。

选路和转发的区别主要是,选路在IP层,根据目的IP地址找到出接口;转发在数据链

路层,根据MAC地址对数据进行转发。另外,转发表和路由表不同,转发表中的一行包括

从网络号到发出接口的映射和一些MAC信息,而路由表是由路由选择算法建立的一个表,

它通常包含从网络号到下一跳IP地址的映射,转发表可以由特殊的硬件来实现,而路由表

很少这样。

为了实现三层交换技术,交换机将维护一张至少包括“目的IP地址,下一跳MAC地

址”在内的硬件转发表。当交换机接收到数据时,根据报文中的“目的IP地址”查询硬件

转发表,根据匹配结果进行相应的数据转发,并且采用硬件芯片或高速缓冲区支持,可以达

到线速。

在交换机刚启动完毕时,交换机就把设备的软件路由表下载到ASIC芯片上。在需要进

行三层交换的报文到达交换机后,交换机首先会查询最长匹配硬件转发表,但由于MAC地

址是未知的,无法同时下载,此时的硬件转发表是无效的,所以无法进行硬件数据转发。因

此,交换机将利用CPU对数据进行软件路由转发,交换机在数据转发过程中获取下•跳IP

地址和数据转发出U的MAC地址,然后会被自动下载到三层硬件转发表,此时包含了下一

跳IP地址和数据转发出口MAC地址的硬件转发表项才真正生效。在这之后,发往相同目

的IP网段的报文到达交换机都可以直接通过最长匹配硬件转发表进行硬件转发,而其他网

段的数据转发则需要重复上述过程。

8、设计IP检验和计算函数

原理:1、(1)把IP数据包的校脸利字段置为0;(2)把首部看成以16位为单位的

数字组成,依次进行二进制反码求和;(3)把得到的结果存入校验和字段中。

在这里仅给出计算过程。

unsignedshortchecksum(unsignedshort*buf,intnword)

unsignedlongsum;

for(sum=0;nword>0;nword-)

sum+=*buf++;

sum=(sum»16)+(sum&Oxffff);

sum+=(sum»16);

return-sum;

)

9、略

10、可以考虑以IP地址为标准,构造平衡树。

优点:查询速度可以增快。

缺点:占用存储,且建立和调整树都是需要时间的。不能随机访问。

第五章

1、软件结构

图5-2描绘了工CMP软件中各个函数之间的调用关系。从图中我们可以看到,整个ICMP

软件大概可以分为输入和输出两个部分。

软件输出部分以icmp()函数为中心。当数据包在网络层、传输层甚至工CMP输入处理

中发现出错时都会调用这个函数发送一个1CMP差错报告。icmp()函数通过icerrok()

函数判断发送差错报告的条件是否满足,通过icsetbuf()为报文申请一个缓冲区,通过

icsersrc()函数设定报文的源地址信息,并通过icsetdata()函数填写报文数据部分。

最后它将报文通过IP模块发送出去。

当网络层收到一个发给自己的ICMP报文时,它会通过local_out()函数将报文通过

环回接口交付给ICMP协议软件中的icmp_in()函数进行处理,该函数会调用

icredirect()函数处理重定向报文。如果传入的工CMP报文有错,输入函数也会调用

icmpO函数发送一个差错报告的。

2,说明ICMP五种差错报告报文分别在哪些情况下使用。

(1)终点不可达报文:当路由器不能为报文找到路由或者主机不能交付报文时,丢弃

该报文并发送该类型报文给源主机;

(2)源点抑制报文:当路由器或主机因拥塞而丢弃报文时,向源主机发送该类型报文;

(3)超时报文:当路由器收到TTL为零的报文或目的主机在规定的时间内没有收到所

有的分片报文时,向源主机发送该类型报文;

(4)参数错误报文:当路由器或主机收到存在:义性或字段缺失的报文时,丢弃该报

文并发送该类型报文;

(5)改变路由报文:当路由器收到本应发往其他路由器的报文时,把该报文发送给正

确的路由器,并发送该类型报文通知源主机更正路由,以帮助更新路由。

3、简述PING程序的实现方式。

大多数内核ICMP软件都支持对ECHO请求的应答,所以只需实现客户端功能即可。

程序客户端的工作流程非常简单:程序首先构造一个ICMPEcho请求报文,填写基本首部,

并将报文中的标识符字段设置为发送进程的进程号(这样可以在同一台主机上运行多个

Ping程序),同时将序号字段初始化为0,随后还要在数据部分加匕时间戳(另一种方法可

以尝试使用IP的时间戳选项)。然后调用原始套接字接U发送请求报文。发送结束后程序

会等待并试图接收来自远端主机的Ech。回答报文,网络传输出现异常,中间路由器(或目

的路由器)会向源端回复1CMP差错报告,程序会根据差错报告打印出错信息,否则程序将

打印报文信息并估算往返时间。

4、略

5、当收到的报文时不可达报文时,设计报文处理流程及实现函数。

本题主要考查对ICMP报文处理流程的掌握程度。该情况报文处理流程可概括为:当函

数接收到终点不可达报文时,首先累计不可达报文统计变量(SNMP使用该MIB变量进行

网络管理工作),然后从该报文中提取出相关信息(报文类型、引起差错的原因等),通过消

息队列把这些信息交付应用层协议,应用层协议会根据ICMP报文反馈的信息进行进一步处

理。

6、了解时间戳请求报文的处理步骤,设计并实现时间戳请求与应答报文处理函数。

本题主要考查对时间戳请求/应答报文的掌握程度,使学生在全面理解的基础上提高独

立设计该函数的能力。实现时间戳请求/应答处理函数的流程可概括为:(1)若该函数收到

一个时间戳请求报文,则首先记录下收到该请求时其时钟所显示的通用时间,然后根据请求

报文构造时间戳应答报文,将时间戳请求中的原始时间戳字段复制到应答报文中的原始时间

戳字段,并填入接受时间戳,在应答报文发送离开时填入当前的通用时间,最后交由IP封

装并发送;(2)若该函数收到一时间应答报文,则首先记录下收到该应答报文时所显示的通

用时间T,然后提取出报文中的原始时间戳、接受时间戳、发送时间戳,计算可得:Time_S

=接受时间戳-原始时间戳;Time_R=T-发送时间戳。返回Time_S+Time_R即可。

第六章

1、软件结构

图6-2描绘了IGMP软件中各个函数之间的调用关系。从图中我们可以看到,IGMP软

件大致分成三个部分:•组负责处理或发送IGMP报文的函数,一组用于维护主机群表的函

数和一套通过TCP定时器完成定时发送的机制。

主机端IGMP的输入处理和输出处理非常简单:应用进程会调用igmp()函数发送个

1GMP成员关系报告,该函数直接通过1P模块将数据包发送出去。若工P层收到一个工GMP

报文则会将其上送给协议软件的igmp_in()函数,igmp.in()函数会根据IGMP报文类型

选择合适的操作。若主机需要回复一个IGMP成员关系报告时igmp_in()函数会调用

igmp_settimers()函数启动一个定时事件。

软件中用于维护定时事件的是igmp_update进程,这个进程在网络初始化函数

netstart()初始化主机群表时(hginit()函数)被创建。当工GMP软件需要启动定时事

件时,他会调用TCP的定时器接口tmset()函数启动一个定时器。当定时器到期后,TCP

定时器进程tcptimer会通过消息通道发送一个定时消息,igmp_update进程会监听、

获取并处理该消息(处理消息的方式即发送等待发送的成员关系报告)。

IGMP软件中还需要提供一套用于维护主机群表项的接口,其中主要包括hglookupO

函数、hgjoin()函数和hgleave()函数。他们分别用于在主机群表中查找特定的表项以

及处理应用进程加入/离开某个主机群的请求。hgjoin()函数需要调用hgadd()函数在主

机群表中加入一条记录。此外,在添加/删除主机群表项时需要通过hgarpadd()和

hgarpdel()函数在ARP缓存中添加/删除特定组地址的ARP映射。

从图中我们可以看到,无论是加入还是删除一条表项都需要通过hglookup()函数遍

历主机群表。此外,当igmp_in()函数处理收到的IGMP报文时也可能会查询相关的主机

群表。

2、为什么没有必要让IGMP报文在本地网络以外传送。

1GMP是路由器和内部子网之间维护组成员关系的一个协议,IGMP报文只需要在本地

子网内传送即可。

3、了解IGMP与其他IP组播模块是如何完成组播报文在IP网络中的传播的。

IGMP与其他IP组播模块共同完成组播报文在IP网络中的转发。

为了实现报文在IP网络中转发,除利用IGMP外还需要进行多播地址转换、多播路由

选择、定时器等。

多播地址转换:当多播分组传送到最后的局域网上的路由器时,必须将32位的IP多播

地址转换为局域网48位的多播地址,这样才能在局域网上进行多播。

多播路由选择:转发多播分组的路由器需要彼此交换两种信息。首先,这些路由器需要

知道哪些网络包含给定多播组的成员。其次,这些路由器需要有足够的信息来计算到达每一

个包含多播组成员的网络最短路径。这就需要多播路由选择协议和计算最短路径的算法。

定时器:在路由器端,IGMP首先要为每个端口维护一个查询定时器定时查询接口维护

的各个组在其连接的网络中的成员关系。其次,要为每个主机群表维护一个表项生存周期定

时器。

当一个主机有组播报文发送时,使用的是组播MAC地址,将报文发送给该组所有主机

和与其直接相连的组播路由器,组播路由器收到后将组播MAC地址转换为组播IP地址,

然后查询组播路由表,判断是否向前传送,如果要向前传送,根据相应的出口将报文传送给

下一个网络中该组所有主机的组播路由器。当多播报文传送到最后的局域网上的路由器时,

需将32位的IP多播地址转换为局域网48位的多播地址,局域网中含有该组的所有主机都

可接收到此组播报文。

4、比较主机端的IGMP和路由器端的IGMP管理组成员的异同点。

最主要的差别:主机端负责通知本地子网中的路由器其加入某个多播组或离开某个多播

组;路由器负责维护多播组中的成员列表。

所以在存储的信息(群组信息和组成员信息),定时器(看是否需要应答,看是否有人应答)

等问题上存在差异。且路由器要比主机端多出一些功能。路由器端要实现以下功能:查询器

的选择、维护各个接口下的主机群表项、与组播路由选择协议交互等:状态机的状态和影响

状态转移的主要事件不同。

但是相同的是都使用状态机机制来实现对组成员的管理。

5、简述主机端IGMMP输入处理状态,以及影响状态转移的主要事件。

主机端状态机的三种状态:

1)不是组成员状态

2)延迟组成员状态

3)空闲组成员状态

五种主要事件:

1)加入一个组

2)离开一个组

3)收到一个查询报告

4)收到一个成员关系报告

5)定时器超时

详细解释如下:

不是组成员状态(Non-Memberstate):此时主机未加入接口维护的任何•个组。当协议软件

初始化的时候,所有接口都处于这个状态。

延迟组成员状态(DelayingMemberstate):此时主机加入接口维护的一个组中,并启动了一

个发送成员关系报告的定时器。

空闲组成员状态(IdleMemberstate):此时主机加入接口维护的一一个组中,但是没有启动一

个发送成员关系报告的定时器。

在IGMP协议状态机中,影响状态转移的主要事件有五种:

加入一个组:主机决定加入接口维护的某个组。此时接口会立刻发送一个IGMP成员关系报

告报文,并在启动一个延迟晌应计时器(根据RFC1112,此时应该在短时间内发送连续两

个IGMP成员关系报告报文)后跃迁到延迟组成员状态。

离开一个组:主机决定离开接口维护的某个组。此时处于延迟组成员状态的接口会取消所有

的延迟响应定时器并跃迁到不是组成员状态,而处于空闲组成员状态的接口则只需跃迁到不

是组成员状态。

收到一个查询报告:主机从接口中收到了一个合法的IGMP查询报文。此时接口会启动一个

延迟响应定时器并跃迁到延迟组成员状态。

收到一个成员关系报告:主机从接口中收到了一个合法的1GMP成员关系报告报文报文。此

时接口会取消响应的延迟响应计时器并跃迁到空闲组成员状态。

定时器超时:延迟响应定时器超时。接口会发送一个IGMP成员关系报告报文并跃迁到空闲

组成员状态。

6、1GMP的定时机制是如何实现的?

P115

参考答案中:XINU操作系统中IGMP的实现是通过tmset()函数来设置的,最终是利用了

TCP模块中的定时进程tcptimer来完成的,可以结合这个思路看一下相关代码。

7、主机群表的遍历算法怎么实现的,能进一步实现改进和优化吗?P121

8,略

9、IGMP目前的三个版本,即IGMPvl,IGMPv2,IGMPv3之间有哪些改进?在路由器实现

上有什么优化。

IGMPvl、IGMPv2、IGMPv3三个版本之间的改进与优化之处如下:

IGMPvl:主机可以加入组播组;没有离开信息(leavemessages);路由器使用基于超

时的机制去发现其成员不关注的组。

IGMPV2:该协议包含了离开信息,允许迅速向路由协议报告组成员的终止情况,这对

高带宽组播组或易变型组播组成员而言是非常重要的。

IGMPv3:与以上两个协议相比,该协议的主要改进为:允许主机指定要接收通信流量

的主机对象。来自网络中其他主机的流量是被隔离的。IGMPv3也支持主机阻止那些来自

于非要求的主机发送的网络报文。

1GMPV3同路由器的交互过程与IGMPv2相同。但是在IGMPvl/v2中,主机只根据组

地址来决定加入某个组并从任何一个源主机接收发给该组地址的组播流。而使用IGMPv3

的主机通告该主机所希望加入的多播组,同时还通告该主机所希望接收的多播源的地址。主

机可以通过一个包括列表或一个排除列表来指明希望从哪些源主机接收多播流。同时

IGMPv3的另外一个好处是节省带宽,避免不需要的、非法的组播数据流占用网络带宽,这

在多个多播源共用一个多播地址的网络环境中表现得尤其明显。

第七章

1、简述RIP软件的基本架构,以及其函数之间的相互调用关系。

图7-2描绘了RIP软件中各个函数之间的调用关系。从图中我们可以看到,R1P软件

大体分成两个部分:输入处理和输出处理。

图7-2RIP软件结构

软件的输入部分以rip进程为中心,rip进程由网络初始化函数netstart()创建。

它从创建一个UDP套接字并从中获取RIP报文,随后rip进程会调用ripcheck()函数

检查报文首部的有效性。最后,它会根据传入数据包的类型调用合适的处理函数。riprepl()

函数用于处理传入的R1P请求数据包。此时该函数可能会通过ripsend()函数发送一个带

有完整路由表信息的RIP通告报文或者通过UDP模块发送一个针对特定目的网络的RIP通

告报文。riprecv()函数用于处理传入的R1P通告报文,在处理报文中各个路由通告时它

会调用ropok()函数检查路由信息结构的有效性。

软件的输出部分以输出进程ripout为中心,ripout进程由rip进程在必要时创建

(这取决于是否需要当前路由器发送定时通告)。ripout函数会通过ripsend()函数发送

通告报文,在发送通告报文期间ripsend。函数首先会调用ripifset()函数为每个接口

创建一个接口输出控制结构,随后它会调用ripadd()函数将路由信息添加到RIP通告报

文中。此时,ripadd()函数还要根据实际情况通过ripstart()函数创建一个空的R1P

通告报文。同时.,它还需要利用ripmetric()函数为各个路由信息计算相关的度量值。最

后ripsend。函数会通过UDP模块发送构建好的RIP通告报文。

2、简述距离矢量路由选择协议的缺点及应对方法。

距离矢量路山协议有一个严重的缺点,缓慢的收敛时间过程会造成路由回路。

解决路由回环方法:水平分割,定义最大跳数,毒性逆转,触发更新,抑制时间。

RIP协议的缺点主要体现在大型网络中:

DRIP的15跳限制,超过15跳的路山被认为不可达

2)RIP不能支持可变长子网掩码(VLSM),导致IP地址分配的低效率

3)周期性广播整个路由表,在低速链路及广域网云中应用将产生很大问题

4)收敛速度慢于OSPF,在大型网络中收敛时间需要几分钟

5)RIP没有网络延迟和链路开销的概念,路由选路基于跳数。拥有较少跳数的路由总是被选

为最佳路由即使较长的路径有低的延迟和开销

6)RIP没有区域的概念,不能在任意比特位进行路由汇总

3、阅读代码回代RIP中存在的定时器种类以及它们的作用。

4个定时器:更新定时器、无效定时器、保持定时器、刷新定时器

更新定时器用于每30秒发送路由更新报文。

无效定时器用于路由信息失效前的180秒的计时,每次收到路由信息的更新信息就将

该计数器复位。

刷新定时器和保持定时器同时用于将失效的路由信息删除前的计时:在保持定时器的时

间内,失效的路山信息不能被接收到的新信息所更新;在刷新定时器计时器超时后,失效的

路由信息被删除。

4、比较RIPvl、RIPv2和RIPng,分析三个版本的协议有哪些改进之处。

R

RIPvl、RIPv2、RIPng三个版本之间的比较如下表所示:

RIPvlRIPv2RIPng

使用的端口UDP520UDP520UDP521

通告地址55FF02::9

通告类型广播广播/组播组播

网络支持IPv4IPv4IPv6

支持VLSM不支持支持—

最大跳数161616

支持明文和MD5认不支持,认证功能L1经集

路由认证不支持

证成在IPv6中

每个路由表项都携在专门的路山表项中携带

下一跳地址不携带

带卜一E2地址

更新,超时,刷

30,180,120,18030,180,120,18030,180,120,180

新,抑制计时器

每次更新的路山不认证时25条

25根据链路是MTU值

表项认证时24条

三个版本协议之间的改进之处如下:

•RIPvl:这是R1P协议的最初版本,它完成了R1P作为距离矢量路山选择协议的

基本功能。RIPvl仅支持分类编址,且协议报文无法携带掩码信息。

•RIPv2:在RIPvl的基础上增加了对无分类编址、组播路由更新、路由标记和

协议报文验证等机制的支持,同时在报文格式中增加了子网掩码和下--跳地址字

段。

•RIPng:又称为下一代RIP协议(RIPnextgeneration),它在RIPv2的基

础上针对IPv6提出了一系列的扩展以适应下一代网络的需求。

6、理解链路状态路由选择协议的运行方式。

链路状态路由选择协议又称为最短路径优先协议,目的是映射互联网络的拓扑结构,每

个链路状态路由器提供关于它邻居的拓扑结构的信息。链路状态路由选择协议基于Dijkstra

的最短路径优先(SPF)算法,网络中的路由器并不向邻居传递“路由表项”,而是通告给

邻居一些链路状态。

链路状态路由选择协议使用称为代价的方法,而不是使用跳。其实现基本步骤如下:

(1)每台路由器与它的邻居之间建立联系,这种联系称为邻接关系。

(2)每台路由器向每个邻居发送链路状态通告LSA。对每台路由器链路都会生成一个

LSA,LSA用于标识这条链路、链路状态、路由器接口到链路的代价度量值以及链路所连接

的所有邻居。每个邻居在收到通告后将依次向它的邻居转发(泛洪)这些通告。

(3)每分路由器要在数据库中保存一份它所收到的LSA的备份,如果所有路由器工作

正常,那么它们的链路状态数据库应该相同。

(4)完整的拓扑数据库,也叫做链路状态数据库,Dijkstra算法使用它对网络图进行计

算,得出到每台路由器的最短路径;接着链路状态协议对链路状态数据库进行查询,找到每

台路由器所连接的子网,并把这些信息输入到路由表中。

现在常用于IP路山的链路状态路山协议有最短路径优先(OSPF)以及中间系统到中间

系统(IS-IS)两种。

第八章

1、结构和调用啥的

图8-2UDP软件结构

图8-2描绘了UDP软件中各个函数之间的调用关系。可以看出UDP的实现非常简单,

同其他协议一样,IP模块调用local_out()将数据包从环回接口交给UDP输入函数

udp_in(),udp_in()函数对UDP报文作过简单处理后将其通过系统数据通道交付UDP

套接层或者内核应用进程。当应用进程需要发送UDP报文时,它们会调用udpsend()函数,

最后函数再通过IP模块发送数据包。

2、UDP多路复用方案代码题

3、UDP是否存在差错控制机制

UDP中的检验和与差错控制有关。此外,当UDP报文段找不到主机中的相应进程时会

向发送方发送ICMP端口不可达报文。

4、简述Traceroute程序的实现方式。

Traceroute是UDP及ICMP应用的一个典型例子,用来跟踪IP数据包从一台主机到

另一台主机所经过的路由。

实现方式:

程序首先发送一个UDP报文到目的主机,这个报文中的IP首部TTL字段为1,而UDP

首部的目的端口号为一个不可能用到的值(一般大于30000)o此时程序会等待月的主机或

中间路由器的回复,数据包经过第一跳之后到达一个路由器,由于TTL值的限制,此时路

由器将发回一个ICMP错误消息,以说明这个数据包不能继续向前传送。然后traceroute程

序又发出一个TTL为2的数据包,这个数据包经过两次跳跃后其TTL过期。这个过程不断

重复,直到数据包到达H的主机。此过程的目的就是要记录下所有发H;ICMP超时消息的消

息源,据此就可以确定出数据包到达目的主机的路径了。当报文到达目的主机时,由于目的

主机没有应用程序使用报文中的端口号,主机会向源端回复一个ICMP端口不可达报文,而

此时程序可通过收到的端口不可达报文确定之前的数据包已经到达目的主机,即路由跟踪完

成。

5、代码题略

第9章

1、软件结构及函数

TCP软件主要由三个进程组成:输入进程、输出进程和定时进程。由于定时进程功能

比较简单,仅用来维护存在的TCP定时事件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论