当前位置:文档之家› GPL关于RIP协议的实现代码分析

GPL关于RIP协议的实现代码分析

GPL关于RIP协议的实现代码分析

文档编号:00-6201-100

当前版本:1.0.0.0

创建日期:2011-12-22

编写作者:ganjingwei

RIP代码分析

前言 (3)

关于此文档 (3)

参考资料 (3)

第一章RIP协议报文格式 (4)

1.1 报文位置 (12)

1.2 RIP版本1报文 ............................................................................... 错误!未定义书签。

1.3 RIP版本2报文 ............................................................................... 错误!未定义书签。第二章动态学习过程. (14)

2.1 请求与应答...................................................................................... 错误!未定义书签。

2.1.1 初始化 (18)

2.1.2 接收到request ...................................................................... 错误!未定义书签。

2.1.3 接收到response .................................................................... 错误!未定义书签。

2.2 更新.................................................................................................. 错误!未定义书签。

2.2.1定期选路更新........................................................................ 错误!未定义书签。

2.2.2触发更新................................................................................ 错误!未定义书签。

2.3 其他机制与策略.............................................................................. 错误!未定义书签。

2.3.1 水平分割............................................................................... 错误!未定义书签。

2.3.2 定时删除............................................................................... 错误!未定义书签。

前言

关于此文档

此文档是本人这段时间内研究GPL发布的RIP协议源码,总结并且整理出来的文档。供大家参考。

本文档阐述代码相关研究,各章节说明如下:

1 前言,即此章节;

2 重要数据结构

3 接收与发送处理;

4 路由表结构

5 线程机制

6 ripd配置文件

参考资料

网络资源。

源码以linux2.6内核userspace为准。

第一章数据结构1.1 收发处理相关

1.1.1 struct rip

struct rip

{

/* RIP socket. */

int sock;

/* Default version of rip instance. */

u_char version;

/* Output buffer of RIP. */

struct stream *obuf;

/* RIP routing information base. */

struct route_table *table;

/* RIP only static routing information. */

struct route_table *route;

/* RIP neighbor. */

struct route_table *neighbor;

/* RIP threads. */

struct thread *t_read;

/* Update and garbage timer. */

struct thread *t_update;

/* Triggered update hack. */

int trigger;

struct thread *t_triggered_update;

struct thread *t_triggered_interval;

/* RIP timer values. */

unsigned long update_time;

unsigned long timeout_time;

unsigned long garbage_time;

/* RIP default metric. */

int default_metric;

/* RIP default-information originate. */

u_char default_information;

char *default_information_route_map;

/* RIP default distance. */

u_char distance;

struct route_table *distance_table;

/* For redistribute route map. */

struct

{

char *name;

struct route_map *map;

int metric_config;

u_int32_t metric;

} route_map[ZEBRA_ROUTE_MAX];

};

这个结构体包含ripd进程的所有信息,一个ripd进程只有一个struct rip 对象作为全局变量。struct route_table *table是ripd进程维护的路由表的指针;struct thread *类型的数据为进程中的伪线程链表头指针(下文详细描述);此外还包含其他各种信息。

1.1.2 struct rte

struct rte

{

u_int16_t family; /* Address family of this route. */

u_int16_t tag; /* Route Tag which included in RIP2 packet. */ struct in_addr prefix; /* Prefix of rip route. */

struct in_addr mask; /* Netmask of rip route. */

struct in_addr nexthop; /* Next hop of rip route. */

u_int32_t metric; /* Metric value of rip route. */

};

这个结构体保存rip报文的每个路由信息单元,按照rip协议规定的格式定义。

1.1.3 struct rip_packet

struct rip_packet

{

unsigned char command; /* Command type of RIP packet. */

unsigned char version;/* RIP version which coming from peer. */ unsigned char pad1; /* Padding of RIP packet header. */

unsigned char pad2; /* Same as above. */

struct rte rte[1]; /* Address structure. */

};

这个结构体是包含一个路由信息单元的rip报文,也可以把它当做rip报文的首部,因为没有路由信息单元的报文是非法的。

1.1.4 union rip_buf

union rip_buf

{

struct rip_packet rip_packet;

char buf[RIP_PACKET_MAXSIZ];

};

这个联合体表示一个rip报文,rip_packet表示报文头,buf作为后续的空间,在代码流程中,这个数据通常伴随有一个值来表示其长度。

1.2 RIP路由表相关

1.2.1 struct rip_info

struct rip_info

{

/* This route's type. */

int type;

/* Sub type. */

int sub_type;

/* RIP nexthop. */

struct in_addr nexthop;

struct in_addr from;

/* Which interface does this route come from. */

unsigned int ifindex;

/* Metric of this route. */

u_int32_t metric;

/* Tag information of this route. */

u_int16_t tag;

/* Flags of RIP route. */

#define RIP_RTF_FIB 1

#define RIP_RTF_CHANGED 2

u_char flags;

/* Garbage collect timer. */

struct thread *t_timeout;

struct thread *t_garbage_collect;

/* Route-map futures - this variables can be changed. */

struct in_addr nexthop_out;

u_char metric_set;

u_int32_t metric_out;

unsigned int ifindex_out;

struct route_node *rp;

u_char distance;

#ifdef NEW_RIP_TABLE

struct rip_info *next;

struct rip_info *prev;

#endif /* NEW_RIP_TABLE */

};

这个结构体封装一个路由信息的各种元素,rip进程维护一个完整的路由表。

1.2.2 struct route_node

struct route_node

{

/* Actual prefix of this radix. */

struct prefix p;

/* Tree link. */

struct route_table *table;

struct route_node *parent;

struct route_node *link[2];

#define l_left link[0]

#define l_right link[1]

/* Lock of this radix */

unsigned int lock;

/* Each node of route. */

void *info;

/* Aggregation. */

void *aggregate;

};

