计网实验报告

合集下载

计算机实验报告心得(通用3篇)

计算机实验报告心得(通用3篇)

计算机实验报告心得(通用3篇)计算机实验报告心得篇1标题:计算机实验报告心得日期:____年__月__日---尊敬的读者,在这次实验中,我深入理解了计算机编程的复杂性和重要性。

通过编写代码,我体验到了计算机解决问题的直接和直接的影响。

实验的主题是“设计并实现一个简单的文本编辑器”。

这个实验让我有机会全面地了解软件开发的流程,包括需求分析、设计、编码、测试等步骤。

我不仅学习了如何使用现有的库和工具,还锻炼了自己的团队协作和解决问题的能力。

我在这个实验中遇到了一些挑战,如理解复杂的需求规格,设计优雅的界面,以及实现过程中的错误处理。

每一次的困扰都促使我深入思考,寻找解决方案,从而让我更深入地理解了计算机编程的本质。

实验结束后,我对计算机科学有了更深的理解。

我认识到,计算机科学不仅仅是编程,还包括了设计、结构、算法等多个方面。

同时,我也体验到了团队合作的重要性,每个人都需要在团队中发挥自己的专长,共同完成一个任务。

总的来说,这次实验让我有了许多宝贵的收获。

我不仅提高了自己的编程技能,还学会了如何更好地与团队成员协作。

我深刻理解了计算机科学在现实世界中的重要作用,并期待在未来的学习和工作中应用这些知识和经验。

再次感谢您给我这次学习的机会。

我期待在未来的日子里继续提升我的技能,为计算机科学的发展做出贡献。

---实验报告完成后,我反思了自己在实验中的表现,发现我在一些方面还有待提高,比如对代码的理解和阅读速度,以及解决问题的效率等。

同时,我也意识到了团队合作的重要性,我将在未来的学习和工作中更好地与团队成员协作,共同完成任务。

此外,我也明白了实验的重要性。

实验不仅是对理论知识的检验,更是对自我能力和解决问题的能力的锻炼。

通过实验,我能够更好地理解理论知识,并将其应用到实际中。

总的来说,这次实验让我有了许多宝贵的收获。

我不仅提高了自己的编程技能,还学会了如何更好地与团队成员协作。

我深刻理解了计算机科学在现实世界中的重要作用,并期待在未来的学习和工作中应用这些知识和经验。

北邮计算计网络课程设计

北邮计算计网络课程设计

北邮计算计网络课程设计一、课程目标知识目标:1. 让学生掌握计算机网络的基本概念,包括网络结构、协议和设备;2. 了解数据通信的基本原理,如信号传输、编码和解码;3. 学会使用网络模型分析实际网络问题,理解不同层次的网络协议及其功能;4. 掌握TCP/IP协议簇,了解互联网的工作原理。

技能目标:1. 培养学生运用网络知识解决实际问题的能力,如网络故障排查、网络性能优化;2. 提高学生的网络设备配置与调试技能,熟悉常见网络设备的使用方法;3. 培养学生进行网络编程和网络安全防护的能力,掌握相关技术和工具。

情感态度价值观目标:1. 培养学生对计算机网络学科的热爱和兴趣,激发学生自主学习、探究网络的欲望;2. 培养学生良好的团队合作精神,提高沟通协调能力;3. 增强学生的网络安全意识,树立正确的网络道德观念。

课程性质:本课程为计算机网络专业基础课,旨在帮助学生建立扎实的网络知识体系,提高实际操作能力。

学生特点:北邮计算机网络课程面向大学二年级学生,学生具备一定的计算机基础,但网络知识相对薄弱。

教学要求:结合学生特点,课程设计应注重理论与实践相结合,强化实操环节,使学生能够将所学知识应用于实际网络环境中。

通过课程学习,使学生达到预定的知识、技能和情感态度价值观目标,为后续相关课程打下坚实基础。

二、教学内容1. 计算机网络基本概念:介绍网络结构、协议、设备等基本知识,对应教材第一章内容。

- 网络层次模型- 网络协议与标准- 网络设备与分类2. 数据通信基础:讲解信号传输、编码解码等原理,对应教材第二章内容。

- 数据通信原理- 信号传输方式- 编码与解码技术3. 网络模型与协议:分析OSI七层模型、TCP/IP模型,学习各层协议及其功能,对应教材第三章内容。

- OSI七层模型- TCP/IP四层模型- 常见网络协议及其功能4. TCP/IP协议簇:深入了解互联网工作原理,学习TCP、IP、UDP等协议,对应教材第四章内容。

信息系统实验报告6篇

信息系统实验报告6篇

