CN110728598A - 一种基于libpcap的计算机网络原理教学系统 - Google Patents
一种基于libpcap的计算机网络原理教学系统 Download PDFInfo
- Publication number
- CN110728598A CN110728598A CN201910894140.0A CN201910894140A CN110728598A CN 110728598 A CN110728598 A CN 110728598A CN 201910894140 A CN201910894140 A CN 201910894140A CN 110728598 A CN110728598 A CN 110728598A
- Authority
- CN
- China
- Prior art keywords
- data packet
- module
- data
- network
- layer module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 claims abstract description 37
- 238000011156 evaluation Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 25
- 239000012634 fragment Substances 0.000 claims description 21
- 238000013507 mapping Methods 0.000 claims description 19
- 238000004422 calculation algorithm Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 claims description 2
- 238000004458 analytical method Methods 0.000 abstract description 3
- 230000019771 cognition Effects 0.000 abstract description 2
- 238000000926 separation method Methods 0.000 abstract 1
- 238000000034 method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000002474 experimental method Methods 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000009432 framing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/20—Education
- G06Q50/205—Education administration or guidance
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Educational Technology (AREA)
- Tourism & Hospitality (AREA)
- Strategic Management (AREA)
- Educational Administration (AREA)
- Economics (AREA)
- Marketing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Signal Processing (AREA)
- Primary Health Care (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于libpcap的计算机网络原理教学系统,该系统能够帮助学生提高动手能力,理解典型的计算机网络协议,掌握计算机网络知识,进而提升计算机网络原理课程的教学质量。本发明所述系统包括驱动层模块,数据链路层模块,邻居子系统模块,网络层模块,路由子系统模块,传输层模块,Socket接口层模块。本发明结合抓包分析,要求学生自行编程实现典型计算机网络协议,以这种方式加深学生对计算机网络原理的理解和认识,同时提高学生的动手实践能力。本发明利用面向对象编程模型,采取典型协议分离的方式,降低了整体实现难度,让学生能够一步一步地实现单一协议,逐渐地掌握整个系统,从而掌握计算机网络原理。
Description
技术领域
本发明计算机网络技术和教育领域,更具体地,涉及一种基于libpcap的计算机网络原理教学系统。
背景技术
当代计算机技术发展迅猛,近年来,人们对云计算,大数据和网络安全的关注度居高不下,而这些技术的发展都离不开计算机网络技术的支撑。熟练地掌握计算机网络原理,是计算机科学与技术和与之专业相关的学生必须具备的能力,但计算机网络体系庞大,结构复杂,一直以来学生们都感觉计算机网络原理这门课程难以掌握。各高校对计算机网络课程虽有重视,增加了实验课时,但实际上大部分依然以理论教学为主,或只是做一些简单的网络通信程序,抓包分析实验,学生对知识的理解依然停留在基本的认识上。
培养具有高水平的计算机网络技术人才,是满足企业需求,未来社会信息化,网络空间安全的重要保障。要掌握好计算机网络原理,不仅需要熟悉关键知识点的每个细节,还要对整体结构有一定的把握。一些好的计算机网络原理教材会在每章最后一节给出实验练习,让学生亲自动手抓包分析,这种方式一般能加深学生宏观上的理解,但不够细致,也不够深入。
为此,需要提供一种计算机网络原理教学系统,既能针对关键知识点的细节,并且层层深入,又能在整体上前后贯穿,提高学生对计算机网络原理的理解和认识,同时提升计算机网络原理课程的教学质量。
发明内容
针对现有技术的缺陷,本发明的目的在于解决现有计算机网络课程教学,以理论教学为主,学生对知识的理解依然停留在基本的认识上,或者只做一些简单的网络通信程序或联系,不够细致,也不够深入的技术问题。
为实现上述目的,本发明提供一种基于libpcap的计算机网络原理教学系统,包括:驱动层模块、数据链路层模块、邻居子系统模块、网络层模块、路由子系统模块、传输层模块、Socket接口层模块以及评估模块;
所述驱动层模块,基于libpcap直接从网卡收发数据包,不经过操作系统网络子系统,将接收到的数据包交给数据链路层模块,或者将数据链路层待发送数据包进行发送;
所述数据链路层模块,根据接收到的数据包的帧类型,去掉数据链路层头部以后分发给网络层模块,或邻居子系统模块;对于待发送数据包,加上数据链路层头部信息并调用驱动层接口发送;
所述邻居子系统模块,向网络层提供发送接口,维护一个网络地址到硬件地址映射关系的缓存表和一个缓存数据包的待发送队列;
所述网络层模块,根据接收到的数据包目的网络地址是否为本机地址分别处理,当数据包为本机数据包,则若数据包为分片,重组后交由传输协议UDP或TCP处理,若数据包不是分片数据包,直接交由传输协议UDP或TCP处理;当数据包不是本机数据包,则对数据包通过路由子系统模块转发;
所述路由子系统模块,运行路由算法,保存路由表,根据数据包目的地址选择路由,决定下一跳地址;
所述传输层模块,收到数据包后,首先对数据进行完整性校验;发送数据包时,先添加传输层头部信息,再调用网络层接口进一步处理;
所述Socket接口层模块,作为协议栈和应用程序的桥梁,通过共享内存和信号的方式进行数据交互;
所述评估模块,用于接收用户发送的学习请求,并将与所述学习请求对应的驱动层模块、数据链路层模块、邻居子系统模块、网络层模块、路由子系统模块、传输层模块以及Socket接口层模块中的一个或多个模块删除,以及为用户分配相应资源,以便该资源接收用户编辑的指令以学习所删除的模块,当用户编辑学习完所删除的模块后,所述评估模块结合未删除的模块和用户编辑指令的过程评估整个系统的工作性能,结合整个系统的工作性能给出用户学习结果。
可选地,当评估模块将所述驱动层模块删除后,在评估模块分配的资源上,从libpcap收到的数据包根据接收的用户指令发送给数据链路层模块进一步处理;以及根据接收的用户指令,利用libpcap发送接口,将数据链路层待发送数据包转化为字节缓冲区作为参数,进行发送。
可选地,当评估模块将所述邻居子系统模块删除后,在评估模块分配的资源上,当发送数据包时,根据接收的用户指令,对于缓存表中已有的映射直接调用数据链路层接口发送该数据包;对于未找到映射的数据包,将其放入待发送队列,并发送一个ARP请求,当接收到回复时根据接收的用户指令添加该映射到缓存表,同时处理与该映射对应的待发送队列;根据接收的用户指令收到ARP请求的主机也对该映射进行缓存。
可选地,当评估模块将所述网络层模块删除后,在评估模块分配的资源上,根据接收的用户指令判断接收到的数据包目的网络地址是否为本机地址分别处理,若是本行地址,则进一步解析网络层头部,当数据包不是分片时,根据接收的用户的数据解析指令去掉网络头部后直接交由传输层协议UDP或TCP进一步处理,当数据包是分片时,根据接收用户设计数据存储指令添加该分片,如果此分片为最后一个分片,即可完成重组;若不是本机地址,则接收到的数据包为非本机数据包,根据接收的用户填充的路由子系统指令进一步处理,否则不处理。
可选地,当评估模块将所述网络层模块后,在评估模块分配的资源上,在发送数据包时,如果数据包大小超过MTU,则根据接收的用户指令对发送数据包进行分片,每个分片都有自己的头部;根据接收的用户指令对数据包添加网络层头部信息后,调用邻居子系统模块发送数据包。
可选地,所述传输层模块根据RFC标准实现用户数据报协议UDP和传输控制协议TCP,接收的用户指令必须依此标准。
可选地,所述Socket接口层模块包括协议栈Socket单元和应用程序Socket单元,接收的用户指令必须依此两部分的设计;
所述协议栈Socket单元和应用程序Socket单元各自拥有一块内存缓冲区,各个单元写数据时写入到对应的缓冲区,读数据时从对方的缓冲区读取;发送数据时先封装到约定的数据结构,再写入缓冲区,然后通过信号通知对方接收;接收数据时按照约定的数据结构对待读缓冲区数据进行解析,然后作进一步处理,完成接收。
可选地,其特征在于,所述数据链路层采用以太网帧类型,接收的用户指令必须依此标准。
可选地,该教学系统还包括:
用户账号登陆模块,用于接收用户登陆请求,并验证所登陆用户的身份是否合法,当用户身份合法时,授权该用户登陆成功,系统在云端分配相应的资源,提供标准协议栈环境和接口供用户测试,并记录该用户在评估模块的历史学习结果。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
本发明提供一种基于libpcap的计算机网络原理教学系统,向云端发送请求,由教学系统根据脚本分配资源并自动配置环境,用户编辑学习各个模块的协议,按照各个模块的标准要求进行编码学习,向教学系统编辑发送所学习模块的指令,以便补全整个系统,而评估模块可以结合预先存的该模块的标准协议指令以及系统的性能评估用户的学习结果,给出用户相关学习指导。通过提供完整的计算机网络协议栈,以及分离各典型协议的实现,在要求动手的基础上又降低了实现难度,有助于学生逐步地掌握各个协议,进而在整体上掌握计算机网络原理。
附图说明
图1为本发明实施例提供的基于libpcap的计算机网络原理教学系统整体结构示意图。
图2为本发明实施例提供的数据链路层模块结构示意图。
图3为本发明实施例提供的邻居子系统模块流程图。
图4为本发明实施例提供的网络层模块结构示意图。
图5为本发明实施例提供的传输层模块结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明主要解决的技术问题是针对计算机网络原理体系庞大,结构复杂等实际困难,提供一种针对典型协议和整体结构进行实验教学的方法。
为解决上述技术问题,本发明采用的技术方案是,提供一种基于libpcap的计算机网络原理教学系统和方法,所述方法包括以下步骤:构建驱动层,基于libpcap直接从网卡接收和发送数据包,封装接口以提供发送数据包功能,将接收到的数据包发往数据链路层;构建所述数据链路层,封装接口以提供发送数据帧功能,将接收到的数据帧发往邻居子系统或网络层;构建所述邻居子系统,封装接口以提供发送网络层报文功能,解析接收到的地址解析包将该映射缓存到地址映射表和处理待发送报文队列,所述待发送报文队列为所述网络层报文;构建所述网络层,封装接口以提供发送报文功能,分析接收到的报文进行路由转发或本机投递,即发往路由子系统或传输层;构建所述路由子系统,根据报文目的地址选择下一跳进行路由,调用邻居子系统发送接口发送报文;构建所述传输层,封装接口以提供发送用户数据功能,将接收到的用户数据发往Socket接口层,所述Socket接口层为协议栈与应用程序接口层;按照所述步骤构建形成的协议栈,为完整的计算机网络框架,选择所述任意步骤,或选择任意步骤中某一协议进行实现单独作为实验要求,正确完成该实验即恢复协议栈的完整。
所述系统包括:驱动层模块,作为libpcap的包装器,用于接收和发送数据包;数据链路层模块,用于成帧,计算循环冗余校验码,解析帧;邻居子系统模块,用于硬件地址和网络地址之间的转换,维护地址映射表及待发送报文队列;网络层模块,用于报文封装和解析报文,分片,重组;路由子系统模块,用于报文转发;传输层模块,用于网络传输结构的初始化,分用,复用,支持尽力传输服务和可靠传输服务;Socket接口层模块,用于协议栈和应用程序通信,提供数据接收和发送接口,参数控制接口。
在本发明另一实施例中,该数据链路层采用以太网帧类型。
在本发明另一实施例中,该协议栈和Socket接口层运行在不同进程,采用共享内存和信号的方式互相通信。
图1为本发明实施例提供的基于libpcap的计算机网络原理教学系统整体结构示意图,如图1所示,包括:驱动层模块、数据链路层模块、邻居子系统模块、网络层模块、路由子系统模块、传输层模块以及Socket接口层模块。
驱动层模块,基于libpcap直接从网卡收发数据包,不经过操作系统网络子系统,将接收到的数据包交给数据链路层模块,或者将数据链路层待发送数据包进行发送;
数据链路层模块,根据接收到的数据包的帧类型,去掉数据链路层头部以后分发给网络层模块,或邻居子系统模块;对于待发送数据包,加上数据链路层头部信息并调用驱动层接口发送;
邻居子系统模块,向网络层提供发送接口,维护一个网络地址到硬件地址映射关系的缓存表和一个缓存数据包的待发送队列;
网络层模块,根据接收到的数据包目的网络地址是否为本机地址分别处理,当数据包为本机数据包,则若数据包为分片,重组后交由传输协议UDP或TCP处理,若数据包不是分片数据包,直接交由传输协议UDP或TCP处理;当数据包不是本机数据包,则对数据包通过路由子系统模块转发;
路由子系统模块,运行路由算法,保存路由表,根据数据包目的地址选择路由,决定下一跳地址;
传输层模块,收到数据包后,首先对数据进行完整性校验;发送数据包时,先添加传输层头部信息,再调用网络层接口进一步处理;
Socket接口层模块,作为协议栈和应用程序的桥梁,通过共享内存和信号的方式进行数据交互。
另外:该教学系统还包括:评估模块和用户账号登陆模块;
评估模块,接收用户发送的学习请求,并将与学习请求对应的驱动层模块、数据链路层模块、邻居子系统模块、网络层模块、路由子系统模块、传输层模块以及Socket接口层模块中的一个或多个模块删除,以及为用户分配相应资源,以便该资源接收用户编辑的指令以学习所删除的模块,当用户编辑学习完所删除的模块后,所述评估模块结合未删除的模块和用户编辑指令的过程评估整个系统的工作性能,结合整个系统的工作性能给出用户学习结果。
用户账号登陆模块,接收用户登陆请求,并验证所登陆用户的身份是否合法,当用户身份合法时,授权该用户登陆成功,系统在云端分配相应的资源,提供标准协议栈环境和接口供用户测试,并记录该用户在评估模块的历史学习结果。
具体地,用户编辑学习各个模块的协议,按照各个模块的标准要求进行编码学习,向教学系统编辑发送所学习模块的指令,以便补全整个系统,而评估模块可以结合预先存的该模块的标准协议指令以及系统的性能评估用户的学习结果,给出用户相关学习指导。
具体地,Socket接口层模块的协议栈Socket单元和应用程序Socket单元分别运行在不同进程,通过共享内存和信号的方式达到应用程序和协议栈互相通信的目的。共享内存分成两块:buffer1和buffer2,其中,buffer1由协议栈Socket单元写入,应用程序Socket单元读取,buffer2由应用程序Socket单元写入,协议栈Socket单元读取。通过信号保持同步。
在云端实例中,用户不需要配置实验环境,只需要向系统申请资源得到ip并访问。在一个具体的本地实例中,本发明提供的基于libpcap的计算机网络教学系统通过如下步骤可以模拟云端实验环境:
第一步,安装虚拟机及操作系统。在宿主机上安装VirtualBox 4.3虚拟机,同时下载Debian 8操作系统镜像,创建虚拟机VMA,载入下载的系统镜像进行虚拟机操作系统的安装。再次创建新的虚拟机VMB,并用下载的操作系统镜像进行安装。此时拥有虚拟机VMA和虚拟机VMB。在两个虚拟机上均安装构建工具CMake,编译工具G++,本系统依赖库libpcap。或者直接向云端发送请求,由教学系统根据脚本分配资源并自动配置环境。
第二步,配置虚拟机内部网络。创建VirtualBox的内部网络intnet,启动VirtualBox的DHCP服务器,并将新创建的两个虚拟机设置为内网模式,加入内部网络intnet。确保虚拟机之间可以互相ping通。可选的,关闭网络子系统ARP服务。在云端环境下,有网络连接时,用户可以直接访问云端对应的接口。
第三步,实现驱动层模块。利用libpcap封装为所述系统的Driver类,包括利用libpcap提供的pcap_findalldevs接口,检测系统可用的网卡设备,并取得其硬件和网络地址,选择第一个处于活跃状态的以太网卡设备作为默认收发设备;利用pcap_inject以提供发送接口;开启新线程,利用pcap_lookup以提供接收接口。
第四步,实现数据链路层模块,如图2所示,包括发送接口,将从所述网络层模块接收到的数据成帧,然后调用Driver发送接口发送数据包;接收接口,从Driver接收数据包,若非以太网帧则直接作丢弃处理,否则对数据包进行解析操作,根据该帧的以太网帧类型,将数据包交给相应模块进一步处理,如ARP包将分发给邻居子系统模块,IP包将分发给网络层模块。
第五步,实现邻居子系统模块。当网络层模块进行数据包的发送时,在交给数据链路层模块之前,还需要获取网络地址对应的硬件地址,邻居子系统模块即完成此工作。如图3所示,网络层模块调用邻居子系统模块发送数据包,若邻居子系统模块在其缓存表中找到了对应网络地址与硬件地址的映射,则使用该地址直接调用数据链路层模块进行发送;若未找到,则需要缓存该数据包到待发送队列,并发送ARP请求。当ARP响应到达时,添加该映射到缓存表,并处理对应的待发送队列,将待发送数据包逐一发送。对于接收到ARP请求的情况,也对该映射进行缓存。对于下一个同样目的地址的数据包到达时,若对应ARP请求还未收到ARP响应,不会再次发送ARP请求。
第六步,实现网络层模块。如图4所示,对于发送,当网络层模块有待发送数据包时,首先检测数据包大小是否超过网卡设备的MTU,若没有超过,则添加网络层头部,然后调用邻居子系统模块进行发送;若数据包大小超过MTU,则需要进行分片处理,同一报文的分片id保持一致,分片相对偏移offset依据已分片的大小计算,分片信息存放在每个分片的网络层头部相应字段;对于接收,网络层模块从数据链路层模块接收到数据包,根据数据包目的网络地址分别进行处理,如果是发往本机的数据包,则根据网络层头部分片偏移offset及IP_MF标志判断是否为分片,若两个标志均为零则不是分片,解包后交由传输层模块对应协议进一步处理,否则是分片,缓存该分片到重组队列,当所有分片正确无误到达时,即可恢复完整数据包的重组,解包后交由传输层模块对应协议进一步处理,如果不是发往本机的数据包,同时配置了支持路由转发功能,则调用路由子系统模块进行非本地数据包的转发,若未配置路由转发则丢弃该数据包。
第七步,实现传输层模块。如图5所示,主要实现两种协议,简单数据报协议UDP和可靠传输协议TCP。对于UDP协议,发送数据包时添加UDP头部,其校验和字段需根据UDP伪首部计算,调用网络层模块提供的发送接口进行发送,UDP不进行分片处理,采用网络层模块的分片处理方式;从网络层模块接收到数据包时,计算校验和以判定数据是否完整一致,然后去掉头部交给协议层Socket进一步处理。对于TCP协议,发送数据包时添加TCP头部,其校验和字段需根据TCP伪首部计算,调用网络层模块提供的发送接口进行发送。与UDP协议不同,TCP协议为了保证数据的可靠传输,在发送数据之前需要进行连接,进行三次握手以确保连接正确建立,数据传输完毕后进行四次挥手以确保连接正常关闭;在数据传输过程中,通过捎带确认和超时重传机制保证数据的可靠性,通过发送窗口和接收窗口达到拥塞控制和流量控制的目的。
第八步,实现Socket接口层模块,包括socket()、bind()、listen()、accept()、sendto()、recvfrom()、send()、recv()、close()在内的标准socket接口函数,完成应用进程数据发送和接收。Socket接口层模块包括协议栈Socket单元和应用程序Socket单元,分别运行在不同进程,通过共享内存和信号的方式达到应用程序和协议栈互相通信的目的。共享内存分成两块:buffer1和buffer2,其中,buffer1由协议栈Socket单元写入,应用程序Socket单元读取,buffer2由应用程序Socket单元写入,协议栈Socket单元读取。通过信号保持同步,Socket创建,监听,关闭等请求使用SIGUSR1信号,数据发送和接收使用SIGUSR2信号,协议栈Socket单元总是向应用程序Socket单元回复从应用程序Socket单元收到的相同信号。
第九步,分别使用操作系统的网络子系统和本发明实现的网络系统编写网络通信程序datetimedemo和echodemo。其中,datetimedemo采用传输层UDP协议,客户端发送任意内容,如“time”,服务端回复当前时间;echodemo采用传输层TCP协议,客户端发送任意内容,如“hello”,服务端回复相同内容,“hello”。
第十步,以正确实现协议层中典型协议之一作为实验要求,保持协议层中其他模块不变,形成计算机网络原理教学实验之一。对各典型协议均执行此步骤,形成计算机网络原理教学的所有实验。
本发明从实际例子出发,通过提供完整的计算机网络协议层,和分离各典型协议的实现,在要求动手的基础上又降低了实现难度,有助于学生逐步地掌握各个协议,进而在整体上掌握计算机网络原理。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于libpcap的计算机网络原理教学系统,其特征在于,包括:驱动层模块、数据链路层模块、邻居子系统模块、网络层模块、路由子系统模块、传输层模块、Socket接口层模块以及评估模块;
所述驱动层模块,基于libpcap直接从网卡收发数据包,不经过操作系统网络子系统,将接收到的数据包交给数据链路层模块,或者将数据链路层待发送数据包进行发送;
所述数据链路层模块,根据接收到的数据包的帧类型,去掉数据链路层头部以后分发给网络层模块,或邻居子系统模块;对于待发送数据包,加上数据链路层头部信息并调用驱动层接口发送;
所述邻居子系统模块,向网络层提供发送接口,维护一个网络地址到硬件地址映射关系的缓存表和一个缓存数据包的待发送队列;
所述网络层模块,根据接收到的数据包目的网络地址是否为本机地址分别处理,当数据包为本机数据包,则若数据包为分片,重组后交由传输协议UDP或TCP处理,若数据包不是分片数据包,直接交由传输协议UDP或TCP处理;当数据包不是本机数据包,则对数据包通过路由子系统模块转发;
所述路由子系统模块,运行路由算法,保存路由表,根据数据包目的地址选择路由,决定下一跳地址;
所述传输层模块,收到数据包后,首先对数据进行完整性校验;发送数据包时,先添加传输层头部信息,再调用网络层接口进一步处理;
所述Socket接口层模块,作为协议栈和应用程序的桥梁,通过共享内存和信号的方式进行数据交互;
所述评估模块,用于接收用户发送的学习请求,并将与所述学习请求对应的驱动层模块、数据链路层模块、邻居子系统模块、网络层模块、路由子系统模块、传输层模块以及Socket接口层模块中的一个或多个模块删除,以及为用户分配相应资源,以便该资源接收用户编辑的指令以学习所删除的模块,当用户编辑学习完所删除的模块后,所述评估模块结合未删除的模块和用户编辑指令的过程评估整个系统的工作性能,结合整个系统的工作性能给出用户学习结果。
2.根据权利要求1所述的基于libpcap的计算机网络原理教学系统,其特征在于,当评估模块将所述驱动层模块删除后,在评估模块分配的资源上,从libpcap收到的数据包根据接收的用户指令发送给数据链路层模块进一步处理;以及根据接收的用户指令,利用libpcap发送接口,将数据链路层待发送数据包转化为字节缓冲区作为参数,进行发送。
3.根据权利要求1所述的基于libpcap的计算机网络原理教学系统,其特征在于,当评估模块将所述邻居子系统模块删除后,在评估模块分配的资源上,当发送数据包时,根据接收的用户指令,对于缓存表中已有的映射直接调用数据链路层接口发送该数据包;对于未找到映射的数据包,将其放入待发送队列,并发送一个ARP请求,当接收到回复时根据接收的用户指令添加该映射到缓存表,同时处理与该映射对应的待发送队列;根据接收的用户指令收到ARP请求的主机也对该映射进行缓存。
4.根据权利要求1所述的基于libpcap的计算机网络原理教学系统,其特征在于,当评估模块将所述网络层模块删除后,在评估模块分配的资源上,根据接收的用户指令判断接收到的数据包目的网络地址是否为本机地址分别处理,若是本行地址,则进一步解析网络层头部,当数据包不是分片时,根据接收的用户的数据解析指令去掉网络头部后直接交由传输层协议UDP或TCP进一步处理,当数据包是分片时,根据接收用户设计数据存储指令添加该分片,如果此分片为最后一个分片,即可完成重组;若不是本机地址,则接收到的数据包为非本机数据包,根据接收的用户填充的路由子系统指令进一步处理,否则不处理。
5.根据权利要求4所述的基于libpcap的计算机网络原理教学系统,其特征在于,当评估模块将所述网络层模块后,在评估模块分配的资源上,在发送数据包时,如果数据包大小超过MTU,则根据接收的用户指令对发送数据包进行分片,每个分片都有自己的头部;根据接收的用户指令对数据包添加网络层头部信息后,调用邻居子系统模块发送数据包。
6.根据权利要求1所述的基于libpcap的计算机网络原理教学系统,其特征在于,所述传输层模块根据RFC标准实现用户数据报协议UDP和传输控制协议TCP,接收的用户指令必须依此标准。
7.根据权利要求1所述的基于libpcap的计算机网络原理教学系统,其特征在于,所述Socket接口层模块包括协议栈Socket单元和应用程序Socket单元,接收的用户指令必须依此两部分的设计;
所述协议栈Socket单元和应用程序Socket单元各自拥有一块内存缓冲区,各个单元写数据时写入到对应的缓冲区,读数据时从对方的缓冲区读取;发送数据时先封装到约定的数据结构,再写入缓冲区,然后通过信号通知对方接收;接收数据时按照约定的数据结构对待读缓冲区数据进行解析,然后作进一步处理,完成接收。
8.根据权利要求1至7任一项所述的基于libpcap的计算机网络原理教学系统,其特征在于,所述数据链路层采用以太网帧类型,接收的用户指令必须依此标准。
9.根据权利要求1至7任一项所述的基于libpcap的计算机网络原理教学系统,还包括:
用户账号登陆模块,用于接收用户登陆请求,并验证所登陆用户的身份是否合法,当用户身份合法时,授权该用户登陆成功,系统在云端分配相应的资源,提供标准协议栈环境和接口供用户测试,并记录该用户在评估模块的历史学习结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910894140.0A CN110728598A (zh) | 2019-09-20 | 2019-09-20 | 一种基于libpcap的计算机网络原理教学系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910894140.0A CN110728598A (zh) | 2019-09-20 | 2019-09-20 | 一种基于libpcap的计算机网络原理教学系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110728598A true CN110728598A (zh) | 2020-01-24 |
Family
ID=69219321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910894140.0A Pending CN110728598A (zh) | 2019-09-20 | 2019-09-20 | 一种基于libpcap的计算机网络原理教学系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110728598A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111884935A (zh) * | 2020-07-20 | 2020-11-03 | 北京交通大学 | 应用于天地一体化网络的精简协议栈路由和邻居发现方法 |
CN113342712A (zh) * | 2021-05-26 | 2021-09-03 | 博依特(广州)工业互联网有限公司 | 一种边缘计算机网关前端系统 |
CN115378921A (zh) * | 2022-08-05 | 2022-11-22 | 科东(广州)软件科技有限公司 | 基于raw的网络构架及数据传输方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101465863A (zh) * | 2009-01-14 | 2009-06-24 | 北京航空航天大学 | 一种内核虚拟机环境下高效网络i/o的实现方法 |
CN107612733A (zh) * | 2017-09-19 | 2018-01-19 | 杭州安恒信息技术有限公司 | 一种基于工控系统的网络审计和监测方法及其系统 |
-
2019
- 2019-09-20 CN CN201910894140.0A patent/CN110728598A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101465863A (zh) * | 2009-01-14 | 2009-06-24 | 北京航空航天大学 | 一种内核虚拟机环境下高效网络i/o的实现方法 |
CN107612733A (zh) * | 2017-09-19 | 2018-01-19 | 杭州安恒信息技术有限公司 | 一种基于工控系统的网络审计和监测方法及其系统 |
Non-Patent Citations (1)
Title |
---|
龚必东: "基于Libpcap的计算机网络协议栈教学系统设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 社会科学Ⅱ辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111884935A (zh) * | 2020-07-20 | 2020-11-03 | 北京交通大学 | 应用于天地一体化网络的精简协议栈路由和邻居发现方法 |
CN113342712A (zh) * | 2021-05-26 | 2021-09-03 | 博依特(广州)工业互联网有限公司 | 一种边缘计算机网关前端系统 |
CN115378921A (zh) * | 2022-08-05 | 2022-11-22 | 科东(广州)软件科技有限公司 | 基于raw的网络构架及数据传输方法 |
CN115378921B (zh) * | 2022-08-05 | 2023-07-07 | 科东(广州)软件科技有限公司 | 基于raw的网络构架及数据传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105704091B (zh) | 一种基于ssh协议的会话解析方法及系统 | |
US8250643B2 (en) | Communication device, communication system, communication method, and program | |
CN110728598A (zh) | 一种基于libpcap的计算机网络原理教学系统 | |
JP4764737B2 (ja) | ネットワークシステム、端末およびゲートウェイ装置 | |
CN111131037A (zh) | 基于虚拟网关的数据传输方法、装置、介质与电子设备 | |
CN107770072B (zh) | 一种发送和接收报文的方法和设备 | |
US20140006584A1 (en) | Method for establishing channel for managing ipv4 terminal and network gateway | |
US7269661B2 (en) | Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet | |
CN111988223B (zh) | 虚拟机迁移方法与网络系统 | |
US20190097840A1 (en) | Method, apparatus, and device for pptp vpn based access acceleration | |
US20150373135A1 (en) | Wide area network optimization | |
CN106961487B (zh) | 虚拟机热迁移过程中的数据流自适应调整系统及调整方法 | |
CN104796338A (zh) | 虚拟机迁移方法及装置 | |
WO2021088813A1 (zh) | 报文封装方法及装置、报文解封装方法及装置 | |
CN115189920A (zh) | 跨网络域通信方法和相关装置 | |
CN113905109B (zh) | 零信任网络数据传输方法、装置、设备及计算机存储介质 | |
CN113596017B (zh) | 一种协议解析方法、装置、软网关和存储介质 | |
CN114095587A (zh) | 一种客户端、报文发送、接收方法、设备及存储介质 | |
US20120300776A1 (en) | Method for creating virtual link, communication network element, and ethernet network system | |
CN106130863B (zh) | 局域网协议报文的传送方法、装置以及系统 | |
WO2016070679A1 (zh) | 用于同步网络状态的方法及装置 | |
CN113472625B (zh) | 基于移动互联网的透明桥接方法、系统、设备及存储介质 | |
CN100592265C (zh) | 路由分组通信量来确保通信安全的方法、系统和计算机系统 | |
CN110620783B (zh) | 一种基于nat内网穿透的互联网络串口透传通信方法 | |
CN114598675A (zh) | 基于arp实现主机阻断的控制方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200124 |
|
RJ01 | Rejection of invention patent application after publication |