这个结构体是RIP进程维护的路由表的表的节点。路由表是一个二叉树的结构,这个结构体就是二叉树的叶子。

1.3 RIP线程相关

1.3.1 struct thread_list

struct thread_list

{

struct thread *head;

struct thread *tail;

int count;

};

线程链表。

1.3.2 struct thread_master

struct thread_master

{

struct thread_list read;

struct thread_list write;

struct thread_list timer;

struct thread_list event;

struct thread_list ready;

struct thread_list unuse;

fd_set readfd;

fd_set writefd;

fd_set exceptfd;

unsigned long alloc;

};

顾名思义,这个结构体申明的对象管理所有线程,其中包括读写、计时器、触发、就绪以及废弃的线程,同时也包含用于轮询触发信号的文件描述符。

1.3.3 struct thread

struct thread

{

unsigned char type; /* thread type */

struct thread *next; /* next pointer of the thread */

struct thread *prev; /* previous pointer of the thread */ struct thread_master *master; /* pointer to the struct thread_master. */

int (*func) (struct thread *); /* event function */

void *arg; /* event argument */

union {

int val; /* second argument of the event. */

int fd; /* file descriptor in case of read/write. */ struct timeval sands; /* rest of time sands value. */

} u;

RUSAGE_T ru; /* Indepth usage info. */

};

这个结构体实际描述一个伪线程,其中包含了线程要执行的函数,还有一

些内嵌链表的指针。线程要加入哪个队列,只要操作这些指针。

第二章接收与发送处理

2.1 请求报文处理

当收到一个rip请求报文(command字段为1),轮询程序(后文介绍)会调用rip_request_process()函数来处理这个报文。

请求报文分为两种,一种是请求整个路由表信息的报文(只有一个单元,度量为16,地址系列为0)。当收到此类报文时,直接调用rip_output_process()并制定参数发送整个路由表:rip_output_process (ifp, from, rip_all_route, packet->version)。

另一种是请求某一路由表项的报文。收到此类报文以后,遍历这个报文的每个单元,分别在路由表中查找每个单元的信息,如果找到则填入报文,找不到就把度量设置为16。然后调用rip_send_packet()来发送这个填充过的报文。

2.2 应答报文处理

当收到一个rip应答报文(command字段为2),轮询程序会调用rip_response_process()来处理这个报文。

这个函数先检查源端口、源地址,如果不符合协议规范就丢弃它,然后进入一个循环来遍历报文中的每个单元。对于每个单元中的信息,先进行一些检查,并根据路由表的信息对报文信息进行更改(例如已经有的表项,如果是rip的表项,则设置下一跳为源地址),然后进入rip_rte_process()来进行处理。

rip_rte_process()函数中,同样要进行一些检查和封装,然后把rte也就是路由信息作为依据在路由表中查找表项。

这里有两种结果,如果没有找到,则说明这个路由信息是新增的,我们需要在我们的路由表中创建这一项,所以通过rip_info_new()对他进行创建,并初始化它的计时器,注册一个新事件(讲线程机制时会详细说明),然后通过rip_zebra_ipv4_add()把这个新建的表项加入路由表。如果路由表中已经有关于这个地址的路由,这里就涉及一个简单的最短路径优先算法:在已有表项和新发来的信息中,选择一条最优的(最短的)。但是如果这个报文来自于和表项和告知者是同一个地址,那么说明这个路由发生了变化,无论谁最优,我们都需要进

行更新。代码的实现依据这个算法,并在更新路由的同时进行计时器更新和线程注册。

第三章RIP进程路由表

3.1 关于路由表

路由表是由内核维护的,作用于ISO层次模型的网络层的,被用于发送和转发数据包的,包含地址信息、度量、接口、源地址等元素的一张散列表。RIP 进程为了提高效率和安全性,本身维护一张路由表的创建删除更新,从而避免了系统调用浪费的时间和新增内核接口造成的安全隐患。

3.2 RIP维护的路由表结构

图3-1 哈夫曼树

RIP的路由表结构是一个二叉树,类似“哈夫曼树”,如图3-1所示。

路由表结构以前缀(代码中是prefix,其实就是网络掩码)为哈夫曼编码依据,从xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx开始,分支出0xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx和1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx,逐步类推。

struct route_node表示的就是哈夫曼树的叶子节点,其中struct route_node *link[2]这个变量分别指向此节点的左右两个子节点。如果一个叶子的左子节点或右子节点不存在(路由表暂时没有关于这个前缀的路由项),那么该指针为NULL。

在这样的结构中,查找一个节点是从树根开始,根据前缀的每一位为0或为1,找到下一个叶子。这个查找的时间复杂度为ln(n)同阶。

3.3 相关操作接口

这里只列出每个函数的功能,并稍微分析其实现,具体设计实现细节以及参数、返回值,见代码。

3.3.1 route_table_init()

初始化一张路由表,申请空间。

3.3.2 route_table_finish()

删除一张路由表。

3.3.3 route_node_new()

为一个节点申请空间。

3.3.4 route_node_set()

为一个节点赋值。

3.3.5 route_node_free()

释放一个节点的空间。

3.3.6 route_table_free()

释放一张表的空间,需要释放每个节点。

3.3.7 route_lock_node()

这个函数为一个路由表项加锁。

3.3.8 route_unlock_node()

解锁。

3.3.9 route_dump_node()

终端打印整个路由表。

3.3.10 route_node_match()

在表中找到匹配的前缀节点,执行这个函数如果找到对应节点,会将该节点加锁。

3.3.11 route_node_lookup()