信息系统实验报告6篇(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作报告、合同协议、心得体会、演讲致辞、规章制度、岗位职责、操作规程、计划书、祝福语、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample texts, such as work reports, contract agreements, insights, speeches, rules and regulations, job responsibilities, operating procedures, plans, blessings, and other sample texts. If you want to learn about different sample formats and writing methods, please pay attention!信息系统实验报告6篇【第1篇】会计信息系统实习报告范文:13年会计信息系统实验报告成我们的配合不是很默契,有时候我们感到很盲目,不知道自己应该干什么。

计网实验报告3-路由器配置

计网实验报告3-路由器配置

计算机网络实验课程实验报告
实验名称路由器配置
一、实验目的
1、掌握路由器的基本配置及常用命令;
2、理解网络地址规划的原则及方法。

二、实验所用仪器(或实验环境)
路由器1台,交换机2台,PC机至少4台,RJ45双绞线。

Console控制电缆。

本次使用cisco packet tracer进行仿真。

三、实验基本原理及步骤(或方案设计及理论计算)
1、直连路由:用2个交换机组建两个LAN,用路由器将两个LAN连接;
2、基于三层交换机的VLAN间路由:用1个三层交换机组建两个LAN,用三层交换机的端口路由功能实现VLAN间的路由。

3、单臂路由:用1个二层交换机组建两个LAN,用路由器将两个LAN连接;(选作,有些设备不支持)
4、规划设置PC机的IP地址和掩码。

四、实验数据记录(或仿真及软件设计)
实验一
实验二
实验三
五、实验结果分析及回答问题(或测试环境及测试结果)实验一
实验二实验三
六、心得体会
可以熟练使用常用的路由器的操作指令;对于LAN和VLAN有了更深的理解和认识。

计数器实验报告心得

计数器实验报告心得

计数器实验报告心得计数器是数字电路中的一种基本逻辑电路,用于计数或计时。

在本次实验中,我们使用了74LS169计数器,在实验中验证了它的计数和计时的功能。

通过实验,我深刻认识到数字电路中的计数器的重要性和使用方法。

下面是我的实验报告心得:我们需要了解计数器的基本原理和功能。

计数器是一种寄存器,它有一个时钟输入端和一个复位输入端。

在每一个时钟脉冲下,计数器的数值都会加一,当计数器的数值达到最大值时,它会从0重新开始计数。

在实际应用中,计数器可以用于计数、计时和频率测量等。

我们进行了二进制加法实验,将两个计数器级联,实现二进制加法计数器。

在实践中,我们使用了两个74LS169计数器,将一个计数器的输出端口与另一个计数器的时钟输入端相连。

我们根据二进制加法的原理,在两个计数器之间添加了一个异或门来处理进位问题。

实验中,我们使用了LED数码管来显示计数器的计数结果,可以清晰地看到两个计数器的加法计数器工作方式。

在计数器实验中,我最大的收获是学习了数字电路的实际应用。

通过实验,我深刻认识到计数器在数字电路中的重要性,以及如何将它们组合起来实现更加复杂的电路和功能。

在实验结束后,我还了解了如何使用示波器来测试计数器的输出信号,以及如何进行计数器的扩展。

通过计数器实验,我对数字电路的原理和应用有了更加深入的理解,也掌握了实现计数器的方法和技巧。

这对于我以后的学习和工作都有着重要的意义,我相信这次实验经验将对我的电子工程知识积累有所帮助。

计数器的实际应用十分广泛。

在数据传输和计时系统中,计数器被用来定位数据包和计算数据传输速率。

在计算机内存和CPU中,计数器用于处理CPU时钟和计算指令执行次数。

在信号发生器中,计数器可以用于生成固定频率的时钟信号,以及通过分频器实现不同频率的信号输出。

通过这次计数器实验,我也体会到了数字电路的实验难度和实验精度。

在数字电路中,一些微小的误差或干扰都会影响到计数器的工作稳定性和准确性。

太原理工大学Web系统和技术实验报告

太原理工大学Web系统和技术实验报告

课程项目报告书课程名称:Web系统和技术项目题目:_____勤工助学中心系统______ 学院:计算机科学与技术专业班级:计Z1101姓名:莫家威学号:2011001496指导教师:马垚2014年 6 月 5 日三、数据库设计勤工助学系统数据库由3张表构成,分别是岗位表(jobs),勤工新闻表(qnews),用户表(users).(1)E-R图岗位表分E-R图如下所示.勤工新闻表分E-R图如下所示.用户表分E-R图如下所示.汇总后略去各实体属性之后,勤工助学系统的总E-R图如下所示,其中管理员和用户这两个实体属于用户实体.(2)数据表结构本系统采用的数据库系统为MySQL5.5,在数据库中新建一个名为myweb的数据库,该数据库中包含的3个表如下所示.岗位表:勤工新闻表:用户表:四、详细设计(1)前台功能设计勤工助学系统的前台主要为广大普通用户服务.系统前台主页为FirstPage.jsp.其界面如图所示.主要为用户提供用户注册,登录,找回密码,查看新闻,查看岗位等功能.图例:FirstPage.jsp1.登录功能.登录界面主要实现用户的登录操作,采用一个check.jsp来实现,有一些简单的逻辑校验,当用户点击登录按键的时候系统会弹出一个登录框,如下所示.填写完用户密码之后就会跳转到check.jsp,通过对数据库进行交互后登录成功,则跳转至登录成功页面Success.jsp页面.图例:登录界面图例:Check.jsp部分代码2.注册功能注册界面主要实现用户的注册操作,采用MVC的servlet RegisterAction.java来实现注册功能,当用户点击用户注册的时候会进入用户注册页面Register.jsp如下所示.之后会将数据传到RegisterAction.java中,跟数据库进行交互后将数据写入到数据库中,注册不成功会提示重新填写,注册成功则会跳转到注册成功页面.图例:Register.jsp图例:RegisterAction.jsp部分代码3.查看勤工新闻用户通过快速通道,bannal面板和主页的动态现实面板均可以查看勤工新闻,动态面板通过一个JS代码嵌入到div中实现,当鼠标移动到相应分类的时候会动态的从数据库中提取出相应的分类数据到页面上显示出来,如下图所示.用户点击相应分类之后就会进入具体的查看页面qnews.jsp,页面现实每条新闻的简略信息,用户点击每条信息就会进入具体显示页面,根据传参的不同现实不同的新闻,用户也可通过左边的分类切换不同的分类新闻.当新闻数过多时还可自动进行分页显示.图例:动态显示1. 图例:动态显示2.图例:分类现实新闻图例:详细新闻显示图例:详细新闻现实newsdetails.jsp部分代码4.查看岗位查看岗位部分与参看新闻部分相同,在部分现实页面加入显示已招聘人数和招聘人数,在详细显示中加入了报名模块和显示已报名同学部分,通过jobsdetails.jsp实现.图例:报名模块图例:详细岗位查看图例:jobsdetails.jsp部分代码5.岗位报名岗位报名由一个servlet:Stusignup.java和若干jsp页面组合实现.当用户点击岗位详细显示页面下的我要报名按钮的时候,即可进入岗位报名界面,首先进入的是用工协议界面,由Signup.jsp实现,用户点击不同意本协议则跳转回原岗位详细显示页面,点击同意本协议则讲用户信息保存至一个用户session,并跳转至Stusignup.java,在这个servlet完成用户信息的读取和对岗位当前相关状态的修改,在对数据库进行交互之后弹出”报名成功”的提示框,并跳转至原岗位详细显示页面,并且页面会动态更新当前用户的报名信息,若岗位招聘人数已满则会显示报名关闭,并返回上一级.图例:用工协议部分图例:报名成功增加一个学生信息图例:Stusignup.java部分代码5.用户个人操作用户在个人信息显示模块上点击”当前状态”即可查看当前状态,点击注销则会退出登录并退回到主页,点击修改密码则会进入修改密码部分,其他部分同上.图例:个人操作模块图例:具体实现代码(2)后台管理功能后台管理功能主要针对管理员,管理员登录成功后可以进行新闻发布,新闻管理,岗位发布,岗位管理,用户管理等功能.如下所示,重点说明发布部分.1.管理员登录管理员通关管理员登录通道之后可以进入管理界面,在这里可以选择相应的功能进行操作,也可以点击返回首页退出管理界面.图例:教师登录通道图例:管理员管理页面2.岗位,新闻发布岗位发布由一个servlet:AddjobsAction.java和若干jsp页面组合实现,新闻发布由一个servlet:AddnewsAction.java和若干jsp页面组合实现.当管理员点击发布功能是,会进入一个填写发布内容的jsp页面,若填写不规范则提示错误返回提示修改,按规范填写之后系统将数据传递至功能对应的javabean,并跳转至对应的servlet后,servlet取出javabean中保存的数据与数据库进行交互后将信息写入至数据库,并将返回的确认信息写如用户session,跳转至回执页面confirm.jsp,管理员可在此页面看到刚才发布的信息.图例:勤工新闻与岗位发布显示图例:confirm.jsp回执页面图例:AddnewsAction.java部分代码图例:AddjobsAction.java部分代码(3)其他代码包括数据库连接配置以及其他页面实现文件.图例:其他数据代码文件五、心得总结(1)项目缺点未能实现新闻,与岗位的删除功能,用户名之前被注册的还能再次注册,会更新掉原有的用户信息,新闻显示界面不够美观,底部的版权模块未部署到每一个页面上.(2)改进方案后续增加完善管理员界面的”内容管理”模块,并加入新闻,与岗位的删除功能,在用户注册是数据写入数据库之前应先与数据库进行交互判断用户名是否已经被注册,并提示用户进行对应修改.系统后续将改为Struts2框架,在此基础上对所有页面进行显示以及界面的优化,并部署版权模块.(3)遇到的困难及解决途径1.快速通道无法固定在页面的一个位置,在页面拖动的时候消失,后采用了CSS的方法来实现即可,会固定在页面的右下角.2.首页的面试通知过多后显示不美观,采用了滚动显示的方法,在原DIV上新建一个DIV,将数据写在新DIV上,并加入一段JS代码,可使页面进行滚动,代码如下所示.图例:页面滚动代码。

eda计数器的实验报告

eda计数器的实验报告

eda计数器的实验报告EDA计数器的实验报告引言:计数器是数字电路中常用的组合逻辑电路,用于实现对输入信号的计数功能。

EDA计数器是一种基于EDA(Electronic Design Automation,电子设计自动化)技术的计数器,利用EDA工具进行设计和仿真,能够更加高效地完成计数任务。

本实验旨在通过设计和实现EDA计数器,探索其原理和应用。

一、实验目的本实验的目的是通过设计和实现EDA计数器,深入理解计数器的工作原理,并掌握EDA技术在数字电路设计中的应用。

通过实验,我们将学习以下内容:1. 计数器的基本原理和分类;2. EDA工具的使用方法;3. 数字电路的设计与仿真。

二、实验步骤1. 确定计数器的功能要求:根据实验要求,我们需要设计一个4位二进制计数器,能够实现从0000到1111的计数功能。

2. 使用EDA工具进行设计:选择合适的EDA工具(如Verilog、VHDL等),根据计数器的功能要求,编写相应的代码。

3. 进行仿真:利用EDA工具提供的仿真功能,对设计的计数器进行仿真,验证其正确性和稳定性。

4. 进行综合和布局布线:将设计的计数器进行综合和布局布线,生成对应的逻辑网表和物理布局。

5. 进行时序分析和时序优化:对设计的计数器进行时序分析,优化其时序性能,确保其能够满足实际应用需求。

6. 进行静态和动态功耗分析:对设计的计数器进行静态和动态功耗分析,评估其功耗性能,并进行相应的优化。

三、实验结果与分析经过以上步骤的设计和优化,我们成功实现了一个4位二进制计数器。

通过EDA工具的仿真功能,我们验证了计数器的正确性和稳定性。

在时序分析和时序优化过程中,我们发现了一些潜在的时序问题,并进行了相应的优化,确保了计数器的正常工作。

在静态和动态功耗分析中,我们评估了计数器的功耗性能,并进行了一些优化措施,减少了功耗。

四、实验总结通过本次实验,我们深入学习了计数器的原理和分类,并掌握了EDA技术在数字电路设计中的应用。

ERP实验报告心得(共10篇)

ERP实验报告心得(共10篇)

篇一:erp实验心得与体会erp实验心得与体会通过五周的上机实验,我有颇多的感想与体会:首先,erp是一门十分有用的学科,通过对其认真学习,可以学习不少先进的管理思想,如敏捷制造、虚拟企业等不少先进的管理理念,并且对基本的生产计划编制目录等企业过程都有较清晰的认识。

erp是一门综合性很强的科目,我想谁若能把里面的各个知识点都能牢固掌握,管理好一个企业就是很轻松的差事了,它充满了挑战与乐趣。

它使可以站在企业管理层的高度应用自己所学到的专业知识,对我们的实践能力的提高有很大的作用。

我们可以对企业经营的实际过程有一个大致的了解,为我们未来的工作实践奠定良好的基础。

我们不难发现,erp是一门综合性的学科,通过对其学习我感觉是对有些科目的一些回顾和综合,像会计学、管理学、经济学、人力资源管理、财务管理等相关理论知识等。

通过近一个学期的了解和实践,回想刚开始接触erp那紧张和生涩的情景,感觉现在我成熟多了,对它感觉不是那么深奥晦涩难懂了,其实它就是应用现代先进的管理思想与方法,编制的一套庞杂的管理软件而已,我是一做事很认真的学生,感觉既然要学就要学好,可有些同学总是埋怨所学的东西没用,我想既然存在必然由它存在的理由,对待erp的学习,我就是抱着十分的热情去学习的,不管是理论知识还是实践知识都使我收获颇丰,再次向辛勤耕耘的易文老师致谢!其次,之所以对erp的操作会遇到这样或那样的关卡,最大的问题在于缺乏经验,由于对供应链的相关数据之间的关联性缺乏了解,致使操作的速度比较迟缓,上机的时候老师把实验指导书发给我们让我们按上面的做,看了看,发现其实也并不是很难,可以这么说,我们的任务是输入数据,系统的功能就是把输入的数据加工处理产生新数据,因此只要留意相关数据的流向,对其步骤相关性有了较好了解,操作难的问题便可迎刃而解。

举个简单的例子,业务订单生成并审核后,生产部就会看得到如何计划生产,计划部知道该订哪些材料,而订材料又要考虑库存,而库存又是通过日常收料发料自动得来的数据,材料计划一量形成并审核,采购部就可以看得到并生成采购单,采购单一生成,货仓部又知道什么时候来多少货,会计部知道需要多少钱什么时候需要,计划部生产部都知道此材料是否安排,什么时候到位。

太原理工大学Web系统和技术实验报告

太原理工大学Web系统和技术实验报告

三、数据库设计
勤工助学系统数据库由3张表构成,分别是岗位表(jobs),勤工
图例:FirstPage.jsp
1.登录功能.
登录界面主要实现用户的登录操作,采用一个check.jsp来实现,有一些简单的逻辑校验,当用户点击登录按键的时候系统会弹出一个登录框,如下所示.填写完用户密码之后就会跳转到check.jsp,通过对数据库进行交互后登录成功,则跳转至登录成功页面Success.jsp页面.
图例:Register.jsp
图例:RegisterAction.jsp部分代码
图例:动态显示1. 图例:动态显示2.
图例:分类现实新闻
图例:详细岗位查看
图例:具体实现代码
图例:教师登录通道
图例:管理员管理页面2.岗位,新闻发布
图例:勤工新闻与岗位发布显示
图例:AddnewsAction.java部分代码图例:AddjobsAction.java部分代码。

川大林峰计网第二次实验报告

川大林峰计网第二次实验报告

计网第二次试验报告一.对等网的组建组建前提:网络上所有计算机无主次之分,均装有相同的协议栈,相互共享对方设定的共享资源。

实验步骤:1. 硬件连接(网卡的安装)实验室已经安装完毕,检查设备,没有问题。

2. 配置参数:计算机名TCP/IP协议密码IP地址子网掩码计算机名为默认。

检查发现IP通讯协议已经安装完毕。

配置两台计算机的IP地址,分别为:192.168.1.104 192.168.1.105。

配置两台计算机的DNS地址,分别为:192.168.1.104 192.168.1.105。

3. 添加网络组件:"开始"→"设置"→"控制面板"→"网络" →双击"网络"图标1) 检查发现网络适配器已经安装完毕。

