第一篇:计算机网络网络层实验报告参考
XX 理 工 学 院
实验报告
课程 计算机网络 题目 基于Cisco Packet Tracer的网络层实验
院系名称 计算机学院 班 级 计科班 学生姓名
学 号
指导教师 时 间 2016.11.14
实验二:网络层协议实验
实验说明:
1.实验中的问题按照自己的方式回答,如文字,图片,表格等形式。2.实验报告共四份,于期末通知时再统一打包上交。
3.报告文档模板中如有错误,请反映到计算机网络QQ群上。
实验内容目录:
实验2.1: IP分析
实验2.2: IP地址分配实验 实验2.3: ARP分析 实验2.4: ICMP分析 实验2.5: 路由协议分析
实验2.6: VPN与NAT协议分析
实验2.1:IP分析
实验目的:
1、熟悉IP的报文格式以及关机字段的含义。
2、掌握IP地址的分配方法。
3、理解路由器转发IP数据报的流程。
实验思考题:
1.一个IP分组经路由器转发后,有哪些字段会发生变化?
答:TTL字段需要减一,而IP头部的校验和需要重新计算,因此这两个字段会发生变化。
2.为什么任务三中的两个分片的长度分别为1500字节和48字节。
答:原数据长度为1500+8(ICMP报文头长度)=1508字节,超过以太网帧的最大传输能力,因此需要分成两片。长度分别为1480字节和28字节,封装成IP后,每片的长度分别为1480+20=1500字节,28+20=48字节。实验2.2:IP地址分配实验
实验目的:
1.掌握主机和路由器的IP地址配置。2.熟悉CIDR的IP地址编址方法。3.理解CIDR的路由聚合功能。
实验思考题:
1.与分类的IP编址方法相比,CIDR编址方案具有什么优点?
答:1)CIDR的地址分配更高效,因为CIDR采用可变长掩码,能根据网络的实际大小量身定制主机地址空间。2)CIDR具有路由聚合功能,能减少路由器的路由表项。
2.路由器的不同接口能否使用相同的网络号?
答:不能,路由器的不同接口必须使用不同的网络号。实验2.3:ARP分析
实验目的:
1.掌握基本的ARP命令。
2.熟悉ARP报文格式和数据封装方式。3.理解ARP的工作原理。
实验思考题:
1.任务一完成后,哪些PC的ARP缓存拥有PC0的MAC地址记录?哪些PC新添加了PC1 的MAC地址记录?
答:任务一完成后,PC1和PC2拥有PC0和MAC地址记录,PC0添加了PC1和PC2的MAC地址记录。
2.ARP缓存的作用是什么?缓存中记录的保存时间是否越长越好?请解释理由。
答:ARP缓存可以提高工作效率,避免主机重复进行地址查询询问。缓存时间不是越长越好,因为网络可能经常有设备动态加入或撤出,并且更换设备的网卡或IP地址也会引起主机地址映射发生变化,如果缓存时间过长会造成数据更新过慢,造成地址解析错误。
3.主机使用ARP能查询到其他网络的MAC地址吗?为什么?
答:不能。因为ARP广播询问包会被路由器阻拦。
4.在任务二的步骤3中,ARP被执行了几次?
答:共执行两次,第一次是PC0查找路由器Fa0/0的MAC地址,第二次是路由器查找PC4的MAC地址。实验2.4:ICMP分析
实验目的:
1.熟悉ICMP报文格式和数据单元的封装方式。
2.利用ping程序和tracert命令,熟悉ICMP的工作原理。3.进一步理解ICMP的作用。
实验思考题:
1.在tracert命令中,为什么源主机对于每个TTL值都要重复进行多次探测?
答:由于IP网络是不可靠的,通过多次重复探测可以避免因个别丢包而造成检测失败。
2.ICMP是否会给Internet带来安全隐患?
答:ICMP是网络层控制协议,不仅可以对网络层设备进行各种探寻,也可能更改主机配置,功能强大,但从另一面讲,这也是一个网络安全隐患,例如死亡Smurf攻击就利用ICMP进行网络攻击,因此许多操作系统的防火墙都拒绝ICMP包访问本机。实验2.5:路由协议分析
实验目的:
1.理解网络路由,学习静态路由配置能力。2.理解RIR动态路由协议的工作原理。3.理解OSPF动态路由协议的工作原理。
实验思考题
1.如果路由器转发数据报的目标不在路由表中,则会如何处理?
答:如果有默认路由,则按默认端口转发,否则丢弃处理。
2.在任务二的步骤2中,环路造成的循环转发过程会不会停止?原因是什么?
答:当被转发的IP包的TTL字段被降到0时,该循环发的工程将停止。
3.在任务三的步骤3中,Router3几次更新才能获得网络10.1.1.0的路由信息?
答:需要两个周期。
4.RIP和OSPF协议分别采用哪种通信协议?请解释理由。
答:RIP报文知识在临近节点进行传输,因此采用低开销的UDP来传输,而OSPF报文需要在网络进行泛洪传输,因此使用IP。实验2.6:VPN与NAT协议分析
实验目的:
1.理解VPN使用的IP隧道技术的工作原理。2.理解NAT技术的工作原理。
实验思考题: 1.在任务一中,Router1如何区分Server0返回给不同主机的HTTP报文。
答:NAT服务器(Router1)通过不同的端口号来识别不同的主机的报文。
2.在任务二中,VPN中采用隧道技术的原因是什么?
答:由于Net1和Net2都是使用私有地址,因此无法直接通过Internet进行通信:采用隧道技术可以方便地将源目地址转换为全局地址,而且到达目标路由器后,也很容易获得真正目标主机的IP地址。
3.Net1网络和Net2网络的IP地址能否编在同一段?
答:不行,这样容易造成两个网段间主机的IP地址发生冲突。
第二篇:网络原理实验报告网络层
苏州科技学院
电子信息实验中心
实验报告
课
程 学
号 姓
名 班
级 专
业 指导教师 学年 / 学期
计算机网络原理 *** 闫自立 软件1311 计算机科学与技术
陶滔
2015~2016学年第1学期
实验三
网络层实验
实验项目性质:设计性
计划学时:4 实
验 环 境:Microsoft Visual Studio 2010
实验日期:2015年12月2日
一、实验目的
1.理解通信子网的完整概念,掌握网络层的作用和功能。2.掌握分组数据包格式设计方法、分组的分片与重装的方法。3.掌握网络层简单路由选择协议的实现方法。
二、实验内容
在已经实现的数据链路层基础上:
(1)设计简易实用的分组数据包格式;
(2)设计并实现类IP的网络层协议,路由选择采用静态路选择协议。(3)设计并实现分组的分片与重装。
(4)设计一个应用程序,利用网络层的功能直接将文件传输到目标主机的接收窗口中。(5)编写路由配置route_tab.cfg及本机主机地址local.cfg文件,以便与远地的其他计算机进行通信。
三、实验(设计)仪器设备和材料清单
计算机一台,串行电缆一根。
四、实验指导
本实验采用静态路由选择算法,每个结点上通过配置文件route_tab.cfg确定路由选择的结果,该文件的格式可设计如下:
主机地址
端口号
注释
555
#主机地址555的转发端口号为COM1
556
558
888
*
#默认路由
其中,端口号指PC的COM1(对应端口号1)或COM2(对应端口号2)等。同时为简化设计,去掉流量控制和拥塞控制,数据包的格式参考IP数据包格式,但尽可能简化。分组及其他数据结构设计
网络层的分组设计一方面要考虑到路由选择的实现,即分组中应含有路由寻址所必要的信息,另一方面要考虑到分组太大时的分片与重装,主机地址用4位数字字符表示。设计的分组格式如下。
(1)分组(“数据报”)的首部
typedef struct{ //定义数据报首部格式
unsigned char
vers_hlen;
//高4位是版本, 低4 位是首部长度
unsigned char
type;
//类型(保留)
unsigned short
Dlen;
//数据报数据部分长度
unsigned short ident;
//数据报标识
unsigned short frag;
//分片标识,1-分片,0-不分片 unsigned short offset;
//数据报分片偏移量
unsigned char
TTL;
//生存期
unsigned char
prot[3];
//保留
unsigned short checksum;
//校验和
IPhost source;
//源主机地址
IPhost dest;
//目标主机地址
} TIPheader;typedef struct { unsigned char cAddr[4];}IPhost;(2)数据报格式
typedef struct { unsigned char cData[MTU];} Msg;typedef struct{
//定义数据报格式
TIPheader
IpHdr;
//分组首部
Msg
Info;
//分组信息部分 } TPacket;(3)分片与重装的结构
typedef struct fid{
//用于识别同一IP 分组的各分片结构,用于组装分组
IPhost
source;
//源主机地址
IPhost
dest;
//目标主机地址
unsigned short
ident;
//IP分组标识
long int iLength;
//已接收到的数据长度
unsigned short iCount;//已接收到的分组数 }FragId;typedef struct fragif{
//包含一个分片的结构
unsigned char frgData[MTU];//分片的数据部分
unsigned short iMsgLength;
//当前分片数据部分的长度 unsigned short frag;
//分片标识,1-分片,0-不分片
unsigned short offset;
//分片在数据报中的偏移量
struct fragif *next;
//下一个分片 }FragInfo;(4)路由表结构
typedef struct { //定义路由表
unsigned char cHostAddr[4];//主机地址 char cPort;
//转发端口
char cComment[30];
//注释 } TRouteItem;2 分片与重装
在一个异构的网络的集合中,提供统一的主机到主机服务模型需要面对的问题之一是每种网络技术都试图自己定义分组的大小。例如,以太网能接收的长度最多为1500字节的分组,而FDDI能够接收的分组长度可达到4500字节。因此网络层要确保所有的分组足够小,使得其适合任何网络技术的分组;或者当分组对某一网络技术来说太大时,提供一种方法将分组拆分和重组。后一种方法是一种理想的选择,TCP/IP中的IP数据报传输就采用了后一种技术。
这样每一种网络类型有一个最大传输单元(Maximum Transmission Unit,MTU),这是一帧中所能携带的最大数据报,而这个值应比网络上的最大分组要小。
五、结果分析(可根据需要附加页)
六、主要源代码(可根据需要附加页)#pragma hdrstop #include
#include “..includeNllEntity.h” #include “..includeFtpClass.h” //-------------#pragma package(smart_init)//---------void TNLLNetEntity::readroute(){
#define MAXITEMS 100
// 路由表最大表项数
#define MAXLINE 81
// 路由表文件最大行长度
char fileName[]=“.route_tab.cfg”;
if(fst.fail())return;fst.getline(line,MAXLINE);while(!fst.fail()&&!fst.eof())// 当文件有内容时 {
} iRouteEntries=i;if(iRouteEntries){
routeTab=new TRouteItem[iRouteEntries];for(i=0;i