这个函数和route_node_match()几乎一样。

3.3.12 route_node_get()

这个函数也是在表中查找,但是如果找不到会在适合的位置创建一个节点并返回。

3.3.13 route_node_delete()

删除一个节点,如果他的父节点不需要存在,而是为了它而存在,一并删除,递归调用。

第四章RIP伪线程机制

RIP协议中的线程机制是一个“伪线程”机制,它没有创建真正的线程来运行,而是通过一些数据结构、指针的调度,来模拟一个多线程环境。

4.1 线程结构

RIP进程通过一个thread_master结构体的对象来管理所有进程。这个结构体包含6个链表头,read、write、timer、event、ready、unuse。其中,event 队列的执行优先级最高,表示一个触发事件,比如路由表发生了变化;其次是timer队列,这个队列中存放的是计时用的线程;再次是ready队列;然后是read 和write队列,这两个队列一起进行轮询。

图4-1 RIP线程结构

图4-1简单描述了上述结构。

4.2 线程创建与销毁

4.2.1 thread_get()

创建一个线程,先从unuse队列中寻找废弃的线程,如果有,直接从unuse

队列中移除,如果没有,申请新的空间。注意这个函数是个静态局部函数,只能给本源文件使用。

4.2.2 thread_add_read()

创建一个线程,并加入read队列。

4.2.3 thread_add_write()

创建一个线程,并加入write队列。

4.2.4 thread_add_timer()

创建一个线程,并加入timer队列。

4.2.5 thread_add_event()

创建一个线程,并加入event队列。

4.2.6 thread_cancel()

销毁一个线程,将它从对应队列中取出并放入unuse队列。

4.2.7 thread_cancel_event()

销毁所有触发事件线程。

4.3 RIP进程执行过程

在/userspace/gpl/apps/zebra/ripd/rip_main.c中有如下代码:

int main (int argc, char **argv)

{

…………………………………………………

/* Execute each thread. */

while (thread_fetch (master, &thread))

thread_call (&thread);

…………………………………………………

}

这个循环执行RIP进程,我们来看thread_fetch():

struct thread *

thread_fetch (struct thread_master *m, struct thread *fetch)