2) 检查发现协议已经添加完毕。

3) 打开<网络连接>→<internet选项>→<internet协议6>,添加网络客户和网络服务。

4. 标识计算机:在“网络”对话框中,单击“标识”选项卡,输入计算机名(JSJX)、工作组名(bbxy),计算机说明可默认。

5. 设置访问控制:单击"访问控制"选项卡,在出现的对话框中选择"共享级网络控制"。

6. 共享网络资源将计算机首先与主机接通,再与另一台计算机接通。

在两台计算机的<运行>中分别输入ping 192.168.1.104 ping 192.168.1.105 没有出现timeout,而是出现响应时间、数据大小等,证明已经接通,实验一完成。

光纤光缆(实验报告)

光纤光缆(实验报告)

光纤光缆技术实验报告书指导教师:刘孟华、魏访报告人:吴宁峰组员:吴思童李金活姜峰曹健保王鹏实验时间:2014.06.08光缆的接续一、实验目的:通过接续盒将光缆接续。

二、实验仪器:准备工具、材料(接续盒、环割刀、光缆、工具、以表齐全,摆放整齐)。

三、操作步骤:1、光缆开剥:在开剥前检查光缆是否损坏,清洁光缆的端头,在光缆端头约1m处用割刀环切光缆外护套,割断外护套之后将外护套抽离(注意切伤光纤),剥去内护套露出加强芯、光纤束管。

依次用棉纱、酒精加强芯、光纤束管擦拭干净。

2、光缆端头及加强芯的固定安装将光缆端头正确放到接续盒固定处,固定。

3、光纤束管开剥理顺光纤束管,确定光纤束管的拨开位置。

用专用束管刀或钳使束管外部受伤,切勿伤及光纤。

去掉束管时,顺着束管方向用力,剥除后用脱脂棉将光纤上的油膏轻轻擦拭干净,放在干净的作业台上。

4、光纤预留盘:把束管放入收容盘内,收容盘两端用尼龙扎带将束管固定在收容盘内,注意扎带不要太紧使光纤变形增加损耗。

5、用相同的方法使另一个光缆接头同样处理。

6、光纤熔接保持作业台和熔接机的清洁,并打开熔接机设定好参数、预热。

光纤接续要按顺序一一对应接续,不得交叉错接。

7、光纤的盘纤每接一管光纤要将接好的光纤编号收入收容盘内,收容时可从一端或两端向光纤保护管方向收容,将光纤保护管安全牢固的固定在光纤保护管的固定槽内。

确认无误后盖上盘盖并测试。

