计算机网络C实验指导书_第1页
计算机网络C实验指导书_第2页
计算机网络C实验指导书_第3页
计算机网络C实验指导书_第4页
计算机网络C实验指导书_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机网络C》实验指导书李优李伟编电子工程与自动化学院三月前言《计算机网络C》是电子工程与自动化学院电子信息科学与技术专业、测控技术与仪器、光信息科学与技术的专业限选课,这个课程的开设对学生加深理解网络原理、提高网络工程与网络应用技术起到了一定的作用。但是由于计算机网络技术发展快、涉及的内容变化多,并且学生在学习时普遍感到网络理论较为抽象,在实际生活得不到验证,所以开设了计算机网络的实验课程。根据本课程教学计划的安排和教学大纲的总体规定,以配合计算机网络理论课程的教学为目的,在有助于学生学习基本原理并掌握实际的开发能力的基础上,编写了本实验教材。电子工程与自动化学院本来使用的计算机网络实验指导书是针对专业任选课《计算机网络C》而开设的,与《计算机网络C》的教学内容相比,实验内容较为简朴,为适应新课程的需要,我们调整了实验内容的安排,加大了实验的实践力度,并重新编写了实验指导书。要学好计算机网络这门课,加强上机实验是非常重要的,希望同学们充足运用实验条件,认真完毕实验,从实验中得到应有的锻炼和培养。此外,仅仅依靠本实验教材中的实验想达成透彻理解网络原理是远远不够的,有条件有爱好的学生可以针对学习和实践中出现和思考的问题积极地参与到各种网络规划、设计、安装、调试和维护的实际工作中,进一步的提高自己分析问题和解决问题的能力。本实验指导书涵盖了四个实验共8个课时的实验内容,具体分别为:网络服务器的配置与网络实用工具的使用、FTP的创建与使用、使用网络分析仪分析网络协议和简朴聊天程序的设计。实验项目包含了对网络原理的理解和运用,并融合了实际的网络编程技术,达成了理论与实践结合、基础理解验证与综合设计实验结合的不同层次的规定。希望同学们在使用本实验指导书及进行实验的过程中,对实验指导书的局限性之处提出意见和建议,使《计算机网络C》课程的教学效果在实验的帮助下,得到不断的改善和提高。由于编者水平有限,难免有局限性之处,敬请批评指正。李优李伟2023年9月目录TOC\o"1-3"\h\z实验说明及规定 ii实验一网络服务器的配置与网络实用工具 1实验二FTP的创建与使用 4实验三使用网络分析仪分析网络协议 8实验四聊天程序的设计 14参考文献 1实验说明及规定一实验说明计算机网络是现代信息社会最重要的基础设施之一。在过去十几年里得到了迅速的发展和应用。《计算机网络C》课程实验的目的是为了使学生在课程学习的同时,通过在一个计算机网络环境中的实际操作,对现代计算机网络的基本功能有一个初步的了解。实验通过对网络服务器的配置和网络实用工具的使用,掌握windows系统下的基本网络配置和windows提供的基本网络工具;通过创建FTP和使用FTP,掌握通过网络获取网络资源的方法和技术;通过使用网络分析仪sniff,来实际观测和理解网络协议;通过设计和实现一个聊天程序,掌握计算机网络通信协议的基本实现技术;总之,通过上述实验环节,使学生加深了解和更好地掌握《计算机网络C》课程教学大纲规定的内容。二实验规定在《计算机网络C》的课程实验过程中,规定学生做到:(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验也许出现的情况提前作出思考和分析,并形成实验预习报告,需要编写程序的实验,提前做好实验的分析和设计工作。(2)仔细观测上机和上网操作时出现的各种现象,记录重要情况,作出必要说明和分析。对实验中碰到的问题及相应的解决方案,要及时加以记录并写在实验报告上。(3)认真书写实验报告。实验报告涉及实验目的和规定,实验情况及其分析。对需编程的实验,写出程序设计说明,给出重要源程序流程图和程序清单。(4)遵守机房纪律,服从实验教师的安排和指挥,爱惜实验设备,开关机时注意保护机器。(5)实验课程不迟到,不早退。如有事不能出席,需要向实验教师请假,申请调换其他批次。(6)根据学校规定,无端缺少任一次实验操作或者任一次的实验报告,实验总成绩记为0分。平时实验的验收将分为两个部分。第一部分是上机操作,涉及检查实验操作、程序运营和即时提问。第二部分是提交书面的实验报告。此外,针对以前教学中出现的问题,网络实验将采用阶段检查方式,每个实验都将应当在规定的时间内完毕,过期视为未完毕该实验,以避免期末集中检查产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完毕。三实验地点计算机网络C课的实验地点安排在尧山校区科技楼3楼302的信息技术综合实验室。实验一网络服务器的配置与网络实用工具【实验目的】掌握WINDOWS系统的基本网络配置方法,并理解各种网络配置的含义;学会灵活运用资源共享;了解一些基本的、实用的网络工具及其应用;【实验规定】了解一些有关IP地址、子网掩码、DNS、网关等基础知识;了解网络服务器、网络客户端、端口、代理、NAT、应用层协议方面的知识;【实验内容与环节】一、Windows98/2023/2023系统网络配置1、网卡的配置一方面应保证网卡已安装好。点击控制面板中“网络”项,检查是否安装了相应的网卡驱动程序,假如已装有相应类型的驱动程序,应进一步查看工作状态是否正常,假如不正常应将其删除。假如尚未安装好相应的网卡驱动程序,接下来进入控制面板中“系统”项,检查是否有已知或未知的并标记有黄色警告或红色错误的网络控制器(如网卡)并将其删除,然后重新刷新,按系统提醒,重新安装网卡驱动程序。2、网络协议的配置TCP/IP协议为默认安装协议,安装环节如下:1)打开控制面板中的“网络连接”;2)找到“本地连接”图标,右键单击该图标,从弹出的快捷菜单中选择“属性”选项,打开“本地连接属性”对话框;3)点击“安装”按钮,在弹出对话框中选择“协议”—〉“添加”,安装TCP/IP协议;配置TCP/IP协议,给各主机设立相应的IP地址及相关协议部分:1)同上述的(1)(2),打开“本地连接属性”对话框2)选中“Internet协议(TCP/IP)”,点击“属性”按钮,打开“Internet协议(TCP/IP)属性”对话框;3)设立和主机相应的IP地址,子网掩码,网关。3、网络测试使用ping命令向已知主机地址(如某台服务器)发icmp协议包,若有正常回应则说明网络已配置成功(ping命令的使用见下面所述)。二、资源共享1、添加“文献与打印共享服务”点击控制面板中“网络”项,检查是否已安装“文献与打印共享服务”,若没有,添加该服务。2、设立共享文献夹随意将某个或某几个文献夹(涉及逻辑盘)设立成共享,共享名可以是普通的名字,也可以是“隐含式”的(最末一字符是$)。尝试设立各种安全权限(对特定用户)。4、访问共享资源通过“网络邻居”,访问某台机(可以是自己的)的共享文献夹。也可以通过在IE的地址栏中输入:\\计算机名或IP地址\共享名。也可以将某机的共享资源映射成一个网络盘,方法之一是:将鼠标的光标放置在“我的电脑”图标上,键入右键,选择属性,选择一合适的驱动器盘符(未用过),在途径框内输入:\\计算机名或IP地址\共享名即可。三、实用网络工具与应用网络连通测试pingping是个使用频率极高的实用程序,用于拟定本机主机是否能与另一台主机互换(发送与接受)数据报。根据返回的信息,可以推断TCP/IP参数是否设立对的以及运营是否正常。但是,成功地与另一台主机进行一次或两次数据报互换并不标记TCP/IP的配置就是对的的,必须执行大量的本地主机与远程主机的数据报互换,才干确信TCP/IP的对的性。(1)ping命令的常用参数类型=1\*GB3①“pingIP–t”表达连续对IP地址执行ping命令,直到被用户以“Ctrl+C”中断;=2\*GB3②“pingIP-l2023”表达指定ping命令中的数据长度为2023字节,而非缺省值32;=3\*GB3③“pingIP-n”表达执行特定次数的ping命令。(2)常用ping的实例操作=1\*GB3①在运营窗口(开始-运营菜单)输入“commmand”命令或者点击“开始-附件-命令提醒符”命令进入DOS模式。=2\*GB3②输入“pingip-t”(具体的ip地址需要输入);=3\*GB3③系统将连续显示本机与所ping的IP地址之间的数据互换信息,假如显示“Requesttimedout”,则表白此主机与所ping的机器之间网络不通,需要检查网络线路并查看网络配置。2、查看网络配置ipconfig 网络出现问题时,线检查出现问题的计算机上的TCP/IP配置,可以使用ipconfig命令获得主机配置信息,涉及IP地址、子网掩码和默认网关。(1)最常用的选项=1\*GB3①不带任何参数选项时,为每个已经配置了的接口显示IP地址、子网掩码和缺省网关值。=2\*GB3②“ipconfig/all”当使用all选项时,ipconfig能为DNS和WINS服务器显示它已配置且要使用的附加信息(如IP地址等),并且显示内置于本地网卡中的物理地址(MAC)。(2)查询本机的IP地址信息=1\*GB3①在运营窗口(开始-运营菜单)输入“commmand”命令或者点击“开始-附件-命令提醒符”命令进入DOS模式;=2\*GB3②输入“ipconfig”;=3\*GB3③系统将显示本机的IP地址、子网掩码和网关等信息。3、路由表修改route 大多数主机一般都驻留在一台路由器的网段上,因此不存在使用哪一台路由器将数据报发送到远程计算机上去的问题,该路由器的IP地址可作为该网段上的所有计算机的缺省网关来设立。但是,当网络上有两个或多个路由器时,不一定只依赖缺省网关,事实上可以让某些远程IP地址通过某个特定的路由器来传递,而其他的远程IP则通过另一个路由器来传递。这种情况下,需要相应的路由信息,这些信息储存在路由表中,每个主机和每个路由器都配有自己独一无二的路由表。大多数路由器使用专门的路由协议来互换和动态更新路由器之间的路由表。但有些情况下,必须人工将项目添加到路由器和主机上的路由表中。route就是用来显示或人工添加、修改路由表项目的。(1)一般使用选项=1\*GB3①“routeprint”用于显示路由表中的当前项目;=2\*GB3②“routeadd”可以将新的路由项目添加给路由表;=3\*GB3③“routedelete”可以从路由表中删除路由。(2)使用route指令进入DOS模式,输入“route”以及与其相关的参数,将显示路由表相关的各种信息。4、网络记录netstat netstat命令是一个监控TCP/IP网络的非常有用的工具,netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。(1)命令使用格式:netstat[选项](2)常用选项及其含义-a显示所有socket,涉及正在监听的;-c每隔1秒就重新显示一遍,直到用户中断它;-i显示所有网络接口的信息,格式同“ifconfig-e”;-n以网络IP地址代替名称,显示出网络连接情形;-r显示核心路由表,格式同“route-e”;-s显示每个协议的记录,默认情况下,显示TCP、UDP、ICMP和IP的记录;-t显示TCP协议的连接情况。-u显示UDP协议的连接情况;5、路由追踪tracerttracert命令可以用来跟踪数据包从你的计算机通过如何的路由传送到目的地。跟踪的途径是源计算机到目的计算机的一条途径,但不能保证或认为数据包总遵循这一途径。 tracert命令的使用很简朴,只需要在命令后面跟一个IP地址或URL即可。tracert命令会进行相应的域名转换,它一般用来检测故障的出现位置。(1)使用选项tracert[-d][-hmaximum_hops][-jcomputer-list][-wtimeout]target_name(2)选项的参数说明-d指定不将地址解析为计算机名;-hmaximum_hops指定搜索目的的最大跃点数;-jcomputer-list指定沿computer-list的稀疏源路由;-wtimeout每次应答等待timeout指定的微秒数;target_name目的计算机的名称。实验二FTP的创建与使用【实验目的】1、熟悉FTP协议,了解FTP服务器的概念及其功能;2、了解FTP服务器的建立方法以及使用FTP传送文献的方法;3、了解FTP服务器常见的问题与解决方法。【实验规定】预习有关FTP协议的基础知识;了解FTP的功能。【实验原理】FTP是Internet的一个重要应用,其特点是在不同类型的计算机和操作系统之间传送文献。FTP的全称是FileTransferProtocol(文献传输协议),是专门用来传输文献的协议,而FTP服务器,则是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务。FTP有两个重要功能:第一:可以在两个完全不同的计算机,例如在装有UNIX大型机和个人计算机之间传送文献;第二:提供公共文献共享。FTP工作基于客户-服务器模式,FTP服务器依照FTP协议提供服务,用户可以从服务器下载文献,也可以上传文献到FTP服务器。FTP服务器有两种登录方式:匿名登录和使用授权帐号、密码登录。【实验内容与环节】一、使用WINDOWS自带的IIS创建FTP服务器1、FTP服务器在Windows系统下的IIS组件建立FTP服务器,安装的方法如下:WindowsXP默认安装时不安装IIS组件,需要手工添加安装。进入控制面板,找到“添加/删除程序”,打开后选择“添加/删除Windows组件”,在弹出的“Windows组件向导”窗口中,将“Internet信息服务(IIS)”项选中。在该选项前的“√”背景色是灰色的,这是由于WindowsXP默认并不安装FTP服务组件。再点击右下角的“具体信息”,在弹出的“Internet信息服务(IIS)”窗口中,找到“文献传输协议(FTP)服务”,选中后拟定即可。安装完后需要重启。2、设立FTP服务器电脑重启后,FTP服务器即开始运营,但还要进行一些设立。点击“开始→所有程序→管理工具→internet信息服务”,进入“internet信息服务”窗口后,找到“默认FTP站点”,右击鼠标,在弹出的右键菜单中选择“属性”。在“属性”中,可以设立FTP服务器的名称、IP、端口、访问账户、FTP目录位置、用户进入FTP时接受到的消息等。1)FTP站点基本信息进入“FTP站点”选项卡,其中的“描述”选项为该FTP站点的名称;“IP地址”为服务器的IP,系统默认为“所有未分派”,一般不须改动;“tcp端口”一般设为默认的21端口;“连接”选项用来设立允许同时连接服务器的用户最大连接数;“连接超时”用来设立一个等待时间,假如连接到服务器的用户在线的时间超过等待时间而没有任何操作,服务器就会自动断开与该用户的连接。2)设立账户及其权限很多FTP站点都规定用户输入用户名和密码才干登录,这个用户名和密码就叫账户。不同用户可使用相同的账户访问站点,同一个站点可设立多个账户,每个账户可拥有不同的权限,如有的可以上传和下载,而有的则只允许下载。3)安全设定进入“安全账户”选项卡,有“允许匿名连接”和“仅允许匿名连接”两项,默认为“允许匿名连接”,此时FTP服务器提供匿名登录。“仅允许匿名连接”是用来防止用户使用有管理权限的账户进行访问,选中后,即使是administrator(管理员)账号也不能登录,FTP只能通过服务器进行“本地访问”来管理。至于“FTP站点操作员”选项,是用来添加或删除本FTP服务器具有一定权限的账户。IIS与其他专业的FTP服务器软件不同,它基于Windows用户账号进行账户管理,自身并不能随意设定FTP服务器允许访问的账户,要添加或删除允许访问的账户,必须先在操作系统自带的“管理工具”中的“计算机管理”中去设立Windows用户账号,然后再通过“安全账户”选项卡中的“FTP站点操作员”选项添加或删除。但对于Windows2023和WindowsXP专业版,系统并不提供“FTP站点操作员”账户添加与删除功能,只提供administrator一个管理账号。4)设立用户登录目录最后设立FTP主目录(即用户登录FTP后的初始位置),进入“主目录”选项卡,在“本地途径”中选择好FTP站点的根目录,并设立该目录的读取、写入、目录访问权限。“目录列表样式”中“unix”和“Ms-dos”的区别在于:假设将G:\FTP设为站点根目录,则当用户登录FTP后,前者会使主目录显示为“\”,后者显示为“G:\FTP”。设立完毕后,FTP服务器就算真正建成了。假如前面IP地址为,则用户使用FTP客户端软件(用来登录FTP服务器的上传/下载软件,如CuteFTP、FlashFXp等,如无特别说明,本文中所称Ftp客户端软件均以CuteFtppro2.0为例)时,主机处填,端口填21,此服务器的地址表述为:FTP//3、FTP服务器的目录管理FTP的目录管理功能重要表现为:设立虚拟目录、读写权限设立。具体每类目录的含义和设立可以从网络上获取相关的资料。我们就不再具体赘述。4、消息设立进入“默认FTP站点”属性中的“消息”选项卡,可以设立用户登录和退出服务器时在FTP客户端软件的状态窗口显示消息。其中,“标题”和“欢迎”将在用户登录时出现,“退出时”是当用户退出服务器时显示的辞别信息。5、连接用户管理在“FTP站点”选项卡中可以简朴地管理连接用户。“限制为”用来设立服务器允许同时连接的最大连接数,但假如不是windows2023服务器版,不仅“无限制”选项不可选,并且最大连接数不能超过10个。“连接超时”可以设立当连接用户空闲多少秒时会被服务器自动踢出,这可以有效防止用户浪费服务器最大连接数。点右下角的“当前会话”可以看到在线连接用户所用的账户及当前状态,选择其中某个用户再点“断开”可以将该用户踢除出服务器。IIS虽然安装简朴,设立较简便,但功能不强,管理也比较麻烦,特别是连新建一个基本的授权访问账户都要进行繁杂的设立,并且IIS自身的安全性也比较差,容易受到诸如“红色代码”等专门针对IIS漏洞进行袭击的病毒侵袭,因而很多人都喜欢使用第三方的FTP服务器软件来架设。二、使用Serv-U软件来创建FTP服务器Serv-U即是我们说的第三方的FTP服务器架设软件,是一种被广泛运用的FTP服务器端软件,支持Windows系列的操作系统。安装简朴,功能强大,可以用同一个IP设定多个FTP服务器、限定登录用户的权限、登录主目录及空间大小、支持远程登录管理等,适合绝大部分个人自建FTP的需要。1、Serv-U的安装Serv-U的安装比IIS还简朴。先执行英文原版安装文献,按提醒一路“next”即可。要注意的是,在选择安装目录时,最佳选择安装在一个非系统盘里,以免将来系统发生异常时还要重新进行账号等的设立。然后执行汉化文献,选择原版安装目录,一路“下一步”即可完毕安装。2、设立与IIS不同,Serv-U在第一次运营时会以向导的方式一步一步地提醒用户进行设立,整个过程不超过五分钟,非常人性化。为了方便说明,先假设我们要架设一个固定IP为,端口为21,根目录绝对途径为G:\FTP,允许匿名访问和拥有一个用户名为gliet、密码为guet、管理账户名叫“MyFTP”的公网FTP服务器。运营Serv-U,弹出向导窗口,依次设立如下选项:1)“您的IP地址”:这里填入即可2)“域名”:就是该FTP站点的名称,这里填入“MyFTP”。3)“匿名账号”:决定该FTP站点是否允许匿名用户访问。4)“匿名主目录”:设立匿名用户登录站点后所处的目录位置。输入“G:\FTP”。5)“锁定于主目录”:假设在“匿名主目录”中设立匿名用户登录后所处的目录位置为“G:\FTP\Guest”,那么,选择“是”后,当匿名用户登录FTP后,就被锁定在G:\FTP\Guest目录下,只能查看Guest目录里的内容,不能进入上级目录“FTP”,同时该目录在FTP客户端软件中显示为“\”,假如未被锁定,则会完整显示为“G:\FTP\Guest”。6)“命名的账号”:决定是否要创建有一定管理权限的账户。这里选“是”。7)“账号名称”:就是具有一定管理权限的账户登录名称。填入“gliet”。8)“账号密码”:设立账户的登录密码。输入“guet”。9)“主目录”:与“匿名主目录”同样,用来设立管理账户登录后所处的目录位置。输入“G:\Ftp”。10)“锁定于主目录”:选择“是”。11)“管理员权限”:用来设立管理账户的管理权限级别。设立完毕,地址为:FTP//:21的FTP服务器就算架设成功了。可以用多种登录方式来登录所架设的FTP。提醒:以上这些设立并非最终设定,你还可以在Serv-U主界面中随时修改。3、用同一个IP架设多个FTP服务器假如带宽允许的话,你还可运用同一个IP轻松架设多个服务器。在Serv-U中,将“本地服务器”下“域”中的每个FTP服务器称为“域”,刚才创建的“MyFTP”服务器就是一个名叫“MyFTP”的域。要架设多个服务器,事实上就是创建多个拥有不同端口的域而已。右击“域”,选“新建域”,在弹出的向导中参照“MyFTP”进行设立,只是在端口处一定不要与已经创建的“域”的端口或被其他系统服务占用的端口冲突即可。假如填入22,则此服务器的地址就是:FTP//:22。依此而为,就可以架设多个FTP服务器了。4、Serv-U服务器的管理比起IIS来,Serv-U的管理功能强大得多,并且设立也很方便。需要特别注意的是每进行任何一次设立或改动,都要点击界面左上角工具条的“保存”按钮才干生效。Serv-U的服务器管理重要有以下几个方面,具体表现可从网络上获取相关信息:1)账户管理添加/删除单个账户、添加/删除组、设立账户的有效期、2)设立虚拟目录3)设立目录权限文献操作权限、目录操作权限、子目录操作继承:父目录的访问规则自动应用到子目录上。4)消息设立登录/退出/更改目录的消息设立,会方便用户特别是上传用户的访问,并且能使你的FTP看起来个性化和专业化。5)上传/下载速率的设立6)编辑IP访问规则三、FTP客户端的使用FTP的访问方式重要分为两种,运用IE登录和运用专用软件登录。1、使用IE登录FTP;2、运用专用软件cuteftp登录FTP;3、运用专用软件flashfxp登录FTP;4、采用其它专用软件用FLASHGET等登录FTP。实验三使用网络分析仪分析网络协议【实验目的】1、通过用Sniffer截获TCP/IP数据包并加以分析,达成熟悉TCP/IP协议的目的。2、通过对捕获的FTP数据包中所传输数据的分析,加深理解TCP/IP连接中三次握手(Three-Way-Handshake)的协议实现。【实验规定】熟悉ICMP协议、TCP/IP协议。熟悉TCP/IP连接的三次握手过程。阅读本实验的内容及操作环节。【实验原理】1、TCP/IP的基本原理①网络是分层的,每一层分别负责不同的通信功能。TCP/IP通常被认为是一个四层协议系统,TCP/IP协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为TCP/IP,但TCP和IP只是其中的两种协议而已,如表1所示。每一层负责不同的功能:表1TCP/IP协议各层功能表分层的概念说起来非常简朴,但在实际的应用中非常的重要,在进行网络设立和排除故障时对网络层次理解得很透,将对工作有很大的帮助。例如:设立路由是网络层IP协议的事,要查找MAC地址是链路层ARP的事,常用的ping命令由ICMP协议来做的。图1显示了各层协议的关系,理解它们之间的关系对下面的协议分析非常重要。图1各层协议关系图②数据发送时是自上而下,层层加码;数据接受时是自下而上,层层解码。当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增长一些首部信息(有时还要增长尾部信息),该过程如图3所示。TCP传给IP的数据单元称作TCP报文段或简称为TCP段。IP传给网络接口层的数据单元称作IP数据报。通过以太网传输的比特流称作帧(Frame)。数据发送时是按照图2自上而下,层层加码;数据接受时是自下而上,层层解码。图2数据传输过程图③逻辑上通讯是在同级完毕的垂直方向的结构层次是当今普遍认可的数据解决的功能流程。每一层都有与其相邻层的接口。为了通信,两个系统必须在各层之间传递数据、指令、地址等信息,通信的逻辑流程与真正的数据流的不同。虽然通信流程垂直通过各层次,但每一层都在逻辑上可以直接与远程计算机系统的相应层直接通信。从图3可以看出,通讯事实上是按垂直方向进行的,但在逻辑上通信是在同级进行的。图3通讯过程示意图2、FTP数据包中TCP/IP协议的分析IP头部分析012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Version|IHL|TypeofService|TotalLength|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Identification|Flags|FragmentOffset|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|TimetoLive|Protocol|HeaderChecksum|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|SourceAddress|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|DestinationAddress|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Options|Padding|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+图4IP包头Version:版本号,指出IP包的类型。对于IPV4包,这个域取二进制值4;IHL:包头长度,IP包头所包含的32位字的个数。由于IP包头的最小长度是20C(即5个32位的字),所以其最小值是5。这个最小值是5。这个域的值通常也是5,仅当包头包含IP选项(Options)时才不是。但是现在的Internet中很少使用选项。TypeofService:服务类型,就是通常所说的TOS域,如图2所示给出了具体说明。最前面的3位定义了包的优先权级别,这个级别决定了在网络满载或过载的情况下,应当解决那些包。其他3位定义了在这个优先权级别中对包的首选解决方法,剩下的2位保存以备将来使用。首选解决方法的定义使得路由器能以某种QoS需求来调度包的传送。TOS域是提供网络传输质量(QOS)的依据。然而许多互换设备将其忽略。76543210优先权DTR位7-5:优先级位4:0为常规延迟,1为低延迟位3:0为常规吞吐量,1为高吞吐量位2:0位常规可靠性,1为高可靠性图5TOS域的说明TotalLength:总长度,包含整个包(包头、IP选项和数据)的长度。这个长度域限制包的最大长度为65535C。Identification:标记域,包含了包序列号信息。当一个包可以原封不动进行传送时,则忽略该域。假如一个包需要被分片传送时,标记域用来标志分片后的各个小分片,这样接受端才可以重新组装这些小分片。Flags:标志,总共有3位,如图3所示。DF和DM两个域是和标记域一同使用的,用于追踪包的分片。当设立不分片(Don’tFragment,DF)标志位时,就向任何路由器指明这个包不分片。而片未完(MoreFragments,MF)标志被置位则表白该包属于一组特定的分片。当接受系统接受到所有的数据位MF被设立的包的分片并且加上一个数据位DF未设立的分片之后,接受系统就可以将这些分片重组为一个包,并对该包进行解决。DFMF最高位:保存,必须为0第二位:(DF)0是可以分片,1是不分片第三位:(MF)0是最后一片,1是指片未完图6分片域的具体内容FragmentOffset:分片偏移量,当IP包未被分片时该域指出第一个有效负载字节的位置。若包被分片,接受系统把分片偏移量域的值乘以8,就可以重组后的包定位位偏移量(Cyteoffset)的值。对于任何一个分片,数据部分的字节总数加上分片偏移量之和不应当超过65535C。TimetoLive:存活时间,这个域最初被设立为一个包可以通过的路由器的最大个数。包每通过一个路由器,这个域的值减去1。当一个发现它将传送的包的TTL的值为0,那么这个路由器将丢弃这个包并且产生一个类型值为11(超时),码值为ICMP包。TTL值的最初含义指的是时钟时间,但是现在指的是一个包可以通过的路由器的最大个数。Protocol:协议,协议域给出IP包的数据部分所包含的更高层网络协议的标志。例如,假如有效负载包含一个ICMP包,这个域的值就是1;假如包含一个TCP包,这个域的值是6;假如包含一个UDP包,这个域的值就是17。RFC1700列举了IP包头部的这个域的所有也许的取值。HeaderChecksum:头检查和,这个域的值是整个IP头部(但不是有效负载的)的检查和。当一个IP协议解决程序从一个设备驱动程序那里接受到一个包是,它可以运用这个校验和来拟定IP头部是否有错误,但检查和并不检查有效负载。这个任务留给了有效负载的那些协议(如TCP和UDP)。SourceAddress:源地址,包含包的发送者的IP地址。DestinationAddress:目的地址,包含包的接受者的IP地址。■假定IP头部:450000305252400080062c23c0a第一个8字节:“4”是IP协议地版本(Version),说明是IP4。“5”表达IP头部的长度,最大长度为60字节。“00”是服务类型(TypeofService)。这个8Cit字段由3Cit的优先权子字段(选择已经被忽略),4Cit的TOS子字段以及1Cit的未用字段(选择为0)构成。4Cit的TOS子字段包含:最小延时、最大吞吐量、最高可靠性以及最小费用构成。这四个1Cit位最多只能有一个为1,本例都为0,表达是一般服务。接着的两个字节“0030”是IP数据报文总长。该48字节由20字节的IP头部以及28字节的TCP头构成(省去8字节的TCP头部可选部分)。第二个8字节:两个字节的标志位(Identification):“5252”,提供应目的主机判断新来的分段属于哪个分组。下一个字节“40”,转换为二进制就是“01000000”,其中第一位是IP协议目前没有用上的,为0。接着的是两个标志DF和MF。DF为1表达不要分段,MF为1表达尚有进一步的分段(本例为0)。然后的“00000”是分段偏移(FragmentOffset)。第三个8字节:“80”代表TTL(TimeToLive)。“06”表达传输层的协议类型(Protocol)。RFC790中定义6表达传输层使用TCP协议。“2c23”第四个8字节:“c0a80101”第五个8字节:“d803e215”TCP头部分析图7TCP包头端标语:常说FTP占21端口、HTTP占80端口、TELNET占23端口等,这里指的端口就是TCP或UDP的端口,端口就像通道两端的门同样,当两机进行通讯时门必须是打开的。源端口和目的端口各占16位,2的16次方等于65536,这就是每台电脑与其它电脑联系所能开的“门”。一般作为服务一方每项服务的端标语是固定的。Windows察看端口的命令时netstat。32位序号:也称为顺序号(SequenceNumCer),简写为SEQ,从上面三次握手的分析可以看出,当一方要与另一方联系时就发送一个初始序号给对方,意思是:“让我们建立联系吧?”,服务方收到后要发个独立的序号给发送方,意思是“消息收到,数据流将以这个数开始。”由此可看出,TCP连接完全是双向的,即双方的数据流可同时传输。在传输过程中双方数据是独立的,因此每个TCP连接必须有两个顺序号分别相应不同方向的数据流。32位确认序号:也称为应答号(AcknowledgmentNumCer),简写为ACK。在握手阶段,确认序号将发送方的序号加1作为回答,在数据传输阶段,确认序号将发送方的序号加发送的数据大小作为回答,表达的确收到这些数据。在第三组的分析中将看到这一过程。4位首部长度:。这个字段占4位,它的单位时32位(4个字节)。本例值为7,TCP的头长度为28字节,等于正常的长度20字节加上可选项8个字节。,TCP的头长度最长可为60字节(二进制1111换算为十进制为15,15*4字节=60字节)。6个标志位:URG紧急指针,告诉接受TCP模块紧要指针域指着紧要数据;ACK置1时表达确认号(为合法,为0的时候表达数据段不包含确认信息,确认号被忽略。PSH置1时请求的数据段在接受方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。RST置1时重建连接。假如接受到RST位时候,通常发生了某些错误。SYN置1时用来发起一个连接。FIN置1时表达发端完毕发送任务。用来释放连接,表白发送方已经没有数据发送了。16位窗口大小:TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接受端正盼望接受的字节。窗口大小是一个16字节字段,因而窗口大小最大为65535字节。16位检查和:检查和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。16位紧急指针:只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表达紧急数据最后一个字节的序号。■假定TCP头部:0d280015505fa9060000000070024000c0290000第一个8字节:“0d28”表达本地端标语。“0015”第二个8字节:“505fa906”表达顺序号(SequenceNumC第三个8字节:“00000000”表达应答号(AcknowledgementNumC第四个8字节:“7002”。第一个4Cit“0111”,是TCP头长,十进制为7,表达28个字节(省略了8字节的option数据,所以只看见了20字节)。接着的6Cit为TCP协议保存位,都为0。最后的6Cit“000010”是六个重要标志。这是两个计算机数据交流的信息标志,接受和发送断根据这些标志来拟定信息流的种类。下面是一些介绍:URG:(UrgentPointerfieldsignificant)紧急指针。用到的时候值为1,用来解决避免TCP数据流中断。ACK:(Acknowledgmentfieldsignificant)置1时表达确认号(AcknowledgmentNumCer)为合法,为0的时候表达数据段不包含确认信息,确认号被忽略。PSH:(PushFunction),PUSH标志的数据,置1时请求的数据段在接受方得到后可直接送到应用程序,而不必等到缓冲区满时才传送。RST:(Resettheconnection)用于复位因某种因素引起出现的错误连接,也用来拒绝非法数据的请求。假如接受到RST位时,通常发生了某些错误。SYN:(SynchronizesequencenumCeis)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分ConnectionRequest和ConnectionAccepted。FIN:(Nomoredatafromsender)用来释放连接,表白发送方已经没有数据发送。3、通过捕获FTP连接过程所传输的数据并加以分析,加深理解FTP协议的工作过程。①进入capturefiltersetting子菜单设立捕获过滤条件。②进入快捷栏中的capturepanel开始捕获。③点击view查看捕获的数据包。4.三次握手(Threeway_handshake)源主机->目的主机目的主机->源主机源主机->目的主机分析三次握手过程中TCP/IP协议之间的差别。5、运用Sniffer截获ICMP数据包并加以分析,加深理解ping命令的工作过程;【实验内容与环节】1.捕获FTP数据包。并根据捕获到的FTP数据包中的数据,分析TCP/IP协议头部及以太网帧头。2.用捕获到的实验数据分析TCP/IP连接的三次握手(Three-Way-Handshake)情况。3、捕获一段ping命令的数据流,并分析其工作过程。实验四聊天程序的设计【实验目的】1、熟悉VisualC++的基本操作;2、基本了解基于对话框的windows应用程序的编写过程;3、对于WindowsSocket编程建立初步概念,并实现聊天程序的编写。【实验规定】能编写基于对话框的windows应用程序;能用VisualC++中的MFCCSocket类,实现网络传输数据;制作实用的局域网一对一聊天程序;【实验原理】一、WindowsSocket和套接口的基本概念网际协议(InternetProtocol,IP)是一种用于互联网的网络协议,已广为人知。它可以广泛用于大多数计算机操作系统上,也可用于大多数局域网LAN(比如小型办公网络,小型宿舍网络)和广域网WAN(例如互联网)。从它的设计来看,IP是一个无连接的协议,并不能保证数据投递万无一失。两个上层协议(TCP和UDP)依赖IP协议进行数据通信。假如希望在MicrosoftWindows下通过TCP和UDP协议建立网络应用程序,则需要使用Winsock套接口编程技术。套接口,就是指向传输提供者的句柄。Win32中,套接口不同于文献描述符,所以它是一个独立的类型——SOCKET。WindowsSocket描述并定义了一个MicrosoftWindows的网络编程界面,它是从UnixSocket的基础上发展而来的,为WindowsTCP/IP提供了一个CSD型的套接字规范,除与4.3CSDUnixSocket完全兼容外,还涉及一个扩充文献,通过一组附加的API实现Windows式(即事件驱动)的编程风格;而Winsock则是在MicrosoftWindows中进行网络应用程序设计的接口。Windows在Internet支配域中的TCP/IP协议定义了Winsock网络编程规范,融入了许多新特点。使用Socket的目的是使用户在网络协议上工作而不必对该网络协议有非常进一步的了解。此外,编写的程序还可被迅速地移植到任何支持Socket的网络系统中去。Winsock提供了一种可为指定传输协议打开、计算和关闭会话的能力。在Windows下,TCP/IP上层模型在很大限度上与用户的Winsock应用有关;换言之,用户的Winsock应用控制了会话的方方面面,必要时,还会根据程序的需要格式化数据。套接口有三种类型:流式套接口、数据报套接口及原始套接口。流式套接口定义了一种可靠的面向连接的服务(运用TCP协议),实现了无差错无反复的顺序数据传输。数据报套接口定义了一种无连接的服务(UDP),数据通过互相独立的报文进行传输,是无序的,并且不保证可靠和无差错。原始套接口允许对低层协议如IP和ICMP直接访问,重要用于新的网络协议实现的测试等。无连接服务器一般都是面向事务解决,一个请求、一个应答就完毕了客户程序与服务程序之间的互相作用。套接口工作过程如下:服务器启动,通过调用socket()建立一个套接口,然后调用Cind()将该套接口和本地网络地址联系在一起,再调用accept()来接受连接。客户在建立套接口后调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用read()和write()来发送和接受数据。最后,待数据传送结束后,双方调用close()关闭套接口。在网络编程中,掌握端口的概念十分重要。端口:基于TCP/IP协议的网络中,计算机都分派有一个IP地址,用一个32位二进制数来表达,正式的称呼是“Ipv4地址”。客户机需要通过TCP或UDP和服务器通信时,必须指定服务器的IP地址和服务端标语。此外,服务器打算侦听接入客户机请求时,也必须指定一个IP地址和一个端标语。在选择端口时,应特别小心,由于有些可用端标语是为“已知的”(即固定的)服务保存的,如文献传输协议和超文本传输协议,即FTP(21号端口)和HTTP(一般为8080端口)。“已知的协议”,即固定协议,采用的端口由“互联网编号分派认证(IANA)”控制和分派,RFC1700中说明的编号。从本质上说,端口可分为3类:“已知”端口、已注册端口、动态和(或)私用端口。(1)“已知”端口0~1023,由IANA控制,是在UNIX中为固定服务保存的。(2)已注册的端口1024~49151,由IANA列出来的,供普通用户的普通用户进程或程序使用。(3)动态和(或)私用端口49152~65535.普通用户应选择1024~49151之间的已注册端口,从而避免端标语已被另一个应用或系统服务所用。此外,49152~65535间的端口可自由使用,由于IANA在这些端口上没有注册服务。二、MFC对Socket编程的封装类简介MicrosoftWindowsClassLiCrary(MFC)中提供了较高级封装的类来实现网络通信。图4-1给出了CSocket类的继承关系。COCOCjectCAsyncSocketCAsyncSocketCSocketCSocket图4-1CAsyncSocket类封装了WindowsSocketsAPI函数,提供了较低层的与WindowsSockets对话接口,一般合用于有相称水平的网络编程者使用,可方便地进行低层的网络事件告知及信息回叫控制等操作。CSocket类派生于CAsyncSocket,它继承了父类中一些常用易懂的WindowsSocketsAPI函数,并对CAsyncSocket中低层的较难控制的一些API函数或成员函数进行了解决,使得网络传输简捷易用,同时它支持模块化的后台信息解决,解决了CAsyncScoket中较难克服的多线程解决。下面介绍用VisualC++在windows中实现Socket类型成员函数(这些成员函数事实上是从CAsyncSocket类继承来的)。成员函数和参数说明:(1)COOLCreate(UNITnsocketPort=0,intnSocketType=SOCK_STREAM,longlEvent=FD_READ|FD_WRITE|FD_OOC|FD_ACCEPT|FD_CONNECT|FD_CLOSE,LPCTSTRlpszSocketAddress=NULL)该函数用来建立Socket,假如函数成功,则返回非零值;否则返回值为0。其中:nSocketPort:为所选择的socket端口,一般要大于1023,假如该参数为0,则由系统选定一端口,默认值0。nSocketType:为套接字类型——SOCK_STREAM或SOCK_DGRAM。SOCK_STREAM表达为流套接字(本实验使用基于TCP连接的流套接字编程),SOCK_DGRAM表达为数据报套接字,默认值为SOCK_STREAM。lEvent:标记该Socket要完毕哪种工作,默认值为FD_READ|FD_WRITE|FD_OOC|FD_ACCEPT|FD_CONNECT|FD_CLOSE。lpszSocketAddress:一个指向字符串的指针,该字符串包含了被连接套接口的网络地址。一个带点的数据,如“”注意:CSocket中,WinsockAPI的初始化(socket)和绑定(Cind)两部分工作都完毕了。(2)COOLListen(intnConnectionCacklog=5)该函数的作用是等待Socket请求,假如调用成功,则返回非零值;否则返回值为0。Listen仅对那些支持连接的套接字起作用,也就是SOCK_STREAM类型的套接字。在进程应答连接并把它放到等待队列时,套接字被置成被动模式(passivemode)。本函数一般由那些一次可以用多个连接的服务器使用(或任何需要接受连接的应用)。nConnectionCacklog:表达等待队列的长度,默认值为最大值5,有效值为1~5。(3)COOLConnect(LPCTSTRlpszHostAddress,UINTnHostPort)该函数的作用是提出连接请求。其中:lpszHostAddress:对象连接的套接字的网络地址、机器名,如.dn,或以句点分隔的数字,如“00”。nHostPort:为接受请求进程的网络地址和Socket端标语。注意:Connect函数尚有另一个版本:COOLConnect(constSOCKADDR*lpSockAddr,intnSockAddrLen);具体用法可以参阅MSDNLiCrary中关于CAnyscSocket类的阐述。(4)virtualvoidClose()该函数的作用是关闭该Socket。三、运用CSocket进行传输的辅助类简介1、CSocketFile类CSocketFile继承自CFile类,用在基于WindowsSocket的网络上传输数据。一方面,将一个建立连接的CSocket对象实例作为参数进行初始化,然后,将已经初始化的CSocket对象连接到CArchive对象上,接着将数据串行化,以使用MFC系列来简化发送和接受数据,最终实现运用网络的Socket传输和本机上的流传输同样简朴。成员函数:CSocketFile用到的成员函数只有构造函数。CSocketFile::CSocketFile(CSocket*pSocket,COOLCArchiveCompatiCle=true);其中:pSocket:连接到CSocketFile对象的套接口。CArchiveCompatiCle:指示该文献对象是否与一个CArchive对象一起使用。只有当希望在单机方式下来使用这个CSocketFile对象时,才传递FALSE。由于仅有CSocketFile类实例自身没有什么意义,所以通常将其置为TRUE。说明:此成员函数用来构造一个CSocketFile对象。当此对象超过范围或被删除时,它的析构函数将使它自己从插槽对象上分离。注意:一个CSocketFile对象也可以在没有CAchive对象的情况下作为一个(受限制的)文献来使用。缺省情况下,CSocketFile构造函数的CArchiceCompatiCle参数是TRUE,它表白此文献对象与一个档案一起使用。要在没有档案的情况下使用该文献对象,则给CArchiceCompatiCle参数传递FALSE。在“档案兼容”模式下,一个CSocketFile对象可以提供更好的表现,并减少出现“死锁”的几率。、CArchive类CAchive类没有基类。CArchive允许以永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以从永久存储中装载对象,并在内存中重新构造它们。使数据永久保存的过程就叫做“串行化”。一般可以把一个CArchive对象看作一个二进制流,可以将它和输入流iostream类的用法进行比较。CArchive对象一般和一个文献类关联(CFile类或CSocketFile类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论