计算机网络实验实验报告

合集下载

计算机网络实验教程实验报告

计算机网络实验教程实验报告

计算机网络实验教程实验报告一、实验目的本次计算机网络实验的主要目的是通过实际操作和观察,深入理解计算机网络的基本原理和技术,提高对网络配置、通信协议、网络服务等方面的实践能力,培养解决网络问题的思维和方法。

二、实验环境1、硬件环境实验中使用了若干台个人计算机,其配置包括:处理器_____、内存_____、硬盘_____等。

2、软件环境操作系统:Windows 10 专业版网络模拟软件:Packet Tracer网络测试工具:Ping、Tracert 等三、实验内容与步骤实验一:网络拓扑结构的搭建1、打开 Packet Tracer 软件,选择合适的网络设备,如路由器、交换机、PC 等。

2、按照设计好的网络拓扑结构,将设备进行连接。

本次实验构建了一个包含两个局域网通过路由器互联的简单网络。

3、为各设备配置 IP 地址、子网掩码、网关等网络参数。

实验二:网络通信协议的分析1、在搭建好的网络中,选择两台 PC 进行通信。

2、使用 Ping 命令测试网络的连通性,并观察返回的结果。

3、利用 Wireshark 抓包工具捕获通信过程中的数据包,分析其中的协议字段,如 IP 头、TCP 头、UDP 头等,了解网络协议的工作原理。

实验三:网络服务的配置与测试1、在服务器上配置 Web 服务,安装 IIS 组件,创建网站,并设置相关的权限和访问规则。

2、从客户端访问服务器上的网站,验证 Web 服务的可用性。

3、配置 FTP 服务,设置用户账号和权限,进行文件上传和下载测试。

实验四:网络安全的实现1、在路由器上配置访问控制列表(ACL),限制特定 IP 地址或端口的访问。

2、启用防火墙功能,设置安全策略,防止网络攻击。

四、实验结果与分析实验一结果分析成功搭建了网络拓扑结构,各设备之间能够正常通信。

通过配置正确的网络参数,确保了数据包在网络中的准确传输。

实验二结果分析Ping 命令测试显示网络连通性良好,Wireshark 抓包分析揭示了数据包在网络层和传输层的封装和解封装过程,对 IP 协议和 TCP/UDP 协议的工作机制有了更直观的认识。

计算机网络技术实验报告

计算机网络技术实验报告

计算机网络技术实验报告一、实验目的本次计算机网络技术实验的主要目的是深入了解和掌握计算机网络的基本原理、协议和技术,通过实际操作和实验,提高对网络体系结构、网络设备配置、网络服务搭建以及网络安全等方面的认识和实践能力。

二、实验环境1、硬件环境计算机若干台,具备以太网卡。

交换机、路由器等网络设备。

网线、跳线等连接线缆。

2、软件环境Windows 操作系统。

网络模拟软件,如 Packet Tracer。

命令行工具,如 CMD 终端。

三、实验内容与步骤(一)网络拓扑结构的搭建1、设计简单的网络拓扑结构,包括多个计算机节点、交换机和路由器的连接。

2、使用网线将各个设备按照设计的拓扑结构进行物理连接。

(二)IP 地址规划与配置1、为网络中的每个节点分配合理的 IP 地址、子网掩码、网关等参数。

2、在计算机系统中通过网络设置界面或命令行工具进行 IP 地址的配置。

(三)网络设备的基本配置1、登录交换机和路由器,设置设备名称、管理密码等基本信息。

2、配置交换机的 VLAN 划分,实现不同网段之间的隔离。

3、配置路由器的静态路由和动态路由协议,实现网络之间的互联互通。

(四)网络服务的搭建与测试1、在一台计算机上搭建 Web 服务器,安装 IIS 或 Apache 等服务软件,并配置网站内容。

2、从其他计算机上访问搭建的 Web 服务器,测试网络服务的可用性和性能。

(五)网络安全设置1、配置防火墙规则,限制网络访问权限,防止非法入侵。

2、启用网络访问控制列表(ACL),对特定的 IP 地址或端口进行访问控制。

四、实验结果与分析(一)网络拓扑结构搭建结果成功搭建了设计的网络拓扑结构,各设备之间物理连接正常,指示灯显示工作状态正常。

(二)IP 地址配置结果通过查看计算机的网络设置和使用命令行工具进行IP 地址的验证,确认各节点的 IP 地址、子网掩码和网关配置正确,网络内的计算机能够相互通信。

(三)网络设备配置结果交换机的 VLAN 划分成功,不同 VLAN 之间的计算机无法直接通信,实现了网段隔离的目的。

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)计算机网络实验报告(通用6篇)计算机网络实验报告篇1一、实验目的1、熟悉微机的各个部件;2、掌握将各个部件组装成一台主机的方法和步骤;3、掌握每个部件的安装方法;4、了解微型计算机系统的基本配置;5、熟悉并掌握DOS操作系统的使用;6、掌握文件、目录、路径等概念;7、掌握常用虚拟机软件的安装和使用;8、熟悉并掌握虚拟机上WINDOWS操作系统的安装方法及使用;9、掌握使用启动U盘的制作和U盘安装windows操作系统的方法;10、了解WINDOWS操作系统的基本配置和优化方法。

二、实验内容1.将微机的各个部件组装成一台主机;2.调试机器,使其正常工作;3.了解计算机系统的基本配置。

4.安装及使用虚拟机软件;5.安装WINDOWS7操作系统;6.常用DOS命令的使用;7.学会制作启动U盘和使用方法;8.WINDOWS7的基本操作;9.操作系统的基本设置和优化。

三、实验步骤(参照实验指导书上的内容,结合实验过程中做的具体内容,完成此项内容的撰写)四、思考与总结(写实验的心得体会等)计算机网络实验报告篇2windows平台逻辑层数据恢复一、实验目的:通过运用软件R-Studio_5.0和winhe_对误格式化的硬盘或者其他设备进行数据恢复,通过实验了解windows平台逻辑层误格式化数据恢复原理,能够深入理解并掌握数据恢复软件的使用方法,并能熟练运用这些软件对存储设备设备进行数据恢复。

二、实验要求:运用软件R-Studio_5.0和winhe_对电脑磁盘或者自己的U盘中的删除的数据文件进行恢复,对各种文件进行多次尝试,音频文件、系统文件、文档文件等,对简单删除和格式化的磁盘文件分别恢复,并检查和验证恢复结果,分析两个软件的数据恢复功能差异与优势,进一步熟悉存储介质数据修复和恢复方法及过程,提高自身的对存储介质逻辑层恢复技能。

三、实验环境和设备:(1)Windows _P 或Windows 20__ Professional操作系统。

《计算机网络》实验报告

《计算机网络》实验报告

《计算机网络》实验报告计算机网络实验报告一、引言计算机网络是现代信息技术的基础,它将各种计算机和设备连接在一起,实现数据的传输和共享。

本篇实验报告将介绍我们在《计算机网络》课程中进行的实验内容和实验结果。

二、实验目的本次实验的目的是通过搭建一个简单的局域网并进行通信测试,加深对计算机网络基本概念的理解,掌握网络配置和通信过程中的相关知识。

三、实验环境我们使用了两台计算机和一个交换机来搭建局域网。

其中,计算机A作为服务器,计算机B作为客户端,交换机用于连接两台计算机。