8、光纤接头盒的封装:在进行光缆与接头盒的密封时,要先进行密封处的光缆护套的打磨工作,用纱布在外护套上垂直光缆轴向打磨,以使光缆和密封胶带结合得更紧密,密封得更好。

接头盒上下盖板之间的密封,主要是注意密封胶带要均匀地防止在接头盒的密封槽内,将螺丝拧紧,不留缝隙四:实验感想通过这次实验我们初步了解到了光纤光缆的内部结构及各部分结构的作用,初步了解到了光缆的连续。

光纤的熔接一、实验目的:通过熔接的方法使光纤无缝的接续在一起。

二、实验仪器:光纤熔接机、剥纤钳、光纤切割刀、清洁棉等。

山东大学计网实验

山东大学计网实验

计算机网络实验报告1.实验背景介绍本次计算机网络实验主要是关于服务器处理包的过程模拟,其中一个重要的基础排队模型是M/M/1 排队模型。

M/M/1排队模型(M/M/1 model)是一种单一服务器(single-server)的排队模型。

M/M/1的主要特点:1.到达人数是泊松过程(Poisson process)2.服务时间是指数分布(exponentially distributed)3.只有一台服务器(server)4.队列长度无限制5.可加入队列的人数为无限M/M/1排队模型在任何状态下,只有两种事情可能发生:1.有人加入队列。

如果模型在状态k,它会以速率λ进入状态k + 12.有人离开队列。

如果模型在状态k(k不等于0),它会以速率μ进入状态k – 1由此可见,模型的隐定条件为λ< μ。

如果死亡率小于出生率,则队列中的平均人数为无限大,故此这种系统没有平衡点。

在M/M/1 排队模型的基础上,我们进行了单服务器两队列模型和802.11 无线竞争模型的相关实验。

2.实验要求1.单服务器两队列模型实验带中央控制器的两个信道的实验,两个信道都是珀松过程,其中一个信道到达速率为50,另一个到达速率为40。

画出实验结果的队列长度分布图以及等待时间分布图。

2.802.11 无线竞争模型对没有中央控制器的竞争信道的包传输过程的模拟。

画出队列长度分布以及等待时间分布。

3.实验内容实验一单服务器两队列模型一、实验模型本实验使用的模型是以M/M/1队列模型为基础的。

包分别以不同的速率λ1和λ2进入两个队列,然后服务器以速率μ来处理包的数据。

该模型具体实现如下:先随机包进入的两个队列的时间,以包进入队列1的时间t1和包进入队列2的时间t2和包离开的时间t3这三个时间来推动时间前进的。

本实验模型实行带赤字的轮询算法来分配服务器服务每个队列的时间,具体的实现如下:先分给两个队列固定的处理量,分别为service1和service2,同时设置两个队列的剩余处理量为left_service1和left_service2。

计网 实验一

计网 实验一

实验一熟悉常用的网络命令实验报告1.实验目的:学会使用常用ping ,ipconfig, nslookup, arp ,tracert等常用网络测试命令检测网络连通、了解网络的配置状态,跟踪路由等相关网络问题。

2实验环境:(1)运行windows 2000/2003/xp操作系统的PC一台。

(2)每台PC机具有一块网卡,通过双绞线与局域网网相连。

(3)局域网能连接Internet。

3.实验步骤:参见实验指导手册内容。

4.实验分析,回答下列问题(1)查看本机TCP/IP协议配置,看你的计算机是通过自动获取IP还是通过手动方式设置IP地址的?写出判断的理由。

是理由:通过ipconfig指令查看信息:自动配置已启用(2)如果是通过手动方式获取IP地址,可以直接读出IP地址,子网掩码,默认网关,首选DNS服务器地址。

填写下表。

如果是采用动态获取IP地址,如何获取完整的TCP/IP配置信息,请写出解决步骤。

并(3)在获取本机IP地址之后,在MS-DOS方式下运行下列Ping命令,填写实验运行结果(附截图)。

(a)ping本机IP地址图注:由ipconfig获知本机IP地址(b)ping 本机IP地址–t图注:Ping –t指令不停发送包,这里通过“Ctrl+C”叫停(c)ping 默认网关–n 6图注:ping –n 6即发送6个数据包(d)ping 本局域网内任意一台主机图注:原理同ping本机IP(4)用nslookup命令从域名地址当中解析出IP地址,从IP地址当中解析出域名地址。

图注:nslookup 域名/IP 可得对应IP/域名(5)利用路由跟踪命令tracert,跟踪到达某个网站(如)的路由信息。

图注:tracert指令用于显示本机访问某个IP所经过的所有网关(6)用netstat命令,显示以太网接口的统计信息,并显示所有已建立好的有效连接。

图注:用以显示以太网接口的统计信息图注:用以显示所有已建立好的有效连接(7)用arp命令查看arp地址映射表,填加一条静态地址映射,并显示结果和操作过程。

数字电路课程设计实验报告

数字电路课程设计实验报告

数字电路课程设计设计报告学院:计算机与信息学院姓名:学号:班级:通信班指导老师:许良凤吴从中设计题目一:智力竞赛电子抢答器1.设计任务与要求(1)通道数8个,每路设置一个抢答按钮, 供抢答者使用。

(2)电路具有第一抢答信号的鉴别和锁存功能。

在主持人将系统复位并发出抢答指令后,若参赛者按抢答开关, 则该组指示灯亮, 显示电路显示出抢答者的组别, 同时扬声器发出“滴嘟”的双音, 音响持续2~3 s。

(3)电路应具备自锁功能, 一旦有人事先抢答, 其他开关不起作用。

2. 方案设计与论证总体框图:74LS148他各组按键封锁,使其不起作用。

回答完问题后,由主持人将所有按键回复,重新开始下一轮抢答。

因此要完成抢答器的逻辑功能,该电路至少应包括输入开关,数字显示,判别组控制以及组号锁存等部分。

当主持人控制开关处于“清除”位置时,输出端全部为低电平,于是74LS48的BI非为低电平,显示器灭灯;74LS148的选通输入端ST非为低电平,74LS148处于工作状态,此时锁存电路不工作。

当主持人开关拨到“开始”位置时,优先编码电路和锁存电路同时处于工作状态,即抢答器处于等待工作状态,等待输入端输入信号,当有选手将按钮按下时,经74LS48译码后,显示器上显示出选手编号。

此外,CTR为高电平,使74LS148的ST非端为高电平,74LS148处于禁止工作状态,锁存其他按钮的输入。

当按下的按钮松开后,74LS148的非为高电平,但由于CTR维持高电平不变,所以74LS148仍处于禁止工作状态,其他按钮的输入信号不会被接受。

这就保证了抢答者的优先性以及抢答电路的准确性。

当优先抢答者回答完问题后,由主持人操作控制开关S,使抢答电路复位,以便进行下一轮抢答。

功能模块:(1)输入电路:输入电路由锁存器74LS373和按键组成(2)锁存器控制电路:锁存器控制电路由相关的门电路组成(3)数码显示电路:优先编码器74LS148进行编码,编成的二进制代码再送到BCD码七段译码驱动器74LS247,最后送到共阳极的七段数码管,显示相应的数字。

北邮计网实践实验报告

北邮计网实践实验报告

北邮计网实践实验报告北邮计网实践实验报告范文计算机网络技术是一门需要动手实践才能真正掌握知识的学科,多参加实践,多动手,可以学到更多知识。

下面是爱汇网店铺为大家整理的北邮计网实践实验报告范文,供大家阅读!北邮计网实践实验报告范文篇1开学第一周我们就迎来了计算机网络实训,这门课程与上学期所学的计算机网络相对应,给了我们一个更深刻理解和掌握所学知识的机会。

实训的内容包括了网线的压制,虚拟机的使用,服务器的安装,dhcp,dns,iis,ftp,web等基本内容,使我们对网络的组建、运作有个初步的了解。

实训第一阶段的内容包括压制网线。