{

…………………………………………………

while (1)

{

/* Normal event is the highest priority. */

if ((thread = thread_trim_head (&m->event)) != NULL) return thread_run (m, thread, fetch);

/* Execute timer. */

gettimeofday (&timer_now, NULL);

for (thread = m->timer.head; thread; thread = thread->next) if (timeval_cmp (timer_now, thread->u.sands) >= 0)

{

thread_list_delete (&m->timer, thread);

return thread_run (m, thread, fetch);

}

/* If there are any ready threads, process top of them. */ if ((thread = thread_trim_head (&m->ready)) != NULL)

网络协议分析与仿真课程设计预习报告

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 网络协议分析与仿真课程设计预习报告 甲方:___________________ 乙方:___________________ 日期:___________________

(计算机学院) 网络协议分析与仿真课程设计 预习报告 专业名称:__________ 网络工程_________________ 班级:_______________________________________ 学生姓名:____________________________________ 学号(8位): ________________________________ 指导教师:____________________________________ 设计起止时间:2013年12月2日一2013年12月13日

题目一网络流量分析 一、课程设计目的 里加深对IP、DNS、TCR UDP、HTTP等协议的理解; 里掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计地点及时间 二号实验楼442网络实验室,12月2日至12月6日,每天8: 00-14: 00 三、课程设计实验条件 工具:Wireshark (Windows 或Linux), tcpdump (Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 四、课程设计原理 1、DNS域名解析:首先,客户端的应用层会封装数据到达传输层,在传输层标识源端口号 与目的端口号(源端口号为大于1023随机,目的端口号为UDP5狒口)及应用层服务(这 里因该是请求DN硒询服务吧)。传输层封装数据产生数据段传给网络层,在网络层标识源IP地址及目的IP地址(源IP地址为客户端IP ,目的IP地址为DNS服务器IP地址),网络层将数据段封装为数据包传给数据链路层,在数据链路层将会在数据包里加入源MACM址及目的MA砸址(源MACM址为客户端网卡MA弛址,目的MAC%址为DNS服务器MACM址),这里应该查询MA或存。数据链路层根据客户端与DNS服务器之间的链路,将数据包封装成 帧,传给物理层。物理层会将数据帧转化为电信号放到物理介质上。 电信号到达DNS服务器后会从物理层到达应用层(这里和客户端发送数据差不多,只不过这 个过程变成了解封装),DNS服务器做完域名解析后再将数据传给客户端,传输过程同客户端发送数据。 2、建立TCP/IP连接:客户端知道WE囹艮务器IP地址之后,在网络层产生建立TCP/IP三次握手的数据包(TCP/IP三次握手:客户端向服务器端发送SYN信息,服务器端收到SYN信 息后回复给客户端SYN+AC褊认信息,客户端收到确认信息后再向服务器发送ACK信息建立 连接),应用层标识HTTP服务将数据发送到传输层,传输层将数据+源端口号(大于1023)、目的端口号(80)+上层服务WW如装为数据段传给网路层。网络层将数据段+源ip与目的 ip (WW服务器的ip地址)封装为数据包发送到数据链路层。数据链路层参照ARP缓存表确定源MAC%址(本机MACM址)及目的MACM址(客户端与路由B相连端口的MACM址)将数据包封装成数据帧。这里还需要CR破验。。。。。。数据帧到达物理层后变成电信号发送 到介质上(这里还需要访问控制方法DSMA/CD 路由B收到电信号后传给路由器的数据链路层,这里还需要CRC,FC眼验。。。…确定数据 帧没有损坏后查看目的MACM址与路由器端口地址是否相同,如果相同将解封装,将数据包 发送到路由器B的物理层,路由器查看路由表确定数据包的转发端口,路由器B确定与路由 A之间的链路,创建帧。 路由B与路由A可以看成是点对点,即路由B将创建PPP帧。路由A收到电信号后,确定帧的完整性,如果完整即将数据帧解封装发送到网络层,路由A查询路由表将数据包转发到与WEBf连的路由端口。 路由A的数据链路层将查询ARP缓存表确定WW服务器的MACM址,路由A将创建源MAC 地址

RIP协议原理及配置实验报告

通信网络实验 ——RIP协议原理及配置实验报告 班级: 学号: 姓名:

RIP协议原理及配置实验报告 一、实验目的 1.掌握动态路由协议的作用及分类 2.掌握距离矢量路由协议的简单工作原理 3.掌握RIP协议的基本特征 4.熟悉RIP的基本工作过程 二、实验原理 1.动态路由协议概述 路由协议是运行在路由器上的软件进程,与其他路由器上相同路由协议之间交换路由信息,学习非直连网络的路由信息,加入路由表。并且在网络拓扑结构变化 时自动调整,维护正确的路由信息。 动态路由协议通过路由信息的交换生成并维护转发引擎需要的路由表。网络拓扑结构改变时自动更新路由表,并负责决定数据传输最佳路径。动态 路由协议的优点是可以自动适应网络状态的变化,自动维护路由信息而不用网络管 理员的参与。其缺为由于需要相互交换路由信息,需要占用网络带宽,并且要占用 系统资源。另外安全性也不如使用静态路由。在有冗余连接的复杂网络环境中,适 合采用动态路由协议。目的网络是否可达取决于网络状态 动态路由协议分类 按路由算法划分: 距离-矢量路由协议( 如RIP ) :定期广播整个路由信息,易形成路由环路,收敛慢 链路状态路由协议(如OSPF):收集网络拓扑信息,运行协议算法计算最佳路由根本解决路由环路问题,收敛快 按应用范围划分: 域间路由协议(EGP)和域内路由协议(IGP) 自治域系统(AS) 是一组处于相同技术管理的网络的集合。IGPs 在一个自治域系统 内运行。EGPs 连接不同的自治域系统。 2.RIP协议概述 RIP(Routing Information Protocol)路由信息协议

RIP和OSPF协议工作原理分析

宽带通信网论文题目:RIP和OSPF协议工作原理分析 班级:4班 学号:105508 姓名:郭晋杰

RIP和OSPF协议工作原理分析 郭晋杰 105508 摘要:本文主要分析了内部网关协议中的路由信息协议(RIP)和开放式最短路径优先协议(OSPF)这两种网络协议的工作原理,并从各个方面分析了这两种路由选择协议的区别,总结出了其分别适用的网络。 关键词:路由信息协议;开放式最短路径优先协议;自治系统 引言 在如今的计算机网络中,当两台非直接连接的计算机需要经过几个网络通信时,通常就需要路由器。路由器提供一种方法来开辟通过一个网状联结的路径。那么路径是怎么建立的呢路由选择协议的任务是,为路由器提供他们建立通过网状网络最佳路径所需要的相互共享的路由信息。路由信息协议(RIP)和开放式最短路径优先协议(OSPF)作为基于TCP/IP的计算机网络中广泛应用的内部网关协议,深入理解其工作原理对研究计算机网络有着很好的促进作用。 1.路由信息协议 1.1路由信息协议简介 路由信息协议(Routing Information Protocol)是内部网关协议IGP 中最先得到广泛应用的协议。这个网络协议最初由加利弗尼亚大学的BerKeley 所提出,其目的在于通过物理层网络的广播信号实现路由信息的交换,从而提供本地网络的路由信息。RIP是一种分布式的基于距离向量的路由选择协议,是因特网的标准协议,其最大的优点就是简单。 1.2路由信息协议的工作原理 路由信息协议功能的实现是基于距离矢量的运算法则,这种运算法则在早期的网络运算中就被采用。简单来说,距离矢量的运算引入跳数值作为一个路由量度。每当路径中通过一个路由,路径中的跳数值就会加1。这就意味着跳数值越大,路径中经过的路由器就有多,路径也就越长。而路由信息协议就是通过

网络协议课程设计报告

目录 1.课程设计目的 ---------------------------------------------------- 2 2.课程设计要求 ---------------------------------------------------- 2 3.课程设计题目分析 ------------------------------------------------ 2 3.1 网卡设置 -------------------------------------------------- 2 3.2 程序设计 -------------------------------------------------- 3 3.2.1 使用原始套接字------------------------------------------ 3 3.2.2 接收数据包---------------------------------------------- 4 3.2.3 定义IP头部的数据结构---------------------------------- 4 3.2.4 IP包的解析 --------------------------------------------- 5 4.解析IP数据包设计相关知识 -------------------------------------- 5 5.程序流程图------------------------------------------------------- 6 6.程序设计--------------------------------------------------------- 7 6.1 协议的定义 ------------------------------------------------ 7 6.2捕获处理--------------------------------------------------- 7 6.3 运行界面 -------------------------------------------------- 8 7.实验结果--------------------------------------------------------- 9 8.自我评析和总结 -------------------------------------------------- 9 8.1 实训心得-------------------------------------------------- 9 8.2 实训日记-------------------------------------------------- 9 9.主要参考资料 -------------------------------------------------- 10 [2]《网络协议分析》寇晓蕤罗俊勇编著机械工业出版社--------- 10 [3]《C语言程序设计》张建伟李秀琴主编科学出版社--------- 10 [4]《C++程序设计教程——面向对象分册》郑秋生主编 --------- 10电子工业出版社 -------------------------------------------------- 10 10.附录 ---------------------------------------------------------- 10

网络协议分析实验报告

课程设计 课程设计题目网络协议分析实验报告学生姓名: 学号: 专业: 2014年 6 月 29日

实验1 基于ICMP的MTU测量方法 实验目的 1)掌握ICMP协议 2)掌握PING程序基本原理 3)掌握socket编程技术 4)掌握MTU测量算法 实验任务 编写一个基于ICMP协议测量网络MTU的程序,程序需要完成的功能: 1)使用目标IP地址或域名作为参数,测量本机到目标主机经过网络的MTU; 2)输出到目标主机经过网络的MTU。 实验环境 1)Linux系统; 2)gcc编译工具,gdb调试工具。 实验步骤 1.首先仔细研读ping.c例程,熟悉linux下socket原始套接字编程模式,为实验做好准备; 2.生成最大数据量的IP数据报(64K),数据部分为ICMP格式,ICMP报文为回送请求报 文,IP首部DF位置为1;由发送线程发送; 3.如果收到报文为目标不可达报文,减少数据长度,再次发送,直到收到回送应答报文。 至此,MTU测量完毕。

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。[1] 它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.