四、实验步骤1. 配置网络参数我们首先在计算机A和计算机B上配置IP地址、子网掩码和默认网关,确保两台计算机处于同一个子网中。

2. 搭建局域网将计算机A和计算机B通过网线连接到交换机的不同端口上,确保物理连接正常。

3. 配置服务器在计算机A上搭建服务器,选择一种合适的网络服务软件,如Apache、Nginx 等,并进行相应的配置。

4. 配置客户端在计算机B上配置客户端,选择一种合适的浏览器软件,如Chrome、Firefox 等,并设置代理服务器的IP地址和端口。

5. 进行通信测试打开浏览器,在客户端中输入服务器的IP地址和端口号,访问服务器上的网页。

观察通信过程中的网络数据传输情况,检查是否能够成功建立连接并获取到服务器上的网页内容。

五、实验结果通过以上步骤,我们成功搭建了一个简单的局域网,并进行了通信测试。

在测试过程中,我们观察到以下结果:1. 网络连接正常计算机A和计算机B通过交换机成功建立了物理连接,网络连接正常。

2. IP地址配置正确计算机A和计算机B的IP地址、子网掩码和默认网关配置正确,处于同一个子网中。

3. 服务器配置成功在计算机A上搭建的服务器配置成功,能够正常响应客户端的请求。

4. 客户端配置成功在计算机B上配置的客户端能够正常访问服务器上的网页,获取到正确的网页内容。

六、实验总结通过本次实验,我们深入了解了计算机网络的基本概念和通信过程,掌握了网络配置和通信测试的方法。

《计算机网络实验》实验报告

《计算机网络实验》实验报告

《计算机网络实验》实验报告一、实验目的计算机网络实验是计算机相关专业学习中的重要实践环节,通过实验操作,旨在深入理解计算机网络的基本原理、协议和技术,提高我们的动手能力和解决实际问题的能力。

具体目的包括:1、熟悉计算机网络的体系结构和各层协议的工作原理。

2、掌握网络设备的配置和管理方法,如交换机、路由器等。

3、学会使用网络工具进行网络性能测试和故障诊断。

4、培养团队合作精神和沟通能力,提高解决复杂问题的综合素养。

二、实验环境本次实验在学校的计算机网络实验室进行,实验室配备了以下设备和软件:1、计算机若干台,安装了 Windows 操作系统和相关网络工具软件。

2、交换机、路由器等网络设备。

3、网络线缆、跳线等连接设备。

三、实验内容及步骤实验一:以太网帧的捕获与分析1、打开网络协议分析软件 Wireshark。

2、将计算机连接到以太网中,启动捕获功能。

3、在网络中进行一些数据传输操作,如访问网站、发送文件等。

4、停止捕获,对捕获到的以太网帧进行分析,包括帧的格式、源地址、目的地址、类型字段等。

实验二:交换机的基本配置1、连接交换机和计算机,通过控制台端口进行配置。

2、设置交换机的主机名、管理密码。

3、划分 VLAN,并将端口分配到不同的 VLAN 中。

4、测试不同 VLAN 之间的通信情况。

实验三:路由器的基本配置1、连接路由器和计算机,通过控制台端口或Telnet 方式进行配置。

2、设置路由器的接口 IP 地址、子网掩码。

3、配置静态路由和动态路由协议(如 RIP 或 OSPF)。

4、测试网络的连通性。

实验四:网络性能测试1、使用 Ping 命令测试网络的延迟和丢包率。

2、利用 Tracert 命令跟踪数据包的传输路径。

3、使用网络带宽测试工具测试网络的带宽。

四、实验结果与分析实验一结果与分析通过对捕获到的以太网帧的分析,我们清楚地看到了帧的结构,包括前导码、目的地址、源地址、类型字段、数据字段和帧校验序列等。

计算机网络实践报告5篇

计算机网络实践报告5篇