eia/tia-568标准规定了两种rj45接头网线的连接标准(并没有实质上的差别),即eia/tia-568a和eia/tia-568b。

568a类线的顺利为:绿白,绿,橙白,蓝,蓝白,橙,棕白,棕。

568b类线的顺利为:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕。

直通线两端是相同的,(即568a568a,568b568b),交叉线两端烈性不同(568a568b)。

交叉线通常用于同类设备之间的互联,如pc綪c、hub綡ub;直通线通常用于pc机与hub之间的互联。

目前,很多交换机之间也可以使用直通线进行互联。

可以使用专门的网线测试器,测试网线连通性(即通过网线测试器测试网线的每根芯是否连通)。

对于直通线,测试时两端的指示灯都应该按照从1至8的顺利依次发亮;对于交叉线,应是13、26、44、55、77、88。

如果没有网线测试器,可以将其连入网络,测试其可用性:对于交叉线,可以直接连接两台pc机;对于直通线,可以将两台pc机通过两根网线分别连接到一台hub上进行测试。

虽然以前自己也压过,但是通过实训更熟练了,也终结出了一些技巧和教训,比如在剥线的时候要拧一下,排好线以后要剪平,插下去才能保证每一根都接触得到。

虚拟机安装对我们实训有很多好处,虚拟机的软件是vmware,这一款软件可以在一台实体机上虚拟出有硬盘,cpu,内存,网卡等设备的虚拟机,并且相互之间可以互联,极大的方便了我们学习。

计网实验三

计网实验三

自动化与软件学院
课程实验报告
实验课程网络及其计算实验
实验名称 arp命令实验
实验地点软工专业实验室201A 实验时间第五周星期四 1 节到 2 节学生班级
学生学号
学生姓名
指导教师
2020 年 10 月 8 日
实验目的:
(1)掌握arp命令及常用参数的用法。

实验器材:
一台连网的Windows操作系统的PC机。

实验内容:
在PC机命令行使用arp命令及常用参数,观察并分析结果。

实验结果(附数据和图表):
1.显示arp缓存中IP地址和硬件地址的对应关系

2.显示某个指定IP的arp记录
3.显示arp缓存中IP地址和硬件地址的对应关系
4.在详细模式下显示当前的arp选项,所有的无效项和回环接口上的项都将显示
5.添加一条静态路由
6.删除一条静态路由。

云南大学 软件学院 计网实验5

云南大学 软件学院 计网实验5

云南大学软件学院实验报告课程:计算机网络原理实验任课教师:姓名:学号:专业:成绩:实验五、传输层可靠传输协议GBN编程实验报告一、实验目的:1、编程实现简单可靠的数据传输GBN协议,模拟可靠数据传输2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。

二、实验指导:参考教材。

三、实验要求:编程实现一个GBN传输协议,采用编程语言不限,要求能将发送――接收流程以及处理方法表现出来.附源代码及注释并附上实验结果截图。