ICMP原理 ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。 我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。 ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方.是IP层的一个协议。但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP 报头形成ICMP报文,再添加IP报头形成IP数据报 通信术语最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。 实验2 基于UDP的traceroute程序 实验目的 1)掌握UDP协议 2)掌握UDP客户机/服务器编程模式 3)掌握socket编程技术 4)掌握traceroute算法

RIP协议理解

RIP协议的全称是路由信息协议(Routing Information Protocol),它是一种内部网关协 议(IGP),用于一个自治系统(AS)内的路由信息的传递。RIP协议是基于距离矢量算法( Distance Vector Algorithms)的,它使用“跳数”,即metric来衡量到达目标地址的路由 距离。 二、该协议的局限性 1、协议中规定,一条有效的路由信息的度量(metric)不能超过15,这就使得该协议不能 应用于很大型的网络,应该说正是由于设计者考虑到该协议只适合于小型网络所以才进行了 这一限制。对于metric为16的目标网络来说,即认为其不可到达。 2、该路由协议应用到实际中时,很容易出现“计数到无穷大”的现象,这使得路由收敛很 慢,在网络拓扑结构变化以后需要很长时间路由信息才能稳定下来。 3、该协议以跳数,即报文经过的路由器个数为衡量标准,并以此来选择路由,这一措施欠 合理性,因为没有考虑网络延时、可靠性、线路负荷等因素对传输质量和速度的影响。 三、RIP(版本1)报文的格式和特性 3.1、RIP(版本1)报文的格式 0 7 15 31 命令字(1字节)版本(1字节)必须为0(2字节) 地址类型标识符(2字节)必须为0(2字节) IP地址 必须为0 必须为0 Metric值(1—16) (最多可以有24个另外的路由,与前20字节具有相同的格式) “命令字”字段为1时表示RIP请求,为2时表示RIP应答。地址类型标志符在实际应用中总是 为2,即地址类型为IP地址。“IP地址”字段表明目的网络地址,“Metric”字段

达目的网络所需要的“跳数”。 3.2. RIP的特性 (1)路由信息更新特性: 路由器最初启动时只包含了其直连网络的路由信息,并且其直连网络的metric值为1,然后 它向周围的其他路由器发出完整路由表的RIP请求(该请求报文的“IP地址”字段为0.0.0.0 )。路由器根据接收到的RIP应答来更新其路由表,具体方法是添加新的路由表项,并将其 metric值加1。如果接收到与已有表项的目的地址相同的路由信息,则分下面三种情况分别 对待:第一种情况,已有表项的来源端口与新表项的来源端口相同,那么无条件根据最新的 路由信息更新其路由表;第二种情况,已有表项与新表项来源于不同的端口,那么比较它们 的metric值,将metric值较小的一个最为自己的路由表项;第三种情况,新旧表项的metric 值相等,普遍的处理方法是保留旧的表项。 路由器每30秒发送一次自己的路由表(以RIP应答的方式广播出去)。针对某一条路由信息 ,如果180秒以后都没有接收到新的关于它的路由信息,那么将其标记为失效,即metric值 标记为16。在另外的120秒以后,如果仍然没有更新信息,该条失效信息被删除。2)RIP版本1对RIP报文中“版本”字段的处理: 0:忽略该报文。 1:版本1报文,检查报文中“必须为0”的字段,若不符合规定,忽略该报文。 >1:不检查报文中“必须为0”的字段,仅处理RFC 1058中规定的有意义的字段。因此,运 行RIP版本1的机器能够接收处理RIP版本2的报文,但会丢失其中的RIP版本2新规定的那些信

网络协议分析课程设计-流量分析报告模板-http