计算机网络实践报告5篇(实用版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的实用资料,如职场文书、书信函件、教学范文、演讲致辞、心得体会、学生作文、合同范本、规章制度、工作报告、其他资料等等,想了解不同资料格式和写法,敬请关注!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, this store provides various types of practical materials for everyone, such as workplace documents, correspondence, teaching samples, speeches, insights, student essays, contract templates, rules and regulations, work reports, and other materials. If you want to learn about different data formats and writing methods, please pay attention!计算机网络实践报告5篇计算机网络实践报告1开学第一周我们就迎来了计算机网络实训,这门课程与上学期所学的计算机网络相对应,给了我们一个更深刻理解和掌握所学知识的机会。

计算机网络实验报告

计算机网络实验报告

计算机网络实验报告引言计算机网络是现代社会中不可或缺的基础设施,它使得我们能够在全球范围内实现信息交流与资源共享。

为了更好地理解计算机网络的工作原理,本次实验我们进行了一系列的网络实验。

一、网络拓扑实验首先,我们进行了网络拓扑实验,通过搭建不同拓扑结构的网络,观察其性能表现和通信效率。

我们尝试了星型、环状和总线型拓扑结构,并通过测量网络中的传输时延、带宽和吞吐量来评估不同拓扑结构的优劣。

结果显示,星型拓扑结构具有较好的扩展性和可靠性,但是对中央节点的要求较高,一旦中央节点故障,整个网络将无法正常运行。

而环状和总线型拓扑结构则相对简单,但是容易产生信号干扰和数据冲突等问题。

二、网络传输协议实验接下来,我们进行了网络传输协议实验,重点研究TCP/IP协议的性能和可靠性。

我们通过改变传输文件的大小、网络拥塞程度等因素,测试了TCP协议在不同情境下的传输速度和稳定性。

同时,我们也对比了UDP协议的传输效果。

实验结果表明,TCP协议在数据传输方面具有较好的可靠性和流量控制能力,但是在高丢包率的情况下会出现明显的传输延迟。

相比之下,UDP协议虽然传输速度较快,但是无法保证数据的可靠性,容易出现丢包和重传等问题。

三、网络安全实验随后,我们进行了网络安全实验,探讨了网络攻击与防御的相关技术。

我们采用了常见的入侵检测系统和防火墙来保护网络安全,通过模拟各种攻击手段,如拒绝服务攻击、端口扫描等,测试了网络的防护能力。

实验结果显示,入侵检测系统和防火墙能够有效地阻止大多数网络攻击,但是对于某些高级攻击手段,如零日漏洞攻击,仍然存在一定的漏洞。

因此,网络安全的保护需要综合运用各种技术手段,不断提升系统的安全性。

结论通过本次计算机网络实验,我们对网络拓扑结构、传输协议和网络安全等方面有了更深入的理解。

网络拓扑结构的选择应根据实际需求进行权衡,传输协议的选择应根据网络特性和应用场景进行调整,而网络安全则需要综合运用各种安全技术来确保系统的稳定性和数据的安全性。

《计算机网络》实验报告

《计算机网络》实验报告

一、实验目的1. 理解计算机网络的基本概念和结构。

2. 掌握网络设备的配置方法,包括交换机、路由器等。

3. 学习网络协议的作用和配置方法,如TCP/IP、DHCP等。

4. 通过实验加深对网络故障诊断和排除能力的培养。

二、实验内容1. 实验环境实验设备:一台PC机、一台交换机、一台路由器、双绞线、网线等。

实验软件:Windows操作系统、网络管理软件等。

2. 实验步骤(1)网络设备连接首先,将PC机通过网线连接到交换机的一个端口上。

然后,将交换机的另一个端口连接到路由器的WAN口。

最后,将路由器的LAN口连接到PC机的另一台交换机上。

(2)网络设备配置①交换机配置进入交换机命令行界面,配置交换机的基本参数,如VLAN ID、IP地址、子网掩码等。

②路由器配置进入路由器命令行界面,配置路由器的接口参数,如WAN口和LAN口的IP地址、子网掩码等。

同时,配置路由协议,如静态路由、动态路由等。

③PC机配置在PC机的网络设置中,将IP地址、子网掩码、默认网关等信息设置为与路由器LAN口相同的参数。

(3)网络测试①测试PC机与交换机之间的连通性在PC机中ping交换机的IP地址,检查PC机是否能够与交换机通信。

②测试PC机与路由器之间的连通性在PC机中ping路由器的IP地址,检查PC机是否能够与路由器通信。

③测试不同VLAN之间的连通性在PC机中ping另一个VLAN中的设备,检查不同VLAN之间的设备是否能够相互通信。

三、实验结果与分析1. 实验结果(1)PC机与交换机之间连通(2)PC机与路由器之间连通(3)不同VLAN之间的设备相互通信2. 实验分析通过本次实验,我们成功搭建了一个简单的计算机网络,并掌握了网络设备的配置方法。

在实验过程中,我们遇到了一些问题,如网络设备之间的连通性、VLAN之间的通信等。

通过查阅资料和调试,我们解决了这些问题,加深了对计算机网络的理解。

四、实验总结1. 通过本次实验,我们了解了计算机网络的基本概念和结构,掌握了网络设备的配置方法。

计算机网络实验报告-USTC

计算机网络实验报告-USTC

计算机网络实验报告-USTC 计算机网络实验报告USTC一、实验目的本次计算机网络实验旨在深入理解计算机网络的基本原理和关键技术,通过实际操作和观察,提高对网络协议、网络拓扑结构、网络性能优化等方面的认识和实践能力。

二、实验环境实验在USTC的计算机网络实验室进行,使用了以下硬件和软件设备:1、计算机:若干台配置相同的台式计算机,具备以太网接口和无线网卡。

2、网络设备:交换机、路由器、防火墙等。

3、操作系统:Windows 10 和 Linux(Ubuntu)。

4、网络模拟软件:Packet Tracer、Wireshark 等。

三、实验内容1、网络拓扑结构的搭建与分析使用 Packet Tracer 软件搭建了星型、总线型、环形和树形等常见的网络拓扑结构。

对不同拓扑结构的特点进行了分析,包括可靠性、扩展性、传输效率等方面。

通过模拟数据传输,观察了网络拥塞、冲突等现象,并分析了其原因和解决方法。

2、 IP 地址配置与子网划分在 Windows 和 Linux 操作系统中,手动配置了 IP 地址、子网掩码、网关和 DNS 服务器。

学习了子网划分的原理和方法,通过划分不同大小的子网,提高了网络地址的利用率。

使用 Ping 命令和网络扫描工具,测试了网络的连通性和可达性。

3、网络协议分析利用 Wireshark 软件捕获网络数据包,对 TCP、UDP、ICMP 等常见协议的数据包格式和字段进行了分析。

观察了协议的三次握手和四次挥手过程,理解了连接建立和释放的机制。

分析了网络中的广播、组播和单播通信方式,以及它们在不同应用场景中的优缺点。

4、网络性能优化调整了网络参数,如缓冲区大小、MTU 值等,观察对网络性能的影响。

实施了流量控制和拥塞控制策略,如滑动窗口机制、慢启动算法等,提高了网络的传输效率和稳定性。

对网络中的丢包、延迟和带宽利用率等性能指标进行了监测和分析,提出了相应的优化建议。

四、实验步骤1、网络拓扑结构搭建打开 Packet Tracer 软件,选择所需的网络设备和线缆。

计算机网络实验报告精选

计算机网络实验报告精选

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

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如报告总结、合同协议、心得体会、演讲致辞、策划方案、职场文书、党团资料、教案资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!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 essays, such as report summaries, contract agreements, insights, speeches, planning plans, workplace documents, party and youth organization materials, lesson plans, essay compilations, and other sample essays. If you would like to learn about different sample formats and writing methods, please stay tuned!计算机网络实验报告精选随着社会不断地进步,报告使用的频率越来越高,报告具有语言陈述性的特点。

计算机网络实验报告

计算机网络实验报告

计算机网络实验报告实验名称:计算机网络基础配置实验实验目的:1. 掌握计算机网络的配置方法2. 了解计算机网络协议的工作原理3. 掌握网络设备的配置方法实验环境:1. 两台计算机(Windows操作系统)2. 网线若干根3. 路由器一台4. 交换机一台5. 网线转接头若干实验原理:计算机网络是通过一系列网络设备(包括计算机、路由器、交换机等)将地理位置不同的计算机系统互联起来,实现资源共享、信息传递和任务协作的计算机系统。

计算机网络的基础配置包括计算机网络的连接、配置和管理。

本实验将通过配置路由器和交换机,实现两台计算机之间的网络互联。

实验步骤:一、网线的制作首先,我们需要制作两根网线,用于连接路由器和两台计算机,以及两台计算机之间的通信。

根据网线的制作标准,将网线的线序排列整齐,并用压线头压紧。

二、路由器的配置1. 连接路由器电源,并使用电脑通过网线连接到路由器的LAN口。

2. 打开浏览器,输入路由器的IP地址(通常为192.168.XX.XX),并输入登录用户名和密码(用户手册或路由器背面标签上会有提示)。

3. 配置路由器的上网方式(如拨号、动态IP、静态IP等),并设置正确的上网参数。

4. 配置路由器的DHCP功能,以便计算机能够自动获取正确的网络配置。

三、交换机的配置1. 将两台计算机连接到交换机上,并确保计算机能够正常上网。

2. 进入交换机的管理界面,配置交换机的端口为“trunk”模式,以便计算机能够通过交换机连接到网络。

四、计算机的配置1. 确保计算机的网卡驱动程序已正确安装,并能够正常识别网络设备。

2. 打开“网络和共享中心”,检查计算机是否可以正常连接到网络。

3. 在计算机的网络配置中,设置不同的网络适配器,以便在不同的网络环境下使用(如局域网、互联网等)。

五、测试网络连接1. 将两台计算机连接到互联网服务提供商,并使用浏览器等工具测试网络连接是否正常。

2. 使用网络测试工具(如ping命令)测试两台计算机之间的网络连通性。

计算机网络实验报告

计算机网络实验报告

《计算机网络》实验报告篇一:计算机网络实验报告《计算机网络》实验报告班级:学号:姓名:指导教师:信管1202班 0202张军李辉实验时间:实验一网线制作 XX-01-06实验名称:一、实验目的:1、认识网线(双绞线)、串行线、并行线和网线制作工具2、掌握各种标准的网线线序排列3、掌握直通线、交叉线的制作方法二、实验内容:1. 直通线的制作1) 利用剪线钳剪下所需的双绞线的长度,至少0.6m,最多不超过100m。

然后利用双绞线剥线器将双绞线的外皮除去2-3cm。

2) 确定双绞线的每根线已经正确放置之后,就可以用RJ45压线钳压接RJ45接头,要确保每一根线与接头的引脚充分接触。

3) 按照同样的方法制作另一端的RJ45接头。