#include <stdio.h>/* ******************************************************************ALTERNATING BIT AND GO-BACK-N NETWORK EMULATOR: VERSION 1.1 J.F.KuroseThis code should be used for PA2, unidirectional or bidirectionaldata transfer protocols (from A to B. Bidirectional transfer of datais for extra credit and is not required). Network properties:- one way network delay averages five time units (longer if thereare other messages in the channel for GBN), but can be larger- packets can be corrupted (either the header or the data portion)or lost, according to user-defined probabilities- packets will be delivered in the order in which they were sent(although some can be lost).**********************************************************************/#define BIDIRECTIONAL 0 /* change to 1 if you're doing extra credit *//* and write a routine called B_output *//* a "msg" is the data unit passed from layer 5 (teachers code) to layer */ /* 4 (students' code). It contains the data (characters) to be delivered */ /* to layer 5 via the students transport level protocol entities. */ struct msg {char data[20];};/* a packet is the data unit passed from layer 4 (students code) to layer */ /* 3 (teachers code). Note the pre-defined packet structure, which all */ /* students must follow. */struct pkt {int seqnum;int acknum;int checksum;char payload[20];};/********* STUDENTS WRITE THE NEXT SEVEN ROUTINES *********/#define WINDOWSIZE 8#define MAXBUFSIZE 50#define NOTUSED 0#define NACK -1#define TRUE 1#define FALSE 0#define A 0#define B 1int expectedseqnum; /* expected sequence number at receiver side */ int nextseqnum; /* next sequence number to use in sender side */ int base; /* the head of sender window */struct pkt winbuf[WINDOWSIZE]; /* window packets buffer */int winfront,winrear; /* front and rear points of window buffer */ int pktnum; /* packet number of window buffer */struct msg buffer[MAXBUFSIZE]; /* sender message buffer */int buffront,bufrear; /* front and rear pointers of buffer */int msgnum; /* message number of buffer */int packet_lost =0;int packet_corrupt=0;int packet_sent =0;int packet_correct=0;int packet_resent =0;int packet_timeout=0;void ComputeChecksum(packet){ int checksum; int i; checksum = checksum + packet->acknum;for ( i=0; i<20; i++ )checksum = checksum + (int)(packet->payload[i]); checksum = 0-checksum;packet->checksum = checksum;}struct pkt packet;{int checksum;int i;checksum = packet.seqnum;checksum = checksum + packet.acknum;for ( i=0; i<20; i++ )checksum = checksum + (int)(packet.payload[i]);if ( (packet.checksum+checksum) == 0 )return (FALSE);elsereturn (TRUE);}/* called from layer 5, passed the data to be sent to other side */A_output(message){ int i;struct pkt sendpkt;/* if window is not full */if ( nextseqnum < base+WINDOWSIZE ) {printf("----A: New message arrives, send window is not full, send new messge to layer3!\n");/* create packet */sendpkt.seqnum = nextseqnum;sendpkt.acknum = NOTUSED;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = message.data[i];/* computer checksum */ComputeChecksum (&sendpkt);/* send out packet */tolayer3 (A, sendpkt);/* copy the packet to window packet buffer */winrear = (winrear+1)%WINDOWSIZE;pktnum ++;winbuf[winrear] = sendpkt;for (i=0; i<20; i++)winbuf[winrear].payload[i]= sendpkt.payload[i];/* if it is the first packet in window, start timeout */if ( base == nextseqnum ) {starttimer(A,RTT);printf("----A: start a new timer!\n");}/* update state variables */nextseqnum = nextseqnum+1;}/* if window is full */else {printf("----A: New message arrives, send window is full,");/* if buffer full, give up and exit*/if ( msgnum == MAXBUFSIZE) {printf (" Error: Sender buffer is full! \n");exit (1);}/* otherwise, buffer the message */else {printf("buffer new message!\n");bufrear = (bufrear+1) % MAXBUFSIZE;for (i=0; i<20; i++)buffer[bufrear].data[i] = message.data[i];msgnum ++;}} }B_output(message) /* need be completed only for extra credit */struct msg message;{}/* called from layer 3, when a packet arrives for layer 4 */A_input(packet){ int i;/* if received packet is not corrupted and ACK is received */if ( (CheckCorrupted(packet) == FALSE) && (packet.acknum != NACK) ) { printf("----A: ACK %d is correctly received,",packet.acknum);packet_correct++;/* delete the acked packets from window buffer */winfront = (winfront+(packet.acknum+1-base)) % WINDOWSIZE;pktnum = pktnum - (packet.acknum+1-base);/* move window base */base = packet.acknum+1;stoptimer(A);if ( base < nextseqnum) {starttimer(A,RTT);printf ("send new packets!\n");}/* if buffer is not empty, send new packets */while ( (msgnum!=0) && (nextseqnum<base+WINDOWSIZE) ) {/* create packet */sendpkt.seqnum = nextseqnum;sendpkt.acknum = NOTUSED;buffront = (buffront+1) % MAXBUFSIZE;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = buffer[buffront].data[i];/* computer checksum */ComputeChecksum (&sendpkt);/* if it is the first packet in window, start timeout */ if ( base == nextseqnum ){starttimer(A,RTT);printf ("send new packets!\n");}/* send out packet */tolayer3 (A, sendpkt);/* copy the packet to window packet buffer */winrear = (winrear+1)%WINDOWSIZE;winbuf[winrear] = sendpkt;pktnum ++;/* update state variables */nextseqnum = nextseqnum+1;/* delete message from buffer */msgnum --;}}elseprintf ("----A: NACK is received, do nothing!\n");}/* called when A's timer goes off */{int i;printf("----A: time out,resend packets!\n");/* start timer */starttimer(A,RTT);/* resend all packets not acked */for ( i=1; i<=pktnum; i++ ) {packet_resent++;tolayer3(A,winbuf[(winfront+i)%WINDOWSIZE]);}}/* the following routine will be called once (only) before any other */ /* entity A routines are called. You can use it to do any initialization */ A_init(){buffront = 0;bufrear = 0;msgnum = 0;winfront = 0;winrear = 0;pktnum = 0;}/* Note that with simplex transfer from a-to-B, there is no B_output() *//* called from layer 3, when a packet arrives for layer 4 at B*/B_input(packet){ int i;/* if not corrupted and received packet is in order */if ( (CheckCorrupted(packet) == FALSE) && (packet.seqnum == expectedseqnum)){ printf("----B: packet %d is correctly received, send ACK!\n",packet.seqnum);/* send an ACK for the received packet *//* create packet */sendpkt.seqnum = NOTUSED;sendpkt.acknum = expectedseqnum;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = '0';/* computer checksum */ComputeChecksum (&sendpkt);/* send out packet */tolayer3 (B, sendpkt);/* update state variables */expectedseqnum = expectedseqnum+1;/* deliver received packet to layer 5 */tolayer5(B,packet.payload);}/* otherwise, discard the packet and send a NACK */else {printf("----B: packet %d is corrupted or not I expects, send NACK!\n",packet.seqnum);/* create packet */sendpkt.seqnum = NOTUSED;sendpkt.acknum = NACK;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = '0';/* computer checksum */ComputeChecksum (&sendpkt);/* send out packet */tolayer3 (B, sendpkt);}}/* called when B's timer goes off */{}{expectedseqnum = 0;}/********************************************************************************** NETWORK EMULATION CODE STARTS BELOW ***********The code below emulates the layer 3 and below network environment:- emulates the tranmission and delivery (possibly with bit-level corruption and packet loss) of packets across the layer 3/4 interface- handles the starting/stopping of a timer, and generates timerinterrupts (resulting in calling students timer handler).- generates message to be sent (passed from later 5 to 4)THERE IS NOT REASON THAT ANY STUDENT SHOULD HAVE TO READ OR UNDERSTANDTHE CODE BELOW. YOU SHOLD NOT TOUCH, OR REFERENCE (in your code) ANYOF THE DATA STRUCTURES BELOW. If you're interested in how I designedthe emulator, you're welcome to look at the code - but again, you should have to, and you defeinitely should not have to modifyint eventity; /* entity where event occurs */struct pkt *pktptr; /* ptr to packet (if any) assoc w/ this event */ struct event *prev;struct event *next;};struct event *evlist = NULL; /* the event list *//* possible events: */#define TIMER_INTERRUPT 0#define FROM_LAYER5 1#define FROM_LAYER3 2#define OFF 0#define ON 1#define A 0#define B 1int TRACE = 1; /* for my debugging */int nsim = 0; /* number of messages from 5 to 4 so far */ int nsimmax = 0; /* number of msgs to generate, then stop */ float time = 0.000;float lossprob; /* probability that a packet is dropped */float corruptprob; /* probability that one bit is packet is flipped */ float lambda; /* arrival rate of messages from layer 5 */ int ntolayer3; /* number sent into layer 3 */int nlost; /* number lost in media */int ncorrupt; /* number corrupted by media*/main(){char c;init();A_init();B_init();while (1){eventptr = evlist; /* get next event to simulate */if (eventptr==NULL)goto terminate;evlist = evlist->next; /* remove this event from event list */ if (evlist!=NULL)evlist->prev=NULL;if (TRACE>=2){printf("\nEVENT time: %f,",eventptr->evtime);printf(" type: %d",eventptr->evtype);if (eventptr->evtype==0)printf(", timerinterrupt ");else if (eventptr->evtype==1)printf(", fromlayer5 ");elseprintf(", fromlayer3 ");printf(" entity: %d\n",eventptr->eventity);}time = eventptr->evtime; /* update time to next event time */ if (nsim==nsimmax)break; /* all done with simulation */ if (eventptr->evtype == FROM_LAYER5 ){generate_next_arrival(); /* set up future arrival *//* fill in msg to give with string of same letter */j = nsim % 26;for (i=0; i<20; i++)msg2give.data[i] = 97 + j;if (TRACE>2) {printf(" MAINLOOP: data given to student: ");for (i=0; i<20; i++)printf("%c", msg2give.data[i]);printf("\n");}nsim++;if (eventptr->eventity == A)A_output(msg2give);elseB_output(msg2give);}else if (eventptr->evtype == FROM_LAYER3){pkt2give.seqnum = eventptr->pktptr->seqnum;pkt2give.acknum = eventptr->pktptr->acknum;pkt2give.checksum = eventptr->pktptr->checksum;for (i=0; i<20; i++)pkt2give.payload[i] = eventptr->pktptr->payload[i];if (eventptr->eventity ==A) /* deliver packet by calling */A_input(pkt2give); /* appropriate entity */elseB_input(pkt2give);free(eventptr->pktptr); /* free the memory for packet */ }else if (eventptr->evtype == TIMER_INTERRUPT){if (eventptr->eventity == A)A_timerinterrupt();elseB_timerinterrupt();}else{printf("INTERNAL PANIC: unknown event type \n");}free(eventptr);}terminate:printf(" Simulator terminated at time %f\n after sending %d msgs from layer5\n",time,nsim);printf(" correctly sent pkts: %d \n", packet_correct);printf(" resent pkts: %d \n", packet_resent);}init() /* initialize the simulator */{int i;float sum, avg;float jimsrand();FILE *fp;fp = fopen ("parameter.txt","r");printf("----- Stop and Wait Network Simulator Version 1.1 -------- \n\n"); printf("Enter the number of messages to simulate: ");fscanf(fp,"%d",&nsimmax);scanf("%d",&nsimmax);printf("Enter packet loss probability [enter 0.0 for no loss]:");fscanf(fp, "%f",&lossprob);scanf("%f",&lossprob);printf("Enter packet corruption probability [0.0 for no corruption]:");fscanf(fp,"%f",&corruptprob);scanf("%f",&corruptprob);printf("Enter average time between messages from sender's layer5 [ > 0.0]:"); fscanf(fp,"%f",&lambda);scanf("%f",&lambda);printf("Enter TRACE:");fscanf(fp,"%d",&TRACE);scanf("%d",&TRACE);srand(9999); /* init random number generator */sum = 0.0; /* test random number generator for students */for (i=0; i<1000; i++)sum=sum+jimsrand(); /* jimsrand() should be uniform in [0,1] */avg = sum/1000.0;if (avg < 0.25 || avg > 0.75) {printf("It is likely that random number generation on your machine\n" ); printf("is different from what this emulator expects. Please take\n");printf("a look at the routine jimsrand() in the emulator code. Sorry. \n"); exit(1);}ntolayer3 = 0;nlost = 0;ncorrupt = 0;time=0.0; /* initialize time to 0.0 */generate_next_arrival(); /* initialize event list */}/****************************************************************************//* jimsrand(): return a float in range [0,1]. The routine below is used to *//* isolate all random number generation in one location. We assume that the*//* system-supplied rand() function return an int in therange [0,mmm] *//****************************************************************************/ float jimsrand(){double mmm = 65535; /* largest int 2147483647 65535 - MACHINE DEPENDENT!!!!!!!! */float x; /* individual students may need to change mmm */x = rand()/mmm; /* x should be uniform in [0,1] */return(x);}/********************* EVENT HANDLINE ROUTINES ****2147483647***//* The next set of routines handle the event list *//*****************************************************/generate_next_arrival(){double x,log(),ceil();struct event *evptr;char *malloc();float ttime;int tempint;if (TRACE>2)printf(" GENERATE NEXT ARRIVAL: creating new arrival\n");x = lambda*jimsrand()*2; /* x is uniform on [0,2*lambda] *//* having mean of lambda */evptr = (struct event *)malloc(sizeof(struct event));evptr->evtime = time + x;evptr->evtype = FROM_LAYER5;if (BIDIRECTIONAL && (jimsrand()>0.5) )evptr->eventity = B;elseevptr->eventity = A;insertevent(evptr);}struct event *p;{struct event *q,*qold;if (TRACE>2){printf(" INSERTEVENT: time is %lf\n",time);printf(" INSERTEVENT: future time will be %lf\n",p->evtime);}q = evlist; /* q points to front of list in which p struct inserted */ if (q==NULL){ /* list is empty */evlist=p;p->next=NULL;p->prev=NULL;}else{for (qold = q; q !=NULL && p->evtime > q->evtime; q=q->next)qold=q;if (q==NULL){ /* end of list */qold->next = p;p->prev = qold;p->next = NULL;}else if (q==evlist){ /* front of list */p->next=evlist;p->prev=NULL;p->next->prev=p;evlist = p;}else{ /* middle of list */p->next=q;p->prev=q->prev;q->prev->next=p;q->prev=p;}}}{struct event *q;int i;printf("--------------\nEvent List Follows:\n");for(q = evlist; q!=NULL; q=q->next) {printf("Event time: %f, type: %d entity: %d\n",q->evtime,q->evtype,q->eventity);}printf("--------------\n");}int AorB; /* A or B is trying to stop timer */{struct event *q,*qold;if (TRACE>2)printf(" STOP TIMER: stopping timer at %f\n",time);/* for (q=evlist; q!=NULL && q->next!=NULL; q = q->next) */for (q=evlist; q!=NULL ; q = q->next)if ( (q->evtype==TIMER_INTERRUPT && q->eventity==AorB) ) {/* remove this event */if (q->next==NULL && q->prev==NULL)evlist=NULL; /* remove first and only event on list */else if (q->next==NULL) /* end of list - there is one in front */q->prev->next = NULL;else if (q==evlist) { /* front of list - there must be event after */ q->next->prev=NULL;evlist = q->next;}else { /* middle of list */q->next->prev = q->prev;q->prev->next = q->next;}free(q);return;}printf("Warning: unable to cancel your timer. It wasn't running.\n");starttimer(AorB,increment)int AorB; /* A or B is trying to stop timer */float increment;{struct event *q;struct event *evptr;char *malloc();if (TRACE>2)printf(" START TIMER: starting timer at %f\n",time);/* be nice: check to see if timer is already started, if so, then warn */ /* for (q=evlist; q!=NULL && q->next!=NULL; q = q->next) */for (q=evlist; q!=NULL ; q = q->next)if ( (q->evtype==TIMER_INTERRUPT && q->eventity==AorB) ) {printf("Warning: attempt to start a timer that is already started\n"); return;}/* create future event for when timer goes off */evptr = (struct event *)malloc(sizeof(struct event));evptr->evtime = time + increment;evptr->evtype = TIMER_INTERRUPT;evptr->eventity = AorB;insertevent(evptr);}tolayer3(AorB,packet)int AorB; /* A or B is trying to stop timer */struct pkt packet;{struct pkt *mypktptr;struct event *evptr,*q;char *malloc();float lastime, x, jimsrand();int i;ntolayer3++;/* simulate losses: */if (jimsrand() < lossprob){nlost++;if (TRACE>0)printf(" TOLAYER3: packet being lost\n");return;}/* make a copy of the packet student just gave me since he/she may decide */ /* to do something with the packet after we return back to him/her */ mypktptr = (struct pkt *)malloc(sizeof(struct pkt));mypktptr->seqnum = packet.seqnum;mypktptr->acknum = packet.acknum;mypktptr->checksum = packet.checksum;for (i=0; i<20; i++)mypktptr->payload[i] = packet.payload[i];if (TRACE>2){printf(" TOLAYER3: seq: %d, ack %d, check: %d ", mypktptr->seqnum, mypktptr->acknum, mypktptr->checksum);for (i=0; i<20; i++)printf("%c",mypktptr->payload[i]);printf("\n");}/* create future event for arrival of packet at the other side */evptr = (struct event *)malloc(sizeof(struct event));evptr->evtype = FROM_LAYER3; /* packet will pop out from layer3 */evptr->eventity = (AorB+1) % 2; /* event occurs at other entity */evptr->pktptr = mypktptr; /* save ptr to my copy of packet *//* finally, compute the arrival time of packet at the other end.medium can not reorder, so make sure packet arrives between 1 and 10time units after the latest arrival time of packetscurrently in the medium on their way to the destination */lastime = time;/* for (q=evlist; q!=NULL && q->next!=NULL; q = q->next) */for (q=evlist; q!=NULL ; q = q->next)if ( (q->evtype==FROM_LAYER3 && q->eventity==evptr->eventity) ) lastime = q->evtime;evptr->evtime = lastime + 1 + 9*jimsrand();/* simulate corruption: */if (jimsrand() < corruptprob){ncorrupt++;if ( (x = jimsrand()) < .75)mypktptr->payload[0]='Z'; /* corrupt payload */else if (x < .875)mypktptr->seqnum = 999999;elsemypktptr->acknum = 999999;if (TRACE>0)printf(" TOLAYER3: packet being corrupted\n");}if (TRACE>2)printf(" TOLAYER3: scheduling arrival on other side\n");insertevent(evptr);}int AorB;char datasent[20];{int i;if (TRACE>2) {printf(" TOLAYER5: data received: ");for (i=0; i<20; i++)printf("%c",datasent[i]);printf("\n");}}函数结构解释:函数其他部分定义在每个函数后面一坐定义,此处只给出main函数部分的函数结构。

