网络协议课程设计(精选十篇)
网络协议课程设计 篇1
《网络协议分析》课程既包含大量的理论知识又有许多需要动手操作的实验,是一门理论与实践密切结合的课程[1]。它涉及多门学科,有的概念使初学者感到很抽象,不易理解。为使学生理解某一概念或某一协议的原理,教师很费心力。经过多年的教学探索,笔者发现可视化教学方法可以明确观察到两台或多台计算机之间数据包的交互情况,清楚地观察到数据包中各个字段的值,对于深入了解协议的工作原理非常有帮助。各个学校可以根据经济条件选择可视化教学工具,这里推荐两种:一种是免费软件Wireshark,适合经费不充足的教学单位;另一种是商业化的网络协议仿真教学系统,适合经费充裕的教学单位。使用可视化教学法不但能提高学生学习兴趣和动手能力,还能让学生加深对理论知识的理解,减轻学习负担。
1 计算机网络教学难点
1.1 网络知识庞杂
《网络协议分析》是计算机网络的后续课程,计算机网络涉及多学科,如计算机技术、通信技术、电子电工技术、概率论、图论等诸多领域,知识量大、概念抽象。计算机网络包含大量的知识点,如信息编码、物理复用、逻辑复用、物理地址、逻辑地址、面向连接、无连接、客户/服务器、点到点等,并且TCP/IP协议族的每一层都包含若干协议,每种协议都有各自的特点[2]。 协议分析非常注重实验操作,在实践过程中涉及计算机、交换机、路由器、各类软件以及某些特殊设备,这些特点增加了学习该课程的难度。
1.2 TCP/IP协议族的抽象性
现在的协议分析课程多数是以TCP/IP协议族的各层为主线讲述,层次结构的协议族很抽象,每一层中的某一协议如何与对方的对等层协议同步工作、协同完成通信,初学者难以理解[3]。传统讲授的主要方式是通过课件中的图片或动画,虽然有一定的效果,但学生仍然缺乏对真实网络环境和数据包的直观认识,学生脑海中产生的视图未必与教师脑海中的视图一致,也就是说学生在理解教师讲解的内容时产生了偏差,这种偏差不仅影响了对理论知识的理解,也直接影响着实验课的成败。
1.3 实验工具选择困难
网络实验主要是各类服务器的配置,基本过程是:在一台计算机上安装服务器软件,然后在另一台计算机上运行客户端程序访问服务器,这种方式能够看到最终的执行结果,但看不到数据包的交互过程,不利于理解协议的工作原理。还有一种实验工具是NS2网络仿真器,这种工具适合专业人员,对初学计算机网络的学生不合适,因为它需要丰富的网络知识和编程知识,学习周期长。
2 Wireshark软件
2.1 Wireshark简介
Wireshark是世界范围内广泛使用的网络数据包分析软件之一,是一款遵循GNU/GPL版权协议的开源软件。Wireshark使用WinPcap作为接口,直接从网卡捕捉数据包并尽量详细地显示数据包的相关信息[4],网络管理员可以使用这一软件排除网络故障。通过分析捕获到的数据包,可清楚地了解使用者的网络行为。在分析捕捉到的数据包时,还可以设置过滤器,以减少无关数据包的干扰[5]。
2.2 TCP协议分析
对相应的协议进行分析时,应事先详尽地设计好实验过程。下面以运输层的TCP协议为例,说明用Wireshark进行协议分析的方法。
准备知识:(1)客户/服务器工作方式概念;(2)逻辑地址概念;(3)TCP协议作用;(4)TCP报文段结构。此外,由于TCP协议是为应用层协议服务的,要想捕获到TCP报文段,需要在客户端执行TCP服务的应用程序,如浏览器、FTP客户端、邮件客户端等。
启动Wireshark并开始捕捉数据包,打开浏览器并访问Web页面。万维网使用的运输层协议是TCP协议,可以捕获到TCP报文段并对TCP协议的工作过程进行分析。设置好过滤器并捕捉,捕捉结果如图1所示。
可以提前设计若干问题,引导学生观察Wireshark捕捉到的数据包,以加深对TCP协议工作原理的认识。设计的问题有:(1)TCP请求报文中的目的端口和源端口分别是什么?(2) 关闭浏览器后再访问相同的页面,目的端口和源端口会发生怎样的变化?(3) 能否找出TCP连接建立时三次握手的各个报文段? 每个报文段的SYN、seq、ack字段的值是什么?(4)能否找出TCP连接释放时四次挥手的各个报文段?每个报文段的FIN、seq、ack值是什么?
通过观察数据包并回答这些问题,学生直观地看到了TCP报文段的结构和数据包的传输情况,发现TCP报文段的结构并不像想象中那样复杂,许多字段的含义十分容易理解,对于TCP连接的建立、释放过程也有了深入认识;使用TCP连接进行通信的是进程,进程是通过端口号来表示的;通过seq可以看出TCP是面向字节流的,每个字节都有对应的编号,由此对TCP协议工作原理的认识豁然开朗。
进一步引导学生思考:除了正常释放一条TCP连接,怎样终止一条出现严重错误或长时间空闲的TCP连接?三次握手有什么必要性?为什么要四次挥手才能完全释放一条TCP连接?通过认真思考和讨论这些问题,学生能更深入理解TCP工作机制的合理性。
3 网络协议仿真教学系统
3.1 系统简介
网络协议仿真教学系统是吉林中软吉大信息技术有限公司开发的一款商业产品,由组控设备、智能网络设备、中心设备、IPv4服务器、IPv6服务器等几大硬件模块组成,安装时可以组装在一个机柜里。可以连接多至上百台的终端计算机,方便大规模教学[6]。每6台计算机分成一组,每组又有3种不同的网络拓扑结构供选择,如图3所示。
3.2 与Wireshark比较
系统既能捕捉网络上的数据包,又能手动编辑数据包,修改数据包的字段值然后再发送。而Wireshark不能修改和发送数据包,只能捕获数据包;能以图形的方式显示出网络拓扑和数据包流向,比Wireshark更直观;对数据包的分析更加详尽,能够分析数据包所有字段的值,而Wireshark只能分析部分关键字段的值;对数据包的过滤比Wireshark更加详细方便,能够方便地进行一些Wire-shark难以进行的实验,如组播、路由等。
3.3 协议分析教学
以最常用的ping命令为例介绍一下数据包的捕获和分析过程。以主机A、B为例,主机A启动协议分析器并开始捕捉数据包,主机B去ping主机A,这一过程中产生的数据包都可以捕捉到。从图4可以看出,当需要对方的MAC地址时,会自动调用ARP协议进行解析,这一过程是用户感觉不到的。如果对捕获到的数据包感兴趣,点击该数据包就会显示详细信息。
借助网络协议仿真教学系统,使许多原本抽象复杂、难以进行的实验变得简单起来,使网络协议的学习变得轻松愉快而又理解深刻,配置操控网络的能力得到很大提高。
4 教学效果
为了验证可视化教学方法效果,对近6届学生的《网络协议分析》成绩进行统计,其中最近3届采用了可视化教学,试题都是从题库中随机抽取。发现采用可视化教学方法后,考试成绩的优秀率、及格率、平均成绩都比以往有了明显提高。此外,通过作业、实验报告、问卷调查对教学效果进行评估,发现学习难度降低了,学习兴趣提高了,对网络模型及协议原理的理解更加深入了。
5 结语
网络协议的可视化教学是《网络协议分析》教学改革的一次有益尝试,收到了良好的教学效果。但这种方法仍存在一定的局限性:《网络协议分析》是一门综合性学科,可视化教学方法主要解决了协议工作原理教学难问题,主要适用于数据链路层及以上各层。如果要改进物理层教学以及多学科结合的综合知识点教学,则要探索新的教学方法。
参考文献
[1]胡谷雨.计算机网络教学中的创新能力培养尝试[J].计算机工程与科学,2014,36(2):13-15.
[2]谢希仁.计算机网络[M].北京:电子工业出版社,2013.
[3]袁艺,薛质.“思维实验”在网络体系结构教学中的应用[J].电气电子教学学报,2014,36(4):76-78.
[4]IVO BATISTI04,JADRANKA STOJANOVSKI.Development of wireshark network protocol analyzer[J].Hrvatska Znanstvena Bibliografija I Mzos-svibor,2013(4):25-28.
[5]王晓卉,李亚伟.Wireshark数据包分析实战详解[M].北京:清华大学出版社,2015.
网络协议课程设计 篇2
编程实现简单的TCP协议分析器
一、问题描述
编程实现简单的TCP协议分析器,TCP协议分析器是一种用于监督和跟踪网络活动的诊断工具,它从局域网中抓取IP数据包,并对它进行分析得到相应的头部信息,过滤TCP包进行分析,得到TCP包的相应信息。
二、基本要求
1.利用原始套接字实现简单的TCP协议分析器。2.系统功能包括:
2.1 原始套接字与网卡绑定,并接收流经网卡的所有数据包; 2.2 对数据包进行分析以获得源IP地址和目的IP地址; 2.3 对TCP Segment进行分析以获得其首部详细信息; 2.4 显示分析结果。3 建议使用VC++。
三、设计思想
TCP协议的数据传送程序是由二个子程序组成的。也可以看成是服务器端程序和客户端程序,其中:服务器端程序的功能是侦听端口号,接收远 程主要的TCP连接申请,并接收远程主机传送来的文字数据。另外一个子程序,也就是所谓的客户端程序,主要实现向网络的远程主机提出TCP连接申请。
程序利用原始套接字抓取局域网中的IP包。
TCP协议分析器实现了sniffer的一部分功能。而sniffer的工作原理是:1.把网卡置于混杂模式;2.捕获数据包;3.分析数据包。
Raw Socket: 原始套接字可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP,TCP, UDP等。
四、系统结构
(1)Pcap_addr描述网络接口地址;
(2)pcap_pkthdr用来描述每个捕获到的数据包的基本信息;(3)int_pcaplookupnet获取网络地址和网络掩码;
(4)int_pcaploop循环捕获网络数据包,直到遇到错误或满足退出条件;(5)pcap_t* pcap_open_dead构造一个libpcap句柄。
五、程序流程(或模块划分)
编程实现简单的TCP协议分析器
六、源程序
#include “pcap.h” struct ether_header {
u_int8_t ether_dhost[6];
/* 目的以太网地址 */
u_int8_t ether_shost[6];
/* 源以太网地址 */
u_int16_t ether_type;
/* 以太网类型 */ };struct arp_header
编程实现简单的TCP协议分析器
{
u_int16_t arp_hardware_type;
/* 硬件类型 */
u_int16_t arp_protocol_type;
/* 协议类型 */
u_int8_t arp_hardware_length;
/* 硬件地址长度 */
u_int8_t arp_protocol_length;
/* 协议地址长度 */
u_int16_t arp_operation_code;
/* 操作码 */
u_int8_t arp_source_ethernet_address[6];
/* 源以太网地址 */
u_int8_t arp_source_ip_address[4];
/* 源IP地址 */
u_int8_t arp_destination_ethernet_address[6];
/* 目的以太网地址 */
u_int8_t arp_destination_ip_address[4];
/* 目的IP地址 */ };struct ip_header {
#if defined(WORDS_BIGENDIAN)
u_int8_t ip_version: 4,/* 版本 */
ip_header_length: 4;
/* 首部长度 */
#else
u_int8_t ip_header_length: 4, ip_version: 4;
#endif
u_int8_t ip_tos;
/* 服务质量 */
u_int16_t ip_length;
/* 长度 */
u_int16_t ip_id;
/* 标识 */
u_int16_t ip_off;
编程实现简单的TCP协议分析器
/* 偏移 */
u_int8_t ip_ttl;
/* 生存时间 */
u_int8_t ip_protocol;
/* 协议类型 */
u_int16_t ip_checksum;
/* 校验和 */
struct in_addr ip_souce_address;
/* 源IP地址 */
struct in_addr ip_destination_address;
/* 目的IP地址 */ };struct udp_header {
u_int16_t udp_source_port;
/* 源端口号 */
u_int16_t udp_destination_port;
/* 目的端口号 */
u_int16_t udp_length;
/* 长度 */
u_int16_t udp_checksum;
/* 校验和 */ };struct tcp_header {
u_int16_t tcp_source_port;
/* 源端口号 */
u_int16_t tcp_destination_port;
/* 目的端口号 */
u_int32_t tcp_sequence_liuzhen;
/* 序列号 */
u_int32_t tcp_acknowledgement;
/* 确认序列号 */
#ifdef WORDS_BIGENDIAN
u_int8_t tcp_offset: 4,/* 偏移 */
编程实现简单的TCP协议分析器
tcp_reserved: 4;
/* 未用 */
#else
u_int8_t tcp_reserved: 4,/* 未用 */
tcp_offset: 4;
/* 偏移 */
#endif
u_int8_t tcp_flags;
/* 标记 */
u_int16_t tcp_windows;
/* 窗口大小 */
u_int16_t tcp_checksum;
/* 校验和 */
u_int16_t tcp_urgent_pointer;
/* 紧急指针 */ };struct icmp_header {
u_int8_t icmp_type;
/* ICMP类型 */
u_int8_t icmp_code;
/* ICMP代码 */
u_int16_t icmp_checksum;
/* 校验和 */
u_int16_t icmp_id;
/* 标识符 */
u_int16_t icmp_sequence;
/* 序列码 */ };void tcp_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content){
struct tcp_header *tcp_protocol;
/* TCP协议变量 */
u_char flags;
编程实现简单的TCP协议分析器
/* 标记 */
int header_length;
/* 长度 */
u_short source_port;
/* 源端口 */
u_short destination_port;
/* 目的端口 */
u_short windows;
/* 窗口大小 */
u_short urgent_pointer;
/* 紧急指针 */
u_int sequence;
/* 序列号 */
u_int acknowledgement;
/* 确认号 */
u_int16_t checksum;
/* 校验和 */
tcp_protocol =(struct tcp_header*)(packet_content + 14+20);
/* 获得TCP协议内容 */
source_port = ntohs(tcp_protocol->tcp_source_port);
/* 获得源端口 */
destination_port = ntohs(tcp_protocol->tcp_destination_port);
/* 获得目的端口 */
header_length = tcp_protocol->tcp_offset *4;
/* 长度 */
sequence = ntohl(tcp_protocol->tcp_sequence_liuzhen);
/* 序列码 */
acknowledgement = ntohl(tcp_protocol->tcp_acknowledgement);
/* 确认序列码 */
windows = ntohs(tcp_protocol->tcp_windows);
/* 窗口大小 */
urgent_pointer = ntohs(tcp_protocol->tcp_urgent_pointer);
/* 紧急指针 */
flags = tcp_protocol->tcp_flags;
/* 标识 */
checksum = ntohs(tcp_protocol->tcp_checksum);
编程实现简单的TCP协议分析器
/* 校验和 */
printf(“-------TCP协议
-------n”);
printf(“源端口号:%dn”, source_port);
printf(“目的端口号:%dn”, destination_port);
switch(destination_port)
{
case 80:
printf(“上层协议为HTTP协议n”);
break;
case 21:
printf(“上层协议为FTP协议n”);
break;
case 23:
printf(“上层协议为TELNET协议n”);
break;
case 25:
printf(“上层协议为SMTP协议n”);
break;
case 110:
printf(“上层协议POP3协议n”);
break;
default:
break;
}
printf(“序列码:%un”, sequence);
printf(“确认号:%un”, acknowledgement);
printf(“首部长度:%dn”, header_length);
printf(“保留:%dn”, tcp_protocol->tcp_reserved);
printf(“标记:”);
if(flags &0x08)
printf(“PSH ”);
if(flags &0x10)
printf(“ACK ”);
if(flags &0x02)
printf(“SYN ”);
if(flags &0x20)
编程实现简单的TCP协议分析器
printf(“URG ”);
if(flags &0x01)
printf(“FIN ”);
if(flags &0x04)
printf(“RST ”);
printf(“n”);
printf(“窗口大小:%dn”, windows);
printf(“校验和:%dn”, checksum);
printf(“紧急指针:%dn”, urgent_pointer);} void ip_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content){
struct ip_header *ip_protocol;
/* IP协议变量 */
u_int header_length;
/* 长度 */
u_int offset;
/* 偏移 */
u_char tos;
/* 服务质量 */
u_int16_t checksum;
/* 校验和 */
ip_protocol =(struct ip_header*)(packet_content + 14);
/* 获得IP协议内容 */
checksum = ntohs(ip_protocol->ip_checksum);
/* 获得校验和 */
header_length = ip_protocol->ip_header_length *4;
/* 获得长度 */
tos = ip_protocol->ip_tos;
/* 获得服务质量 */
offset = ntohs(ip_protocol->ip_off);
/* 获得偏移 */ if(ip_protocol->ip_protocol==6)
{
printf(“-----------IP协议
-----------n”);
编程实现简单的TCP协议分析器
printf(“版本号:%dn”, ip_protocol->ip_version);
printf(“首部长度:%dn”, header_length);
printf(“服务质量:%dn”, tos);
printf(“总长度:%dn”, ntohs(ip_protocol->ip_length));
printf(“标识:%dn”, ntohs(ip_protocol->ip_id));
printf(“偏移:%dn”,(offset &0x1fff)*8);
printf(“生存时间:%dn”, ip_protocol->ip_ttl);
printf(“协议类型:%dn”, ip_protocol->ip_protocol);
printf(“上层协议为TCP协议n”);
printf(“校验和:%dn”, checksum);
printf(“源IP地址:%sn”, inet_ntoa(ip_protocol->ip_souce_address));
/* 获得源IP地址 */
printf(“目的IP地址:%sn”, inet_ntoa(ip_protocol->ip_destination_address));
/* 获得目的IP地址 */
} } void ethernet_protocol_packet_callback(u_char *packet_header, const u_char *packet_content){ static int packet_number = 1;
/* 数据包个数,静态变量 */ u_short ethernet_type;
/* 以太网类型 */
struct ether_header *ethernet_protocol;struct ip_header *ip_protocol;
/* IP协议变量 */
u_int header_length;
/* 长度 */
u_int offset;
/* 偏移 */
u_char tos;
/* 服务质量 */
u_int16_t checksum;
/* 校验和 */
ip_protocol =(struct ip_header*)(packet_content + 14);
/* 获得IP协议内容 */
checksum = ntohs(ip_protocol->ip_checksum);
*argument, const struct pcap_pkthdr 编程实现简单的TCP协议分析器
/* 获得校验和 */
header_length = ip_protocol->ip_header_length *4;
/* 获得长度 */
tos = ip_protocol->ip_tos;
/* 获得服务质量 */
offset = ntohs(ip_protocol->ip_off);
/* 获得偏移 */
/* 以太网协议变量 */ ethernet_protocol =(struct ether_header*)packet_content;ethernet_type = ntohs(ethernet_protocol->ether_type);/* 获得以太网类型 */ if(ethernet_type==0x0800 && ip_protocol->ip_protocol==6){ u_char *mac_string;
/* 以太网地址 */
printf(“**************************************************n”);
printf(“捕获第%d个TCP网络数据包n”, packet_number);
printf(“捕获时间:n”);
printf(“%s”, ctime((const time_t*)&packet_header->ts.tv_sec));
/* 获得捕获数据包的时间 */
printf(“数据包长度:n”);
printf(“%dn”, packet_header->len);
printf(“--------
以太网协议
--------n”);
/* 获得以太网协议内容 */
printf(“类型:n”);
printf(“%04xn”, ethernet_type);
printf(“源以太网地址: n”);
mac_string = ethernet_protocol->ether_shost;
printf(“%02x:%02x:%02x:%02x:%02x:%02xn”,*mac_string, *(mac_string *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));
/* 获得源以太网地址 */
printf(“目的以太网地址: n”);
mac_string = ethernet_protocol->ether_dhost;
printf(“%02x:%02x:%02x:%02x:%02x:%02xn”, *mac_string, *(mac_string *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));
/* 获得目的以太网地址 */
ip_protocol_packet_callback(argument, packet_header, packet_content);
+ 1),+ 1), 编程实现简单的TCP协议分析器
packet_number++;
printf(“**************************************************n”);
} } void main(){
pcap_t *pcap_handle;
/* Winpcap句柄 */
char error_content[PCAP_ERRBUF_SIZE];
/* 存储错误信息 */
char *net_interface;
/* 网络接口 */
struct bpf_program bpf_filter;
/* BPF过滤规则 */
char bpf_filter_string[] = "";
/* 过滤规则字符串 */
bpf_u_int32 net_mask;
/* 掩码 */
bpf_u_int32 net_ip;
/* 网路地址 */
net_interface = pcap_lookupdev(error_content);
/* 获得可用的网络接口 */
pcap_lookupnet(net_interface, &net_ip, &net_mask, error_content);
/* 获得网络地址和掩码地址 */
pcap_handle = pcap_open_live(net_interface, BUFSIZ, 1, 1, error_content);
/* 打开网路接口 */
pcap_compile(pcap_handle, &bpf_filter, bpf_filter_string, 0, net_ip);
/* 编译BPF过滤规则 */
pcap_setfilter(pcap_handle, &bpf_filter);
/* 设置过滤规则 */
if(pcap_datalink(pcap_handle)!= DLT_EN10MB)
return;
pcap_loop(pcap_handle,-1, ethernet_protocol_packet_callback, NULL);
/* 注册回调函数,循环捕获网络数据包,利用回调函数来处理每个数据包 */
pcap_close(pcap_handle);
/* 关闭Winpcap操作 */ }
编程实现简单的TCP协议分析器
七、测试数据
本地局域网IP数据包
八、测试情况
程序运行结果图:
编程实现简单的TCP协议分析器
编程实现简单的TCP协议分析器
结 论
通过两周的课程设计,增强了我的实际动手能力,通过实际的编程整合串联了我所学到的知识。另外我还学到了作为编程人员的一些基本素质,这为我毕业后找工作奠定了基础。
通过做TCP协议分析器学习的很多网络编程知识: 1.学会了winpcap网络数据报捕获开发包的使用; 2.绑定网卡函数bind(); 3.数据接受函数recv(); 4.Windows套接字编程;
5.学习了原始套接字编程的基本机制; 6.学习对数据包进行协议分析的基本方法。
通过做TCP协议分析器学习的很多Visual C++ Windows编程知识:
1.学会了Windows常用数据结构的使用;
2.学到了一些用Visual C++ Windows编程的技巧。
编程实现简单的TCP协议分析器
参考文献
[1] 甘玲 邱劲 《面向对象技术与Visual C++ 》 清华大学出版社 [2] 任哲 《MFC Windows 应用程序设计》清华大学出版社 [3] 《计算机网络》 北京:机械工业出版社
网络协议课程设计 篇3
关键词:可信网络;TNC;数字认证
1 引言
以往那种单一的、孤立的、以外在插件或系统植入式的网络安全系统所能提供的网络监控和防护功能,在日益多元化和更加随机更加隐蔽的网络攻击手段面前愈来愈显得力不从心[1]。
鉴于此,应加强网络访问控制机制以及终端主机接入网络的安全性保证和完整性保护,对网络中的每一台终端都要进行一系列严格的安全校验。只有符合安全策略要求的才允许其接入网络,进而形成一种可信的网络环境。就像美国工程院院士Patterson所指出的那样,过去的计算机系统研究的目标是追求高效行为,而当今的网络系统需要建立可信的网络服务,可信必须成为可以衡量和验证的性能[2]。
2 可信网络概述
一个可信的网络应该是网络系统的行为及其结果是可以预期的,能够做到行为状态可监测,行为结果可评估,异常行为可控制。
自从2003年可信计算组织(Trusted Computing Group,TCG)成立以来,可信计算技术得到了迅速的发展。TCG于2005年5月制定可信网络连接规范(Trusted Network Connection,TNC),并在2008年4月发布了TNC规范V1.3版[3]。该规范提出“终端完整性度量”的思想,即使用一系列由客户所在组织的IT部门制定的策略和预定的平台配置,对尝试连接网络的客户终端的可信性进行评估,从而防止不可信终端设备连接到网络,实施破坏行动。
3 可信网络连接(TNC)及其局限性
3.1 TNC架构及其工作原理
TNC基础架构如图所示,其主要包括三个实体,它们分别是访问请求者(Access Requestor,AR)、策略执行点(Policy Enforcement Point,PEP)以及策略决定点(Policy Decision Point,PDP)。AR是请求访问受保护网络的实体,它包含网络访问请求者(Network Access Requestor,NAR)、TNC客户端(TNC Client,TNCC)和完整性度量收集器(Integrity Measurement Collector,IMC)3个组件。PEP是执行网络访问授权决定的实体。PDP是做出网络访问授权决定的实体,它包含网络访问授权(Network Access Authority,NAA)、TNC服务器(TNC Server,TNCS)和完整性度量验证器(Integrity Measurement Verifier,IMV)这3个组件。TNC架构中的3个抽象层次是根据实体的功能和角色划分的,自底向上分别为网络访问层、完整性评估层和完整性度量层。当AR向PDP发出申请建立网络连接请求时,PDP根据安全策略决策是否允许AR接入,并将决策结果发送给PEP,由PEP执行PDP的决策。
TNC架构及工作方式
3.2 TNC架构的局限性
虽然,TNC规范针对服务器与终端工作站之间的完整性验证有着很大的优势,但其只适用传统C/S模式下的可信网络接入控制环境。随着移动终端的大量普及和分布式计算的飞速发展,对等计算的大量出现将导致服务器和客户端的界限日渐模糊。这样以来势必会增加网络复杂性,同时导致服务器可能在不知情的情况下遭受木马攻击,给终端用户造成严重的经济损失[4]。
4 混合可信网络接入协议
这种混合可信网络接入协议具有更高通用性,允许对不同网络采取不同的完整性度量策略。总体而言,完整性数据主要从端口活动状态、最佳第三方安全软件应用的存在/版本(如防火墙、杀毒软件、入侵检测系统等)以及当前运行的程序等方面来考虑。
4.1 方案设计
根据TNC架构对可信平台身份认证完整性评估和平台可信环境等可信评估需求,在现有认证流程的基础上设计了一种混合可信网络连接双向认证方案。
4.2 方案分析
混合可信认证方案与传统网络接入认证方案相比,在安全性上得到了很大提高,以下是对终端请求接入过程的安全性分析。
首先是客户端及服务器端的平台身份认证。在终端请求接入网络时,通过验证平台身份证书(对终端及服务器端平台的双向认证克服了TNC架构中单向性认证的缺陷),保证服务器端的可信性;其次,在AR试图接入网络前,服务器端PDP对平台AR的安全状态进行检测,从而决定是否同意AR接入网络执行相应的权限。这个过程保证了终端的完整性,确保了终端在接入网络之前未受木马或病毒的攻击。
5 结束语
可信网络及其接入规范TNC目前已经迈出了将可信计算机制向网络延伸的第一步。目前,就如何将信任链扩展到网络的研究而言也存在很多问题,如可信网络模型、内容可信、行为可信、传输可信、资源可信共享等,有待学术界与产业界研究解决分析TNC规范的不足。引入服务器和客户端的双向认证,保证了通信的可靠性,并使TNC协议具有更好的互操作性,解决了服务器端不可信和完整性受到破坏的问题。混合可信网络接入协议可以应用于电子商务领域,减少假冒服务器和服务器被黑客攻击时对用户造成的损失,且适用于未来的移动计算和分布式计算等应用场景。
参考文献
[1]林闯,彭雪海.可信网络研究[J].计算机学报,2005,28(5):751-758.
[2]Recovery Oriented Computing.http://www.stanford.edu,or http://roc.cs.berkeley.edu.
[3]Trusted Computing Group.TCG Trusted Network Connect TNC Architecture for Interoperability[EB/OL].[2008-04-20].http://www.trustedcomputinggroup.org.
[4]Rehbock S,Hunt R.Trustworthy Clients:Architectural Approaches for Extending TNC to Web-based Environments[J].Computer Communications,2009,32(5):246-249.
网络协议课程设计 篇4
关键词:网络协议,仿真平台
随着网络技术的发展, 计算机网络已经渗透到人们生活的方方面面, 影响着我们的生活、学习、工作。《网络设备配置与优化》作为高职计算机网络技术专业网络工程与管理方向的一门专业核心课程, 网络协议的分析尤其重要。而这部分内容非常抽象, 需要让学生“真正”的了解协议的含义。
正因为此, 为了使得学生能更加生动具体的掌握协议的内容, 并进一步培养学生分析问题、解决问题的职业能力。如何通过更先进的实验教学体系, 增强学生对计算机网络协议的认识, 是亟需解决的课题。浙江工商职业技术学院《网络设备配置与优化》课程通过搭建网络协议仿真平台进行网络协议实验的分析, 来达到此目的。
1 网络协议分析在《网络设备配置与优化》课程中的地位
计算机网络协议是一组通信规则的集合。对应计算机网络通信时的每一个功能层面, 都有具体的协议负责该层的数据处理以及传输, 并为上层提供相应的支持。理解网络协议的工作原理, 是学生能学好《网络设备配置与优化》课程的基础, 为进一步的网络系统集成项目实践提供良好的条件。
2 设置仿真的网络协议实验平台
《网络设备配置与优化》课程将协议仿真平台的实验体系功能分为两个模块:协议分析以及会话过程分析。协议分析模块包括针对性的代码分析、解码以及数据显示等功能, 并对相应的代码进行分析;会话过程分析是将网络通信过程中的数据帧捕获后, 加入到会话的列表, 然后进行详细的分析。
根据课程的特点, 重点通过网络协议平台设置了三个仿真的实验:以太网帧结构分析、IP协议仿真、TCP协议仿真及会话分析。实验采用分组的形式, 每组5台主机通过二层交换机连接, 数据捕获软件采用wireshark, 图1为网络协议仿真平台的拓扑结构:
2.1 以太网帧结构分析
数据链路层将不可靠的物理层转变为一条无差错的数据链路, 涉及的数据单位是帧 (frame) , 对于以太网来说高层的协议数据被封装在以太网帧的数据字段发送。使用网络协议分析软件 (wireshark) 可以捕获各种协议数据包, 通过查看这些协议数据包中数据链路帧的各字段可以分析以太网帧的内部机制。
首先实验通过一台主机“PING”其他主机来测试本机与对方主机的连通性, 本地主机向对方主机发送4个ICMP数据包, 同时对方主机也会进行谁个ICMP回应, 因此, 这8个ICMP报将被捕获。
观察协议树区中的以太网帧, 查看是否符合以太网帧结构, 如图2:
本实验的目的是使学生能掌握以太网帧的格式以及工作的机制。
2.2 IP协议仿真
IP是英文Internet Protocol (网络之间互连的协议) 的缩写, 就是为计算机网络相互连接进行通信而设计的协议。了解IP协议对为课程的学习来说尤其重要。
具体实验步骤为: (1) 路由转发。所有的主机清空网关。主机三台主机上设置子网掩码为255.255.254.0, 其他主机上设置子网掩码为255.255.255.0。互相PING, 记录实验结果并分析。 (2) IP数据报的分片实验分析。在一台主机E上设置以太网帧的MTU为500字节。主机B、D捕按软件, 打开捕获窗口, 设置过滤条件并捕获数据。主机B恢复默认过滤器。主机D重新停止捕获数据。察看主机B、D捕的数据, 比较他们之间的的差异, 体会分片过程, 并分析结果。 (3) 小组一台主机启动仿真的编辑器, 编辑和发送IP数据包。其中:数据链路层包含另一台目标主机的MAC地址, 以及自身的源MAC地址, 协议的类型以及长度。IP层:包括数据包的长度、数据包生存时间、目标IP地址、源IP地址、校验码。在其他主机上进行数据捕获。并查找源主机所发送的数据报进行分析。
通过仿真IP协议的实验, 可以使学生更好的理解IP协议, 能提高学生分析问题的能力。
2.3 TCP协议仿真实验
该实验通过建立和释放TCP连接、重传数据报, 分析数据, 来深入的理解TCP协议。
具体实验步骤: (1) 主机A启动仿真编辑器, 编辑并发送TCP数据包。选择一台作为服务器主机, 建立相应的服务, 从客户端发起请求建立连接, 同时编辑确认应答报文以及连接断开报文并发送。编辑TCP协议息, 包括序列号、服务器端的目标端口、客户端的源端口、确认应答号、校验码等等。 (2) TCP的连接分析。一台主机在“服务器的信息/IP地址”栏中填入另一主机的IP地址;利用端口扫描, 获取目标的TCP端口表, 在“服务器的信息/端口”中写入目标的一个端口, 并进行连接。查看并分析捕获到的数据, 分析各个报文中的SYN、Sequence Number以及ACK的值。 (3) TCP的重传机制。一台主机向另一发送数据, 目标主机使用仿真网络协议实验平台的屏蔽功能, 屏蔽掉TCP数据。再次发送信息。目标主机刷新并捕获显示, 恢复网络正常的功能, 分析目标所捕获到的数据。
通过TCP仿真实验, 可以使得学生更好的理解TCP协议的格式, 以及TCP的三次握手建立连接以及四次握手释放连接过程。
3 结束语
经过几轮的《网络设备配置与优化》课程, 实践证明, 网络协议仿真平台的使用, 不仅加深学生对网络协议的理解, 更重要的是能大大提高学生在做网络项目时, 故障分析与排错的能力。有效的促进了学生的解决问题、分析问题的能力。
参考文献
[1]贾伟.网络工程项目实践训练实施方案的改进研究[J].电脑知识与技术, 2010 (33) .
[2]罗远军, 香赵政.高校网络工程专业实验教学的虚拟化实践探索[J].沿海企业与科技, 2011 (6) .
[3]伍星.项目驱动在高职高专教学中的应用[J].福建电脑, 2011 (6) .
网络课程设计(共) 篇5
络 安
题目:RSA加解密算法 姓名: 学号:
导师: 全 网
1.实验目的
通过C#语言编程实现Rsa加密算法,加深对公开密码体制的了解。
2.RSA原理
2.1 RSA概述
当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。
RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性: 1)已有确定一个数是不是质数的快速算法; 2)尚未找到确定一个合数的质因子的快速算法。
目前,日益激增的电子商务和其它因特网应用需求使公钥体系得以普及,这些需求量主要包括对服务器资源的访问控制和对电子商务交易的保护,以及权利保护、个人隐私、无线交易和内容完整性(如保证新闻报道或股票行情的真实性)等方面。公钥技术发展到今天,在市场上明显的发展趋势就是PKI与操作系统的集成,PKI是“Public Key Infrastructure”的缩写,意为“公钥基础设施”。公钥体制广泛地用于CA认证、数字签名和密钥交换等领域。
公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,该算法也已经在互联网的许多方面得以广泛应用,包括在安全接口层(SSL)标准(该标准是网络浏览器建立安全的互联网连接时必须用到的)方面的应用。此外,RSA加密系统还可应用于智能IC卡和网络安全产品。
2.2 RSA算法的编程思路
1)确定密钥的宽度。
2)随机选择两个不同的素数p处q,它们的宽度是密钥宽度的二分之一。3)计算出p和q的乘积n。
4)在2和Φ(n)之间随机选择一个数e , e 必须和Φ(n)互素,整数e用做加密密钥(其中Φ(n)=(p-1)*(q-1))。
5)从公式ed ≡ 1 mod Φ(n)中求出解密密钥d。6)得公钥(e,n), 私钥(d , n)。7)公开公钥,但不公开私钥。
8)将明文P(假设P是一个小于n的整数)加密为密文C,计算方法为: C = Pe mod n 9)将密文C解密为明文P,计算方法为:
P = Cd mod n 然而只根据n和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密
3.程序实现
本实验本采用C#语言,用Visual Studio下编程得到以下结果:
3.1
源程序如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;
using System.Windows.Forms;using System.IO;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1(){ InitializeComponent();}
private void button1_Click(object sender, EventArgs e){ Form2 form = new Form2();form.Show();} private void Form1_Load(object sender, EventArgs e){ radioButton1.Checked = true;}
private void radioButton1_CheckedChanged(object sender, EventArgs e){ if(radioButton1.Checked == true){ label2.Text = “加密”;label3.Text = “E”;label5.Text = “请选择加密文件”;button2.Text = “加密”;} else { label2.Text = “解密”;label3.Text = “D”;label5.Text = “请选择解密文件”;button2.Text = “解密”;}
}
private void button3_Click(object sender, EventArgs e){ openFileDialog1.ShowDialog();textBox3.Text = openFileDialog1.FileName;} private void button2_Click(object sender, EventArgs e){ if(radioButton1.Checked == true){
if(textBox3.Text!= “"){ string pathstring = textBox3.Text, s1 = @”d:Code.txt“;if(File.Exists(pathstring)){ FileStream fileStream = File.OpenRead(pathstring);
try { StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.Default);
while(!reader.EndOfStream){ string s = reader.ReadLine();int i, j;int m = Convert.ToInt32(textBox1.Text);int n = Convert.ToInt32(textBox2.Text);char[] a = new char[s.Length];for(i = 0;i < s.Length;i++){ j =(int)((s[i] ^(m))% n);a[i] = Convert.ToChar(j);if(File.Exists(s1)){ StreamWriter writer = new StreamWriter(s1, false, System.Text.Encoding.Default);writer.WriteLine(a);writer.Close();}}} reader.Close();} catch(Exception ex){ MessageBox.Show(ex.Message);} }
else
{ MessageBox.Show(”你要读的文件不存在“);} }
} if(radioButton2.Checked == true){ textBox3.Text = openFileDialog1.FileName;if(textBox3.Text!= ”“){ string pathstring = textBox3.Text, s1 = @”d:Info.txt“;if(File.Exists(pathstring)){ FileStream fileStream = File.OpenRead(pathstring);
try { StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.Default);
while(!reader.EndOfStream){ string s = reader.ReadLine();int i, j;int m = Convert.ToInt32(textBox1.Text);int n = Convert.ToInt32(textBox2.Text);char[] a = new char[s.Length];for(i = 0;i < s.Length;i++){ j =(int)((s[i] ^(m))% n);a[i] = Convert.ToChar(j);if(File.Exists(s1)){ StreamWriter writer = new StreamWriter(s1,false, System.Text.Encoding.Default);writer.WriteLine(a);writer.Close();
}}} reader.Close();} catch(Exception ex){ MessageBox.Show(ex.Message);}}}}}}} 点击
得
源代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form2 : Form { public Form2(){ InitializeComponent();}
private void Form2_Load(object sender, EventArgs e)
{
}
private void label10_Click(object sender, EventArgs e){
}
private void textBox2_TextChanged(object sender, EventArgs e){ label13.Text = ”“;if(textBox2.Text!= ”“){ int m = Convert.ToInt32(textBox2.Text);int i, j;for(i = 2;i < m;i++){ if(m % i == 0){ label13.Text = ”不是质数,请重新输入!“;break;} } } try { label5.Text = ”输入的数与“ +(Convert.ToInt32(textBox1.Text)1)+ ”互质“;} catch { } }
private void button1_Click(object sender, EventArgs e){ int P = Convert.ToInt32(textBox1.Text);int Q= Convert.ToInt32(textBox2.Text);int N = P * Q;int R =(P-1)*(Q-1);int D = Convert.ToInt32(textBox3.Text);int I, E=0;for(I=2;I private void textBox1_TextChanged(object sender, EventArgs e){ label12.Text = ”“;if(textBox1.Text!= ”“){ int m = Convert.ToInt32(textBox1.Text);int i, j;for(i = 2;i < m;i++){ if(m % i == 0){ label12.Text = ”不是质数,请重新输入!";break;} } } } } } 3.2 加密过程: 选择 原文.txt 为要加密的文件,Code.txt 为密文,Info.txt 为经过解密的文件如图: 原文: 密文: 经过解密可得: 由上知该实验已顺利完成! 4.心得和体会 以上这些是我根据RSA的加密原理,自已通过编程,亲自体会而来。RSA算法本身比较简单,做一个实验的时候,遇到的困难主要是在编程,由于C#语言为面向对象的语言,具有良好的与用户接口,故采用这种语言。编程中在输入输出流这个地方出了一点问题,花了比较长的时候才把原因找到,并最终将程序完成.由于条件所限,在选取加密钥的时候,取数都比较小,实际应用中,数字会很大,但基本原理算法是一样的。 本实验仍有些不足,比如说,加密比较大的文件时,比较吃力,花费时间较多。 关键词 教学系统设计;网络课程;网络资源 中图分类号:G642.4 文献标识码:B 文章编号:1671-489X(2012)34-0034-01\ 网络课程就是通过网络表现的某门学科的教学内容及实施的教学活动的总和,它包括两个组成部分:按一定的教学目标、教学策略组织起来的教学内容和网络教学支撑环境。其中,网络教学支撑环境特指支持网络教学的软件工具、教学资源以及在网络教学平台上实施的教学活动。 1 教学设计 对于任何一门网络课程,首先必须进行教学设计,即依据前端分析及课程学习目标设计出相对应的教学策略和教学活动。教学系统设计是教育技术学专业的专业核心课程。学习者分析主要考虑三个方面,即学习者的一般特征、学习的起点水平、学习风格。教学内容分析主要是以教学目标为基础,旨在规定教学内容的范围、深度和揭示教学内容各组成部分的联系,以保证达到教学最优化的内容效度。除此还应完成教学内容的编排,通过上述学习者分析得出的结论对教学内容进行选择。选择教学内容绝对不是单单照搬照抄书本上的内容,而是通过进行一定的删减、增加和重新组织,将教学内容呈现给学习者。 教学策略与教学活动设计包括两部分。 1)自主学习策略的设计。本网络课程学习策略设计主要根据维果茨基的最邻近发展区理论,在网络课程中的每一个章节都呈现出各章的学习目标、学法指导和本章的知识地图,让学生根据目标和指导,有目的地去学习。设计的相关资源栏目,主要进行与本网络课程内容相关的网站链接,方便学生查阅相关资料,理解学习内容,扩大知识面。自主学习策略的设计遵循“确立学习目标——提供学习资源——学生自学——评价——总结——联系巩固”的过程。 2)协作学习策略的设计。根据建构主义学习理论的观点,“协作”“会话”是学习环节四大要素中的两大要素,协作学习环境创设的好坏将直接影响到学习者对知识意义的建构。本网络课程主要采用留言本的形式体现出协作学习的设计,使学习者通过交互来完成协作学习。 2 系统设计 根据教学系统设计课程的特点,其网络课程首页呈现课程简介、教学大纲、教学内容、课间休息、交流讨论、在线测试、相关资源、使用帮助等相关版块。学习导航采取列表导航,即在教学内容栏目中,将各个章节列举出来,学习者可以根据学习需要,进行选择性学习。交互设计采用留言本的交互方式,为学习者之間进行交流讨论提供一个很好的平台,学习者可以就各方面的问题进行交流讨论,同时教师还可以通过留言对学生提出的疑难问题做出解答,进行学习双向反馈。界面设计简单明了,功能模块易于操作,引导学习者参与学习。 3 技术实现 采用ASP+ACCESS数据库进行网站的设计。前台设计采用Photoshop图像处理软件和Dreamweaver结合,通过主页上的链接点击进入相应的功能模块,通过前台设计,确定后台设计和实现功能,进而对数据库进行设计。后台与数据库的设计是通过前台要实现的功能来确定的,主要有管理登录界面、管理首页、常规设置、文章管理、用户管理、文件管理、数据库管理、在线调查与留言管理。本设计中用到多个数据表,对后台设计中所用到的数据表主要有admin后台管理员信息表、bigclass大类信息表、info网站配置信息表、jasys系统日志表、news上传内容信息表、smallclass小类信息表。最后进行数据库的连接,并添加数据库连接出错的提示功能。 4 几点思考 网络课程设计要体现教学的一般规律,特别要强化教学设计;丰富自主学习资源,尤其是一些专业性非常强的学科,学习者就非常需要相关知识的电子图书馆式的资源库;重视反馈,需要课程提供大量的相关案例,使学习者在解决案例的过程中进行知识的再次建构;关注教师的负担,网络课程学习中的师生教学交互给教师带来的负担较传统教学要大许多,有时甚至会使教师力不从心、难以应付。 参考文献 [1]余胜泉.网络课程的设计与开发[EB/OL].教育技术通讯,202.112.88.32/show/ysq/net_course.htm. [2]王汉松.布卢姆认知领域教育目标分类理论评析[J].南京师范大学学报:社会科学版,2000(3):65-70. 各单位网络建设步伐不一,采取的网络层路由协议多样、链路带宽不一,为适应信息社会快速发展的要求,必须确保网络收敛时间最短化、网络利用率最大化、网络路由信息最精确化,这样就提出了本文的研究课题,即多协议网络的优化融合设计。 2 研究对象 当前网络的主流设计方式为层次化的网络拓扑,它由不同的层组成,它能让特定的功能和应用在不同的层面上分别执行,逻辑上引入了核心层、分布层和接入层的概念。其中,核心层位于网络的顶层,负责可靠而迅速地传输大量的数据流。对核心层来说,跨其传输的数据流对大多数用户来说是公共的。如果核心层除了故障,就会影响到每一个用户。 为避免核心层网络发生单点故障,一般按照网状结构拓扑进行设计,并以此自治区域核心与其他自治区域核心相联,组成互联网络。该文研究在多个自治区域、多种路由协议、多种物理链路条件下的网络路由设计。 网络协议采取当前主流的OSPF和EIGRP路由协议。协议的具体原理、特性参见书目[1]。 3 网络设计原则 网络设计,要对数据流采取最优化设计以满足高效传输的需要,确保重要信息和多媒体信息快速准确传输。要采取路由冗余设计以防止关键节点的损坏而造成全网的瘫痪,当某条物理链路中断或某个节点被摧毁后能自动迅速重构网络。要注重路由防环设计以确保网络互联互通。 最优、冗余、无环成为网络设计首要考虑的问题。最优化设计,要求网络有较快的响应时间,能充分利用各种线路的容量。冗余设计,设计时要实现高可靠性,要求路径存在冗余。无环设计,在核心层采用网状拓扑的同时,在多路由协议下能够识别出网络环。在路由协议选择上,尽量选择收敛时间短的协议,如果路由表收敛慢的话,快速的和有冗余的数据链路连接就没有意义了。 4 典型工程应用设计 搭建试验环境采用如图1所示拓扑,三层交换机SW1,路由器R1分别与骨干网Backbone1、2相联,R2连接50.0/24网络。R1的Gi0/1接口、R2的Gi0/1接口和SW1属于采取OSPF协议的域AREA 1;R1的Gi0/2接口采用EIGRP协议,AS号为100;R2的Gi0/2接口和S0/0接口、R1的S0/0接口采用EIGRP协议,AS号为1。接口IP地址前缀为192.168。 三台设备软件上分别采用不同的动态路由协议,有来自各自骨干网的路由条目,知道自身自治区域的所有路径;物理上采用网状拓扑结构,形成了一个物理环,并且传输介质中既有光纤传输也有帧中继Frame-relay网络,这样就组成了一个典型的多网合并设计环境。显然,要实现三个核心层网络的互联互通,不能采用默认路由方式,而必须在不同协议之间进行路由的重发布,使网络从相互隔离到互联互通直至达到最优、冗余、无环的优化设计。 首先进行简单的重发布。这一步在OSPF和EIGRP进程之间进行路由交换,做到网络的互联互通,能够相互访问。 R2上进行配置: R1上进行配置: 以上步骤只是进行简单的路由重发布,主要存在以下几个问题: 1)在R1上把EIGRP 100的路由以Metric 150的方式重分发至OSPF 1中,那么对BACKBONE2过来的EIGRP 100的路由,只有通过R1才能到达(R2到BACKBONE2是通过SW1再到R1的),那么如果R1与SW1之间的链路断开,就会出现网络的单点故障,导致IGP中的其他设备学习不到BACKBONE2的路由。这样就应该在R1上实现EIGRP 100向EIGRP 1的发布: 2)SW1到50.0/24网络的问题。由EIGRP 1向OSPF发布过程中,度量值metric都为110,这样SW1在到的路由表中会由R1和R2均衡负载流量,而由R1负载时会通过帧中继网络,加重网络负担,产生拥塞。应当让SW1只走R2到达50.0网络,而R1不进行负载,只作为一个备份。这里采取在R1上改变EIGRP向OSPF重发布时metric的方法进行: 经过以上步骤,SW1上到50.0/24网络的最佳下一跳为R2,R1只作为路由备份,在R2-SW1链路失效时启用。 3)R1到50.0/24网络的问题。在解决问题2后,R1上又产生了同样的问题,R1虽然走Frame-relay的线路只有一跳到达50.0的网络,可是由于帧中继网络带宽限制,这路径不是最佳的,应该是走SW1。但路由协议之间的比较,OSPF的管理距离AD是110,EIGRP的Internal AD是90,所以R1会默认选择走Frame relay的线路到达50.0,所以我们必须要改变EIGRP的Internal AD来让R1改选走SW1,而且只是针对50.0这个网段: 经过以上配置,R1也会选择R1--SW1—R2--50.0/24网络这条最优路径,而帧中继链路作为冗余备份。 4)路由冗余问题。如果没有将OSPF 1重发布到R1、R2的EIGRP 1中,而只是在R2上进行了重发布,那么只要R2跟SW1之间的链路断开,那么其就将成为孤岛,学习不到OSPF路由,因为R1上虽然EIGRP 100进程学习到了OSPF路由,但是却没有发布到EIGRP 1进程中。为了实现让Frame-relay链路成为备份,要把OSPF 1在R1、R2上都进行重分发。 在R1与R2上都将OSPF发布进EIGRP 1进程: 5)骨干网中外部路由问题。解决上述问题以后,即在R1和R2上都完成了双向重分发,会有一个问题产生,就是如果BACK-BONE2过来的EIGRP 100的路由在R1上显示的是EX(EIGRP中外部路由的AD为170),而且Metric非常大,这就导致了R2在把OSPF 1的路由重发布到EIGRP 1的时候,也顺带将EIGRP 100的路由也通过Frame relay链路通告给R1,由于同样是EX类型的路由,但从R2重分发过来的Metric是定值(参数为10000 100 255 1 1500),这就会比BACKBONE2通告路由的Metric小,所以R1会选择走R2到达BACKBONE2,就出现了环路。解决的办法就是将R2重分发OSPF至EIGRP 1的时候把BACKBONE2的路由给过滤了。这里先采取在R1上由EIGRP 100向OSPF发布时给路由做上标记,在R2上由OSPF至EIGRP 1重发布时将其过滤的方法解决: 至此,关于此拓扑的最优,冗余,无环己解决。可以在SW1上查看路由表,到达50.0/24网段只走R2,在R1上看路由表,到达50.0的网络只通过SW1到达,可以断开R1或者R2与SW1之间的链路来观察一下IGP路由是否有实现备份。因为收敛的缘故,有时候IGP的路由条目会比较紊乱,在实现全部配置后,分别进行clear ip eigrp neighbor和clear ip ospf process,进行路由重启。 5 结束语 该文通过一个简单实例说明了在多个网络合并时的设计问题,较好地实现了最优,冗余,无环设计思想,对实际工程中的应用也有相当裨益。 摘要:该文针对网络迅速组建要求,着重研究了在使用OSPF、EIGRP路由协议的核心层网络中,融合多网的问题,提出融合过程中的基本设计思想,并给出了典型实例。试验环境采用cisco公司路由器搭建。 关键词:多协议网络,融合,重发布,路由协议 参考文献 [1]Jeff Doly[美].Routing TCP/IP,Volume I,1999. [2]Solie,K[美].CCIE试验指南[M].1卷.李津,卓林,译.北京:人民邮电出版社,2002. 1.1 无线Mesh网络的架构分类 无线Mesh网络 (WMN) 是一种多跳无线网络, 是构建下一代无线通信的关键组网技术之一, 特别在未来移动通信系统长期演进中, WMN备受瞩目。WMN由Mesh路由器、客户端和网关三种节点组成。Mesh路由器通过多跳彼此互联, 为客户端提供基础设施, 向客户端发送数据包或从客户端接收包。客户端是用户设备, 一般要接入最近的路由器节点。网关具有桥接功能, 把WMN与其他网络连接起来, 实现与其他网络的互联互通。按照架构特点, WMN可以分为三种类型, 即基础设施WMN、客户端WMN和混合WMN。基础设施WMN中, 客户端之间只能够通过路由器的中继实现通信, 客户端之间不能直接通信。客户端WMN相当于纯ad hoc网络, 所有客户端使用相同信道进行通信, 通过客户端间的多跳实现数据的传输。混合WMN将基础设施WMN与客户端WMN结合起来, 客户端之间可以直接通信, 也可以通过路由器多跳中继实现通信, 具有更大的灵活性, 因此是最有发展前景的WMN架构类型。 1.2 无线Mesh网络的特点 WMN具有如下特点: (1) WMN是一种动态自组织、自配置的网络, 网络中的节点可以自动建立ad hoc网络并维护Mesh连通性。WMN具有由Mesh路由器组成的无线基础设施骨干, Mesh客户端可以看成是骨干的动态延伸, 能提供WMN内部增强的连通性和覆盖。 (2) WMN前期投资成本低、网络维护简单、健壮性好, 能提供可靠的业务覆盖。WMN可以整合其他各种网络形成异构无线网络。 (3) 移动性和能耗均取决于节点的类型。一般来说, 路由器移动性很小, 执行专门的路由功能以支持客户端接入和骨干业务中继, 通常都有直流供电, 能量供应充足;客户端可以是固定或移动的节点, 能量有限, 随着能量的消耗节点会失效。 2 无线Mesh网络路由协议分类 对于给定的源节点与目的节点, 路由协议提供将数据包传送到目的节点的一条或多条网络路径。路由协议计算这样的路径以达到诸如最小化时延、最大化数据速率、最小化路径长度等目标。WMN路由协议可以分为两类, 即按需路由和主动路由。根据数据包沿路径传输的方法, 主动路由可以进一步细分为源路由和逐跳路由。 2.1 按需路由或叫被动路由最初是源于ad hoc网络的, 只有当源节点真正需要向目的节点发送包时才在源节点和目的节点之间创建一条路由。需要进行网络范围内的洪泛来发现路由。对于ad hoc网络, 由于节点的移动性会导致链路的频繁断开, 基于洪泛的路由发现能提供很高的网络连通性和相对低的消息开销。但是在WMN中, 由于节点的静态特性, 链路通常有更长的期望生存期, 因为链路断开的频率远比数据流到达的频率低, 基于洪泛的路由发现是冗余的并且控制消息开销大。因此, 按需路由通常不具扩展性或说不适合WMN。 2.2 主动路由中, 每个节点维护包含到网络中任何其他节点的路由信息的一张或多张表。 所有节点更新这些表来维持对网络一致和最新的认识。当网络拓扑改变时, 节点在整个网络中传播更新消息以维护整个网络最新的路由信息。源路由对中继节点压力最小, 因为源节点计算数据流的路由并把数据流的整条路径放到包头中, 中间节点只需要根据包头中的路径中继包即可。但是考虑到WMN中数据包的尺寸通常很小以应对无线信道的高误码率, 把整个路径放到包头中可能会产生高昂的消息开销。 逐跳路由中, 每个节点保持一张路由表指出到网络中其他节点的路由的下一跳。对于去往目的节点的数据包, 它只需要承载目的节点的地址, 中间节点只根据目的节点的地址来转发包。由于转发机制比较简单, 而且消息开销小, 逐跳路由在有线网络中占据主导。同样的理由使逐跳路由最适合WMN, 但逐跳路由必须谨慎设计以保证无回环包转发。 3 无线Mesh网络路由协议设计面临的挑战 3.1 无线Mesh网络路由协议设计面临的挑战 WMN路由协议的设计面临诸多挑战, 具体包括: (1) 时变信道及由此导致的可变丢包。无线链路受长短期衰落影响, 导致不同时间尺度上丢包的变化。当通信节点之间的距离很大或环境中的障碍物较多时, 链路丢包是很高的, 路由协议应准确捕捉这种时变丢包。 (2) 数据包传输速率。数据包的传输速率或数据速率可能不同, 取决于底层的物理层技术。而且当使用自适应速率控制时, 数据速率也会随链路损耗特性而变化, 如何准确的测量数据速率是路由协议面临的一个难题。 (3) 干扰。运行在非授权频段的无线链路受两种干扰, 即不可控干扰和可控干扰。不可控干扰来自于网络外部使用相同频带的非协作实体。可控干扰来自于网络内部, 网络中一条链路上的传输会干扰相邻链路的传输。这种干扰取决于诸如网络拓扑、相邻链路上的业务等因素。 3.2 路由协议需要考虑的参数 WMN多个网络参数都会影响到路由协议的性能, 在设计路由协议时要予以考虑, 具体的参数包括: (1) 路径长度:路由上的每跳都会引入额外的时延和潜在的丢包, 长路径通常会增加端到端时延、减小流的吞吐量。因此路由协议应选择路径长度相对较小的路由。 (2) 链路容量。两个相邻节点之间的最大传输速率与两个节点间的物理距离直接相关。通常随着节点间物理距离的增加, 信道质量会下降。由于现在的无线网卡可以根据信道质量通过改变调制方式来调整传输速率, 因此链路容量会随节点间物理距离的增加而降低。路由协议应尽量选择容量高的链路, 保证数据的快速高效的传递。 (3) 丢包率。数据包传输过程中丢包越多, 则目的节点接收到的数据量越少, 数据传输的效率越低。为实现有效通信, 路由协议应尽量选择丢包率低的路由进行数据包的传输。 (4) 干扰。干扰增加了路径上每个节点处的带宽消耗, 引起流的吞吐量急剧下降, 每跳的时延随数据流经过的跳数的增加而急剧增大。 这些影响路由性能的参数在设计路由协议时都需要予以充分的考虑, 以使得所设计的路由协议具有高性能。 4 结论 作为一种高带宽无线组网方式, WMN近年来受到了学术界和业界的广泛关注, 它是构建诸如物联网等很多新兴网络的关键组网类型, 广泛应用于会议、灾难救助等临时组网环境, 也可以实现用户接入Internet获取网络服务。路由协议的设计对WMN网络性能至关重要, 能够显著影响WMN可达的吞吐量。本文列举了WMN中路由协议的类型, 分析路由协议设计面临的挑战和路由协议需要考虑的网络参数, 能够为路由协议的设计提供参考, 促进WMN路由协议的不断演进和提升。 参考文献 [1]李茜, 刘经纬, 周雅楠, 韩仲华.基于IEEE 802.11s的无线Mesh网络路由协议研究[J].现代电子技术, 2013, 36 (23) :36-40. [2]符云清, 王嵩健, 吴中福.基于链路状态加权的无线Mesh网络路由协议[J].计算机研究与发展, 2009, 46 (1) :137-143. 计算机网络通信技术已成为时代快速发展的重要推动力量, 计算机网络相关技术对于社会的促进作用也十分显著。通过在高校设置计算机网络通用技术课程, 丰富电气信息类及计算机类专业大学生的课程体系设置, 是高校计算机网络通信技术教育与普及的关键。当前, 高校对于计算机网络通信协议等相关内容的课程, 主要是通过课堂教学、多媒体课件等方式进行的, 大学生一方面被动地接受极为抽象的网络知识, 另一方面使得他们动手实践能力缺乏相应的训练, 这样造成了高校计算机网络协议课程教育在知识的深化和实践能力的培养方面较为不足, 更容易使得学生对于计算机网络知识学习兴趣不浓、理解不深、掌握不足, 对于教学效果的提高极为不利。 通过网络协议仿真教学系统, 可以有效培养计算机网络信息技术人才, 而计算机网络通信技术属于高新技术领域, 也迫切需要一种高效率的人才培养系统。各国实践证明, 仿真培训系统对于学生技能保持度最高且其培训效果最佳, 因此, 网络协议仿真教学系统作为计算机网络实验教学平台便应运而生, 这对于改变计算机网络协议教学现状具有显著成效。 2 网络协议仿真教学系统设计的思路 针对高校计算机网络协议知识教育而打造的网络协议仿真教学系统, 是通过仿真的方式解决以往培训效率低、知识技能保持较差等不足的。但是, 若要构建计算机网络协议仿真教学系统, 需深入了解计算机网络协议构架, 全面掌握当前计算机网络协议发展状况, 挖掘学生对于网络协议知识教学的真正需求。具体设计思路如下: 首先, 保证网络协议仿真教学系统是作为一个独立的实验教学课程体系在运营的, 通过仿真平台及仿真系统教学课程的设置, 是学生从被动的接受知识变为主动探索知识领域, 形成一个“认知—熟练—精通”的过程。 其次, 从计算机网络协议基础知识着手, 通过仿真分析仪而构建一个通信双方互通的网络平台, 以实现对网络通信环境的仿真, 真正实现实验教学的目的。 第三, 目前国内高校的网络通信知识传授仍以教师为主体, 课堂教学、书本教学仍是主要授课形式, 但学生作为教学主体的另一方, 除接收知识外更应主动实践、积极思考, 这正是当前计算机网络教学中所不足的。通过网络协议仿真教学系统, 将理论与实践统一于仿真平台上, 一方面学生能够习得软件开发等相关知识, 另一方面能够真实模拟网络故障等内容, 有助于学生拓展性思维的培养。 3 网络协议仿真教学系统的组成 网络协议仿真教学系统主要用于完成TCP/IP协议族的重要协议课程实验教学任务, 因此其系统组成部分主要有:硬件系统 (主控设备、数据采集器) 、软件系统 (网络协议仿真编辑器、网络协议分析器) 、教学课本教材、仿真教学课件、培训评估系统等构成, 同时, 其系统接口具有良好的拓展性, 能够根据教学需求进行灵活配置。 主控设备具有为网络应用层、网络连接服务对局域网进行数据流向控制、数据桥接与路由等功能, 是整个仿真教学系统的中枢。 通过数据采集器, 仿真教学系统能够顺利采集链路信息, 并可以实现采集单击或子网信息的目的。 网络协议仿真编辑器主要是实现网络协议仿真编辑功能的, 该功能由数据包编辑器、数据包发送器和TCP连接客户端协同完成。它所具备的单帧编辑功能和数据帧序列编辑功能, 能够因应网络协议层次关系, 编辑单个数据帧, 使得填写的数据顺利进入各层次协议的首部。可以说, 单数据帧序列模拟某项完整的网络行为, 发送多个仿真数据帧;数据包发送器按时序完成发送数据包;TCP连接客户端主要完成仿真编辑SMTP、POP3、FTP、HTTP等协议, 并顺利实现与主控设备的直接通信。 网络协议分析器能够实现对网络协议的解析功能, 通过对原始网络数据的铺货、解码、显示及过滤IP地址, 最终实现解析效果。 4 网络协议仿真教学系统的课程设置 根据计算机网络教学大纲, 结合教学实践需求, 网络协议仿真教学系统的课程设置应较为全面系统地覆盖计算机网络教学内容, 并应能最大程度地满足高校对网络基础教学的需要。变传统“师傅带徒弟”的形式为学生作为教学实践的主体:学生主动动手完成实验课程, 对教学过程中对所学的知识点进行主动的消化和理解;教师仅针对知识点进行导入、讲解和指导, 同时对实验中所遇到新问题或新发现进行汇总并保存, 以便学生随时查阅了解;学生在做实验时遇到的不同问题, 教师应做出作具体讲解, 并及时总结实验中存在的每一个问题, 积极组织学生讨论与本实验相关的内容。 具体教学课程内容设置包括: (1) 通过仿真教学系统, 使学生全面了解以太网数据帧的构成和MAC地址的作用, 并习得如何使用数据包编辑器对MAC地址、以太网数据帧MAC首部进行分析和编辑。 (2) 在学生理解和掌握IP地址与MAC地址的对应关系的基础上, 习得利用APP协议进行协议程序编写的技能。 (3) 通过网络协议仿真教学系统, 教师全面讲解IP地址的分类、数据包格式、长度及字段等基础知识, 随后掌握利用子网掩码确定IP地址的网络号、子网号和主机号, 进而计算IP校验。 (4) 在学生掌握ICMP协议的基本作用与报文格式之后, 通过学生实验理解ICMP协议与IP协议的封装关系, 进而学会对各种响应信息进行出错分析的方法。 (5) 通过UDP协议通信过程的教授, 习得计算UDP校验和的方法, 应用C语言与WinSock2对网络程序进行设计。 (6) 教师分析TCP协议的建立和三次握手的过程, 学生学会设计TCP校验和的方法。 (7) 在之前掌握UDP协议及TCP协议相关知识的基础上, 进一步掌握SOCKET编程的方法, 对无连接的以及面向连接的网络程序进行设计。 (8) 理解SNMP协议的作用与格式、SNMP与UDP的关系。 (9、在TCP协议相关知识的基础上, 进一步传授HTTP协议的格式及通信过程, 从而为实现HTTP协议程序设计奠定基础。 (10、针对互联网共享资源的知识, 举例说明windows网络应用例证, 进而帮助学生理解CIFS协议、WINS协议以及SMB协议的工作原理。 (11) 为达到仿真电子邮件程序设计的过程, 为学生设置TELNET协议、POP协议、SMTP协议的知识内容部分。 (12) 在期末, 根据前期所传授的知识, 教师进行融会贯通及树立, 最终在网络协议仿真教学平台上, 进行综合性实验—网络流量监测、网络性能诊断、网络常见故障分析等实践课程。 综上所述, 网络协议仿真教学系统试针对计算机网络通信教学, 构建一套适合学校计算机网络教学应用的培训系统, 能够为教师和学生提供一个仿真的高效的直观的教学平台, 有利于教学效果的提升和知识技能的保持。 参考文献 [1]田斌, 袁先珍, 钟华, 张估林.基于校园网选课系统的设计与实现[J].理工高教研究, 2002, 21 (1) :105-106. [2]盘炜生.计算机实验教学示范中心建设的实践与探索[J].装备制造技术, 2007 (3) :105-107. [3]蔡群英, 黄镇建.搭建网络实验环境的探索与实践[J].计算机与数字工程, 2009, 37 (6) :195-197. 一、计算机网络课程教学中面临的挑战 《计算机网络》因其自身的课程特点, 在教授这门课程时, 学生和教师都面临很大的挑战。分析其原因, 主要表现在以下几个方面。 首先, 《计算机网络》课程知识结构庞杂, 涉及通信、计算机软件及硬件等专业知识, 又涉及协议设计方法、解决通信中容错、拥塞控制、资源标识、地址解析、路由等复杂的机制与算法, 很多计算机及相关专业学生认为学习起来有一定困难。 其次, 课程以TCP/IP体系结构为主线, 各层的协议数据单元格式和字段语义、协议交互语法抽象, 同步控制复杂, 使得协议定义及实现成为课程的教学重点和难点。在传统教学中, 教师通常只是使用自然语言解释协议工作机理, 即使引入一些图表, 但图表也很难将抽象的定义直观地呈现给学生, 学生只能通过抽象思维想象计算机处理的数据形式, 教师试图传递的网络工作“视图”与学生头脑中形成的“视图”不统一, 难以达到良好的课堂教学效果。 最后, 课程具有较强的实践性特点。实验是使学生得以深入理解课堂讲授内容直接和有效的手段, 也是培养学生动手能力、创新意识和能力的重要途径。但实际教学中, 受教师教学思路、实验设备环境等因素限制, 实验效果不佳, 不能很好地与理论教学相辅相成, 相互促进。 为改变《计算机网络》课程难学、难教的局面, 许多教师也尝试引入一些实验方法或工具, 以提高教学实验效果, 提升学生实践能力。例如, 为使学生理解协议的工作原理, 有些学校教师使用一些简单协议工作原理仿真原件, 或让同学编写实现简单通信或协议的主要功能, 学生通过操作简单交互界面, 体验网络协议工作机理。但这种在应用层通过软件模拟如丢包、检错、寻址等功能更使学生感到虚幻, 不能直观体验到真正协议的工作过程。我们之前也曾使用NS-2网络仿真器验证基本协议, 但掌握NS-2的OTCL语言对学生来说是入门的一大屏障, 此外, 基于NS-2所开展的仿真实验, 需要实验者具备丰富的网络协议理论基础和经验积累, 因此将NS-2平台应用于本科课程学习, 在实践中发现有较大难度[3]。《计算机网络》课程教学目标和课程学习能力培养要求, 学生需要理解数据通信及网络的基本概念、基本原理和基本设计方法, 重点理解和掌握计算机网络体系结构中不同层协议的工作原理和过程, 以及不同实体之间层协议交互的过程。作为一门理论与实践并重的课程, 通过课程学习和实验, 可以提高学生的动手能力和实践能力。 经过多年对《计算机网络》课程教学手段、方法的探索和总结, 引入有效工具提高抽象知识的表现、强化实践环节等可以有效提高课程教学效果。我们在课程教学中引入Wireshark网络分析软件, 精心设计教学内容, 教师由单纯的知识传授者向教学的设计者转化, 实现对协议结构的可视化分析。同时将部分教学内容直接搬进实验室讲授, 实现“做中学”, 从而提高了学生的学习兴趣, 有效提升了学生的实践能力。 二、基于Wireshark网络协议可视化分析 Wireshark是一款支持Windows、Linux的免费开源网络协议分析软件, 软件可以实时捕捉网络中的各种数据包, 进行协议分析, 软件操作界面友好, 通过图表显示功能直观反映协议数据结构和工作机理[4]。常规计算机网络课程中, 尽管引入了多媒体教学, 但图片加文字的形式, 不能动态、实时地表现网络实体间协议交互的状态, 理论知识难以有效展现, 教学手段不够丰富。即使制作动画演示, 但是互动性不足, 不能随着参数和场景的变化而调整结果, 虽然逼真但并不真实。使用Wireshark软件工具捕捉并分析各种数据包结构, 学生能够直观地看到MAC帧、IP数据报、TCP报文段等各种协议数据单元的结构和内容。可视化的图形本身就是降低理论抽象程度的最直接方法, 通过观察网络协议实体间交换的报文顺序, 可以大大提高学生对协议的理解, 提高其网络分析设计能力。通过分析具体报文和相应字段, 学生可以发现网络中的故障所在, 可培养其解决问题的能力和创新能力。 (一) 教学设计 在课程教学中, 引入Wireshark工具分析各层网络协议的数据单元结构和内容, 教学内容设计如表1 (见下页) 所示。 (二) Ethernet帧格式和ARP协议分析 分析相应层的协议内容时, 预先充分地设计教学过程是关键。以数据链路层的内容为例, 通过教学案例说明基于Wireshark协议分析教学方法。 经过网络体系结构中第二层“数据链路层”的学习, 学生具备的知识基础包括: (1) 以太网的MAC帧结构格式; (2) 以太网的MAC层硬件地址的概念; (3) 地址解析协议APR的作用。另外, 要求学生自己查阅并熟练学习使用ARP命令。 教学过程设计:通过“arp-d”命令清空ARP表的内容;启动Wireshark捕捉数据;向其他主机 (如:河南工业大学的万维网服务器“www.haut.edu.cn”) 发送Ping数据包;分析ARP协议执行的全过程。 为了便于将注意力锁定在Ethernet和ARP协议上, 将IP层及更高层协议屏蔽后, 捕捉的结果如图1所示。 课堂上, 通过工具捕捉, 设定若干问题, 引导学生了解和熟悉可视化界面中记录的数据帧内容, 并通过回答这些基本问题来深化对协议和原理的认识。例如对捕捉的ARP request报文, 问题设计如下。 1. 包含ARP请求报文的以太帧中, 源端MAC地址的16进制表示是什么? 2. 目的端的MAC地址是什么?是www.haut.edu.cn所在主机的MAC地址吗? (提示学生:不是) 这个目的地址对应某一具体设备吗?为什么? 3. Ethernet帧结构中, 帧首部的类型字段内容对应的十六进制数值是什么? 通过这些简单问题的引导, 学生直观地看到了以太网中帧结构的形式, 同时他们也总结说:发现帧结构没有想象中那么复杂, 字段精简且作用明确;看到捕捉的ARP数据包中目的地址“Broadcast”的表示, 及其对应的MAC地址数据为“ff:ff:ff:ff:ff:ff”, 对理解ARP协议的工作原理有种豁然开朗的感觉。 通过上述基本问题的回答, 学生理解了网络协议ARP的格式构成以及网络命令“apr”的使用。然后, 把问题进一步深入, 邀请学生思考并分析:问题1:如果允许手动添加一条ARP缓存的项目, 如何解决IP地址和MAC地址的对应。假设, 手动添加的条目中IP地址是正确的, 而MAC地址的信息是错误的, 会有什么样的结果?问题2:如果一个局域网观察到一台主机提示“IP地址, 如192.168.17.201冲突”, 如何解决?针对问题, 学生一方面分组热烈讨论, 一方面动手验证自己的结论, 在实践中训练和培养分析问题、解决问题的能力。教学环节结束后, 教师要求学生课余下载、阅读ARP的请求评论 (RFC 826) 。另外, 有同学提出疑问:“所学的ARP协议与听到的名词“ARP欺骗”有什么关系?并自行查阅资料研究。学生展开的这些课外学习环节, 进一步促进其自主学习能力的培养。 三、小结 本文是2010年度河南省高等学校精品课程“计算机网络技术”建设中的一项教改成果。借助Wireshark实现对各层协议透视和工作机理研究, 学生通过这种“可见的网络”、“可视的协议”, 直观地观察到协议实体间信息交换的序列和协议工作细节, 深化了对基本概念和基本原理的认识和理解。我校2008级学生受益本课程改革与建设, 3名同学共同设计的“物联网无线结点网络通信协议软件”在参加河南省青年创新软件设计大赛中获奖。 经过两年的教学实践, 遵循以上教学思路, 笔者进行了课程教学手段及方法的改革尝试。实践证明, 可视化分析在计算机网络课程的教学中发挥了重要作用, 分解了教学难度, 提高了教学效果, 实现了课程建设的目标, 为今后的教学改进提供了参考。 参考文献 [1]James F.Kurose, Keith W.Ross.计算机网络:自顶向下方法[M].陈鸣, 译.北京:机械工业出版社, 2009. [2]谢希仁.计算机网络[M].北京:电子工业出版社, 2008. [3]程立, 张浩军, 王珂.NS2在计算机网络课程实验教学中的应用研究[J].网络与信息, 2009, (10) :22-23.教学系统设计网络课程设计研究 篇6
多协议网络优化融合设计实践 篇7
无线Mesh网络路由协议设计 篇8
网络协议仿真教学系统的设计 篇9
网络协议课程设计 篇10