4) 用测线仪测试做好的网线,看是否合格。

5) 打开测线仪电源,将网线插头分别插入主测试器和远程测试器,主机指示灯从1-8逐个顺序闪亮,如果网线合格,远程测试器也应该按1-8的顺序依次闪亮。

若接线不正常,则按下述情况显示:1当有一根网线如3号线断路时,主测试仪和远程测试端3号等都不亮○2当有几条线不通时,这几条线的灯都不亮;当网线中少于2根线连通时,灯都不亮。

○ 3当两头网线乱序,例2,4线乱序,则显示如下:○主测试器不变:1-2-3-4-5-6-7-8-G 远程测试端为:1-4-3-2-5-6-7-8-G4当网线有2根短路时,○则主测试器显示不亮,而远程测试端显示短路的两根线灯都微亮,若有3根以上(含3根)短路时则所有短路的几条线号的灯都不亮。

2. 交叉线的制作按照直通线制作的操作方法,一端A类,一端B类,即可完成交叉线的制作。

三、实验结果制作好的直通线,将直通线网线插头分别插入主测试器和远程测试器,主机指示灯从1-8逐个顺序闪亮,远程测试器也按1-8的顺序依次闪亮。

双绞线制作好后,经远程测试器测试后,也制作成功四、实验中遇到的问题及解决方法首次制作完成后,双绞线有一个水晶头因为压接力度较小,使水晶头较大,很难放进测试器插口,勉强放进去后,测试器指示灯也没有正常亮起,后经重新制作后,指示灯正常亮起实验名称:实验时间:实验二 Web服务器的配置和组建工作组对等网XX-01-06篇二:计算机网络实验报告计算机网络实验报告《计算机网络》实验报告【实验一】认识计算机网络【实验目的】1.初步掌握计算机网络的定义;2.认识计算机网络的拓扑结构;3.了解计算机网络的功能。

计算机网络实验总结

计算机网络实验总结

计算机网络实验总结计算机网络实验总结(通用8篇)计算机网络实验总结篇1一学期的计算机网络课结束了,通过这一学期的学习,我们对计算机网络的各方面知识都有了初步的了解。

这一学期计算机网络实验课总共进行了5次:第一次是关于网线制作以及相关设备的了解;第二次是关于交换机的配置问题;第三次是关于vlan的配置问题;第四次是关于路由器的配置和协议问题;最后一次是了解RIP协议和OSPF协议,以及相关的配置。

5次实验课从简单到困难,考察了计算机网络一些重要的基本知识,为我们以后详细学习计算机网络奠定了坚实的基础。

第一次试验是制作网线。

首先是了解网线连接设备时的规则问题,我们了解到同态设备使用交叉线,异态设备使用直通线。

直通线两头都按照T568B线序标准连接,交叉线一头按照T568A线序标准连接,另一头按照T568B线序标准连接。

我们所要做的就是制作交叉线和直通线。

制作网线的过程分为这几部分:剥线排序理直剪齐插入压线检测。

每一步都很重要,稍有差错网线就不能制作成功。

组员内有人制作失败,原因是网线没有剪齐,有的线无法接触到顶端的簧片。

这个错误是不应该的,只要仔细就可以完全避免的。

然后我们又了解了制作网线所用到的一些工具,包括各种网线钳和网线,这让我们受益匪浅。

第二次实验是进行交换机的配置。

学习到有关全局模式和特权模式转换的方法、交换机的工作原理、交换机的基本配置和vlan的配置问题,还有在dos命令框中输入代码进行配置的各种方法。

我们进行了划分vlan操作,删除vlan操作等,详细了解了设备各种端口的设置,还有IP住址以及住址掩码等的设置。

在这一次实验中,问题主要是在全局模式和特权模式中,有人在设置的时候没分清计算机是处于那种模式下,导致设置出现错误。

不过大家互相帮助,在接下来的实验中这个问题没有再出现过。

第三次实验是vlan的配置。

主要内容有创建vlan,划分端口,以及各个端口的设置。

实验错误主要是出现在拓扑图连线的时候,没有注意到端口的问题,在设置的时候,没有分清端口的位置,导致出错,最后拓扑图无法连通。

计算机网络实验报告

计算机网络实验报告

计算机网络实验报告计算机网络实验报告引言:计算机网络是现代社会的重要组成部分,它连接了各种设备和系统,实现了信息的传输和共享。

在计算机网络实验中,我们通过实际操作和观察,深入了解了网络通信原理、协议和技术。

本篇实验报告将对我们进行的计算机网络实验进行总结和分析,以及实验中遇到的问题和解决方法。

实验一:网络拓扑结构在本实验中,我们学习了计算机网络的拓扑结构,包括总线型、星型、环型和网状型等。

通过搭建不同拓扑结构的网络,我们深入理解了各种结构的优缺点和适用场景。

例如,总线型拓扑结构简单易懂,但容易出现单点故障;而星型拓扑结构可靠性较高,但需要大量的物理连接。

实验二:网络协议分析在本实验中,我们学习了常见的网络协议,如TCP/IP、HTTP和FTP等。

通过抓包和分析网络数据包,我们了解了协议的工作原理和通信过程。

例如,TCP/IP协议是互联网的核心协议,它通过IP地址和端口号实现了可靠的数据传输;HTTP协议是应用层协议,用于在客户端和服务器之间传输超文本。

实验三:网络安全与防护在本实验中,我们学习了网络安全的基本概念和常见的攻击手段,如DDoS、SQL注入和跨站脚本等。

通过搭建防火墙和入侵检测系统,我们学会了如何保护网络安全。

例如,防火墙可以通过过滤规则,控制网络流量的进出;入侵检测系统可以监测网络中的异常行为,并及时作出响应。

实验四:无线网络实践在本实验中,我们学习了无线网络的工作原理和配置方法。

通过配置无线路由器和接入点,我们实现了无线网络的搭建和连接。

例如,无线网络使用无线电波进行通信,需要设置SSID和密码来保护网络安全;无线网络的覆盖范围受到信号强度和障碍物的影响,需要合理布置设备位置。

实验五:网络性能测试在本实验中,我们学习了网络性能测试的方法和工具。

通过使用ping、traceroute和iperf等工具,我们测试了网络的延迟、丢包率和带宽等性能指标。

例如,ping命令可以测试网络的延迟和丢包情况;iperf命令可以测试网络的带宽和吞吐量。

北航计算机网络实验报告

北航计算机网络实验报告

北航计算机网络实验报告一、实验目的计算机网络是一门涉及通信、计算机科学和工程的交叉学科,其理论知识较为抽象。

通过本次实验,旨在深入理解计算机网络的基本原理和技术,培养实际动手能力和解决问题的能力,具体目的包括:1、熟悉网络拓扑结构的设计与搭建,理解不同拓扑结构的特点和应用场景。

2、掌握网络设备的配置和管理方法,如交换机、路由器等。

3、学习网络协议的工作原理,通过实际操作观察和分析协议的运行过程。

4、培养网络故障排查和解决的能力,提高应对实际网络问题的经验。

5、加深对网络性能优化和安全防护的认识,了解相关技术和策略。

二、实验环境本次实验在北航计算机网络实验室进行,实验室配备了以下设备和软件:1、计算机若干台,安装了 Windows 和 Linux 操作系统。

2、交换机和路由器,型号分别为_____和_____。