计网实验报告(抓取本地网卡的IP数据包)

计网实验报告(抓取本地网卡的IP数据包)

计网大型实验报告课程计算机网络原理大型实验姓名汪敏倩班级计科1201 学号201226100117一、实验目的1.1任务一:了解常用网络命令Ping、Tracert/traceroute、Arp、Route的工作原理及使用。

1.2任务二:了解交换机的工作原理,掌握常用交换机的配置和应用以及静态路由的配置。

1.3任务三:抓取本地网卡的IP数据包,并且分析IP数据包的各个部分字段。

二、实验软件2.1任务一:cmd.exe命令解释程序2.2任务二:Packet.Tracer模拟器2.3任务三:Wincap网络抓包器,jnetpcap开源包,eclipes编程器,java语言三、实验步骤或实验原理3.1任务一:3.1.1◆实验原理:1、Ping是Windows下的一个命令在Unix和Linux下也有这个命令。

ping也属于一个通信协议,是TCP/IP协议的一部分。

利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。

它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。

使用格式:Ping空格IP地址。

该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。

2、Tracert/traceroute 的用处和PING是差不多的。

但是也有本质的区别。

用ping的时候是不会显示经过的路径的。

但是用tracerert的时候就可以显示经过的路由,并且显示它经过那个路由,花了多少时间,并且每个路由都会测试3次。

它可以让你知道,你的计算机离目的计算机在网络上的距离有多远,经过多久才能到达。

使用格式:Tracert/traceroute空格IP地址。

3、ARP即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。

