计算机网络实验讲义
计算机网络实验教程(全)
目录实验一双绞线的制作 (1)实验二常规网络诊断命令 (5)实验三交换机和路由器的基本配置 (15)实验四VLAN的划分 (30)实验五跨交换机实现VLAN (39)实验六交换机端口安全实验 (49)实验七静态路由实验 (58)实验八单臂路由实验 (63)实验九三层交换机跨VLAN通信实验 (71)实验一双绞线的制作一、实验目的通过了解双绞线的制作过程,以达到对传输介质的进一步了解,尤其是在各种特殊的情况下网线的制作,从而胜任网络管理、维护和网络布线的工作。
二、实验器材双绞线,水晶头(RJ-45),工具(压线钳,测线仪等)图 1.1 双绞线图 1.2 水晶头图1.3 压线钳三、相关理论1、非屏蔽双绞线的六种类型表1.1非屏蔽双绞线的六种类型类别应用实验使用双绞线是5类线,由8根线组成,颜色分别为:【橙白,橙】,【绿白,绿】,【蓝白,蓝】,【棕白,棕】2、RJ-45水晶头和双绞线线序RJ45水晶头由金属片和塑料构成,特别需要注意的是引脚序号,当金属片面对我们的时候从左至右引脚序号是1~8, 这序号做网络连线时非常重要,不能搞错。
双绞线的制作方式有两种国际标准,分别为EIA/TIA568A 以及EIA/TIA568B 。
而双绞线的连接方法也主要有两种,分别为直通线以及交叉线。
简单地说,直通线就是水晶头两端都同时采用T568A 标准或者T568B 的接法,而交叉线则是水晶头一端采用T586A 的标准Cat 1 可转送语音,不用于传输数据,常见于早期电话线路电信系统Cat 2可转输语音和数据,常见于ISDN 和T1线路 Cat 3 带宽16MHz ,用于10BASE-T ,制作质量严格的3类线也可用于100BASE-T计算机网络Cat 4带宽20MHz ,用于10BASE-T 或100BASE-T Cat 5 带宽100MHz ,用于10BASE-T 或100BASE-T ,制作质量严格的5类线也可用于1000BASE-TCat 6 带宽高达200MHz ,可稳定运行于1000BASE-T制作,而另一端则采用T568B标准制作,即A水晶头的1、2对应B 水晶头的3、6,而A水晶头的3、6对应B水晶头的1、2。
计算机网络实验课程
计算机网络实验(一)实验名称:双绞线电缆网线的制作及交换以太网组网实验目的:能够利用工具制作双绞线电缆网线并且用制作的电缆组建交换以太网实验要求:1. 动手完成双绞线电缆网线的制作,并测试电缆是否能用;2. 利用制作的电缆组建交换以太网,并测试网络是否连通;3. 写出实验报告实验准备知识:一、双绞线在网络中的接线标准有以下几种:(1)一一对应接法。
即双绞线的两端芯线要一一对应,即如果一端的第1脚为绿色,另一端的第1脚也必须为绿色的芯线,这样做出来的双绞线通常称之为“直连线”。
但要注意的是4个芯线对通常不分开,即芯线对的两条芯线通常为相邻排列,这个,由于太简单且随意,图上未标出。
这种网线一般是用在集线器或交换机与计算机之间的连接。
(2)1-3、2-6交叉接法。
虽然双绞线有4对8条芯线,但实际上在网络中只用到了其中的4条,即水晶头的第1、第2和第3、第6脚,它们分别起着收、发信号的作用。
这种交叉网线的芯线排列规则是:网线一端的第1脚连另一端的第3脚,网线一端的第2脚连另一头的第6脚,其他脚一一对应即可。
这种排列做出来的通常称之为“交叉线.例如,当线的一端从左到右的芯线顺序依次为:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕时,另一端从左到右的芯线顺序则应当依次为:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。
这种网线一般用在集线器(交换机)的级连、服务器与集线器(交换机)的连接、对等网计算机的直接连接等情况下。
经常用于两台电脑直接互连传送数据!(3)100M接法。
这是一种最常用的网线制作规则。
所谓100M接法,是指它能满足100M 带宽的通讯速率。
它的接法虽然也是一一对应,但每一脚的颜色是固定的,具体是:第1脚——橙白、第2脚——橙色、第3脚——绿白、第4脚——蓝色、第5脚——蓝白、第6脚——绿色、第7脚——棕白、第8脚——棕色,从中可以看出,网线的4对芯线并不全都是相邻排列,第3脚、第4脚、第5脚和第6脚包括2对芯线,但是顺序已错乱。
配套课件 计算机网络实验教程
符号在Filter string语法中的定义
➢ Equal: eq, == (等于) ➢ Not equal: ne, != (不等于) ➢ Greater than: gt, > (大于) ➢ Less Than: lt, < (小于) ➢ Greater than or Equal to: ge, >= (大等于) ➢ Less than or Equal to: le, <= (小等于)
网络基础实验
1
实验简要介绍
• 本章实验是学生接触计算机网络的基础实验。
• 通过本实验,实验者能够: ➢ 了解常见的计算机网络设备; ➢ 了解网络中心布局和规划; ➢ 掌握网络基本命令的使用; ➢ 掌握网线的制作和使用网线实现两台计算机通信; ➢ 掌握使用交换机组建小型局域网; ➢ 掌握如何组建无线网络。
Analyze的下拉菜单
Display filters 显示过滤 可以直接在主界面的filter上选择
Analyze下的Display filters
正确的语法如下,和“Capture Filter”的语法有所不同:
Capture filter
比如说: a.捕获 MAC地址为 00:d0:f8:00:00:04 网络设备通信的所有报文
ether host 00:d0:f8:00:00:04 b.捕获 IP地址为 192.168.1.1 网络设备通信的所有报文
host 192.168.1.1 c.捕获网络web浏览的所有报文
– 客户机预装WindowsXP或Windows 7 – 服务器预装Windows2003及以上系统
– 实验所需软件
– FTP(windows IIS组件) – WWWFTP(windows IIS组件) – DNS(DNS服务端组件) – DHCPDNS(DHCP服务端组件)
计算机网络实验内容
实验一双绞线线缆的制作一、实验目的了解双绞线的特性与应用场合,掌握双绞线的制作方法。
掌握TCP/IP的设置方法。
二、实验环境6-605微机室,所用机子能上互联网。
RJ-45头若干、双绞线若干米、RJ-45压线钳一把、测试仪一套。
三、相关理论实验使用双绞线是5类线。
由8根线组成,颜色分别为:【橙白,橙】,【绿白,绿】,【蓝白,蓝】,【棕白,棕】(2)RJ-45连接器和双绞线线序RJ45水晶头由金属片和塑料构成,特别需要注意的是引脚序号,当金属片面对我们的时候从左至右引脚序号是1-8, 这序号做网络联线时非常重要,不能搞错。
工程中使用比较多的是 T568B 打线方法,线序如下:直通线:(机器与集线器连)1 2 3 4 5 6 7 8A端:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕;B端:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕。
交叉线:(机器直连、集线器普通端口级联)1 2 3 4 5 6 7 8A端:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕;B端:绿白,绿,橙白,蓝,蓝白,橙,棕白,棕。
四、实验内容1.一般直通双绞线的制作2.测试一般直通双绞线的导通性3. 设置TCP/IP五、实验步骤5.1、制作双绞线1.仔细阅读实验文档,决定实验环境中需要制作的网线的类型和需要使用的线序。
2.按以下步骤制作网线(1人制作一根网线):(1)抽出一小段线,然后先把外皮剥除一段(2)将双绞线反向缠绕开(3)根据标准排线(注意这里非常重要)(4)铰齐线头(注意线头长度)(5)插入插头(6)用打线钳夹紧(7)用同样方法制作另一端3.使用测试仪测试连接逻辑正确与否,断路导致无法通信,短路可能损坏网卡或集线器。
5.2、TCP/IP设置方法1.win2000及winXP系统:先进入控制面板,再进入“网络连接”(或“网络与拨号连接”)窗口,单击“本地连接”右键,选择“属性”,进入设置窗口。
(或者右键单击桌面“网上邻居”属性,再单击“本地连接”右键,选择“属性”,进入设置窗口。
计算机网络实验说明
实验一绘制网络拓扑结构图•【实验目的】(1)掌握总线型、环型、星型和网络型等拓扑结构的基本知识。
(2)了解路由器、交换机、服务器等设备之间的连接。
•【实验内容和要求】• 1.熟悉模拟软件的使用。
• 2.练习: 综合技巧练习 - Packet Tracer 简介.pka• 3.绘制各种拓扑结构网络。
【实验步骤】拓扑布局和建立小型网络地址表本实验不包括地址表。
学习目标∙正确识别网络中使用的电缆∙物理连接点对点交换网络∙验证每个网络的基本连通性简介:许多网络问题都可以在网络的物理层解决。
因此,必须清楚了解网络连接使用哪些电缆。
在 OSI 模型的物理层(第 1 层),终端设备必须用介质(电缆)连接。
所需的介质类型取决于连接的设备类型。
在本实验的基本部分,将使用直通电缆或跳线电缆来连接工作站与交换机。
此外,两台或以上的设备使用分配的地址进行通信。
网络层(第 3 层)需要唯一的地址(也称为逻辑地址或 IP 地址),以便数据能到达适当的目的设备。
本实验的编址方案将应用于工作站,并且用于设备之间的通信。
任务 1:创建点对点网络步骤 1. 选择实验同伴步骤 2. 获取实验要使用的设备和资源。
需要的设备:∙ 2 个工作站∙ 1 根以太网电缆任务 2:确定网络中使用的电缆在连接设备之前,必须先确定要使用的介质类型。
本实验使用交叉电缆和直通电缆。
使用交叉电缆连接两个工作站上网卡的以太网端口。
这就是以太网电缆。
查看插头时,您会发现电缆两端相对的位置分别是橙色线和绿色线。
使用直通电缆将路由器的以太网端口连接到交换机端口,或将工作站连接到交换机端口。
这里也用以太网电缆。
查看插头时,您会发现电缆两端的每个引脚位置完全相同。
步骤 1. 连接点对点网络。
使用正确的以太网电缆将两个工作站连接到一起。
将电缆的一端连接到 PC1 上的 NIC 端口,另一端连接到 PC2。
您使用的是哪一类电缆?任务 3:配置地址并测试步骤 1. 应用第 3 层地址到工作站。
计算机网络实验讲义1
【实验1】计算机网络实例设计〖实验目的〗一个计算机网络高效健壮地运行,需要细致准确地设计,否则会出现很多不可预见的故障,而且网络的升级和增长也会受到阻碍。
现代网络的组建、运行和发展越来越复杂,包括了多种不同传输介质及相应的网络设备、网络协议、以及与其他网络进行的连接。
本次实验,通过学习黑龙江大学网络的实例,认识计算机网络及其相关设备技术,在因特网查找关键设备性能。
尝试使用VISIO软件绘制网络拓扑图,加深对网络的的组成和结构的理解。
〖背景知识〗现代网络运行环境,涉及了通信网、广播电视网、计算机控制网络等复杂技术。
学生需要首先熟悉开放系统互联(OSI)参考模型,以及TCP/IP现实体系模型,对计算机网络建立系统的认知,才能更好掌握本课程的内容。
〖实验准备〗安装windows 2000 server和windows XP,安装VISIO工具软件。
〖实验原理〗一、工具介绍1.1Visio概述VISIO是VISIO公司在91年推出的用于制作图表的软件(现在微软收购)。
在早期它主要用作商业图表制作,后来随着版本的不断提高,新增了许多功能。
它的介面很友好,操作也很简单,但却具有强大的功能,可以绘出各种各样的流程图,它的使用已经遍布各行各业,并不仅仅局限在商业、软件业和电子设计领域,它是所有软件设计者必不可少的工具,可以用它制作的流程图包括电路流程图、工艺流程图、程序流程图、组织结构图、商业行销图、办公室布局图、方位图等。
Visio是一个图形化管理软件,它可以将管理活动以图形的方式展示出来,以便于跟踪管理。
然而,传统方式在处理图形化的工作过程中,既费时,又费力,且重复劳动影响着工作效率与质量。
VISIO 公司新近推出了VISIO2000,它分为标准版,技术版,专业版和企业版,VISIO2000被宣称为是世界上最快捷、最容易使用的流程图软件,并比以前的版本增加了更多的功能。
VISIO只有英文版,但由于它的直观界面,即使英文不好的人也可以较快学会使用它,有兴趣的读者可以访问一下它的站点:面向商务与技术专家提供的综合性图表制作与绘图功能。
计算机网络工程实验讲义(修改稿)
计算机网络与工程实验讲义目录实验一:网络拓扑图的绘制 (3)1.实验内容 (4)2.实验要求: (3)实验二:访问控制列表配置 (5)1.教学内容 (5)2.知识点 (5)3.访问控制列表(access-list) (7)4.标准访问控制列表配置命令 (8)5.扩展访问控制列表配置命令 (8)实验三:访问控制列表和流量管理 (10)1.实验内容 (10)实验四:CISCO 1900交换机的基本配置 (14)一、实验目的 (14)二、相关知识 (14)实验五:使用路由器和交换机组建网络 (19)实验六:配置ISDN (24)1.实验目的 (24)2.实验原理 (24)3.基本配置 (24)4.实验内容 (26)实验七:CISCO路由器帧中继配置 (31)一、实验目的 (31)二、实验原理 (31)三、实验内容 (32)实验一:网络拓扑图的绘制1.实验内容:学习使用Microsoft Office Visio 2003工程绘图软件,以某校园网或某企业网为例,绘制网络拓扑结构图。
2.实验要求:要求同学从下列网络拓扑图中选择2例,用Visio进行网络拓扑图的绘制练习。
更多网络拓扑图参见附录1“拓扑图”文件。
北京大学网络拓扑湖南师大校园网络拓扑图河北大学校园网拓扑图实验二、访问控制列表配置1、教学目的:1.了解访问控制列表的作用2.了解标准访问控制列表与扩展访问列表的异同3.掌握访问控制列表的原理4.掌握访问列表的配置方法2、知识点:1.访问列表2.包过滤3.流量控制4.通配掩码2.1.访问控制列表(access-list)一、访问列表的作用访问控制列表是在使用路由技术的网络中,识别和过滤进入到网络或发出去的符合规定条件的数据流量,以决定是否允许发送或丢弃数据流量。
访问控制是控制流量的一种方法,是实现防火墙的重要手段。
二、访问列表的应用1.在物理接口上应用访问控制列表实现流量控制。
2.在虚拟终端线路接口(vty)应用访问控制列表,实现对登录用户的控制。
计算机网络基础实验讲义
计算机⽹络基础实验讲义计算机⽹络基础实验讲义实验⼀:序⾔——常见⽹络设备介绍实验⼆:net sim安装和基本使⽤⽅法实验三:IOS初始配置和基本命令实验四:以太⽹交换机的基本配置实验五:VLAN配置实验六:STP配置实验七:路由器的基本配置实验⼋:⼦⽹划分与配置实验九:静态路由配置实验⼗:动态路由配置实验⼗⼀:acl配置实验⼗⼆:应⽤服务配置实验⼗三:综合实验实验⼀:序⾔——常见⽹络设备介绍主要内容:常见⽹线的性能;⽹卡的主要功能,常见分类,及有关术语;集线器的主要功能,常见分类,及有关术语;交换机的主要功能,常见分类,及有关术语;路由器的主要功能,常见分类,及有关术语;1.1⽹线1.1.1⽹线的功能⽹线是计算机⽹络中收、发双⽅之间的可见物理通路。
常见的⽹线有:双绞线、铜轴电缆、光纤等。
1.1.2各类⽹线的性能⽐较1.2⽹卡(NetWork Interface Card)1.2.1⽹卡的主要功能⽹卡即⽹络接⼝卡(NIC,Network Interface Card),是将PC机和局域⽹连接起来的⽹络适配器(NIC),它涉及到⽹络物理层和数据链路层。
其主要功能为:串/并转换数据缓存包的装配和拆卸编码/解码⽹络存取控制数/模转换1.2.2⽹卡的分类1.按总线接⼝类型分按⽹卡的总线接⼝类型来分⼀般可分为ISA接⼝⽹卡、PCI接⼝⽹卡以及在服务器上使⽤的PCI-X总线接⼝类型的⽹卡,笔记本电脑所使⽤的⽹卡是PCMCIA 接⼝类型的。
(1)ISA总线⽹卡(2)PCI总线⽹卡(3)PCI-X总线⽹卡(4)PCMCIA总线⽹卡(5)USB总线接⼝⽹卡2. 按⽹络接⼝划分除了可以按⽹卡的总线接⼝类型划分外,我们还可以按⽹卡的⽹络接⼝类型来划分。
⽹卡最终是要与⽹络进⾏连接,所以也就必须有⼀个接⼝使⽹线通过它与其它计算机⽹络设备连接起来。
不同的⽹络接⼝适⽤于不同的⽹络类型,⽬前常见的接⼝主要有以太⽹的RJ-45接⼝、细同轴电缆的BNC接⼝和粗同轴电AUI 接⼝、FDDI接⼝、ATM接⼝等。
《计算机网络实验教程》课件实验十七 DHCP服务器的配置
图17-12 安装“动态主机配置协议(DHCP)”组件
21
21
(二)配置DHCP服务器
步骤1
在“管理您的服务器”窗口中单击“管理此DHCP服务器”(见图17-13),或选择“开始”→“所有 程序”→“管理工具”→“DHCP”菜单命令,打开DHCP管理窗口,如图17-14所示。
图17-13 返回管理服务器角色
可以先取消创建作用域的配置过程,在配 置服务器的时候再创建作用域。在“新建作用 域向导”对话框中单击“取消”按钮,会出现 “无法完成”向导页,提示DHCP虽然安装成 功但无法完成配置。
13
13
(一)安装DHCP服务器组件并新建作用域
步骤5
出现“作用域名”向导页,在“名称”编辑框中输入DHCP作用域的名称,在“描述”输入简单的描 述(可以不填),单击“下一步”按钮,如图17-5所示。
4
4
二 实验设1
安装Windows Server 2003操作系统的局域网服务器一台,客户机一台。
2
Windows Server 2003操作系统安装光盘。
3
Vmware虚拟机软件。
6
6
三 实验要求与说明
7
7
实验要求与说明
要求&说明
首先在已安装好操作系统的服务器上,设定好固定IP 地址和计算机名,测试一下局域网的连通性;然后安装 DHCP服务器组件并新建和简单设置作用域;接着按要求配 置DHCP服务器,包括排除特殊IP范围,指定分配的默认网 关和DNS,设定租约期限等;最后利用客户端操作系统对 服务器配置进行验证,并记录结果,分析原因。
图17-7 设置作用域地址1排6 除
16
(一)安装DHCP服务器组件并新建作用域
计算机网络实验上课PPT
三、常用配置命令
Console: 1、操作模式切换(GNS3默认为特权模式)
用户模式> 特权模式# 配置模式(config terminal)# enable:从用户模式切换到特权模式 config terminal:从特权模式切换到配置模式 exit:通过此命令可以从配置切换到特权,从特权切换到用户模式。
三、常用配置命令
8、部署Telnet-Server服务器 Telnet-server(config)# line vty 0 //开启远程终端登陆模式 Telnet-server(config-line ) # password cisco //设置远程登陆 密码 Telnet-server(config -line) # login //开启登陆状态
SW1(config-if)#exit //退出
按照此方法,依次将其他接口放入特定VLAN=>
VLAN10
SW1-F0/0
7、在交换机上部署Trunk主干
VLAN20
SW2-F0/0
SW1(config)#int f0/1 //进入接口
SW1(config-if)#switchport mode trunk //将接口设置为主干链路
四、常用测试命令
以下测试命令均在特权模式#下 1、show ip interface brief //查看接口IP地址(在电脑和路由器上) 2、show mac-address-table //查看MAC地址(在交换机上) 3、show ip route //查看路由表/默认网关(在电脑和路由器上) 4、ping 192.168.10.3 //测试连通性(在电脑上) 5、通过Wireshark测试验证TCP/IP协议 将鼠标放置与SW1和SW2连线上,右键点击开始抓包 (需将GNS3和Wireshark关联:将wireshark安装路径,放入GNS3 编辑->首选项->capture->tail.exe -f -c +0b %c | “D:\Program Files
计算机网络实验讲义
计算机网络实验讲义(试用)白云莉编内蒙古农业大学计算机与信息工程学院二00六年六月一、实验目的1.掌握直通、交叉和全反线序的双绞线的制作方法。
2.掌握双绞线的水平线缆的制作方法。
二、实验材料与工具1.RJ45头6个,非屏蔽双绞线(1米)三条。
2.工具(RJ45压线钳一套、打线钳一套、双绞线测线器一套)三、实验步骤1.直通、交叉和全反线序的双绞线的制作步骤:(1)把双绞线的一端约2厘米的保护皮剥落,然后按不同的颜色把线分成独立的四组。
(2)拆开每一组线,按一定的顺序把每一根导线都拉直,然后用RJ45压线钳把拉直的线约预留2厘米后剪平。
(3)左手按紧剪平的线,把RJ-45(水晶)头套进,然后用力往上挤,直到导线顶住水晶头的外壳顶部,再用压线钳夹稳水晶头。
2.双绞线的水平线缆的制作步骤:(1)把双绞线的一端约3厘米的保护皮剥落,然后按不同的颜色把线分成独立的四组。
(2)拆开每一组线,把每一根导线都拉直,然后将每一根线按照线序放到线槽里。
(3)用打线钳将每一根线打到线槽里,同时将多余的线头打掉。
四、问题与思考1.如何测试做好的双绞线.是否可用?2.根据双绞线的T568B标准,为什么线的排布要按附表所示?一、实验目的1.掌握安装对等网络协议的方法。
2.掌握共享资源的方法。
二、实验环境1.普通机房实验。
三、实验步骤1.安装网络协议(1)选择桌面上的“网上邻居”,单击右键,在弹出的“快捷”菜单中单击“属性”,进入“网络”对话框;(2)在“配置”标签中,单击“添加”,安装网络协议:NetBEUI,TCP/IP;(3)在“配置”标签中的“主网络登录”框内,选择“Microsoft网络用户”,然后在“网络组件”框内,双击“Microsoft网络用户”,在随后出现的“登录身份验证”框内,对“登录到WindowsNT域”复选框不作选择。
在网络登录选项中,选择“登录及恢复网络连接”项;(4)在“网络”对话框的“标识”标签中,填入“计算机名”、“工作组”名称及“计算机说明”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三路由器的使用与广域网的组建实验步骤1、根据图3.1连接好各个路由器的本地网和核心子网。
2、配置好各个路由器本地交换机,使得构成一个本地局域网。
3、测试本地网是否连通。
4、配置路由器的本地以太网端口,作为本地网的网关。
5、测试本地网与网关是否连通。
6、配置好路由器的路由端口,测试两个子网是否能够通信。
7、配置路由协议,测试两个子网是否能够通信。
图3.1 计算机网络实验结构图附录实验配置指令一、各台计算机的配置2、计算机AIP:168.1.1.2MASK:255.255.255.0GATEWAY:168.1.1.12、计算机BIP:168.1.1.3MASK:255.255.255.0GATEWAY:168.1.1.13、计算机CIP:168.1.1.4MASK:255.255.255.0GATEWAY:168.1.1.12、计算机DIP:168.1.1.5MASK:255.255.255.0GATEWAY:168.1.1.12、计算机EIP:10.0.0.2MASK:255.255.255.0GATEWAY:10.0.0.12、计算机FIP:10.0.0.3MASK:255.255.255.0GATEWAY:10.0.0.17、计算机GIP:10.0.0.4MASK:255.255.255.0GATEWAY:10.0.0.18、计算机HIP:10.0.0.5MASK:255.255.255.0GATEWAY:10.0.0.1二、R1路由器的配置Enable % 注意:网络实验机房的命令为:enable 14,密码是rg。
Configure terminalInterface f0/0Ip address 168.1.1.1 255.255.255.0No shutdownexitInterface s1/0Ip address 192.168.1.1 255.255.255.0No shutdownBandwidth 2000ExitIp route 10.0.0.0 255.255.255.0 192.168.1.2ExitShow ip route一、R2路由器的配置EnableConfigure terminalInterface f0/0Ip address 10.0.0.1 255.255.255.0No shutdownexitInterface s1/0Ip address 192.168.1.2 255.255.255.0No shutdownExitIp route 168.1.1.0 255.255.255.0 192.168.1.1ExitShow ip route图3.1 路由器实验连线图实验四基于TCP协议的聊天程序的开发实验步骤1、设置服务器的工作流程图,并写出程序。
2、设置终端机的工作流程图,并写出程序。
3、调试服务器和终端机的程序,并上网测试。
4、写出测试结果。
附录1 实验原理1. 基本术语客户机:Client,也称为工作站端或客户端,它是通信的发起端。
服务器:Server,它是通信的等待方。
图4.1显示了客户端和服务器端工作方式的不同。
软件运行的界面如图4.2所示。
图4.1 TCP C/S模型图4.2 软件运行界面2. 聊天室客户端的实现客户端程序包括程序文件client.asm和资源文件client.rc。
资源文件确定了客户端的界面形式。
程序文件的流程图如图图4.3所示。
①它先调用WSAStartup函数初始化WinSock库。
②当用户输入IP并点击连接按钮后,使用Socket函数创建流套接字,使用WSAAsyncSelect函数将通知消息自定义的ID(即:hSocket)绑定到窗口过程中,再使用connect函数去连接服务器。
③连接成功时,系统的FD_CONNECT会通知消息给客户端窗口。
④连接成功后就可以传输数据了。
A.系统原语recv收到数据后,发送系统通知消息FD_READ,客户端将从缓冲区szReadBuffer中读取数据。
B. 客户端需要发送数据时,从对话框中获取数据,写入缓冲区@szBuffer,调用系统原语send函数发送出数据,在收到系统FD_WRITE通知消息后,继续发送数据。
C. 在缓冲区满或发送失败时,客户端将重发并等待FD_WRITE通知消息的到来。
⑤连接失败则调用closesocket函数断开连接。
⑥用户在数据传输完毕,调用closesocket函数断开连接。
⑦客户端收到FD_CLOSE通知消息时,连接已经断开。
⑧在客户端关闭时,调用WSACleanup函数卸载WinSock库。
图4.3 客户端程序结构图4.4 服务器端程序结构3. 聊天室服务器端的实现服务器端程序包括程序文件server.asm和资源文件server.rc。
资源文件确定了服务器端的界面形式。
程序文件的流程图如图图4.4所示。
在WinSock库的加载和卸载,何时去读取套接字,发送数据时的流量控制等方面,服务器端和客户端的工作原理是一样的。
当服务器端准备在端口9999提供服务时,需要创建流套接字,并设置为非阻塞模式,再使用bind函数将套接字hSocket和端口@stSin绑定。
接着调用函数listen让套接字进入监听状态,并指定监听队列允许保持的尚未处理的最大连接数为5。
这样,主程序收到系统FD_ACCEPT通知消息后,调用accept接受客户机的连接请求,调用_AddClient将其加入到客户端列表中,并统计当前的用户数dwCount。
收到系统FD_READ通知消息后,服务器会调用_RecvData处理接收到的TCP包。
收到系统FD_CLOSE通知消息后,服务器会调用_RemoveClient 从客户端列表中删除当前用户的sochet。
附录2 实验源程序1、服务器端; Server.asm; 使用TCP 协议的聊天室例子程序——服务器端; 使用nmake 或下列命令进行编译和链接:; ml /c /coff Server.asm; rc Server.rc; Link /subsystem:windows Server.obj Server.res.386.model flat, stdcalloption casemap :none ; case sensitive; Include 数据include windows.incinclude user32.incincludelib user32.libinclude kernel32.incincludelib kernel32.libinclude wsock32.incincludelib wsock32.lib; equ 数据DLG_MAIN e qu 2000IDC_INFO equ 2001IDC_COUNT equ 2002WM_SOCKET equ WM_USER + 100TCP_PORT equ 9999MAX_SOCKET equ 100 ;聊天室最大容量; 数据段.data?hWinMain dd ?hSocket dd ?dwCount dd ?szReadBuffer db 32768 dup (?)szBuffer d b 32768 dup (?)stTable dd MAX_SOCKET dup (?).constszErrBind db ‘无法绑定到TCP端口9999,请检查是否有其它程序在使用!’,0 szFormat db ‘【客户端#%08x】- %s’,0dh,0ah,0; 代码段.code; 在客户端列表中加上一个socket_AddClient proc _hSocketinvoke WSAAsyncSelect,_hSocket,hWinMain,WM_SOCKET,FD_READ or FD_CLOSExor ebx,ebxmov esi,offset stTable.while ebx < MAX_SOCKET.if ! dword ptr [esi]push _hSocketpop [esi]inc dwCountinvoke SetDlgItemInt,hWinMain,IDC_COUNT,dwCount,FALSEret.endifinc ebxadd esi,4.endwinvoke closesocket,_hSocketret_AddClient endp; 从客户端列表中去掉一个socket_RemoveClient proc _hSocketxor ebx,ebxmov esi,offset stTablemov edi,_hSocket.while ebx < MAX_SOCKET.if [esi] == ediinvoke closesocket,[esi]mov dword ptr [esi],0dec dwCountinvoke SetDlgItemInt,hWinMain,IDC_COUNT,dwCount,FALSEret.endifinc ebxadd esi,4.endwret_RemoveClient endp; 处理接收到的TCP包_RecvData proc _hSocketlocal @dwRecvinvoke RtlZeroMemory,addr szReadBuffer,sizeof szReadBufferinvoke recv,_hSocket,addr szReadBuffer,sizeof szReadBuffer,NULL.if eax != SOCKET_ERRORmov @dwRecv,eaxinvoke wsprintf,addr szBuffer,addr szFormat,\_hSocket,addr szReadBuffer; 按照客户端列表逐一发送invoke GetDlgItem,hWinMain,IDC_INFOmov ebx,eaxinvoke GetWindowTextLength,ebxinvoke SendMessage,ebx,EM_SETSEL,eax,eaxinvoke SendMessage,ebx,EM_REPLACESEL,FALSE,addr szBuffermov esi,offset stTablexor ebx,ebx.while ebx < MAX_SOCKETmov edi,[esi].if ediinvoke lstrlen,addr szBufferinvoke send,edi,addr szBuffer,eax,0.endifadd esi,4inc ebx.endw.endifret_RecvData endp; 初始化Socket,绑定到服务TCP端口并监听_Init proclocal @stWsa:WSADATAlocal @stSin:sockaddr_ininvoke WSAStartup,101h,addr @stWsainvoke socket,AF_INET,SOCK_STREAM,0mov hSocket,eaxinvoke WSAAsyncSelect,hSocket,hWinMain,WM_SOCKET,FD_ACCEPTinvoke RtlZeroMemory,addr @stSin,sizeof @stSininvoke htons,TCP_PORTmov @stSin.sin_port,axmov @stSin.sin_family,AF_INETmov @stSin.sin_addr,INADDR_ANYinvoke bind,hSocket,addr @stSin,sizeof @stSin.if eax == SOCKET_ERRORinvoke MessageBox,hWinMain,addr szErrBind,NULL,\MB_OK or MB_ICONWARNINGinvoke SendMessage,hWinMain,WM_CLOSE,0,0.elseinvoke listen,hSocket,5.endifret_Init endp; 主窗口程序_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParammov eax,wMsg.if eax == WM_SOCKETmov eax,lParam.if ax == FD_ACCEPTinvoke accept,wParam,0,0invoke _AddClient,eax.elseif ax == FD_READinvoke _RecvData,wParam.elseif ax == FD_CLOSEinvoke _RemoveClient,wParam.endif; 退出时关闭全部连接.elseif eax == WM_CLOSEinvoke closesocket,hSocketxor ebx,ebxmov esi,offset stTablecld.while ebx < MAX_SOCKETlodsd.if eaxinvoke closesocket,eax.endifinc ebx.endwinvoke WSACleanupinvoke EndDialog,hWinMain,NULL.elseif eax == WM_INITDIALOGpush hWndpop hWinMaincall _Init.elsemov eax,FALSEret.endifmov eax,TRUEret_ProcDlgMain endp; 程序开始start:invoke GetModuleHandle,NULLinvoke DialogBoxParam,eax,DLG_MAIN,NULL,offset _ProcDlgMain,0invoke ExitProcess,NULLend start2、客户机端; Client.asm; 使用TCP 协议的聊天室例子程序——客户端; 使用nmake 或下列命令进行编译和链接:; ml /c /coff Client.asm; rc Client.rc; Link /subsystem:windows Client.obj Client.res.386.model flat, stdcalloption casemap :none ; case sensitive; Include 数据include windows.incinclude user32.incincludelib user32.libinclude kernel32.incincludelib kernel32.libinclude wsock32.incincludelib wsock32.lib; equ 数据DLG_MAIN e qu 2000IDC_SERVER equ 2001IDC_CONNECT e qu 2002IDC_INFO equ 2003IDC_TEXT equ 2004WM_SOCKET equ WM_USER + 100 TCP_PORT equ 9999; 数据段.data?hWinMain dd ?hSocket dd ?hWinConnect dd ?hWinOK dd ?hWinText dd ?hWinServer dd ?hWinInfo dd ?szReadBuffer db 32768 dup (?).constszIP db ‘127.0.0.1’,0szConnect db ‘连接(&C)’,0szDisConnect db ‘断开(&D)’,0szErrIP db ‘无效的服务器IP地址!’,0 szErrSocket db ‘创建Socket错误!’,0 szErrConnect db ‘无法连接到服务器!’,0; 代码段.code; TCP/IP 建立连接的用的线程_Connect proc uses ebx esi edi _lParamlocal @szBuffer[256]:bytelocal @stSin:sockaddr_in; 转换IP地址并建立socketinvoke RtlZeroMemory,addr @stSin,sizeof @stSininvoke GetDlgItemText,hWinMain,IDC_SERVER,addr @szBuffer,sizeof @szBufferinvoke inet_addr,addr @szBuffer.if eax == INADDR_NONEmov ebx,offset szErrIPjmp _Error.endifmov @stSin.sin_addr,eaxmov @stSin.sin_family,AF_INETinvoke htons,TCP_PORTmov @stSin.sin_port,axinvoke socket,AF_INET,SOCK_STREAM,0.if eax == INV ALID_SOCKETmov ebx,offset szErrSocketjmp _Error.endifmov hSocket,eax; 连接到服务器invoke EnableWindow,hWinConnect,FALSEinvoke EnableWindow,hWinServer,FALSEinvokeWSAAsyncSelect,hSocket,hWinMain,WM_SOCKET,FD_CONNECT or FD_READ or FD_CLOSE or FD_WRITEinvoke connect,hSocket,addr @stSin,sizeof @stSin.if eax == SOCKET_ERRORinvoke WSAGetLastError.if eax != WSAEWOULDBLOCKcall _DisConnectmov ebx,offset szErrConnectjmp _Error.endif.endifret_Error:invoke MessageBox,hWinMain,ebx,NULL,\MB_OK or MB_ICONWARNINGret_Connect endp; 断开连接_DisConnect p rocinvoke closesocket,hSocketmov hSocket,0invoke SetWindowText,hWinConnect,addr szConnectinvoke EnableWindow,hWinServer,TRUEinvoke EnableWindow,hWinConnect,TRUEinvoke EnableWindow,hWinText,FALSEinvoke EnableWindow,hWinOK,FALSEret_DisConnect e ndp; 接收TCP数据包_RecvData proc _hSocketinvoke RtlZeroMemory,addr szReadBuffer,sizeof szReadBufferinvoke recv,_hSocket,addr szReadBuffer,sizeof szReadBuffer,NULL.if eax != SOCKET_ERRORinvoke GetWindowTextLength,hWinInfoinvoke SendMessage,hWinInfo,EM_SETSEL,eax,eaxinvoke SendMessage,hWinInfo,EM_REPLACESEL,FALSE,addr szReadBuffer.endifret_RecvData endp; 发送输入的文字_SendData proclocal @szBuffer[1024]:byteinvoke GetDlgItemText,hWinMain,IDC_TEXT,addr @szBuffer,sizeof @szBufferinvoke lstrlen,addr @szBuffer.if eaxinvoke send,hSocket,addr @szBuffer,eax,0.if eax == SOCKET_ERRORinvoke WSAGetLastError.if eax == WSAEWOULDBLOCKinvoke EnableWindow,hWinOK,FALSE.endif.endif.endifinvoke SetDlgItemText,hWinMain,IDC_TEXT,NULLret_SendData endp; 主窗口程序_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam local @stWsa:WSADATA,@dwThreadIDmov eax,wMsg.if eax == WM_SOCKET; 处理Socket 消息mov eax,lParam.if ax == FD_READinvoke _RecvData,wParam.elseif ax == FD_WRITEinvoke EnableWindow,hWinOK,TRUE.elseif ax == FD_CONNECTshr eax,16.if ax == NULLinvoke SetWindowText,hWinConnect,addr szDisConnectinvoke EnableWindow,hWinConnect,TRUEinvoke EnableWindow,hWinServer,FALSEinvoke EnableWindow,hWinText,TRUEinvoke EnableWindow,hWinOK,TRUEinvoke SetFocus,hWinText.elseinvoke _DisConnectinvoke MessageBox,hWinMain,offset szErrConnect,NULL,\MB_OK or MB_ICONWARNING.endif.elseif ax == FD_CLOSEcall _DisConnect.endif.elseif eax == WM_COMMANDmov eax,wParam.if ax == IDOKinvoke _SendData.elseif ax == IDC_CONNECT.if hSocketinvoke _DisConnect.elseinvoke CreateThread,NULL,0,offset _Connect,NULL,\NULL,addr @dwThreadIDinvoke CloseHandle,eax.endif.endif.elseif eax == WM_CLOSEinvoke _DisConnectinvoke WSACleanupinvoke EndDialog,hWinMain,NULL.elseif eax == WM_INITDIALOGpush hWndpop hWinMaininvoke GetDlgItem,hWnd,IDC_SERVERmov hWinServer,eaxinvoke GetDlgItem,hWnd,IDOKmov hWinOK,eaxinvoke GetDlgItem,hWnd,IDC_TEXTmov hWinText,eaxinvoke GetDlgItem,hWnd,IDC_CONNECTmov hWinConnect,eaxinvoke GetDlgItem,hWnd,IDC_INFOmov hWinInfo,eaxinvoke SetWindowText,hWinServer,addr szIPinvoke WSAStartup,101h,addr @stWsa.elsemov eax,FALSEret.endifmov eax,TRUEret_ProcDlgMain endp; 程序开始start:invoke GetModuleHandle,NULLinvoke DialogBoxParam,eax,DLG_MAIN,NULL,offset _ProcDlgMain,0invoke ExitProcess,NULLend start图4.5 实验线路连接图附录3 聊天程序客户端程序说明一、资源文件Client.rc说明1、资源文件源程序//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #include <resource.h>//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;定义窗口图标#define ICO_MAIN 1000;定义窗口资源#define DLG_MAIN 2000 ;整个窗口资源的标签与ID定义#define IDC_SERVER 2001 ;服务器IP地址输入框定义#define IDC_CONNECT 2002 ;连接或断开按钮定义#define IDC_INFO 2003 ;客户信息显示主窗口定义#define IDC_TEXT 2004 ;客户发送信息输入框定义//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ICO_MAIN icon "Main.ico" ;图标外部对应的文件//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DLG_MAIN DIALOG 94, 81, 245, 155 ;定义主窗口大小及属性,如:标题及属性等STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "TCP聊天-客户端"FONT 9, "宋体"{;定义服务器IP地址输入框LTEXT "服务器IP地址:", -1, 6, 7, 57, 8EDITTEXT IDC_SERVER, 63, 5, 116, 12;定义连接或断开按钮,初始化时显示为“连接”,快捷按键为“C”PUSHBUTTON "连接(&C)", IDC_CONNECT, 186, 4, 56, 14;定义客户端传送的所有信息窗口,允许显示多行且自动滚屏EDITTEXT IDC_INFO, 4, 22, 237, 110, ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONL Y | WS_BORDER | WS_VSCROLL | WS_TABSTOP;定义客户传送信息输入框,自动滚屏LTEXT "输入", -1, 6, 140, 19, 8EDITTEXT IDC_TEXT, 28, 138, 150, 12, ES_AUTOHSCROLL | WS_DISABLED | WS_BORDER | WS_TABSTOP;定义客户信息发送按钮DEFPUSHBUTTON "发送(&S)", IDOK, 185, 137, 56, 14, BS_DEFPUSHBUTTON | WS_DISABLED | WS_TABSTOP}//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2、资源文件定义的运行窗口及对应的程序变量;该资源文件定义的客户端运行窗口如图4.6所示。