3、网络线缆、网线钳、测线仪等布线工具。

4、网络模拟软件,如 Packet Tracer。

三、实验内容(一)网络拓扑结构设计与搭建首先,根据实验要求设计了一个简单的网络拓扑结构,包括一个核心交换机连接多个接入层交换机,以及一个路由器连接外网。

使用网线和交换机、路由器等设备,按照设计的拓扑结构进行物理连接。

在连接过程中,注意线缆的类型和连接方式,确保连接的稳定性和正确性。

(二)网络设备配置1、交换机配置登录交换机的管理界面,设置交换机的名称、管理 IP 地址等基本信息。

划分 VLAN(虚拟局域网),将不同的端口划分到不同的 VLAN 中,实现网络的逻辑隔离。

配置端口的速率、双工模式等参数,优化网络性能。

2、路由器配置配置路由器的接口 IP 地址,使其能够与内网和外网进行通信。

设置路由表,实现不同网段之间的路由转发。

启用NAT(网络地址转换)功能,使内网中的主机能够访问外网。

(三)网络协议分析使用 Wireshark 网络抓包工具,抓取网络中的数据包,对常见的网络协议如 TCP、IP、HTTP 等进行分析。

北航计算机网络实验报告

北航计算机网络实验报告

北航计算机网络实验报告一、实验目的本次计算机网络实验旨在深入了解计算机网络的基本原理和技术,通过实际操作和观察,掌握网络协议的工作机制、网络拓扑结构的搭建、网络性能的评估以及网络安全的相关知识。

二、实验环境本次实验在北航的计算机网络实验室进行,使用的设备包括计算机、交换机、路由器、网线等。

实验操作系统为 Windows 10,使用的网络模拟软件为 Packet Tracer。

三、实验内容1、网络拓扑结构的搭建使用 Packet Tracer 软件搭建了一个简单的星型网络拓扑结构,包括一台服务器、若干台客户端计算机以及一台交换机。

通过配置IP 地址、子网掩码和网关等参数,实现了客户端计算机与服务器之间的通信。

2、网络协议的分析通过 Wireshark 抓包工具,捕获了客户端计算机与服务器之间的通信数据包,并对数据包进行了详细的分析。

重点分析了 TCP 协议和 IP协议的头部字段,了解了协议的工作流程和数据封装格式。

3、网络性能的评估使用 Ping 命令和 Tracert 命令,对搭建的网络进行了性能评估。

通过测量网络的延迟、丢包率等指标,分析了网络的性能状况,并针对发现的问题进行了优化。

4、网络安全的实验设置了简单的网络防火墙,对网络中的访问进行了控制。

通过配置访问规则,实现了允许特定 IP 地址访问服务器的功能,同时禁止了其他非法访问。

四、实验步骤1、网络拓扑结构搭建(1)打开 Packet Tracer 软件,从设备库中选择服务器、客户端计算机和交换机等设备。

(2)按照星型拓扑结构的要求,将设备进行连接,并使用网线将设备连接到交换机上。

(3)为客户端计算机和服务器配置 IP 地址、子网掩码和网关等参数,确保网络的连通性。

2、网络协议分析(1)在客户端计算机上打开 Wireshark 抓包工具,并开始捕获数据包。

(2)在客户端计算机上访问服务器上的资源,如网页、文件等。

(3)停止捕获数据包,并对捕获到的数据包进行分析,查看 TCP 协议和 IP 协议的头部字段,了解数据的封装和传输过程。

计算机网络实验报告

计算机网络实验报告

计算机网络实验报告第一篇:计算机网络实验报告计算机网络实验报告年级:专业:班级:姓名:学号:实验地点:实验时间:指导教师签字:成绩:实验名称:1.实验目的和要求:2.实验原理:3.实验用的软硬件环境4.操作方法与实验步骤5.实验内容及实验数据记录6.分析、建议、问题讨论第二篇:计算机网络实验报告计算机网络实验报告课程_ _ 实验名称 _姓名_________ ________ 实验日期:学号________ _________ 实验报告日期:同组人姓名_________________ 报告退发:(订正、重做)同组人学号_ _______________________ 教师审批签字:一.实验名称二.环境(详细说明运行的操作系统,网络平台,机器的IP地址)三.实验目的""四.实验内容及步骤(包括主要流程和说明,分工说明)五.实验结果六.实验中的问题及心得第三篇:计算机网络实验报告(模版)福建农林大学计算机与信息学院课程名称:姓名:系:专业:年级:学号:指导教师:职称:信息工程类实验报告计算机网络计算机科学与技术系计算机科学与技术2011级周术成老师2014年月日福建农林大学计算机与信息学院实验报告系:计算机与信息系专业:计算机科学与技术年级:2011姓名:学号:实验课程:_计算机网络实验室号____田C-305__计算机号:实验时间:指导教师签字:成绩:实验一以太网组网实验1.实验目的和要求1.熟悉局域网所使用的基本设备 2.掌握以太网组建方法 3.掌握网络连通性测试方法2.实验原理以太网事实上是一簇局域网技术,不同的以太网在链路层帧头的格式、电缆的类型和传输速度上有很大的差异以太网可以利用同轴电缆、双绞线、光缆等不同的传输介质进行组网,也可以运行10Mb/s、100Mb/s、1000Mb/s 的网络速度。

不管采用何种传输介质,以及网络速度各不相同,只要是以太网,采用的都是CSMA/CD介质访问控制方法。

计算机网络实验报告(通用19篇)

计算机网络实验报告(通用19篇)

计算机网络实验报告计算机网络实验报告(通用19篇)在生活中,报告的使用频率呈上升趋势,报告包含标题、正文、结尾等。

我们应当如何写报告呢?以下是小编帮大家整理的计算机网络实验报告,欢迎大家借鉴与参考,希望对大家有所帮助。

计算机网络实验报告篇1一、实验目的1、掌握文件的复制、移动、删除;2、掌握文件的重命名、属性的设置;3、掌握文件的查找;4、掌握文件夹选项操作。

5、通过控制面板查看和修改主要输入输出设备的设置;6、查看和修改系统基本配置信息。

7、通过用户管理设置,使计算机为多人合用,同时管理员可以根据需要控制其它用户的操作权限;8、通过对计算机的环境设置,优化计算机的性能,加强用户的计算机安全意识,提高计算机病毒应对能力。

二、实验任务1、查找文件“notepad、exe”,在D盘上以自己的学号为名建立一个新的文件夹,在此文件夹内建一名为“记事本”的文件夹,将文件“notepad、exe”复制到“记事本”文件夹下面,属性修改为“只读”,然后在桌面上创建“notepad、exe”文件的快捷方式。

2、显示“我的文档”文件夹下所有文件的扩展名。

3、修改鼠标、显示器、输入法的设置。

4、显示系统硬件配置信息。

5、添加删除程序。

6、添加、删除用户,修改用户信息。

7、修改虚拟内存设置,优化计算机性能三、实验检查内容1、是否在E区建立以自己学号为名的文件夹2、是否在学号文件夹中创建名为“记事本”的文件夹3、是否将“notepad、exe”文件复制到“记事本”文件夹中4、“notepad、exe”文件的属性是否修改为“只读”5、是否在桌面上创建“notepad、exe”文件的快捷方式6、是否显示文件的扩展名7、修改鼠标处于“正常选择”状态的显示图形8、修改显示器的分辨率9、设置CTRL+SHIFT+1为某种中文输入法的热键10、设置Windows系统在“关闭程序”事件时的声音11、查找本机CPU的频率12、写出本机网络适配器的名称13、添加一个以自己学号为名的用户14、将虚拟内存设置到D区,最大值为1GB。