主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存一节约资源。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告课程名称:计算机网络技术实践实验名称:RIP和OSPF路由协议的配置及协议流程姓名:苑博学号:08211575/06指导教师:张海旸实验日期:2011年4月15日实验报告日期:2011年4月26日目录一、环境 (3)二、实验目的 (3)三、实验内容 (3)四、实验步骤 (4)1、绘制网络拓扑 (4)(1)网络拓扑图 (4)(2).net文件 (4)2、启动实验环境 (6)3、配置路由器和主机(路由器模拟)各端口的IP地址 (6)4、RIP路由协议配置及流程 (6)(1)配置命令简介 (6)(2)路由器向外发送RIP包 (7)(3)路由器接收RIP包 (8)(4)距离矢量算法 (8)(5)水平分割法测试 (10)5、OSPF路由协议配置及流程 (12)(1)配置命令简介 (12)(2)利用Debug ip ospf events分析OSPF (12)(3)将所有路由器配上OSPF (13)(4)OSPF检查邻机故障 (14)(5)debug ip ospf neighbor命令的使用 (15)五、实验中的问题及心得 (15)1、Dynamips服务器自动关闭即CPU占用率100%的问题 (15)2、OSPF端口信息配置错误 (16)3、RIP无法解决三角环路问题 (17)六、实验思考 (18)一、环境●操作系统:windows xp●网络平台:宿舍有线局域网(校园网)●实验时机器IP地址:118.229.130.203二、实验目的通过自己建立网络拓扑结构,并分别赋予路由器RIP和OSPF协议。

通过两协议完成路由器IP地址表的自动配置。

通过DEBUG命令观察协议实现的过程并作出相应分析,通过Shutdown某些路由器观察路由器重新获取信息的方式并作出相应分析和比较。

本实验旨在让我们了解RIP和OSPF在获取路由表时的工作原理,熟悉Dynamips模拟器关于这方面的使用方法。

三、实验内容•在上一次实验的基础上实现RIP和OSPF路由协议•自己设计网络物理拓扑和逻辑网段,并在其上实现RIP和OSPF协议•通过debug信息详细描述RIP和OSPF协议的工作过程。

•RIP协议中观察没有配置水平分割和配置水平分割后协议的工作流程;•OSPF中需要思考为什么配置完成后看不到路由信息的交互?如何解决?四、实验步骤1、绘制网络拓扑(1)网络拓扑图(2).net文件autostart = false[localhost]port = 7200udp = 10000 workingdir = ..\tmp\[[router R1]]image = ..\ios\unzip-c7200-is-mz.122-37.binmodel = 7200console = 5001npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-4Ts1/0 = R3 s1/0s1/1 = R2 s1/0s1/2 = R4 s1/0s1/3 = R6 s1/1[[router R2]]image= ..\ios\unzip-c7200-is-mz.12 2-37.binmodel = 7200console = 5002npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-4Ts1/1 = R5 s1/0s1/2 = R4 s1/1s1/3 = R6 s1/0[[router R3]]image= ..\ios\unzip-c7200-is-mz.12 2-37.binmodel = 7200console = 5003npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-4Tf0/0 = PC1 f0/0[[router R4]]image= ..\ios\unzip-c7200-is-mz.12 2-37.binmodel = 7200console = 5004npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-8Ts1/2 = R5 s1/1s1/3 = R8 s1/0s1/4 = R6 s1/2[[router R5]]image= ..\ios\unzip-c7200-is-mz.122-37.binmodel = 7200console = 5005npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-4T[[router R6]]image= ..\ios\unzip-c7200-is-mz.122-37.binmodel = 7200console = 5006npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-8Ts1/3 = R8 s1/1s1/4 = R7 s1/0[[router R7]]image= ..\ios\unzip-c7200-is-mz.122-37.binmodel = 7200console = 5007npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-4Ts1/1 = R8 s1/2f0/0 = PC2 f0/0[[router R8]]image= ..\ios\unzip-c7200-is-mz.122-37.binmodel = 7200console = 5008npe = npe-400ram = 64confreg = 0x2102exec_area = 64mmap = falseslot0 = PA-C7200-IO-FEslot1 = PA-4T[[router PC1]]model = 2621ram = 32image= ..\ios\unzip-c2600-i-mz.121-3.T.binmmap = falseconfreg = 0x2102console = 5009[[router PC2]]model = 2621ram = 32image= ..\ios\unzip-c2600-i-mz.121-3.T.binmmap = falseconfreg = 0x2102console = 50102、启动实验环境3、配置路由器和主机(路由器模拟)各端口的IP地址利用ip add、clock rate、encapsulation等命令为各路由器各端口配置信息。

4、RIP路由协议配置及流程(1)配置命令简介(2)路由器向外发送RIP包(以R1为例)为R1配置完RIP协议后输入debug ip rip查看R1接发RIP包的情况。

由于只有R1配置了RIP协议所以现在R1只是单纯地发包。

方框中是R1建立的距离矢量路由表信息,第一列是其所能到达的网络的IP地址via后面的IP地址为下一条地址,由于RIP协议中只是相邻路由器间交换信息,所以下一跳地址是没有意义的,故在生成过程中置为0.0.0.0;metric是路径度量变量,即到达目的地址的跳数;tag是标签信息。

语义解释:把生成的RIP包通过某一串口送到邻居路由器。

(3)路由器接收RIP包将与R1相连的路由器R2配置完RIP协议后R2便可以收到R1发来的RIP包了,如下图所示:(4)距离矢量算法以R1为例说明:语义解释:从S1/0端口收到3.0.0.2端口发来的RIP协议包,协议包信息为:到1.0.0.0网络需要一跳便可以到达。

由上面三张图可以看出,R1从R3收到RIP包告知其经由R3到9.0.0.0网络需要2跳;R1从R4收到RIP包告知其经由R4到9.0.0.0网络需要1跳;而由图三可以看出R1到R3、R4的跳数均为1,所以R1到9.0.0.0网络的数据应该通过R4到达9.0.0.0网,跳数为2。

以用两台模拟PC进行测试,结果显示该网络工作正常:路由表最前面的R代表是由RIP协议产生的。

由表可以看出,RIP协议产生的路由均为最短路由。

(5)水平分割法测试在控制台下将R1停止(stop R1),观察R2的RIP debug信息的变化情况:R2向其邻居通知R1 down掉的信息由图可以看出,当R1 down掉后,R2以及其他路由器迅速做出反应,仅经过几步有限的RIP包交换的过程就将R1 down掉的信息成功获取。

其他路由器也向R2发送R1 down掉的信息下面我们将R1各端口的水平分割协议去掉(在端口权限下使用命令no ip split-horizon),然后将R1 down掉,观察R2的RIP包信息。

由左边一系列的图片可以看出,当去掉R1各端口的水平分割协议后,R2检测到R1 down掉的信息明显变慢,它通过不断获取其他路由器到达R1的跳数来更新自己到达R1的跳数。

经过多次迭代,最终R2到达R1的跳数变为16,即检测到R1不可达。

实验过程中可以明显体会到删除水平分割协议后最终RIP包信息稳定需要较长的时间。

5、OSPF 路由协议配置及流程(1)配置命令简介(2)利用Debug ip ospf events 分析OSPF为不使debug 信息过多导致分析的困难,本小节实验只为R1与R3配置了OSPF 。

由于R1和R3相连,所以首先将两路由器配置好OSPF 协议,观察两个路由器间的通信情况:当R2检测到R1 down 掉后便不再向邻居发送到达R1的信息。

(3)将所有路由器配上OSPF所有路由器句配好OSPF协议后,待各路由器稳定后,将R1的路由表show出来,可以看出其与RIP协议产生的路由表中的表项(即路由信息)相同,侧面验证了OSPF实验的正确性:(4)OSPF 检查邻机故障将正在运行的R2关闭(stop R2),在R1的debug 信息中观察到如下状态的改变:R1发现邻机down 掉后,在自己的路由数据库中将R2的工作状态由FULL 变为了DOWN ,并且停止向R2发送hello 包。

相关文档
最新文档