西安邮电大学 (计算机学院) 网络协议分析设计报告题目:Web流量分析 专业名称:网络工程 班级:1201 学生姓名:司联波 学号(8位):04122007 指导教师:孙韩林 设计起止时间:2014年12月15日—2014年12月19日

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计内容 流量分析 工具:Wireshark(Windows或Linux),tcpdump(Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 清除本机DNS缓存,访问某一网页(http://biz.doczj.com/doc/ba3536384.html,/),捕获访问过程中的所有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答): (1)简述访问web页面的过程 (2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少? 所请求域名的IP地址是什么 (3)统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现) (4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\ACK的设置。 (5)针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序 号? (6)找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\ACK的设置。 (7)针对(5)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个 值? (8)在该TCP连接的数据传输过程中,找出每一个(客户)发送的报文段与其ACK 报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根 据课本200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。(提示: 用脚本编程实现 (9)分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,在截图中标明各个字段。

rip协议有几个版本

竭诚为您提供优质文档/双击可除rip协议有几个版本 篇一:Rip协议和ospF协议的对比 rip协议是距离矢量路由选择协议,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。 ospf协议是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。 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、将协议自身的开销控制到最小。见下: 1)用于发现和维护邻居关系的是定期发送的是不含路由信息的hello报文,非常短小。包含路由信息的报文时是触发更新的机制。(有路由变化时才会发送)。但为了增强协

网络协议分析课程设计

课程设计(大作业)报告 课程名称:网络协议工程 设计题目:网络构建与协议分析 院系:信息技术学院 班级: 设计者: 学号: 指导教师: 设计时间: 信息技术学院

昆明学院课程设计(大作业)任务书

网络构建及分析 一、题目分析 1. 在S2126与S3750B上划分VLAN,并把PC机与服务器加入到相应的VLAN中。 2. 配置S2126与S3750A之间的两条交换机间链路,以及S3750A与S3750B之间的交换机间链路。 3. 在S2126与S3750A之间的冗余链路中使用STP技术防止桥接环路的产生,并通过手工配置使S3750A成为STP的根。 4. 为S3750A的VLAN接口和R1762的接口配置IP地址。 5.在S3750A上使用具有三层特性的物理端口实现与R1762的互联。 二、总体设计 三、实验器材 1、网络环境

根据具体协议构建合适的网络环境 2、操作系统 WindowsXP,如果需要,安装相应的服务(如FTP,SSH,TELNET,HTTP等) 3、协议分析工具 Windows环境下常用的工具有:Sniffer Pro、Ethereal、Iris以及Packet Tracer 等。实验中可具体选择一种协议分析工具,本实验选择Ethereal。 四、制作步骤 1、分析实验设计要求,进行初步的规划; 2、按照要求的网络拓扑图在思科模拟器上进行对网络拓扑图的连接,此处要特 别注意对设备和连接线的选择; 连线时要特别注意选用的线的种类:同种设备之间互联使用交叉线,不同种设备互联使用直通线。 3、按照实验的要求,对模拟好的拓扑图进行内部的配置和设置 4、进行设置和配置的检测,对实验的结果进行分析 五、分析网络中可能用到的网络协议 可能用到的网络协议有: 应用层DNS, FTP,HTTP, RIP, DHCP 传输层TCP, UDP 网络层IP,ICMP,IGMP 数据链路层ARP,RARP 物理层以太网,RS-232 .路由协议(RIP):路由协议主要运行于路由器上,路由协议是用来确定到达路径的,它包括RIP,IGRP,EIGRP,OSPF。起到一个地图导航,负责找路的作用。它工作在网络层。路由选择协议主要是运行在路由器上的协议,主要用来进行路径选择。 FTP:FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。 HTTP:HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。 IP: IP是英文Internet Protocol(网络之间互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。 ARP:在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协

网络协议分析及仿真课程设计报告书

郵電大學 网络协议分析与仿真 课程设计报告书 院系名称:计算机学院实验容:网络流量分析学生姓名: 专业名称:网络工程班级: 学号:

时间:2012年12月15日

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析法。 二、课程设计容 流量分析 ?工具:Wireshark(Windows或Linux),tcpdump(Linux) ?要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。?容:Web流量分析 清除本机DNS缓存,访问某一主页,捕获访问过程中的所有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答): (1)简述访问web页面的过程。 (2)找出DNS解析请求、应答相关分组,传输层使用了种协议,端口号是多少?所请求域名的IP地址是什么? (3)统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现) (4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\ACK的设

置。 (5)针对(4)中的TCP连接,该TCP连接的四元组是什么?双协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否 消耗了一个序号? (6)找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\ACK的设置。 (7)针对(6)中的TCP连接释放,请问释放请求由服务器还是客户发起? FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什 么?为什么是这个值? (8)在该TCP连接的数据传输过程中,找出每一个ACK报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样 本值)。根据课本200页5.6.2节容,给每一个数据报文段估算超时时 间RTO。(提示:用脚本编程实现) (9)分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,在截图中标明各个字段。 (10)访问同一的不同网页,本次访问中的TCP连接是否和上次访问相同? (与上次页面访问时间间隔不能过长,可连续访问,分别分析。)(11)请描述HTTP协议的持续连接的两种工作式。访问这些页面(同一的不同页面)的过程中,采用了哪种式?(参考课本241页) 三、设计与实现过程

RIP协议

路由信息协议 概述 路由信息协议(RIP)协议是一种动态路由选择,它基于距离矢量算法(D-V),总是按最短的路由做出相同的选择。这种协议的路由器只关心自己周围的世界,只与自己相邻的路由器交换信息,范围限制在15跳(15度)之内,再远,它就不关心了。 RIP应用于OSI网络七层模型的网络层。 RIP(RoutinginformationProtocol)是应用较早、使用较普遍的内部网关协议(InteriorGatewayProtocol,简称IG P),适用于小型同类网络,是典型的距离向量(distance-vector)协议。文档见RFC1058、RFC1723。 RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。RIP提供跳跃计数(hopcount)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。如果到相同目标有二个不等速或不同带宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RIP最多支持的跳数为15,即在源和目的网间所要经过的最多路由器的数目为15,跳数16表示不可达。 2.举例 Router1:

router rip version 2 network 192.200.10.0 networ k 192.20.10.0!相关调试命令:show ip protocol show ip route在全局设置(#)模式下:1.启动RIP 路由router rip2.设置参与RIP路由的子网network子网地址3.允许在非广播型网络中进行RIP路由广播neighbor相邻路由器相邻端口的IP地址4.设置RIP的版本RIP路由协议有2个版本,在与其它厂商路由器相连时,注意版本要一致,缺省状态下,Cisco路由器接收RIP 版本1和2的路由信息,但只发送版本1的路由信息,设置RIP的版本vesion1或2。另外,还可以控制特定端口发送或接收特定版本的路由信息。1.只在特定端口发版本1或2的信息,在端口设置模式下rip send version1或22.同时发送版本1和2的信息ip rip send receive1or23.在特定端口接受版本1或2的路由信息ip rip receive1or24.同时接受版本1和2的路由信息ipripreceive1or2选择路由协议几点建议:1.在大型网络中,建议使用ospf,eigrp.2.如果网络中含有变长了网掩码(VISM)不能使用igrp,rip版本1,可以使用rip版本2,ospf,eigrp或静态路由。3.如果使用路由安全设置可以使用RIP版本1或OSPF。4.选用ospf,eigrp在系统稳定后所占带宽比RIP,IGRP少得多,IGRP比RIP所占带宽也少。5.综合使用动态路由,静态路由,缺省路由,

网络协议分析课设

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计内容 流量分析 工具:Wireshark(Windows或Linux),tcpdump(Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 清除本机DNS缓存,访问某一网站主页,捕获访问过程中的所有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答): 清除本机dns缓存: (1)简述访问web页面的过程。 输入网址,然后按回车,浏览器连接dns服务器,查找你输入的域名对应的ip地址,查到ip地址以后,浏览器连接该ip地址的80端口,发送查询网页请求,web服务器收到查询请求,发送被查询网页给请求浏览器,一次访问完成. (2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少? 所请求域名的IP地址是什么? 首先访问http://biz.doczj.com/doc/ba3536384.html,

然后使用过滤器捕获特定分组。过滤显示DNS协议的分组: 第三个包的详细信息:(DNS解析请求的分组) 传输层使用的协议是UDP,源端口为:1025,目的端口为:53 DNS服务器的ip地址为202.117.128.2,本地ip地址为:192.168.1.118 第四个包的详细信息:(DNS解析应答的分组)

传输层使用的协议是UDP,源端口为:53,目的端口为:1025 在应答分组中,DNS服务器给出了所请求的域名ip地址为:119.75.217.109 即为http://biz.doczj.com/doc/ba3536384.html,的ip地址。 (3)统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现) (4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\ACK的设置。 Tcp建立连接的过程如下图所示: 第一次握手:(源端口ip地址:192.168.1.129,目标端口ip地址:119.75.217.109) 源端口:1042目标端口:80 syn=1,fin=null,seq=0,ack=null,没有携带数据。 第二次握手:(源端口ip地址:119.75.217.109,目标端口ip地址: 192.168.1.129)

2012_网络编程与协议分析课程设计任务书和评分标准

《网络编程与协议分析》课程设计任务书及评分标准 1.课程设计题目: 网络数据包抓取与分析软件 2.课程设计内容: 1)能抓取本地主机所在局域网子网内的所有数据包 2)分析并显示所抓取数据包的IP头部各字段的信息 3)分析并显示所抓取数据包的封装在IP数据包内的协议头部字段信息(TCP、UDP、ICMP等) 4)生成日志信息,以文本文档形式保存 5)分析并显示所抓取数据包应用层协议头部字段信息(HTTP、FTP、DNS、Telnet、SMTP、POP等各种应用层协议中至少取三种) 3. 设计要求说明: 1)程序要求能够上机运行; 2)设计报告排版打印 3)软件界面必须有一部分能够显示抓取数据包的概要信息,类似如下界面 6)每行概要信息代表抓取到的一个数据包,点击该行概要信息,能够在界面某部分显示这个数据包按照协议层次安排的内容部分,类似如下界面 如上图所示,它给出了一个数据包的IP头部个字段的信息(版本号version、头部长度head length等)和UDP协议头部个字段的信息(源端口source port、目的端口destination port 等)。 4. 评分标准 1)程序运行情况(占总成绩20%) (1) 能正确运行(20分) (2) 基本能正确运行(15分)

(3) 能运行但结果不完善(10分) 2)程序功能的完善程度(占总成绩10%) (1) 完善(10分) (2) 基本完善(8分) (3) 不完善 (5分) 3)程序结构的合理性(占总成绩10%) (1) 合理(10分) (2) 基本合理(8分) (3) 不太合理(5分) 4)对问题的答辩情况(占总成绩40%) (1) 概念正确有创新(40分) (2) 能正确回答所有问题(35分) (3) 基本能正确回答(30分) (4) 部分问题回答概念不清晰 (20分) 5)学生的工作态度与独立工作能力(占总成绩10%) (1) 工作态度认真能独立完成任务(10分) (2) 工作态度认真但独立性较差(8分) (3) 工作态度基本认真但缺乏独立性 (5分) 6)设计报告的规范性(占总成绩10%) (1) 符合规范(10分) (2) 基本符合规范(8分) (3) 规范性较差(5分) 5. 评分等级: 90 ~ 100:优秀 80 ~ 89:良好 70 ~ 79:中等 60 ~ 69:及格 0 ~ 59:不及格

RIP协议的工作原理及仿真分析