计算机网络_实验报告

计算机网络_实验报告

计算机网络_实验报告一、实验目的本次计算机网络实验的主要目的是深入了解计算机网络的工作原理和相关技术,通过实际操作和观察,增强对网络概念的理解和应用能力,培养解决网络问题的实践技能。

二、实验环境本次实验在计算机网络实验室进行,实验室配备了多台计算机、网络交换机、路由器等设备,并安装了相关的网络模拟软件和工具。

操作系统:Windows 10网络模拟软件:Cisco Packet Tracer三、实验内容及步骤(一)网络拓扑结构的搭建1、打开 Cisco Packet Tracer 软件,根据给定的需求设计网络拓扑结构。

2、选择合适的网络设备,如交换机、路由器等,并将它们连接起来。

3、配置设备的端口、IP 地址、子网掩码等参数,确保网络的连通性。

(二)网络协议的配置与分析1、配置 TCP/IP 协议,包括 IP 地址分配、子网掩码设置、网关配置等。

2、观察网络数据包的传输过程,使用 Wireshark 工具捕获数据包并进行分析。

3、研究 ARP 协议、ICMP 协议等的工作原理和作用。

(三)网络服务的配置与测试1、配置 DNS 服务器,实现域名解析功能。

2、搭建 Web 服务器,发布网站内容,并从客户端进行访问测试。

3、配置 FTP 服务器,实现文件的上传和下载功能。

(四)网络安全的设置与验证1、设置访问控制列表(ACL),限制网络中的访问权限。

2、配置防火墙规则,保护网络免受外部攻击。

3、进行端口扫描和漏洞检测,评估网络的安全性。

四、实验结果与分析(一)网络拓扑结构搭建结果成功搭建了满足实验要求的网络拓扑结构,各设备之间能够正常通信,网络链路状态稳定。

通过 Ping 命令测试,不同网段的设备之间能够相互连通,证明 IP 地址配置正确,子网掩码设置合理。

(二)网络协议分析结果通过 Wireshark 捕获的数据包分析,深入了解了 TCP/IP 协议中数据封装、传输和控制的过程。

ARP 协议在获取目标设备的 MAC 地址时发挥了关键作用,ICMP 协议在网络故障诊断中提供了有用的信息。

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

华中科技大学计算机学院《计算机网络》实验报告实验名称网络组建与实施及Socket编程团队成员:注:团队成员贡献百分比之和为1教师评语:实验一——网络组建与实施一.环境操作系统:WINDOWS7 (32位旗舰版)工具:Boson Netsim仿真软件(版本号5.31)二.实验目的1.了解IP协议,网络层协议和数据链路层协议的工作原理机以及工作机制2.掌握IP地址的规划方法3.掌握路由协议的配置方法4.掌握路由器以及二/三层交换机的配置方法5.了解VLAN的划分原理6.掌握访问控制的配制方法三.实验内容及步骤(包括主要流程和说明)实验所用拓扑图如下:图一:图二第一项试验——组网试验1. 设置PC1、PC2的ip分别为192.168.0.1、192.168.0.2,子网掩码为255.255.255.0,网关为192.168.0.254;设置PC3~PC8的ip分别为192.168.1.1~192.168.1.6,子网掩码为255.255.255.0,网关为192.168.1.254;设置Router A的端口地址为ether 0 192.168.0.254,ether 1 192.168.1.254。

测试结果为各PC机之间可以自由通信,部分结果如图1-1所示。

图1-1 (a)图1-1 (b)2.将PC4、PC6、PC8的ip地址改为192.168.2.2、192.168.2.4、192.168.2.6,网关改为192.168.2.254,其他设置不变。

PC4,PC6,PC8之间能互相通信,不能发送数据到其他PC;其他PC之间可以互相通信;PC1,PC2不能发送数据给PC4,PC6,PC8,而PC3,PC5,PC7可以发送数据给PC4,PC6,PC8。

部分结果如图1-2所示。

结果分析:路由器ip为PC3,PC5,PC7的默认网关,PC3,PC5,PC7可以通过路由器访问其他PC,也可以被PC1,PC2访问,而PC4,PC6,PC8无法通过路由器访问其他子网段PC图1-2 (a) PC3的ping结果图1-2 (b) PC1的ping结果图1-2(c) PC4的ping结果第二项试验——路由配置试验1.首先按如下要求配置各PC的IP地址2.路由器配置如下(Router A配置如下,其它路由器配置类似)3.RIP协议配置(Router A配置如下,其它路由器配置类似)4.思考题如果不设置时钟频率,各PC无法相互访问OSPF协议配置(Router A配置如下,其它路由器配置类似)结果是各PC能相互访问,部分结果见图2-1。

图3-1 (a) PC2的ping结果第三项试验——VLAN划分试验1.在switch2,switch3,switch4上设置一个名为class的VTP域,并创建一个名为Class1的VLAN2以及名为Class2的VLAN3.2.将switch2,switch3,switch4的各个端口分配到新创建的相应VLAN中。

(switch2的配置如下,switch3,switch4的配置与之类似,端口为fa0/3和fa0/4)3.配置switch2,switch3,switch4之间的trunk链路。

(switch2的配置如下,switch3,switch4的配置与之类似,端口为fa0/1和fa0/2)此时,PC3,PC5,PC7处于VLAN2,PC4,PC6,PC8处于VLAN3,VLAN2和VLAN3内部PC可以互相访问,但VLAN之间无法访问。

部分结果见图3-1。

图3-1 (a) PC3的ping结果图3-1 (b) PC4的ping结果第四项试验——访问控制配置试验1.对路由器Router A进行配置,使得PC1无法访问其它PC,也不能被其它PC访问部分结果见图4-1。

