计算机网络(实验五)
《计算机网络基础及应用》 实训文档 第5章 常用网络命令实践
实验5-4 常用网络命令实践一、实验目的(1)熟悉常用网络测试命令的语法功能(2)掌握常用的网络故障分析及排除的方法二、实验内容运行常用网络测试命令,学习网络故障排除的方法,对运行结果进行分析,加深对网络层协议的理解;(1)ipconfig命令(2)ping命令(3)tracert命令(4)nslookup命令(5)netstat命令四、实验步骤1.ipconfig命令ipconfig是调试计算机网络的常用命令,通常大家使用它显示网络适配器的物理地址、IP地址、子网掩码以及默认网关,还可以查看主机的相关信息如:主机名、DNS服务器、DHCP 服务器等。
在CMD命令行模式下输入“ipconfig /?”可以显示ipconfig的格式和参数说明。
(1)显示网络配置详细信息命令格式:ipconfig /all,可以显示网络适配器完整的TCP/IP配置信息。
如图5-81所示,我们得知该网卡MAC地址为_____________________,IP地址为__________________________,DNS服务器地址为__________________________________。
(2)备份网络设置命令格式:ipconfig /batch bak-netcfg说明:将有关网络配置的信息备份到文件bak-netcfg中。
(3)为网卡动态分配新地址命令格式:ipconfig /release说明:去除网卡(适配器1)的动态IP地址。
命令格式:ipconfig /renew说明:为网卡重新动态分配IP地址。
2.ping命令利用ping命令测试网络联通性。
主要功能:用来测试一帧数据从一台主机传输到另一台主机所需的时间,从而判断主响应时间。
(1)图5-82中是使用ping命令测试可达性返回的信息。
总共返回了________个测试数据包,其中bytes=32表示测试中发送的数据包大小是_________字节;time<1ms表示________________________________;TTL=63表示_________________________,其中系统默认值为_________。
北京理工大学-计算机网络实践-FTP客户端实验报告
实验五 FTP客户端程序1.实验目的文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客户/服务器之间进行文件传递的协议。
●理解FTP协议的工作原理●掌握FTP客户程序的编程方法●理解在FTP传输过程中建立的两个连接2.实验内容利用WinSock编程接口编写FTP客户程序,在用户界面中给出必要的FTP 服务器信息:FTP服务器的IP地址、用户名、口令等,通过FTP协议实现指定文件的上载和下载操作。
3.实验环境程序运行环境为以太网,采用TCP/IP协议栈,网络操作系统为Windows,具有Internet连接能力。
程序开发环境为vs2012。
4.实验步骤步骤1 需求分析FTP客户程序功能为:(1) FTP客户程序首先显示用户界面,可以指定FTP服务器的地址、用户名和口令等信息(2)通过FTP协议接收FTP服务器的当前目录列表,并显示本地和远程目录列表信息(3)可以实现本地和远程目录的切换(4)可以实现文件的上载和下载操作步骤2 FTP客户程序开发用Visual C++编写FTP客户程序,利用WinSock编程接口实现FTP协议通信。
FTP客户程序首先显示用户界面,使用户可以指定FTP服务器和用户、口令信息(可以采用匿名方式),点击连接按钮后,向FTP服务器的TCP 21号端口建立TCP连接,在控制连接上发送FTP命令,首先获得本地和远程系统的目录列表并显示,可以进行目录切换等操作,指定上、下载的文件建立数据连接进行文件传送。
步骤3 编译和执行程序将FTP客户程序编译、连接成执行程序,运行FTP客户程序。
填写校园网的FTP服务器IP和用户、口令信息,进行各种FTP操作(文件上载、下载)。
5.具体实现(1)数据结构分析定义FileItem结构来保存文件信息typedef struct FileItem{int nItem; // 在列表框中的索引BOOL bDir; // 判断是否为文件夹CString strFileName; // 文件名}FILEITEM;主对话框类完成FTP的大部分功能其中:ID_control成员变量:CListCtrl m_ctrlRemoteFiles; // IDC_LIST_REMOTE 映射的列表型变量CListCtrl m_ctrlLocalFiles; // IDC_LIST_LOCAL 映射的列表型变量CString m_strPassword; // IDC_PASSWORD 映射的CString型变量CString m_strServer; // IDC_SERVER 映射的CString型变量CString m_strUserName; // IDC_USER 映射的CString型变量其他添加功能所需成员变量:CInternetSession* m_pInetSession; // 会话对象CFtpConnection* m_pFtpConnection; // 连接对象CFtpFileFind* m_pRemoteFinder; // 远程查找文件对象CFileFind m_LocalFinder; // 本地查找文件对象CString m_strLocalParentRoot; // 本地文件目录的上上一层目录CString m_strRemoteParentRoot; // 远程文件目录的上上一层目录CArray<FILEITEM,FILEITEM&>m_arrLocalFiles; // 保存本地文件信息CArray<FILEITEM,FILEITEM&>m_arrRemoteFiles; // 保存远程文件信息 成员函数:/* 初始化程序 */BOOL CMyFtpDlg::OnInitDialog()/* 给列表控件CListCtrl增加标题头 */void CMyFtpDlg::AddHeaders(CListCtrl* pLstCtrl)/* 给列表框增加一条记录 */void CMyFtpDlg::AddItem(CListCtrl* pLstCtrl,int nIndex,BOOL bDir,CString strText)/* 响应“download”按钮 */void CMyFtpDlg::OnDownload()/* 响应“Upload”按钮 */void CMyFtpDlg::OnUpload()/* 下载单个文件 */void CMyFtpDlg::DownFile(FILEITEM fileItem)/* 上传单个文件 */void CMyFtpDlg::UpFile(FILEITEM fileItem)/* 连接ftp服务器 */void CMyFtpDlg::OnConnect()/* 获得指定目录下的所有文件,并在列表框中显示 */void CMyFtpDlg::BrowseDir(CString strDir,CListCtrl* pLstCtrl,CFileFind* pFinder,CArray<FILEITEM,FILEITEM&>* pFilesArr)/* 本地文件目录中向上一层 */void CMyFtpDlg::OnLocalUp()/* 远程文件目录中向上一层 */void CMyFtpDlg::OnRemoteUp()主要函数1.在OnInitDialog()函数中进行对话框、列表的初始化,并且设定本地文件目录的默认路径为C盘为根目录。
实验五 Internet接入技术
实验五Internet接入技术班级:姓名:学号:一实验目的(1)掌握Internet接入技术;(2)学会配置普通电话拨号上网(3)学会配置ADSL接入方式上网(4)学会将局域网通过DDN及ADSL路由器接入Internet。
二实验所需材料本实验要求使用:◆1台计算机;◆Packet Tracer 5.0。
三实验内容1、配置普通电话拨号上网步骤:⑴安装Modem⑵配置Modem打开“控制面板”,点击“打印机和其他硬件”单击“电话和调制解调器选项”从磁盘中安装Modem的驱动⑶添加网络协议⑷建立拨号连接网络拓扑图:2、配置ADSL接入方式上网步骤:(1)安装好ADSL Modem,安装PPPoE虚拟拨号软件(2)创建网络连接打开“网络连接”窗口,选择“新建连接”根据需求进行选择输入ISP的名称输入Internet账户信息网络拓扑图:3、将局域网通过DDN及ADSL路由器接入Internet步骤:一。
DDN接入Internet⑴首先将局域网中的每台机器的TCP/IP配置好⑵通过Console口登录上路由器⑶登录成功后,进入超用户模式,进行相应的配置Config t 进入全局配置模式Int e0 进入e0这个端口Description the LAN port link to my local network 对端口进行描述Ip add 202.192.16.1 255.255.255.0 设置端口的IP地址No shut 激活该端口Int s0 进入s0端口进行配置Description the WAN port link to Router1 对该端口进行描述Ip add 200.165.42.21 255.255.255.0 配置端口的IP地址Exit 退出,进入全局配置模式Ip route 0.0.0.0 0.0.0.0 200.165.42.21 配置默认路由End 进入超级用户模式Write 保存配置二.ADSL路由器接入Internet⑴Modem采用内置的PPPoE拨号模式,局域网采用丝网地址,地址分配可以采用静态配置或者DHCP动态分配的方法。
2024版《计算机网络》实验指导书
使用`tracert`命令跟踪路 由路径
使用`ping`命令测试网络 连通性
使用`netstat`命令查看网 络连接状态
实验结果与分析
1. 网络配置结果 展示主机名、IP地址、子网掩码和默
认网关的配置结果 2. TCP/IP协议分析结果
展示捕获的数据包,并分析各层协议 头部信息,包括源/目的IP地址、源/ 目的端口号、协议类型等
01 1. 环境搭建
02
安装和配置实验所需的软件和工具,如虚拟机、操作系
统、网络模拟器等;
03
构建实验网络拓扑,包括内部网络、外部网络和防火墙
等组成部分。
实验内容和步骤
2. 防火墙配置
选择一种防火墙软件或设备,如iptables、pfSense等; 配置防火墙规则,包括访问控制列表(ACL)、网络地址转换(NAT)、 端口转发等;
1. 连接路由器和交换机, 并启动设备
实验步骤
01
03 02
实验内容和步骤
3. 配置路由器接口,并启用路由协议 4. 配置交换机VLAN,并启用STP 5. 验证配置结果,确保网络连通性
实验结果与分析
01
实验结果
02
路由器和交换机配置成功,网络连通性良好
03
各设备运行状态正常,无故障提示
04
分析
02 如何提高网络服务器的安全性和稳定性?
03
如何优化网络服务器的性能?
04
在实际应用中,如何管理和维护网络服务 器?
05
实验五:网络安全与防火 墙配置
实验目的和要求
理解和掌握网络安全的基本概念和原 理;
通过实验,了解防火墙在网络安全中 的作用和重要性。
计算机网络综合实验报告参考5篇
计算机网络综合实验报告参考5篇计算机网络综合实验报告参考 (1) ××大学校园网解决方案一、需求分析建设一个以办公自动化、计算机辅助教学、现代计算机校园文化为核心,以现代网络技术为依托,技术先进、扩展性强、能覆盖全校主要楼宇的校园主干网络,将学校的各种pc机、工作站、终端设备和局域网连接起来,并与有关广域网相连,在网上宣传自己和获取Internet网上的教育资源。
形成结构合理,内外沟通的校园计算机系统,在此基础上建立满足教学、研究和管理工作需要的软硬件环境,开发各类信息库和应用系统,为学校各类人员提供充分的网络信息服务。
系统总体设计将本着总体规划、分步实施的原则,充分体现系统的技术先进性、高度的安全可靠性,同时具有良好的开放性、可扩展性、冗余性。
本着为学校着想,合理使用建设资金,使系统经济可行。
具体包括下以几个方面:1、内网络能够高速访问FTP服务器现在或上传文件实现资源共享功能,实现对不同类型的用户划分不同的权限,限制不同类型的用户只能访问特定的服务资源。
可以下载和上传资料文件,访问速度可以对指定的用户进行级别的划分。
2、建设Web服务器对外实现信息发布,对内实现教学教务管理。
网站发布学校新闻、通知、学校的活动等相关内容。
实现学生能够在网上进行成绩查询、网上报名、网上评教等功能;以及教师的信息查询、教学数据上传等。
3、建设邮件服务器以满足校园内部之间和内、外网这间的大量邮件传输的需求。
4、实现内网划分多个VLAN,实现校园内不同校区,不同楼宇,不同楼层的多客户接入。
5、内部实现PC间实现高速互访,同时可以访问互联网。
网络内同一IP段内的PC机可以通过网上邻居实现高速互访,传送资料文件等,解决不同楼宇,不同楼层之间通过移动存储设备传送数据费时、费力的问题。
6、内部用户的QoS管理,实现用户的分级管理功能,对用户下载和上传做相应的带宽限制。
对校园网络中的流量实现有效控制,对校园内的重要数据量可靠、稳定的传输如:语音、视频会议等的延迟和阻塞的敏感。
计算机网络实验五网络层协议分析实验报告
南昌航空大学实验报告年月日课程名称:计算机网络与通信实验名称:网络层协议分析班级:学生姓名:邓佳威学号: 2212893107 指导教师评定:签名:一、实验目的分析ARP协议报文首部格式及其解析过程;分析ICMP报文格式和协议内容并了解其应用;分析IP报文格式、IP地址的分类和IP层的路由功能;分析TCP/IP协议中网络层的分片过程。
二、实验内容(一)ARP协议分析1.实验原理(1)ARP协议ARP(address resolution protocol)是地址解析协议的简称,在实际通信中,物理网络使用硬件地址进行报文传输,IP地址不能被物理网络所识别。
所以必须建立两种地址的映射关系,这一过程称为地址解析。
用于将IP地址解析成硬件地址的协议就被称为地址解析协议(ARP协议)。
ARP是动态协议,就是说这个过程是自动完成的。
在每台使用ARP的主机中,都保留了一个专用的内存区(称为缓存),存放最近的IP地址与硬件地址的对应关系。
一旦收到ARP应答,主机就将获得的IP地址和硬件地址的对应关系存到缓存中。
当发送报文时,首先去缓存中查找相应的项,如果找到相应项后,遍将报文直接发送出去;如果找不到,在利用ARP进行解析。
ARP缓存信息在一定时间内有效,过期不更新就会被删除。
(2)同一网段的ARP解析过程处在同一网段或不同网段的主机进行通信时,利用ARP协议进行地址解析的过程不同。
在同一网段内通信时,如果在ARP缓存中查找不到对方主机的硬件地址,则源主机直接发送ARP 请求报文,目的主机对此请求报文作出应答即可。
(3)不同网段的ARP解析过程位于不同网段的主机进行通信时,源主机只需将报文发送给它的默认网关,即只需查找或解析自己的默认网关地址即可。
(二)ICMP协议分析1.实验原理(1)ICMP协议ICMP(internet control message protocol)是因特网控制报文协议[RFC792]的缩写,是因特网的标准协议。
计算机网络实践实验报告
《计算机网络实践实验报告》实验一:传输介质的实验实验思考题:1.左右两侧线序完全一致,但不是标准线序。
问:能否当正线使用?2.8根线中有4根是实际用于数据传输。
问:是哪4根?3.直通线和交叉线实际的应用环境是什么?4.列出3中功能不同的测线仪,并简述其功能。
实验二:常用网络命令介绍实验思考题:1.如何通过常用网络命令判断目标主机的操作系统?2.作为一名网管,应对于网络拓扑有详尽的了解。
如何通过网络命令判断故障点。
3.分析网关的作用。
实验三:在Windows Server 2003 环境下配置WWW服务实验思考题:1.WWW服务的支撑组件事ISS,最新的IIS版本是什么?支撑WWW所必须的IIS组件事什么?(internet信息服务管理器公用文件万维网服务)2.同一IP能否搭配两个或多个WWW服务器?能3.如何设计非80端口访问服务器?默认网站右键属性tcp端口浏览器输入http://10.0.56.77:80804.Windows 默认的站点主目录是什么?C:\Inetpub\wwwroot5.描述hTTP协议工作的过称及原理。
实验四:在Windows Server 2003 下搭建DNS 服务器实验思考题:1.把本机搭成DNS服务器,能否为主机某一网站分配两个或多个域名?能2.在同一DNS服务器内,能否为不同的网站(不同的IP)分配相同的域名?不能3.在实验实内为本机安装了DNS组件,但没有添加任何记录。
在TCP/IP 属性里,将本机的IP设成唯一的DNS 服务器。
在外网连通的情况下,你能否通过域名访问百度网站?不能4.在TCP/IP属性里面,将本机IP设成唯一DNS服务器,在外网连通的情况下,能否通过域名访问百度网站。
不能5.某主机IP掩码网关配置正常,未设DNS服务器,该主机能否访问某一网站,如可以,通过什么来访问?能通过代理访问6.反向搜索区域的作用实验五:搭建DHCP实验思考题:1. 能否通过交换机充当DHCP服务器?如可以,用二层交换机还是三层交换机?2. DHCP服务器的IP是否必须要和IP值在同一子网,说明原因,如果在同一子网,该IP是否需要做排除?如果不做排除,地址租约中会出现什么样的效果?3. 设计一个实验,使租约生效。
实验五 构建简单路由器网络
内蒙古科技大学信息工程学院计算机系《计算机网络》实验报告姓名学号实验成绩班级实验日期第13 周(星期二)11月10 日第3,4节项目号、实验名称实验五构建简单路由器网络实验要求第 1 部分:设置拓扑并初始化设备第 2 部分:配置设备并检验连接第 3 部分:显示设备信息实验内容第 1 部分:设置拓扑并初始化设备第 2 部分:配置设备并检验连接第 1 步:为 PC 接口分配静态 IP 信息。
在 PC-A 上通过命令提示符窗口对 PC-B 执行 ping 操作。
ping 失败的原因是什么?答:找不到该地址第 2 步:配置路由器。
ping 是否成功?为什么?答:成功,因为路由器配置完成,可以找到该地址。
第 3 部分:显示设备信息第 1 步:在网络设备中检索硬件和软件信息。
使用show version命令来回答下列有关路由器的问题。
路由器运行的IOS镜像的名称是什么?答:C1900 路由器的 DRAM 有多大?答:64 bits 路由器的 NVRAM 有多大?答:255K 路由器的闪存容量有多大?答:249856K 使用 show version 命令来回答下列有关交换机的问题。
交换机运行的 IOS 镜像的名称是什么?答:C2960 交换机的动态随机访问内存 (DRAM) 有多大?答:21039K 交换机的非易失性随机访问内存 (NVRAM) 有多大?答:63488K 什么是交换机的型号?答:WS-C2960-24TT 第 2 步:查看路由器上的路由表。
在路由器上使用 show ip route 命令回答下列问题。
路由表中使用什么代码来指明直连网络?答:C有多少条路由条目在路由表中使用 C 代码进行编码?答: 2哪些接口类型关联到 C 编码的路由?答:g0/0 g0/1第 3 步:在路由器上显示接口信息。
使用 show interface g0/1 回答下列问题。
G0/1 接口的运行状态是什么?答:connectedG0/1 接口的介质访问控制 (MAC) 地址是什么?答:00d0.bce5.3502在此命令中,如何显示 Internet 地址?答:Internet address is 192.168.1.1/24 第 4 步:显示路由器和交换机上接口的汇总列表。
哈工大计算机网络实验报告之五
计算机网络课程实验报告实验5:利用Ethereal分析TCP、UDP、ICMP协议实验过程:使用Ethereal分析TCP协议: (15分)得分:抓取本机与http://gaia。
/ethereal—labs/alice。
txt通信过程中的网络数据包.根据操作思考以下问题:●客户服务器之间用于初始化TCP连接的TCP SYN报文段的序号(sequence number)是多少?在该报文段中,是用什么来标示该报文段是SYN报文段的?Seq=0Flags中的syn位为1,ack位为0,说明是syn报文段●服务器向客户端发送的SYNACK报文段序号是多少?该报文段中,Acknowledgement字段的值是多少?Gaia.cs。
umass。
edu服务器是如何决定此值的?在该报文段中,是用什么来标示该报文段是SYNACK报文段的?Seq=0Ack=1,服务器根据客户端发送的SYN报文的Seq值加一后得到此值Flags中的Ack和Syn位都为1,所以是SYNACK报文●如果将包含HTTP POST命令的TCP报文段看作是TCP连接上的第一个报文段,那么该TCP连接上客户机向服务器发送的第六个报文段的序号是多少?是何时发送的?该报文段所对应的ACK是何时接收的?第六个报文段:对应的ack报文段:23号报文时第六个报文,seq=6310,发送时间:Jun 1,2013 13:32:56.587941000 对应的ack报文段接收时间Jun 1,2013 13:32:56.993379000●前六个TCP报文段的长度各是多少?在整个文件发送过程中,接受方公示的窗口大小是否变化?窗口大小代表什么含义?(可参考教科书“流量控制”一节)首个报文段长度为555,其余都为1506,接收方窗口长度是变化的.它代表接收方端口上缓冲区空闲空间的大小,显示其接受能力●TCP连接的throughput (bytes transferred per unit time)是多少?请写出你的计算过程.(不必给出计算结果,表达出计算的思路即可)TCP连接发送报文的数据字节总数÷发送数据报总时间●实验结论,以及实验中遇到的其他问题是如何解决的?结论:tcp协议在建立连接时要经历三次握手过程;当tcp连接需要发送比较大块的数据时,会将其分割成若干份数据报发送.Tcp协议利用窗口大小来实现端到端的流量控制问题:实验课后到四楼机房重做实验发现那里的网络不适合做这次实验(在那研究了一个小时),后来用自己电脑回到寝室做实验比较顺利。
实验五win2003安装和配置
实验五win2003安装和配置一.实验目的1.了解网络操作系统(初级)2.掌握WIN2003的规划与安装(初级)3.掌握WIN2003的环境设置(初级)二.实验设备和环境1.每人一台电脑,局域网可以互相访问。
2.操作系统WIN2003(如果条件有限,可以是WIN2000Server),可能需要它们的安装光盘。
友情提示:如果条件有限,可以用虚拟机(Vmware或者VPC)做这个实验,推荐用VPC,主机电脑配置:内存条至少256M,CPU至少2.0,其它不限,当然硬盘转速越快越好,如果想跑两个虚拟机,内存条至少512M。
三.实验内容和步骤1.学习第1章网络操作系统概述2.学习第2章Windows2000Server规划与安装3.学习第3章环境设置四.请完成以下作业1.在计算机网络上配置NOS的目的是什么?2.有哪些常用的网络操作系统,请按照它们使用时间的先后顺序列出?3.对等式网络、服务器式网络、主从式网络它们的结构原理是什么?4.网络操作系统有哪些功能?5.网络系统设计一般性原则有哪些?6.windows2000有哪些版本,各个版本的区别是什么?7.DOS下可以安装WIN2000吗?如果可以,如何安装?8.安装WIN2000SERVER最好用哪一种文件系统?请说明你的理由。
9.什么是MMC?分别进行下列操作:创建控制台、添加任务板视图及任务、向收藏夹列表添加项目、配置控制台选项、管理控制台的组策略。
10.什么是资源工具包?11.进行以下的登录设置:禁止显示上一个用户登录设置、设置CTRL+ALT+DEL组合键、设置等待模式、限制登录用户数量、设置登录运行程序、设置服务器登录屏幕的关机按钮。
12.在注册表里面进行鼠标设置、键盘设置。
13.进行以下的显示类型设置:自定义背景处、设置屏幕保护程序、自定义外观、自定义显示效果、调整颜色、分辨率和刷新频率。
14.进行以下的桌面图标设置:“我的电脑”属性设置、回收站属性设置、更改桌面图标。
计算机网络实验报告
计算机网络实验报告计算机网络实验报告引言:计算机网络是现代社会的重要组成部分,它连接了各种设备和系统,实现了信息的传输和共享。
在计算机网络实验中,我们通过实际操作和观察,深入了解了网络通信原理、协议和技术。
本篇实验报告将对我们进行的计算机网络实验进行总结和分析,以及实验中遇到的问题和解决方法。
实验一:网络拓扑结构在本实验中,我们学习了计算机网络的拓扑结构,包括总线型、星型、环型和网状型等。
通过搭建不同拓扑结构的网络,我们深入理解了各种结构的优缺点和适用场景。
例如,总线型拓扑结构简单易懂,但容易出现单点故障;而星型拓扑结构可靠性较高,但需要大量的物理连接。
实验二:网络协议分析在本实验中,我们学习了常见的网络协议,如TCP/IP、HTTP和FTP等。
通过抓包和分析网络数据包,我们了解了协议的工作原理和通信过程。
例如,TCP/IP协议是互联网的核心协议,它通过IP地址和端口号实现了可靠的数据传输;HTTP协议是应用层协议,用于在客户端和服务器之间传输超文本。
实验三:网络安全与防护在本实验中,我们学习了网络安全的基本概念和常见的攻击手段,如DDoS、SQL注入和跨站脚本等。
通过搭建防火墙和入侵检测系统,我们学会了如何保护网络安全。
例如,防火墙可以通过过滤规则,控制网络流量的进出;入侵检测系统可以监测网络中的异常行为,并及时作出响应。
实验四:无线网络实践在本实验中,我们学习了无线网络的工作原理和配置方法。
通过配置无线路由器和接入点,我们实现了无线网络的搭建和连接。
例如,无线网络使用无线电波进行通信,需要设置SSID和密码来保护网络安全;无线网络的覆盖范围受到信号强度和障碍物的影响,需要合理布置设备位置。
实验五:网络性能测试在本实验中,我们学习了网络性能测试的方法和工具。
通过使用ping、traceroute和iperf等工具,我们测试了网络的延迟、丢包率和带宽等性能指标。
例如,ping命令可以测试网络的延迟和丢包情况;iperf命令可以测试网络的带宽和吞吐量。
计算机网络第5次实验-应用层协议分析
贵州大学实验报告学院:专业:班级:姓名学号实验组实验时间2011-11-28 指导教师成绩实验项目名称应用层协议分析实验目的1.掌握应用层协议HTTP数据包的组成;2.掌握HTTP数据包头各字段的含义。
实验要求1.要求掌握应用层协议HTTP数据包的组成部分;2.要求掌握HTTP数据包头各字段的含义。
实验原理HTTP报文由三个部分组成,即开始行、首部行和实体主体。
HTTP请求报文格式如图5.1所示。
图5.1 HTTP请求报文格式在请求报文中,开始行就是请求行。
“方法”是面向对象技术中使用的专门名词。
所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。
因此,请求报文的类型是由它所采用的方法决定的。
请求方法(所有方法全为大写)有多种,各个方法的解释如下:GET 请求获取Request-URI 所标识的资源POST 在Request-URI 所标识的资源后附加新的数据HEAD 请求获取由Request-URI 所标识的资源的响应消息报头PUT 请求服务器存储一个资源,并用Request-URI 作为其标识DELETE 请求服务器删除Request-URI 所标识的资源TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT 保留将来使用OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求“URL”是所请求的资源的URL。
“版本”是HTTP 的版本。
HTTP响应报文格式如图5.2所示。
图5.2 HTTP响应报文格式响应报文的开始行是状态行。
状态行包括三项内容,即HTTP 的版本,状态码,以及解释状态码的简单短语。
状态码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:1xx:指示信息--表示请求已接收,继续处理2.选择网卡:点击“Capture->Interface”,出现如下对话框:3.开始数据捕获:选择Broadcom NetXtreme Gigabit Ethernet Driver(Microsoft’s Packet Scheduler)对应的Capture按钮,就开始捕获数据包,出现如下对话框。
计网实验报告5-DNS、DHCP服务器配置与管理
计算机网络实验课程实验报告实验名称 DNS、DHCP服务器配置与管理一、实验目的1、了解DNS、DHCP服务的基本概念、工作原理;2、安装DNS、DHCP服务器;3、配置与管理DNS、DHCP服务器二、实验所用仪器(或实验环境)VMware Workstation Pro三、实验基本原理及步骤(或方案设计及理论计算)DNS服务器配置与管理:DNS:是域名系统(Domain Name System)的缩写,指在Internet中使用的分配名字和地址的机制。
域名系统允许用户使用友好的名字而不是难以记忆的数字——IP地址来访问Internet上的主机。
域名解析:就是将用户提出的名字变换成网络地址的方法和过程,从概念上讲,域名解析是一个自上而下的过程。
DHCP服务器配置与管理:DHCP(Dynamic Host Configuration Protocol)是动态主机配置协议的缩写,是一个简化主机IP地址分配管理的TCP/IP标准协议。
它能够动态地向网络中每台设备分配独一无二的IP地址,并提供安全、可靠且简单的TCP/IP网络配置,确保不发生地址冲突,帮助维护IP 地址的使用。
要使用DHCP方式动态分配IP地址,整个网络必须至少有一台安装了DHCP服务的服务器。
其他使用DHCP功能的客户端也必须支持自动向DHCP服务器索取IP地址的功能。
当DHCP客户机第一次启动时,它就会自动与DHCP服务器通信,并由DHCP服务器分配给DHCP 客户机一个IP地址,直到租约到期(并非每次关机释放),这个地址就会由DHCP服务器收回,并将其提供给其他的DHCP客户机使用。
动态分配IP地址的一个好处,就是可以解决IP地址不够用的问题。
因为IP地址是动态分配的,而不是固定给某个客户机使用的,所以,只要有空闲的IP地址可用,DHCP客户机就可从DHCP服务器取得IP地址。
当客户机不需要使用此地址时,就由DHCP服务器收回,并提供给其他的DHCP客户机使用。
实验五 常用网络命令的使用
实验五常用网络命令的使用一、实验目的(1)了解系统网络命令及其所代表的含义,以及所能对网络进行的操作。
(2)通过网络命令了解网络状态,并利用网络命令对网络进行简单的操作。
二、实验环境PC 机,windows 操作系统,局域网三、实验内容和要求(1)利用ping 命令检测网络连通性(2)利用ipconfig命令查看本机的网络配置信息(3)使用地址解析命令arp显示“地址解析协议(ARP)”缓存中的项目。
(4)使用tracert命令显示IP 地址与物理地址之间的转换表。
(5)使用netstat命令可查看当前网络连接的详细信息。
四、理论知识1. 通过ping命令检测网络故障(1) 命令格式:ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS][-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] target_name(2) 参数的含义如下表所示。
查看ping的相关帮助信息,可在命令行提示符下键入“ping/?”2. ipconfig命令ipconfig是Windows操作系统中用于查看主机的IP配置命令,其显示信息中还包括主机网卡的MAC 地址信息。
该命令还可释放动态获得的IP地址并启动新一次的动态IP分配请求。
(1) 命令格式:ipconfig [/all|/release[adapter]|/renew[adapter]|/flushdns|/registerdns|/displaydns|/showclassid adapter| /setclassid adapter [classid] ](其中的adapter代表的是连接名。
查看ipconfig的相关帮助信息,可在命令行提示符下键入“ipconfig/?”)(2) 参数的含义如下表所示。
示例如下:a) 输入ipconfig时,显示简略的网络连接信息b) 输入ipconfig /all时,显示详细的网络连接信息c) 输入ipconfig /renew时,更新所有地址获取方式DHCP的网络连接的IP地址d) 输入ipconfig /renew EL*时,更新所有以EL开头的地址获取方式DHCP的网络连接的IP地址e) 输入ipconfig /release *Con*时,释放所有连接名中匹配“Con”字符串的地址获取方式DHCP的网络连接的IP地址,例如,"Local Area Connection 1"或"Local Area Connection 2"3. arp命令ARP命令显示和修改“地址解析协议(ARP)”缓存中的项目。
云南大学 软件学院 计网实验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函数部分的函数结构。
哈工大计算机网络实验报告之五
Flags中的Ack和Syn位都为1,所以是SYNACK报文
如果将包含HTTP POST命令的TCP报文段看作是TCP连接上的第一个报文段,那么该TCP连接上客户机向服务器发送的第六个报文段的序号是多少?是何时发送的?该报文段所对应的ACK是何时接收的?
实验过程:
使用Ethereal分析TCP协议: (15分)
得分:
抓取本机与/ethereal-labs/alice.txt通信过程中的网络数据包。根据操作思考以下问题:
客户服务器之间用于初始化TCP连接的TCP SYN报文段的序号(sequence number)是多少?在该报文段中,是用什么来标示该报文段是SYN报文段的?
第六个报文段:
对应的ack报文段:
报文时第六个报文,seq=6310,发送时间:Jun 1,2013 13:32:56.587941000
对应的ack报文段接收时间Jun 1,2013 13:32:56.993379000
前六个TCP报文段的长度各是多少?在整个文件发送过程中,接受方公示的窗口大小是否变化?窗口大小代表什么含义?(可参考教科书“流量控制”一节)
观察一个由你的主机发送的ICMP请求包,其ICMP类型和代码号是什么?该ICMP包还含有哪些字段?checksum, sequence number和identifier字段各占多少字节?
ICMP类型:8(响应请求ECHO-REQUEST)
代码号为0
ICMP报文包括IP头、ICMP头和ICMP体,还包含checksum、identifier、sequence number、data这些字段。
对比前面的TCP协议分析,你能看出UDP是无连接的吗?
实验五TCPIP网络配置及连通性测试
实验五TCP/IP网络配置及连通性测试一、实验目的:1. 理解IP地址及其子网掩码的作用2. 理解TCP/IP,掌握IP地址的两种配置方式。
3. 掌握IP网络连通性测试方法。
二、实验环境:Windows 2000 server(xp)、对等局域网,为方便实验,计算机应按实验小组进行划分。
三、实验相关理论接入Internet中的每一台计算机都必须有一个唯一的IP地址,IP地址的配置有用户指定和自动获取两种方式。
IP地址由网络地址和网内主机地址组成,同一网络中的主机可以直接通信,不同网络中的主机则需要通过三层交换设备或路由器才能通信。
四、实验内容:1. 分别为A组、B组网络中的主机指定IP地址,验证同一网络中主机间的连通性和不同网络中主机间的连通性。
2. 自动获取IP地址,验证连通网络主机的连通性。
五、实验步骤:(一)指定IP地址,测试网络连通性1. 察看网络组件是否完整,若无则添加,同时删除除TCP/IP协议以外的其它协议。
2. 设置IP地址在保留专用IP地址范围中(192.168.x.y),任选IP地址指定给主机,选取原则是:x为实验分组中的组别码,y值是1~254之间的任意数值。
注意:同一实验分组的主机IP地址的网络ID应相同,主机ID应不同,子网掩码需相同。
3.标识计算机在“系统属性”对话框中,单击“计算机名”,将显示“计算机名”与“工作组”名。
同一实验组的计算机应有相同的“工作组”和不同的“计算机名”4. 在“网上邻居”中察看能找到哪些主机,并记录结果。
5.测试同一网络中主机的连通性(1)用Ping命令Ping 127.0.0.1,检测本机网卡连通性,记录并分析显示结果。
(2)用Ping 命令Ping <ip地址>,这里的ip地址是同一实验组中的某计算机的ip 地址,观察、记录显示结果。
(3)用Ping 命令Ping <主机名>,这里的主机名是同一实验组的计算机名,观察、记录显示结果。
计算机网络路由配置实验报告
实验五路由器基本配置与静态路由配置【实验目的】1.了解路由器的功能和和组成结构2.掌握路由器配置的基本方法3.掌握静态路由的配置策略【实验内容】1.学习使用超级终端通过控制口配置路由器。
2.学习如何使用路由器搭建广域网模型。
3.学习配置静态路由【实验环境】1.运行操作系统为Windows XP,装有超级终端软件的PC一台。
交换机一台(华为Quidway S系列)和相关操作手册。
2.Console线缆六根。
【实验步骤】一、搭建网络环境1、将小组内划分为两个局域网,分别连到不同的路由器上,将PC2和PC4相连,PC5和PC6相连,分别划分不同的网络2、路由器R1的设置:通过超级终端,进入路由器控制口。
进入系统视图后,进入以太网0口的接口视图,设置ip地址:<H3C>system-view[H3C]sysname R1[R1]interface gigabitethernet 0/0[R1-gigabitethernet0/0]ip address 202.0.0.1 24再进入串口的1/0口,设置ip地址:[R1-gigabitethernet0/0]interface serial 2/0[R1-Serial2/0]ip address 192.0.0.1 243、路由器R3的设置:进入系统视图后,进入以太网0口的接口视图,设置ip地址:<H3C>system-view[H3C]sysname R2[R3]interface gigabitethernet0/0[R3-gigabitethernet0/0]ip address 202.0.1.1 24再进入串口的2/0口,设置ip地址:[R3-gigabitethernet0/0]interface serial 4/0[R3-Serial4/0]ip address 192.0.0.2 244、设置PC的IP地址,并将网关指向所连接的路由器的以太口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五一、实验内容在这个实验室里,我们将探讨ICMP协议的几个方面:•由Ping项目产生的ICMP信息•Traceroute程序生成的ICMP消息•关于ICMP信息的格式和内容。
在攻击这个实验室之前,我们鼓励您在第4.4.3节中回顾ICMP的内容text1。
我们在微软Windows操作系统的背景下展示了这个实验室系统。
然而,将实验室转换为Unix或Linux 环境是很简单的。
1、ICMP和Ping让我们通过捕获Ping程序生成的数据包来开始我们的ICMP冒险。
您可能还记得Ping程序是一个简单的工具,它允许任何人(例如,a网络管理员)来验证主机是否存在。
源的Ping 程序主机向目标IP地址发送数据包;如果目标是活的,Ping程序在目标主机的响应是将数据包发送回源主机。
您可能已经猜测(考虑到这个实验室是关于ICMP的),这两个Ping包都是ICMP数据包。
进行如下操作:•让我们通过打开Windows命令提示应用程序开始这次冒险(可以在你的附件文件夹中找到)。
•启动Wireshark包嗅探器,并开始Wireshark包捕获。
•ping司令部位于c:windows system32,所以键入“ping-n 10”主机名“或”c:windows system32 ping——n 10主机名“在MS-DOS中命令行(没有引号),主机名是另一个主机的主机大陆。
如果你在亚洲之外,你可能想要进入t.hk香港科技大学的网络服务器。
这个论点“-n 10”表示应该发送10条ping消息。
然后运行平程序通过输入返回。
•当Ping程序终止时,停止Wireshark中的数据包捕获。
在实验的最后,您的命令提示窗口应该是什么样子的。
如图1所示。
在这个例子中,源ping 程序位于马萨诸塞州目的地平计划在香港。
从这个窗口我们可以看到源ping程序发送了10个查询包并收到10个回复。
还要注意每一个响应,源计算往返时间(RTT),这是10个包的on平均375毫秒。
输入Ping命令后的命令提示窗口。
图2提供了Wireshark输出的屏幕截图,在“icmp”被输入之后进入过滤器显示窗口。
注意,数据包清单显示了20个数据包:10 Ping源发出的查询和源收到的10个Ping响应。
还要注意源的IP地址是表单192.168/12的私有地址(在NAT后面);目的地的IP地址是香港科大的网络服务器。
现在我们来放大一下第一个包(由客户端发送);在下面的图中,包内容区域提供了关于这个包的信息。
我们看到这个包中的IP数据报有协议编号01,它是ICMP的协议号。
这意味着有效载荷IP数据报是一个ICMP包。
图2利用因特网协议扩展Ping程序的线鲨输出。
图3关注的是相同的ICMP,但是已经扩展了ICMP协议信息数据包内容窗口。
注意这个ICMP包的类型为8,代码为0-a所谓的ICMP“回声请求”包。
(见图4.23)也请注意,这ICMP 包包含一个校验和、一个标识符和一个序号。
图3中使用ICMP包的ping包捕获如何上交您应该提交与图1相似的命令提示窗口的屏幕快照以上。
只要有可能,在回答下面的问题时,你应该交一份在您用来回答问题的跟踪中打印出数据包(s)。
注释printout3来解释你的答案。
要打印一个包,使用文件-打印,选择只选择数据包,选择包汇总行,并选择最小数量的。
你需要回答这个最小包的细节。
1. What is the IP address of your host? What is the IP address of the destination host?numbers?因为ICMP数据包在网络层封装在IP数据包中,因此不需要destination和source3. Examine one of the ping request packets sent by your host. What are the ICMP type and code numbers? What other fields does this ICMP packet have? How many bytes are the checksum, sequence number and identifier fields?检查您的主机发送的ping请求数据包中的一个。
什么是ICMP类型和代码号?这个ICMP包还有什么其他的字段?有多少字节,校验和、序列号和标识符字段?ICMP类型为8,代码号为0。
这个包有checksum,identifier(BE)为512字节, identifier(LE)为2字节,sequence number(BE)为26369字节,sequence number(LE)为359字节。
4. Examine the corresponding ping reply packet. What are the ICMP type and code numbers? What other fields does this ICMP packet have? How many bytes are the checksum, sequence number and identifier fields?检查相应的ping应答包。
什么是ICMP类型和代码数字?这个ICMP包还有什么其他的字段?有多少字节校验和,序列号和标识符字段?类型为0,代码为0,这个包有checksum,identifier 为512字节,sequence number(BE)字段为26369字节,sequence number(LE)字段为359字节。
2、ICMP和traceroute现在让我们继续我们的ICMP冒险,通过捕获由路由跟踪程序。
您可能还记得Traceroute程序可以用来计算从源到目的地的路径。
Traceroute在章节中讨论1。
4和4。
4节。
Traceroute以不同的方式在unix/linux/macos和Windows中实现。
在unix/linux,源向目标目的地发送一系列UDP数据包,使用一个不太可能目的地端口号;在Windows中,源发送一系列ICMP包到目标目的地。
对于两个操作系统,程序发送第一个数据包用TTL=1,第二个带TTL=2的包,以此类推。
回想一下,路由器将会当数据包通过路由器时,减少数据包的TTL值。
当一个数据包到达一个带有TTL=1的路由器时,路由器将一个ICMP错误数据包发送回源。
在下面,我们将使用本机Windows tracert程序。
一个共享软件版本许多漂亮的Windows Traceroute程序是ping绘图仪()。
我们会在Wireshark的IP实验室中使用ping绘图器,因为它提供了额外的功能.我们需要在那里做下面的事情。
•让我们从打开Windows命令提示应用程序开始(可以是在你的附件文件夹中找到)。
•启动Wireshark包嗅探器,并开始Wireshark包捕获。
•tracert命令在c:windows system32中,所以输入“tracert”在MS-DOS命令中,主机名“或”c:windows system32 tracert主机名。
行(没有引号),主机名是另一个大陆上的主机。
(注意,在Windows机器上,命令是“tracert”而不是“traceroute”。
)如果你在欧洲之外,你可能想要进入www.inria.fr。
在法国的计算机科学研究所INRIA的Web服务器。
然后通过键入return来运行Traceroute程序。
当Traceroute程序终止时,停止在Wireshark中捕获数据包。
在实验的最后,您的命令提示窗口应该是什么样子的如图4所示。
在这个图中,客户端Traceroute程序在马萨诸塞州和目标目的地在法国。
从这个图中我们可以看到,对于每一个TTL值,源程序发送三个探测包。
Traceroute为每一个都显示rtt探测数据包,以及路由器的IP地址(可能是名称)返回ICMP ttl-超标的消息。
图4命令提示窗口显示Traceroute程序的结果。
图5显示了由路由器返回的ICMP数据包的Wireshark窗口。
请注意这个ICMP错误包包含比Ping ICMP消息更多的字段。
图5的ICMP字段的Wireshark窗口扩展为一个ICMP错误包。
如何上交:对于这个实验室的这一部分,您应该提交命令提示符的屏幕截图窗口。
只要有可能,在回答下面的问题时,你应该交一份在您用来回答问题的跟踪中打印出数据包(s)。
注释打印输出来解释你的答案。
要打印一个包,使用文件-打印,选择只选择数据包,选择包汇总行,并选择最小数量的,你需要回答这个问题的包细节。
5. What is the IP address of your host? What is the IP address of the targetdestination host?number still be 01 for the probe packets? If not, what would it be?因为它的上层协议是UDP。
7. Examine the ICMP echo packet in your screenshot. Is this different from theICMP ping query packets in the first half of this lab? If yes, how so?两者的checknum,sequence number,data不同。
8. Examine the ICMP error packet in your screenshot. It has more fields than the ICMPecho packet. What is included in those fields?没有错误报文。
9. Examine the last three ICMP packets received by the source host. How are these packets different from the ICMP error packets? Why are they different?检查源主机接收的最后三个ICMP数据包。
这些数据包与ICMP错误数据包有什么不同?他们为什么不同?10. Within the tracert measurements, is there a link whose delay is significantly longer than others? Refer to the screenshot in Figure 4, is there a link whose delay is significantly longer than others? On the basis of the router names, can you guess the location of the two routers on the end of this link?在tracert的测量中,是否有一个链接的延迟比其他的要长得多?请参考图4中的屏幕截图,是否有一个链接的延迟比其他链接长得多?在路由器名称的基础上,您能猜出这段链接末尾的两个路由器的位置吗?。