1、目 录一课程目和任务3二课程基本内容和规定32.1实验理论32.2实验内容31.惯用网络命令32.互换机与路由器173.网络编程30三课程设计总结体会36一 课程目和任务本课程规定学生在“计算机网络原理”理论学习基本上,验证和加深对计算机网络概念理解。通过本课程实践,培养学生独立思考、综合分析和动手实践能力。通过本课程学习,达到如下目的:(1). 理解计算机网络体系构造和工作原理,掌握惯用网络命令,可以对命令功能进行解释,分析命令执行成果,得到合理有效结论。(2). 掌握Packet Tracer软件操作办法,可以使用该软件模仿组网、配备互换机、路由器,可以按照实验方案实行仿真实验,采集和整顿
2、数据。(3). 具备网络编程能力,可以设计抓包程序获取数据包,结合有关合同对数据包各个字段含义进行分析、解决和解释,获取有效结论。二 课程基本内容和规定2.1 实验理论1.惯用网络命令工作原理及合同2. ARP原理3.ICMP合同及原理4.telnet远程登录原理5.IP报文格式及路由转发6.以太网CSMA/CD合同原理7.透明网桥、以太网互换机8.虚拟局域网VLAN9.路由器作用、静态路由、动态路由10.IP报文格式及IP合同11.Socket网络编程2.2 实验内容1. 惯用网络命令规定在Windows环境下掌握ipconfig,ping,netstat,tracert,arp,telne
3、t进行网络状态监测、跟踪办法。(a).ipconfig ipconfig功能:可用于显示本机所有当前TCP/IP配备设立值,刷新动态主机配备合同(DHCP),以及域名系统设立(DNS)。1.不带参数ipconfig 该命令用于查看适配器IP地址子网掩码等属性图中可以看到以太网适配器IP地址10.136.6.220,其子网掩码255.255.240.02.带参数ipconfig(1).ipconfig/all该命令用于查看适配器IP地址,子网掩码等属性,较不带参数ipconfig多了显示MAC地址,下图可以看到各个组件物理地址,与ipconfig相比较更为详细 (2).ipconfig/rene
4、w即重新获取IP地址(3).ipconfig/release该命令用于释放即归还所有适配器IP地址,与不带参数ipconfig相比较,以太网适配器,即网卡IP地址没有显示,阐明已被释放(b)ping ping命令作用用于检查网络与否连通,到某个目地址与否可达,可以协助分析网络故障ping命令原理基于ICMP合同,PING使用了回送祈求与回送回答报文。依照与否收到报文来判断目端口与否可达,依照发送报文个数与接受到回答报文个数来判断链路质量,依照RTT来判断源端与目端之间距离。1.不带参数ping图1是ping环回地址,图2则是一种本网内不存在IP,可以看到图1ping通,而图二祈求超时 2.带参
5、数ping(1).ping t该命令即始终ping某个地址,直到结束为止,在ctrl+c输入前始终不会停止(2).ping a该命令是将地址解析为顾客名,图中Advertisement就是解析出顾客名(3).ping n该命令用于设立发送个数,设立1即发送1个,8即8个(c).netstat netstat命令作用显示网络连接、路由表和网络接口信息,显示当前有哪些网络连接正在工作。可用于检查本机各端口网络连接状况。1.不带参数netstat 该命令用于监控TCP/IP网络,显示活动TCP连接,图中显示了活动中TCP连接,不涉及LISTENING状态连接2.带参数netstat(1).netst
6、at a显示所有连接和侦听端口,所有有效连接信息列表(由于数据过多,只截取了某些)。 (2).netstat s 显示每个合同各项记录(数据诸多,只截取了一某些) (3).netstat e 该命令即显示总量记录,数值上为-s 各个合同总和 (4).netstat r 该命令显示核心路由表(d) .Tracert Tracert命令作用用于查看IP数据包在访问目的时采用途径 Tracert命令原理 从源主机向主机发送一连串IP数据报,其中分装是是无法交付UDP顾客数据报,通过设立数据包生存时间TTL,到路由器时TTL正好为1,接着路由器将TTL变为0,丢弃数据报并向源主机发送ICMP时间超过差
7、错报告报文。当达到目主机时,由于无法交付UDP顾客数据报,目主机向源主机发送ICMP终点不可达差错报告报文。源主机可以从这些差错报文中懂得途径上路由信息。 1.不带参数Tracert 该命令用于查看数据包在访问目的时采用途径,不带参数则默认30个跃点跟踪 2.带参数Tracert (1).Tracert h 控制跃点跟踪个数,设立5个就只显示5个 (2).Tracert d 设立不把地址解析为计算机名,与不带参数Tracert对比可见计算机名没有显示 (e).arp arp命令作用arp命令用于显示和修改ARP使用“IP到物理”地址转换表。arp命令原理每台装有网卡主机中均有一种ARP表,保存
8、着同一网络中IP到MAC之间映射记录。ARP表并不是一成不变,大概每2分钟更新一次,这种纪录称为动态式(Dynamic)记录。尚有一种称为静态记录,也就是表中记录不变,直到TCP/IP合同重启后才会消失。 1.arp命令 (1).arp s与arp -d arp s 用于增长ARP项,arp-d用于删除ARP项目,先增长了138.125.12.14和其相应MAC地址3C-FD-A1-85-34-12,再查询可以查到,再通过-d删除,之后便查不到了 (2).arp a与arp-a-v arp a 用于显示所有ARP项目,arp-a-v则是详细显示(-v会显示无效项目),arp-a后加IP地址则显
9、示IP地址相应ARP项目(如上图) (f).telnet telnet作用顾客可以登录到远地另一台主机上,可以使用目的主机上软、硬件资源,是一种简朴远程终端合同。 telnet原理 使用客户服务器方式。在本地系统运营Telnet客户进程,远地运营服务器进程。 1.telnet IP 即连接这个IP地址,图中连接了127.0.0.1即环回地址,连接成功 2.建立连接后有这些操作 3. sen 即发送字符串,图中发送了456798 4. display 显示操作参数, 5.set与unset图1和图2为协助中某些设立操作,图3图4测试了进行身份验证设立,图三设立了进行身份验证,图四解除了这个设立
10、6.close关闭连接,关闭了与127.0.0.1连接,再次企图发送数据则显示未连接2. 互换机与路由器安装packet tracer,在packet tracer仿真环境下,熟悉互换机命令、互换机初始化配备;在互换机上实现VLAN配备,规定:创立三个VLAN,给出拓扑,查看VLAN信息 基于Console控制台登录配备路由器,学习路由器配备有关命令;基于packet tracer构建网络环境,分别进行静态路由配备和基于RIP动态路由配备。规定:静态路由配备拓扑中至少4个路由器;RIP动态路由配备中源站和目站之间设立两条跳数不同途径,通过RIP配备后查看选取是哪条途径。 节点涉及主机、路由器、
11、互换机等都要依照个人名字首字母加学号后两位进行命名。规定给出网络设计思路、拓扑构造、配备办法与过程及验证思路与过程。提供截图实验内容:1.在互换机上实现VLAN配备 (1). 建立VLAN思路需要构建三个VLAN,一方面需要用6台主机。用两台互换机,则主机和互换机之间需要直通线缆6根,两个互换机之间需要交叉线缆一根。在HKB11 switch0上,创立三个VLAN,即VLAN 10,VLAN 20,VLAN30,把三个端口分别划给这三个VLAN。HKB11 switch1上也是如此,之后把两个互换机相连(2).拓扑构造 (3).配备过程主机IP地址连接互换机/端口所属VLANHKB11 PC0
12、192.168.1.1HKB11 Switch0 Fa0/1VLAN1HKB11 PC1192.168.1.2HKB11 Switch0 Fa0/2VLAN2HKB11 PC2192.168.1.3HKB11 Switch0 Fa0/3VLAN3HKB11 PC3192.168.1.4HKB11 Switch1 Fa0/1VLAN1HKB11 PC4192.168.1.5HKB11 Switch1 Fa0/2VLAN2HKB11 PC5192.168.1.6HKB11 Switch1 Fa0/3VLAN3 (a).配备主机IP地址,子网掩码以及修改名称(以PC0为例) 将PC0IP地址设为19
13、2.168.1.1,子网掩码为255.255.255.0,名称为HKB11 PC0(b).修改互换机名称(以Switch0为例)将Switch0名称设为HKB11 Switch0 (c).设立VLAN 在互换机Switch0中增长了VLAN 10,VLAN 20,VLAN 30,Switch1中同理 (d).把端口划分给这三个VLAN 端口1划分给VLAN1,端口2划分给VLAN2,端口3划分给VLAN3,Switch1中相似操作 (e).设立互换机互连接口 我互换机互连接口均为10号,图中为Switch0设立,1同理, (4).验证构造对的 (a).查看VLAN表 图中为Switch0VLA
14、N表,可以看到三个VLAN中个有一种端口(b).ping命令PC0分别pingPC2,PC3,PC4PC0和PC2在同一种互换机下,ping不通PC0和PC3属于同一种VLAN,ping通PC0和PC4既不属于同一种VLAN,也不在同一种互换机下,ping不通阐明VLAN建立对的 pc2pc3 pc4 2.静态路由设立 (1).建立静态路由思路 一方面依照题目规定需要4个路由器,则需要至少8台主机,4台互换机,8台主机两两一组,分为4组,4组分别处在不同网段下,各自连接一种互换机,之后互换机再连接一种路由器,路由器之间互相连接 (2).拓扑构造 (3).配备过程路由器网段主机1主机2Route
15、r0192.168.4.0Pc0 192.168.4.2Pc1 192.168.4.3Router1192.168.5.0Pc2 192.168.5.2Pc3 192.168.5.3Router2192.168.6.0Pc4 192.168.6.2Pc5 192.168.6.3Router3192.168.7.0Pc6 192.168.7.2Pc7 192.168.7.3 (a).配备主机 以PC0为例,IP地址设为192.168.4.2,子网掩码255.255.255.0,默认网关设为192.168.4.1,即其路由器IP地址 (b)配备路由器 一方面关闭路由器电源,然后把WIC-2T拖到图
16、中花圈除再打开电源 然后设立FastEthernet0/0端口,填入IP地址和子网掩码,之后再Port Status处点击On打开连接 然后,设立Serial0/3/0(0/3/1)同理,同样设立IP地址和子网掩码,然后Clock Rate处进行设立,最后Post Status处设立 ps.Router0与Router1之间为192.168.1.0网段,Router1与Router2之间为192.168.2.0网段,Router2与Router3之间为192.168.3.0网段 最后设立下一跳 Router0 Router1 Router2 Router3 (4).验证构造对的(a).ping
17、命令此处由PC0依次pingPC1(192.168.4.3) PC2(192.168.5.2),PC4(192.168.6.2),PC6(192.168.7.2) pc1 pc2 pc4 pc6可见被ping四个主机位于4个不同子网中,均能ping通,可见静态路由建立成功(b).tracert命令来验证对的此处由PC0查看其到PC4,PC6途径 pc4 pc6由途径也可以看到与设立下一跳完全吻合3. RIP动态路由配备(1).动态路由思路一种端口到另一种端口有两条跳数不同途径,则最简朴构造为三角构造,即需要三个路由器两两互连,再各自连上一台主机(2).拓扑构造(3).配备过程 路由器网段主机R
18、outer0192.168.4.0PC0 192.168.4.2Router1192.168.5.0PC1 192.168.5.2Router2192.168.6.0PC2 192.168.6.2 (a).配备主机(以主机PC0为例) 设立IP地址为192.168.4.2,子网掩码255.255.255.0,默认网关192.168.4.1 (b).配备路由器 一方面同样关闭电源将WIC-2T拖入黑圈处,再打开电源 然后配备FastEthernet0/0端口,IP为192.168.4.1,子网掩码255.255.255.0,然后点击On打开 然后配备Serial0/3/0端口,3/1同样 此处R
19、outer0和Router之间为192.168.1.0网段,Router1与Router2之间为192.168.2.0网段,Router2与Router0之间为192.168.3.0网段 最后配备路由表 Router0 Router1Router2 (4).验证构造对的 (a).ping命令 由PC0分别pingPC1和PC2 pc1 pc2 均能ping通 (b).Tracert命令 查看PC0到PC1途径 显示途径符合RIP动态路由3. 网络编程编程需求:捕获本机网卡IP包,对捕获IP包进行解析。规定必要输出如下字段:版本号、总长度、标志位、片偏移、合同、源地址和目地址。实验总结与心得体会
20、(5分) (1).操作系统和实验软件操作系统为Windows10,软件为Visual Studio (2).IP数据报首部各个字段版本号: 占4位,IP合同版本号,IPv4此字段值为4,IPv6此字段值为6首部长度:占4位,涉及固定某些和可选某些,因而首部最长为60字节,最短为20字节(不涉及选项和填充某些);服务类型:占8位,(由于该字段始终弃而不用,因而不用考虑)总长度:占16位,以字节为单位,总长度包括IP头部和数据某些,IP数据报最大长度为65535字节,但是注意最大不要超过MTU长度标记:占16位,唯一标记一种数据报,可以将之当成一种计数器,每发送一种数据包,则该值加1,如果数据报分
21、片,则每个分片标记都同样,各个分片共享一种标记号标志位:占3位,最高位为0;最低位MF=1(0),背面尚有分片(最后一种报片);DF=1(0),不能分片(可以分片)片偏移:占13位,用以指出该分段第一种数据字节在原始数据报中偏移位置(以8字节为单位),IP分片后每一种分组都具备自己首部,并且标志位相似,但是片偏移值不同,通过片偏移值接受端可以重新组装IP包生存时间:占8位,表达数据报最多可通过路由器数量. 取值0255,每通过一种路由器,TTL值减1,为0时被丢弃,并发送ICMP报文告知源主机,TTL可以避免数据报在路由器之间不断循环合同类型:占8位,指明IP层上承载是哪个高档合同,在分用过程
22、中,合同栈懂得该交给上层哪个合同解决,如1为ICMP,2为IGMP,6为TCP,17为UDP等.。首部检查和:占16位,保证数据报头部数据完整性,但校验不涉及数据某些。源地址:32位,发送方IP地址目地址:32位,接受方IP地址 (3).设计思路socket编程,在理解IP数据报首部前提下去进行,先定义IP数据包头类,然后初始化套接字,将网卡设立为混杂模式,监听数据包,最后接受通过IP包并输出 (4). 实验成果与分析 第一种数据包UDP包,源地址为10.136.6.220即本机,目地址为192.168.113.1,第二个包为UDP包,源地址为192.168.113.1,目地址为10.136.
23、6.220即本机 (5). 程序流程图 (6).实验总结 这算是一种全新领域吧,起码对我而言是这样,之前没有接触过任何关于这方面东西,完全不懂得如何下手,没办法只能去搜查资料,通过这次实验也对这方面有了点理解了,不会像开始那样不懂得怎么写了源代码:IP_HEAD.h#include class IP_HEAD /IP首部public:BYTE ver_hlen; /IP合同版本和IP首部长度。高4位为版本,低4位为首部长度(单位为4bytes)BYTE byTOS; /服务类型WORD wPacketLen; /IP包总长度。涉及首部,单位为byte。WORD wSequence; /标记,普
24、通每个IP包序号递增。unionWORD Flags; /标志WORD FragOf; /分段偏移;BYTE byTTL; /生存时间 BYTE byProtocolType;/合同类型,见PROTOCOL_TYPE定义WORD wHeadCheckSum; /IP首部校验DWORD dwIPSrc; /源地址DWORD dwIPDes; /目地址BYTE Options; /选项;main.cpp#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include #include IP_HEAD.h#prag
25、ma comment(lib,Ws2_32.lib)using namespace std;int number;int DecodeIP(char *buf,int len)int n = len;if (n = sizeof(IP_HEAD)IP_HEAD iphead;iphead = *(IP_HEAD*)buf;cout 第 number+ 个IP数据包信息: endl;cout 合同版本: 4) endl;cout 首部长度: (iphead.ver_hlen & 0x0F) 2) endl;/单位为4字节cout 服务类型:Priority: 5) ,Service: 1) &
26、0x0f) endl;cout IP包总长度: ntohs(iphead.wPacketLen) endl;/网络字节序转为主机字节序cout 标记: ntohs(iphead.wSequence) endl;cout 标志位: DF= 14) & 0x01) ,MF= 13) & 0x01) endl;cout 片偏移: (iphead.FragOf & 0x1fff) endl;cout 生存周期: (int)iphead.byTTL endl;cout 合同类型: int(iphead.byProtocolType) endl;cout 首部校验和: ntohs(iphead.wHead
27、CheckSum) endl;cout 源地址: inet_ntoa(*(in_addr*)&iphead.dwIPSrc) endl;cout 目地址: inet_ntoa(*(in_addr*)&iphead.dwIPDes) endl;cout - endl endl;return 0;void AutoWSACleanup():WSACleanup(); / 终结Winsock使用int main()int n;WSADATA wd; /一种数据构造,这个构造被用来存储被WSAStartup函数调用后返回Windows Sockets数据,它包括Winsock.dll执行数据。n =
28、WSAStartup(MAKEWORD(2,2),&wd); /返回winsock服务初始化与否成功,若返回1则输出错误if (n)cerr WSAStartup函数错误! endl;return -1;atexit(AutoWSACleanup); SOCKET sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP); /创立SOCKETif (sock = INVALID_SOCKET)cerr WSAGetLastError();return 0;/获取本机地址char name128;if (-1 = gethostname(name,sizeof(nam
29、e)closesocket(sock);cout h_addr_list0;/IPaddr.sin_port = 8888;/端口,IP层端口可随意填if (SOCKET_ERROR = bind(sock,(sockaddr *)&addr,sizeof(addr)closesocket(sock);cout WSAGetLastError();return 0;/设立该SOCKET为接受所有流经绑定IP网卡所有数据,涉及接受和发送数据包u_long sioarg = 1;DWORD wt = 0;if (SOCKET_ERROR = WSAIoctl(sock,SIO_RCVALL,&sioarg,sizeof(sioarg),NULL,0,&wt,NULL,NULL)closesocket(sock);cout WSAGetLastError();return 0;/咱们只需要接受数据,因而设立为阻塞IO,使用最简朴IO模型u_long bioarg = 0;if (SOCKET_ERROR = ioctlsocket(sock,FIONBIO,&bioarg)closesocket(sock);cout 0)DecodeIP(buf,len); while (len 0);closesocket(sock);return 0;