图4-1 (a) PC1的ping结果图4-1 (b) PC2的ping结果实验二——支持多线程处理的web服务服务端软件一.环境操作系统:WINDOWS 7 (32位旗舰版)运行工具:chrome浏览器编写程序语言:C++环境:Qt Creator 5.1.0二.实验目的1.了解应用层和运输层的作用以及相关协议的工作原理和机制2.掌握SOCKET编程的基本方法三.实验内容及步骤(包括主要流程和说明)内容:编写一个支持多线程处理的web服务服务端软件要求如下:第一级:1.可配置Web服务器的IP地址、监听端口和主目录2.制作一个主页放在主目录中,并配置Web服务器的IP地址、监听端口和主目录3.具备完成所需功能的基本图形用户界面(GUI),并具友好性第二级:1.选择合适的Socket编程模型,创建套接字,监听所配置的监听端口2.支持服务的启动和关闭3. 具备完成所需功能的基本图形用户界面(GUI),并具友好性第三级:1.支持多线程,能够针对每一个新的请求创建新的线程2.在服务端的屏幕上输出每一个请求的来源(IP地址、端口号和HTTP请求命令行)3.支持一定的异常情况处理能力4.具备完成所需功能的基本图形用户界面(GUI),并具友好性第四级:1.能够处理HTTP请求以及定位相应的HTML文件2.向客户端发送响应报文3.对于无法成功定位文件的请求,根据错误原因,做相应的错误提示4.在服务端的屏幕上能够输出对每一个请求处理的结果5.具备完成所需功能的基本图形用户界面(GUI),并具友好性第五级:1.支持多种类型文件(如TXT和JPG等)的发送2.具备简洁方便的GUI界面步骤:代码实现部分1.启动服务:BOOL QHttpServer::Start(string HomeDir, string DefIndex, int Port, int PersTO){m_HomeDir = HomeDir;m_DefIndex = DefIndex;if(m_HomeDir.substr(m_HomeDir.size() - 1, 1) != "\\")m_HomeDir += "\\";if(bRun){//LogMessage(LOGFILENAME, "_beginthreadex(...) failure, for Launch Thread", "Run", errno);return FALSE;}ServerPort = Port;PersistenceTO = PersTO;InitializeCriticalSection(&cs);InitializeCriticalSection(&_cs);Reset();ThreadLaunchedEvent = CreateEvent(NULL, FALSE, TRUE, NULL);// 启动接收线程ResetEvent(ThreadLaunchedEvent);ThreadA = (HANDLE)_beginthreadex(NULL, 0, AcceptThread, this, 0, &ThreadA_ID);if(!ThreadA){//LogMessage(LOGFILENAME, "_beginthreadex(...) failure, for Launch Thread", "Run", errno);return FALSE;}if(WaitForSingleObject(ThreadLaunchedEvent, THREADWAIT_TO) != WAIT_OBJECT_0) {//LogMessage(LOGFILENAME, "Unable to get response from Accept Thread withing specified Timeout ->", "Run", THREADWAIT_TO);CloseHandle(ThreadLaunchedEvent);return FALSE;}CloseHandle(ThreadLaunchedEvent);bRun = TRUE;return TRUE;// return Run(Port, PersTO);}2.关闭服务:BOOL QHttpServer::Shutdown(){if(!bRun)return FALSE;BOOL bResult = TRUE;HANDLE hArray[2];hArray[0] = ThreadA;hArray[1] = ThreadC;//// 关闭接收和helper线程//SetEvent(ShutdownEvent);DWORD n = WaitForMultipleObjects(2, hArray, TRUE, THREADKILL_TO);if(n == WAIT_TIMEOUT || n == WAIT_FAILED){//LogMessage(LOGFILENAME, "WaitForMultipleObjects(...) timed out", "Shutdown");//if(!TerminateThread(ThreadA, THREADEXIT_SUCCESS))//LogMessage(LOGFILENAME, "TerminateThread(.ThreadA.) failure, probably it is already terminated", "Shutdown", GetLastError());//if(!TerminateThread(ThreadC, THREADEXIT_SUCCESS))//LogMessage(LOGFILENAME, "TerminateThread(.ThreadC.) failure, probably it is already terminated", "Shutdown", GetLastError());bResult = FALSE;}CloseHandle(ThreadA);CloseHandle(ThreadC);//// 所有的客户线程都结束//THREADLIST::iterator it;while(ThreadList.size()){Sleep(100);}DeleteCriticalSection(&cs);DeleteCriticalSection(&_cs);bRun = FALSE;return bResult;}3.增加新链接:BOOL QHttpServer::AddClient(SOCKET s, char* clientAddress, int port){VISVECTOR::iterator it;it = find(Visitors.begin(), Visitors.end(), clientAddress);//查找重复IPif(it == Visitors.end()){Visitors.push_back(clientAddress);//增加新客户IPvisitsip.push_back(clientAddress);//输出用}InterlockedIncrement(&Stats.nTotalHits);//互斥ThreadTag t hreadTag;HANDLE hThread;unsigned int threadID;//进入临界区并创建连接对象EnterCriticalSection(&cs);NewConnectionTag *NewConn = new NewConnectionTag;NewConn->pHttpServer = this;NewConn->s = s;hThread = (HANDLE)_beginthreadex(NULL, 0, ClientThread, NewConn, 0, &threadID);if(hThread){threadTag.threadID = threadID;threadTag.hThread = hThread;ThreadList.push_back(threadTag);}elseserverlog.push_back("_beginthreadex(...) failure");//else//LogMessage(LOGFILENAME, "_beginthreadex(...) failure", "AddClient", errno);LeaveCriticalSection(&cs);return TRUE;}4.分析请求数据:BOOL QHttpServer::ParseRequest(string szRequest, string &szResponse, BOOL &bKeepAlive) {string szMethod;string szFileName;string szFileExt;string szStatusCode("200 OK");string szContentType("text/html");string szConnectionType("close");string szNotFoundMessage;string szDateTime;char pResponseHeader[2048];fpos_t lengthActual = 0, length = 0;char *pBuf = NULL;int n;//// 检查提交方法//n = szRequest.find(" ", 0);if(n != string::npos){szMethod = szRequest.substr(0, n);if(szMethod == "GET"){//// 获取文件名//int n1 = szRequest.find(" ", n + 1);if(n != string::npos){szFileName = szRequest.substr(n + 1, n1 - n - 1);if(szFileName == "/"){szFileName = m_DefIndex;}}else{return FALSE;}}else{szStatusCode = "501 Not Implemented";szFileName = ERROR501;}}else{return FALSE;}//// 分析链接类型//n = szRequest.find("\nConnection: Keep-Alive", 0);if(n != string::npos)bKeepAlive = TRUE;//// 分析内容类型//int nPointPos = szFileName.rfind(".");if(nPointPos != string::npos){szFileExt = szFileName.substr(nPointPos + 1, szFileName.size());strlwr((char*)szFileExt.c_str());MIMETYPES::iterator it;it = MimeTypes.find(szFileExt);if(it != MimeTypes.end())szContentType = (*it).second;}//得到目前的时间//char szDT[128];struct tm *newtime;time_t ltime;time(&ltime);newtime = gmtime(&ltime);strftime(szDT, 128,"%a, %d %b %Y %H:%M:%S GMT", newtime);//// 读取文件//FILE *f;f = fopen((m_HomeDir + szFileName).c_str(), "r+b");if(f != NULL){// 获得文件大小fseek(f, 0, SEEK_END);fgetpos(f, &lengthActual);fseek(f, 0, SEEK_SET);pBuf = new char[lengthActual + 1];length = fread(pBuf, 1, lengthActual, f);fclose(f);//// 返回响应//sprintf(pResponseHeader, "HTTP/1.0 %s\r\nDate: %s\r\nServer: %s\r\nAccept-Ranges: bytes\r\nContent-Length: %d\r\nConnection: %s\r\nContent-Type: %s\r\n\r\n",szStatusCode.c_str(), szDT, SERVERNAME, (int)length, bKeepAlive ? "Keep-Alive" : "close", szContentType.c_str());}else{//// 如果文件没有找到//f = fopen((m_HomeDir + ERROR404).c_str(), "r+b");if(f != NULL){// 获取文件大小fseek(f, 0, SEEK_END);fgetpos(f, &lengthActual);fseek(f, 0, SEEK_SET);pBuf = new char[lengthActual + 1];length = fread(pBuf, 1, lengthActual, f);fclose(f);szNotFoundMessage = string(pBuf, length);delete pBuf;pBuf = NULL;}szStatusCode = "404 Resource not found";sprintf(pResponseHeader, "HTTP/1.0 %s\r\nContent-Length: %d\r\nContent-Type:text/html\r\nDate: %s\r\nServer: %s\r\n\r\n%s",szStatusCode.c_str(), szNotFoundMessage.size(), szDT, SERVERNAME, szNotFoundMessage.c_str());bKeepAlive = FALSE;}szResponse = string(pResponseHeader);if(pBuf)szResponse += string(pBuf, length);delete pBuf;pBuf = NULL;return TRUE;}5.多线程的实现:UINT__stdcall QHttpServer::AcceptThread(LPVOID pParam){QHttpServer *pHttpServer = (QHttpServer*)pParam;SOCKET s; // 主线程WORD wVersionRequested;WSADATA wsaData;sockaddr_in saLocal;WSAEVENT Handles[2];WSANETWORKEVENTS NetworkEvents;sockaddr ClientAddr;INT addrlen = sizeof(ClientAddr);sockaddr_in sain;char cAddr[50];int result;saLocal.sin_family = AF_INET;saLocal.sin_port = htons(pHttpServer->ServerPort);saLocal.sin_addr.s_addr = INADDR_ANY;//(ULONG)(pHttpServer->ipcon);wVersionRequested = MAKEWORD(2, 2);result = WSAStartup(wVersionRequested, &wsaData);if(result != 0){//pHttpServer->LogMessage(LOGFILENAME, "WSAStartup(...) failure", "AcceptThread", result);serverlog.push_back("WSAStartup(...) failure");return THREADEXIT_SUCCESS;}if( LOBYTE(wsaData.wVersion) != 2 ||HIBYTE(wsaData.wVersion) != 2){//pHttpServer->LogMessage(LOGFILENAME, "Requested Socket version not exist", "AcceptThread");serverlog.push_back("Requested Socket version not exist");pHttpServer->CleanupThread(NULL, NULL, NULL);return THREADEXIT_SUCCESS;}s = WSASocket(AF_INET, SOCK_STREAM, 0, (LPWSAPROTOCOL_INFO)NULL, 0,WSA_FLAG_OVERLAPPED);if(s == INVALID_SOCKET){//pHttpServer->LogMessage(LOGFILENAME, "WSASocket(...) failure", "AcceptThread", WSAGetLastError());serverlog.push_back("WSASocket(...) failure");pHttpServer->CleanupThread(NULL, NULL, NULL);return THREADEXIT_SUCCESS;}//// 绑定//result = bind(s, (struct sockaddr *)&saLocal, sizeof(saLocal));if(result == SOCKET_ERROR){//pHttpServer->LogMessage(LOGFILENAME, "bind(...) failure", "AcceptThread", WSAGetLastError());serverlog.push_back("bind(...) failure");pHttpServer->CleanupThread(NULL, NULL, s);return THREADEXIT_SUCCESS;}//// 侦听//result = listen(s, SOMAXCONN);if(result == SOCKET_ERROR){//pHttpServer->LogMessage(LOGFILENAME, "listen(...) failure", "AcceptThread", WSAGetLastError());serverlog.push_back("listen(...) failure");pHttpServer->CleanupThread(NULL, NULL, s);return THREADEXIT_SUCCESS;}pHttpServer->ShutdownEvent = WSACreateEvent();if(pHttpServer->ShutdownEvent == WSA_INVALID_EVENT){//pHttpServer->LogMessage(LOGFILENAME, "WSACreateEvent(...) failure for ShutdownEvent", "AcceptThread", WSAGetLastError());serverlog.push_back("WSACreateEvent(...) failure for ShutdownEvent");pHttpServer->CleanupThread(NULL, NULL, NULL, s);return THREADEXIT_SUCCESS;}//创建事件WSAEVENT Event = WSACreateEvent();if(Event == WSA_INVALID_EVENT){//pHttpServer->LogMessage(LOGFILENAME, "WSACreateEvent(...) failure for Event", "AcceptThread", WSAGetLastError());serverlog.push_back("WSACreateEvent(...) failure for Event");pHttpServer->CleanupThread(NULL, pHttpServer->ShutdownEvent, s);return THREADEXIT_SUCCESS;}Handles[0] = pHttpServer->ShutdownEvent;Handles[1] = Event;result = WSAEventSelect(s, Event, FD_ACCEPT);if(result == SOCKET_ERROR){//pHttpServer->LogMessage(LOGFILENAME, "WSAEventSelect(...) failure", "AcceptThread", WSAGetLastError());serverlog.push_back("WSAEventSelect(...) failure");pHttpServer->CleanupThread(Event, pHttpServer->ShutdownEvent, s);return THREADEXIT_SUCCESS;}SetEvent(pHttpServer->ThreadLaunchedEvent);for(;;){DWORD EventCaused = WSAWaitForMultipleEvents(2,Handles,FALSE,WSA_INFINITE,FALSE);if(EventCaused == WAIT_FAILED || EventCaused == WAIT_OBJECT_0){if(EventCaused == WAIT_FAILED){serverlog.push_back("WaitForMultipleObjects(...) failure");}//pHttpServer->LogMessage(LOGFILENAME, "WaitForMultipleObjects(...) failure", "AcceptThread", GetLastError());pHttpServer->CleanupThread(Event, pHttpServer->ShutdownEvent, s);return THREADEXIT_SUCCESS;}result = WSAEnumNetworkEvents(s,Event,&NetworkEvents);if(result == SOCKET_ERROR){//pHttpServer->LogMessage(LOGFILENAME, "WSAEnumNetworkEvents(...) failure", "AcceptThread", WSAGetLastError());serverlog.push_back("WSAEnumNetworkEvents(...) failure");pHttpServer->CleanupThread(Event, pHttpServer->ShutdownEvent, s);return THREADEXIT_SUCCESS;}if(NetworkEvents.lNetworkEvents == FD_ACCEPT){SOCKET ClientSocket = WSAAccept(s, &ClientAddr, &addrlen, NULL, NULL);memcpy(&sain, &ClientAddr, addrlen);sprintf(cAddr, "%d.%d.%d.%d",sain.sin_addr.S_un.S_un_b.s_b1,sain.sin_addr.S_un.S_un_b.s_b2,sain.sin_addr.S_un.S_un_b.s_b3,sain.sin_addr.S_un.S_un_b.s_b4);if(INVALID_SOCKET == ClientSocket){//pHttpServer->LogMessage(LOGFILENAME, "WSAAccept(...) failure", "AcceptThread", WSAGetLastError());serverlog.push_back("WSAAccept(...) failure");// 有一个文件错误continue;}else{if(!pHttpServer->AddClient(ClientSocket, cAddr, sain.sin_port)){//pHttpServer->LogMessage(LOGFILENAME, "AddClient(...) failure", "AcceptThread");serverlog.push_back("AddClient(...) failure");continue; // I think there is no reason to shutdown whole server if just one connection failed}}}}pHttpServer->CleanupThread(Event, pHttpServer->ShutdownEvent, s);return THREADEXIT_SUCCESS;四.实验结果1.配置界面:IP配置,监听端口配置,主目录配置2.服务器开启后主页(因未进行中文解码,导致中文显示乱码)3.开启与关闭4.多线程访问并输出请求来源以及请求处理的结果5.访问不同类型文件TXT文件:JPG文件:6.根据错误原因作相应提示7.服务器关闭五.实验中的问题及心得本次实验对于我们来说是一个考验,第一个实验本身的内容并不复杂,但是要求实验时足够严谨,稍有疏忽而产生小纰漏的话,最后就会前功尽弃。

相关文档
最新文档