中国宇航学会深空探测技术专业委员会第九届学术年会论文集
RIP协议的工作原理及仿真分析
李园利,王宇
(中国空间技术研究院西安分院,西安,710100) 摘 要:RIP(Routing Information Protocol )是一种应用较早、使用较普遍的基于距离向量算法
的内部网关路由协议。 本文阐述了该动态路由协议的工作原理以及路由信息的处理过程, 并通过OPNET 软件对其收敛性,协议开销,路由表的变化进行了仿真分析,总结出RIP存在的局限性,最后提出了优 化改进方案。 关键词:Bellman-ford算法;RIP;路由,OPNET
0 引言
随着网络的规模的不断扩大和互联网的迅猛发展,路由技术在网络中已逐渐成为关键部分。目前, 最主要的IP路由技术是链路状态算法和距离向量算法。链路状态算法(也称最短路径算法)发送路由 信息到互联网上所有的结点,然而对于每个路由器,仅发送它的路由表中描述了其自身链路状态的那 一部分。距离向量算法(也称为Bellman-Ford算法)则要求每个路由器发送其路由表全部或部分信息, 但仅发送到邻近结点上。 最基本的距离向量算法 Distance Vector Algorithm) RIP Routing Information ( 是 ( 路由信息协议。 是应用较早、 RIP 使用较普遍的内部网关协议 Interior Gateway Protocol, ) ( IGP , Protocol ) 它使用“跳数”(metric)来衡量到达目标地址的路由距离,著名的路径刷新程序Routed便是根据RIP 实现的。RIP协议被设计用于使用同种技术的中型网络,因此适应于大多数的校园网和使用速率变化不 是很大的地区性网络,目前,它已成为路由器、主机路由信息传递的标准之一。本文主要阐述了RIP 路由技术的基本工作原理,并用OPNET软件对其收敛性和协议开销进行了仿真分析,总结出RIP协议 的优缺点和其适应范围,针对其存在的问题,提出了优化改进方案。
1 RIP路由的基本原理
RIP 路由协议是一种基于Bellman-ford的距离向量算法的内部网关路由协议。它实际上是工作在相
邻路由器之间的,运行该协议的邻居路由器通过互相学习和交换路由信息的距离向量,得知网络的连 接情况,从而实现各网络之间的连通。
Bellman-ford算法是一种典型的点到多点的路由算法,即寻找网络中一个节点到其它所有节点的路
由。在一个网络图中,公式D(i,j)表示节点i、j之间的最佳度量;d(i,j)表示节点i、j之间的度量,若节点 直接相连时,d(i,j)表示其连接成本;否则,d(i,j)表示无穷大。因此,最佳度量的计算公式为:
?0 ? D(i, j ) = ?∞ ?min[d (i, k ) + D(k , j )] ?
j=i ; j不可达; k为i直接邻居。
698

网络协议分析与仿真课程设计报告书

西安郵電大學 网络协议分析与仿真 课程设计报告书 院系名称:计算机学院实验内容:网络流量分析学生姓名: 专业名称:网络工程班级: 学号: 时间:2012年12月15日

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计内容 流量分析 工具:Wireshark(Windows或Linux),tcpdump(Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 清除本机DNS缓存,访问某一网站主页,捕获访问过程中的所有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答): (1)简述访问web页面的过程。 (2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么? (3)统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现) (4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\ACK的设置。 (5)针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否 消耗了一个序号? (6)找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP 报文段的序号、确认号、以及FIN\ACK的设置。 (7)针对(6)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN 报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么? 为什么是这个值? (8)在该TCP连接的数据传输过程中,找出每一个ACK报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。 根据课本200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。 (提示:用脚本编程实现) (9)分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243

Rip路由协议详情详情报文格式

RIP报文格式 RIP协议有两个版本, RIP-1和RIP-2.本文主要对RIP-2报文格式进行分析。 RIP 报文中至多可以出现25个 AFI、互联网络地址和度量值,这允许使用一个RIP报文更新一个路由器中的多个路由表项。 ●命令字(Command) 命令字指出RIP报文是一个请求报文还是对请求的应答报文。两种情形均使用相同的帧结构。 ●版本 (Version) 指生成RIP报文时所使用的版本,RIP只有两个版本:版本1和版本2。 ●路由选择域 (Routing Domain) 路由选择域是路由程序用来决定路由更新信息归属(那个域)的信息。这个字段是用来将路由更新信息绑定到路由器上特定的路由程序来处理的。如果需要实现多个不同的网络共存,那么我们就需要路由信息中包含这个字段。这可以使管理员可以使用简单的策略来实现多个并行的RIP实例。这意味着,一个路由器只在一个和一系列域中工作,它将会忽略那些属于别的其他域的RIP数据包。路由域标号为0的是缺省的路由域。 ●地址族标识(Address Family Identifier)

报文中所携带地址的类型,提供了和以前版本的兼容性。 ●路由标记(Route Tag) 路由标记字段的存在是为了支持外部网关协议(BGP)。这个字段被期望用于传 递自治系统的标号给外部网关协议及边界网关协议(BGP)。 ●IP地址(IP Address) 这个地址可以是主机、网格,甚至是一个缺省网关地址。这个地址内容如何变化 看两个例子:在一个单表项请求报文中,这个地址包括报文发送者的地址,在一个多 表项应答报文中,这个地址包括报文发送者路由表中存储的IP地址。 ●子网掩码(Subnet Mask) 包含子网掩码是改进RIP协议最初的意图。子网掩码信息是RIP协议在多种环境 中变得更有用,并且允许在网络中使用变长掩码。 ●下一跳地址(Next Hop) 支持下一跳地址优化了在使用多种路由协议的网络环境中的路由器。例如,如果RIP-2协议在网络中与另一个路由协议共同使用,并且有一个路由器同时运行两种协 议,那么这个路由器就可以告诉其他使用RIP-2协议的路由器一个对于给定目的的更 好的下一跳地址。 ●度量值(Metric) 这个域包含报文的度量计数。这个值经过路由器时被递增。数量标准有效的范围 是在1~15之间。度量标准实际上可以递增至16,但是这个值和无效路由对应。因此,16是度量标准域中的错误值,不在有效范围内。

相关主题