2012-2013-1 - 计算机网络原理-实验项目(JWV2012.10) - 图文

更新时间:2023-10-30 20:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机网络原理 实验指导书

贾伟 2012秋网络101-103实验项目要求 序号 1 2 3 4 5 6 7 8 9 10 11 12 项目名称 认识网络体系结构 以太网帧结构分析 IP协议分析 路由与路由协议 TCP通信分析 DNS域名解析分析 HTTP通信分析 Socket API编程 CGI编程 网络命令工具使用 组建简单以太网 Web服务配置 完成要求 必做 课后必做 课后必做 必做 必做 课后必做 必做 课后必做 课后必做 选做 选做 选做 实验报告要求 书写报告并提交 提交电子文档 提交电子文档 书写报告并提交 书写报告并提交 提交电子文档 书写报告并提交 提交电子文档 提交电子文档 不做要求 不做要求 不做要求 备注 验证、2学时 综合、4学时 验证、2学时 验证、2学时

实验项目表 序号 项目名称 主要内容要点 了解网络设备组件与网络功能层次的对应关系; 1 2 3 4 5 6 7 8 9 10 11 12 认识网络体系结构 以太网帧结构分析 IP协议分析 路由与路由协议 TCP通信分析 DNS域名解析分析 HTTP通信分析 Socket API编程 CGI编程 网络命令工具使用 组建简单以太网 Web服务配置 网络物理结构分布与网络逻辑拓扑的对应关系 协议的报文分组封装和分层在包结构中的表示 捕获以太网帧,以进行结构分析 捕获IP分组报文,以进行报文结构分析 查看路由器的路由表,观察数据包在路由器中的转发过程。分析某种路由协议(如RIP)的路由交换过程。 捕获TCP通信过程的报文,分析TCP包结构和TCP通信原理。 使用dig软件,验证DNS的域名解析过程。 使用Telnet,手工进行HTTP通信验证,分析HTTP报文结构。 通过调用Socket API,编程实现基于UDP或TCP的网络通信。 基于C语言实现Web的CGI编程,表单交互,理解Get和post方法的差异。 熟练使用厂家的网络工具,检测网络状况。 将计算机、交换机等构建为局域网,包括网线制作、IP配置等,实现计算机间的连通。 安装配置好Web服务,制作简单网页,发布到Web服务器中,实现对其访问。 适用 专业 网络、其它 网络 网络 网络 网络 网络 网络 网络、其它 网络 网络、其它 其它 其它 有关软件介绍说明 软件名 Wireshark Ping telnet traceroute/tracert Cisco Packet Tracer wget/curl Internet Explorer dig IIS Apache vIsio VC++ 有关网址 用途 http://www.wireshark.org/ 网络数据包捕获和分析 系统自带 系统自带 系统自带 Cisco提供的网络仿真工具 获取Web URL资源的命令行工具 Web浏览器 DNS测试检查工具 Web服务器软件 Web服务器软件 绘图工具 C/C++编程软件 实验1认识网络体系结构

实验类型、性质与学时

验证、2学时。

实验目的要求与任务

了解网络体系结构的分层模型及其各层的内容和功能,查看各层对应的实体(物理硬件和/或软件。

了解计算机网络的逻辑拓扑和物理拓扑;参观实验室的网络布局,绘制其逻辑拓扑或给出实验室网络的逻辑拓扑,对应查找/查看物理网络结构组件。

捕获一个包好所有通信协议层的数据包,分析该数据包的层次结构;理解协议的报文分组的封装和分层在包结构中的体现。

实验环境与器具

一个完整的网络环境,尽量包好尽可能多的网络设备。

使用Cisco Packet Tracer构建仿真的网络或网络拓扑绘制软件(如visio)。 数据包捕获和分析软件(Wireshark)。

实验原理或实验方案

在老师的指导下查看网络各层对应的实体(如物理层下的传输介质——双绞线;物理层的网卡和驱动程序;网络层、运输层的TCP/IP配置;应用层的各个应用程序)。 老师讲解参观机房网络,给出拓扑图,学生使用绘图软件进行拓扑图绘制或使用Cisco Packet Tracer构建仿真的网络。

使用Wireshark软件捕获网络通信流量,分析数据包结构(具体参见“01Lab_protocol-layers.docx”文档)。

实验方法与步骤

老师说明,学生查看有关网络实体;

老师讲解网络拓扑,学生参观,绘制网络拓扑图。

老师指导学生捕获数据包,分析数据包,记录下捕获的数据包的有关信息。

进一步思考提高

如何查看网络体系结构中各层实体发送出或接收到的数据包(流);

网络拓扑的结构有那些,当前局域网的基本拓扑是什么,校园企业网有是什么拓扑。

实验数据处理及其结论分析

给出网络体系结构中各层实体的名称和主要功能;绘制出的拓扑图;记录的有关数据包信息。

3

实验2 以太网帧分析

实验类型、性质与学时

验证、必做、2学时。

实验目的要求与任务

理解以太网帧结构细节。

实验环境与器具

一个完整的连接到Internet的网络环境; 数据包捕获和分析软件(Wireshark);

手动控制获取Web URL资源的命令行工具wget/curl; 路由跟踪命令:traceroute/tracert。

实验原理或实验方案

使用Wireshark软件捕获网络通信流量,分析数据包结构。

实验方法与步骤

老师指导学生捕获数据包,分析数据包,记录下捕获的数据包的有关信息。 具体参见“02Lab_Ethernet.docx”文档。

实验数据处理及其结论分析

记录的有关数据包信息。

4

实验3 IP协议分析

实验类型、性质与学时

验证、2学时。

实验目的要求与任务

了解IP(互联网协议)的细节。

实验环境与器具

一个完整的连接到Internet的网络环境; 数据包捕获和分析软件(Wireshark);

手动控制获取Web URL资源的命令行工具wget/curl; 路由跟踪命令:traceroute/tracert。

实验原理或实验方案

使用Wireshark软件捕获网络通信流量,分析数据包结构。

实验方法与步骤

老师指导学生捕获数据包,分析数据包,记录下捕获的数据包的有关信息。 具体参见“04Lab_IPv4.docx”文档。

实验数据处理及其结论分析

记录的有关数据包信息。

5

附录实验6:Dig的使用教程

常用的DNS的命令行诊断工具是DIG和NSLOOKUP,DIG比NSLOOKUP功能强大。 DIG(Domain Information Groper)原本是Linux平台上BIND服务器诊断的工具,现在已经有了windows的版本。下面使用dig工具在windows环境下来做一些DNS的诊断测试。

1、安装DIG程序

运行安装程序中的BINDInstall.exe,如下图:

运行完成后,会弹出一个对话框,告诉我们安装已完成。如下图:

11

程序默认将关键文件安装到C:\\WINDOWS\\system32\\dns下的BIN文件夹下,如下图:

12

红框的文件就是DIG程序。至此,程序安装完成。

2、设置DIG运行环境

待安装完成后,我们需要将上述安装目录添加到环境变量中,以方便在命令行中直接运行dig命令,而无需使用绝对路径。具体步骤如下:

打开系统属性,并找到高级选项卡。如下图:

我们需要把DIG的路径添加到系统变量中,如下图:

13

添加完成后,在命令行里测试一下。如下图:

出现上图提示就表明DIG程序安装成功,下面对输出内容做简要介绍,如下图:

14

当不添加任何参数,直接使用dig命令时,默认会解析根服务器,并附加解析对应的A记录。如果想解析一个域名,则之需要在dig后面添加域名地址即可。

以www.126.com为例,如下图:

15

个跃点所需的时间。如果数据包不能传递到目标,tracert 命令将显示成功转发数据包的最后一个路由器。当数据报从我们的计算机经过多个网关传送到目的地时,Tracert命令可以用来跟踪数据报使用的路由(路径)。该实用程序跟踪的路径是源计算机到目的地的一条路径,不能保证或认为数据报总遵循这个路径。如果我们的配置使用DNS,那么我们常常会从所产生的应答中得到城市、地址和常见通信公司的名字。Tracert是一个运行得比较慢的命令(如果我们指定的目标地址比较远),每个路由器我们大约需要给它15秒钟。 Tracert的使用很简单,只需要在tracert后面跟一个IP地址或URL,Tracert会进行相应的域名转换的。

tracert 最常见的用法:

tracert IP address [-d] 该命令返回到达 IP 地址所经过的路由器列表。通过使用 -d 选项,将更快地显示路由器路径,因为 tracert 不会尝试解析路径中路由器的名称。

Tracert一般用来检测故障的位置,我们可以用tracert IP在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,我们也就可以很有把握的告诉别人----某某地方出了问题。

PathPing命令

该路由跟踪命令结合了 ping 和 tracert 命令的功能,可提供这两个命令都无法提供附加信息。经过一段时间,pathping 命令将数据包发送到最终目标位置途中经过的每个路由器,然后根据从每个跃点返回的数据包统计结果。因为 pathping 显示指定的所有路由器和链接的数据包的丢失程度,所以用户可据此确定引起网络问题的路由器或链接。

pathping [-n] [-h maximum_hops] [-g host-list] [-p period] [-q num_queries [-w timeout] [-T] [-R] target_name

参数 -n

不将地址解析为主机名。 -h maximum_hops

指定搜索目标的最大跃点数。默认值为 30 个跃点。 -g host-list

允许沿着 host-list 将一系列计算机按中间网关(松散的源路由)分隔开来。 -p period

指定两个连续的探测 (ping) 之间的时间间隔(以毫秒为单位)。默认值为 250 秒(1/4 秒)。

-q num_queries

指定对路由所经过的每个计算机的查询次数。默认值为 100。 -w timeout

指定等待应答的时间(以毫秒为单位)。默认值为 3000 毫秒(3 秒)。 -T

在向路由所经过的每个网络设备发送的探测数据包上附加一个 2 级优先级标记(例如 802.1p)。这有助于标识没有配置 2 级优先级的网络设备。该参数必须大写。

46

-R

查看路由所经过的网络设备是否支持“资源预留设置协议”(RSVP),该协议允许主机计算机为某一数据流保留一定数量的带宽。该参数必须大写。

target_name

指定目的端,可以是 IP 地址,也可以是主机名。

Route 命令

大多数主机一般都是驻留在只连接一台路由器的网段上。由于只有一台路由器,因此不存在使用哪一台路由器将数据报发表到远程计算机上去的问题,该路由器的IP地址可作为该网段上所有计算机的缺省网关来输入。

但是,当网络上拥有两个或多个路由器时,我们就不一定想只依赖缺省网关了。实际上我们可能想让我们的某些远程IP地址通过某个特定的路由器来传递,而其他的远程IP则通过另一个路由器来传递。

在这种情况下,我们需要相应的路由信息,这些信息储存在路由表中,每个主机和每个路由器都配有自己独一无二的路由表。大多数路由器使用专门的路由协议来交换和动态更新路由器之间的路由表。但在有些情况下,必须人工将项目添加到路由器和主机上的路由表中。Route就是用来显示、人工添加和修改路由表项目的。

一般使用选项: ·route print

本命令用于显示路由表中的当前项目,在单路由器网段上的输出;由于用IP地址配置了网卡,因此所有的这些项目都是自动添加的。

描述 网络目标 网络掩码 网关 接口 跃点数

0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.169 30 默认路由

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 环回网络

10.0.0.0 255.0.0.0 10.0.0.169 10.0.0.169 30 本地网络

10.0.0.169 255.255.255.255 127.0.0.1 127.0.0.1 30 本地IP地址

224.0.0.0 240.0.0.0 10.0.0.169 10.0.0.169 30 多播地址

255.255.255.255 255.255.255.255 10.0.0.169 10.0.0.169 1 受限的广播地址

注意:上表第一列中的说明实际上不显示在 route print 命令的输出中。

网关:网关地址是本地主机用于向其他 IP 网络转发 IP 数据报的 IP 地址。可以是本

地网络适配器的 IP 地址,也可以是本地网段上 IP 路由器(如默认网关路由器)的 IP 地址。

接口:接口是本地计算机上为 IP 数据报在网络上转发时所使用的本地网络适配器配置的 IP 地址。

跃点数:跃点数表示使用路由的开销,通常是到 IP 目标位置的跃点数目。本地子网上的任何设备都是一个跃点,其后经过的每个路由器是另一个跃点。如果到同一目标有不同跃点数的多个路由,则选择跃点数最低的路由。

·route add

使用本命令,可以将信路由项目添加给路由表。例如,如果要设定一个到目的网络209.98.32.33的路由,其间要经过5个路由器网段,首先要经过本地网络上的一个路由器,器IP为202.96.123.5,子网掩码为255.255.255.224,那么我们应该输入以下命令:

47

route add 209.98.32.33 mask 255.255.255.224 202.96.123.5 metric 5 ·route change

我们可以使用本命令来修改数据的传输路由,不过,我们不能使用本命令来改变数据的目的地。下面这个例子可以将数据的路由改到另一个路由器,它采用一条包含3个网段的更直的路径:

route add 209.98.32.33 mask 255.255.255.224 202.96.123.250 metric 3 ·route delete

使用本命令可以从路由表中删除路由。例如:route delete 209.98.32.33

Nslookup命令

显示可用来诊断域名系统 (DNS) 基础结构的信息。使用此工具之前,您应当熟悉 DNS 的工作原理。只有在已安装 TCP/IP 协议的情况下才可以使用 Nslookup 命令行工具。 语法:nslookup [-子命令...] [{要查找的计算机 | -服务器}]

实验方法与步骤

依次使用上述介绍的所有命令。

? IPConfig 显示当前 TCP/IP 配置值。还可用于管理 DHCP 配置。 ? HostName 显示计算机的主机名。 ? Ping 测试与其他 IP 节点的连接性。

? NetStat 显示有关当前连接的统计信息和其他信息。 ? Arp 允许您查看和编辑地址解析协议 (ARP) 缓存。ARP 缓存将 IP 地址映射到媒

体访问控制 (MAC) 地址。Windows 使用这些映射在本地网络上发送数据。 ? TraceRT 跟踪数据包发送到目标的路由。 ? PathPing 跟踪数据包发送到目标的路由,显示路径中的每个路由器和子网的数据包丢失

信息。

? Route 允许您查看本地路由表以及修改本地路由表。 ? Nslookup 查询 DNS 服务器。

进一步思考提高

实验数据处理及其结论分析

48

实验11组建简单以太网

实验类型、性质与学时

综合,必做,4学时。

实验目的要求与任务

认识简单的网络拓扑结构;掌握组建以太网的技术与方法:网卡、安装配置、连通性测试等。

主要使用仪器设备、材料或软件

PC计算机、网卡、网线、RJ-45接头、集线器/交换机等。 Windows 操作系统;TCP/IP协议;Cisco Packet Tracer。

实验原理或实验方案

安装网卡,以及配置网卡驱动程序;配置TCP/IP协议;组装多集线器网络;进行网络连通性测试。

实验方法步骤

1仿真软件中组建局域网

在Cisco Packet Tracer中构建一个局域网(有计算机、交换机和集线器构成),配置每台计算机的IP地址和子网掩码,让局域网中的每台计算机可以相互通信。

2 组建真实网络

2.1 组建以太网的主要步骤

(1)安装以太网卡 (2)将计算机接入网络

(3)安装配置网卡驱动程序 (4)安装和配置TCP/IP协议

49

(5)组装多集线器网络——使用直通UTP电缆

(6)组装多集线器网络——使用交叉UTP电缆

2.2网卡驱动程序的安装和配置:

①驱动程序的主要功能:实现网络操作系统上层程序与网卡的接口; ②网卡驱动程序因网卡和操作系统的不同而异;

③驱动程序一般随同网卡一起发售,但有些常用的驱动程序也可以在操作系统安装盘中找到;操作系统 会自动安装好驱动程序。

④在支持“即插即用”的操作系统中使用“即插即用”型网卡,不需要手工安装和配置(中断号的分配等);只要安装好驱动程序即可。 ⑤手工安装(Windows 系统):开始|设置|控制面板|添加/删除硬件;再根据提示进行操作。

2.3 TCP/IP协议的安装和配置

(1)通过控制面板网络选项,添加TCP/IP协议

从控制面板选中“网络”双击,如果在网络组件中没有发现“TCP/IP”兼容协议,则需要点击“添加”,然后双击对话框中的“协议”。

50

实验9 CGI编程

实验类型、性质与学时

验证、必做、2学时。

实验目的要求与任务

了解和掌握Web CGI的运行机制和编程方法,理解通过编程实现扩展web的功能。

实验环境与器具

WindowsOS,Web服务器,VisualC++6.0、。

实验原理或实验方案

实验方法与步骤 1 CGI HelloWorld

通过C语言输出一个简单的“HelloWorld”网页。

源代码 CGI HelloWorld

/******************************* CGI HelloWorld written in C *****************************/ #include main () {

printf (\printf (\

printf (\printf (\

printf (\printf (\printf (\

printf (\

printf (\printf (\printf (\}

2 Web交互

2.1 HTML Form

36

CGI—HTMLForm

CGI—HTMLForm


CGI-GET方法


CGI-POST方法


2.2 CGI-GET方法

/******************************* CGI-GET方法 written in C

*****************************/

#include #include int main(void) {

char *data; long m,n;

printf(\

\printf(\方法-两数相加结果\\n\printf(\方法-两数相加结果\\n\data = getenv(\

37

printf(\表单提交的数据是:%s.

\if(data == NULL)

printf(\错误! 从表单中传回了错误的数据。\else if(sscanf(data,\ printf(\错误! 非法的数据,必须是数值数据。\else

printf(\和 %ld 相加的结果是 %ld.\return 0; }

2.3 CGI-POST方法

/*******************************

CGI-POST方法 written in C

*****************************/

#include #include int main(void) {

char data[20]; char *lenstr; long len,m,n;

printf(\printf(\方法-两数相加结果\\n\printf(\方法-两数相加结果\\n\lenstr = getenv(\sscanf(lenstr,\fgets(data, len+1, stdin);

printf(\表单提交的数据是:%s.

\if(data == NULL)

printf(\错误! 从表单中传回了错误的数据。\else if(sscanf(data,\ printf(\错误! 非法的数据,必须是数值数据。\else

printf(\和 %ld 相加的结果是 %ld.\

return 0; }

3 HTTPCookie

Http通信过程是面向事物的,无法保持会话状态。为进行Web会话状态保持,HTTP提供了Cookie的方法。

38

3.1 set Cookie

/******************************* CGI set Cookie written in C *****************************/ #include int main () {

char *cookie=\printf (\

printf (\printf (\printf (\

printf (\演示——设置\\n\printf (\printf (\

printf (\

printf (\演示——设置\\n\printf (\printf (\printf (\return 0; }

3.2 get cookie

/******************************* CGI-GetCookie written in C

*****************************/ #include #include int main() {

char *cookie;

printf(\printf(\

printf(\演示——获取\\n\printf(\

printf(\演示--获取Cookie值\\n\cookie = getenv(\if(cookie== NULL)

printf(\无数据

\else

39

printf(\

printf(\return 0; }

进一步思考提高

学习一种流行的Web编程方法,如PHP、JSP、ASP.Net等。比较PHP、JSP、ASP.Net等Web编程方法,与通过C语言对Web CGI进行功能扩展的优势在哪?

40

实验10网络命令工具使用

实验类型、性质与学时

验证,选做,2学时。

实验目的要求与任务

掌握常见的网络命令使用,理解网络原理。

实验环境与器具

Windows XP操作系统,连通Internet。

实验原理或实验方案

Windows Server2003 和 Windows XP 中包含的 TCP/IP 诊断工具。您可以使用这些工具来帮助查找或解决 TCP/IP 网络问题。

工具 IPConfig Ping NetStat Arp TraceRT PathPing Route HostName 显示计算机的主机名。 测试与其他 IP 节点的连接性。 显示有关当前连接的统计信息和其他信息。 允许您查看和编辑地址解析协议 (ARP) 缓存。ARP 缓存将 IP 地址映射到媒体访问控制 (MAC) 地址。Windows 使用这些映射在本地网络上发送数据。 跟踪数据包发送到目标的路由。 跟踪数据包发送到目标的路由,显示路径中的每个路由器和子网的数据包丢失信息。 允许您查看本地路由表以及修改本地路由表。 说明 显示当前 TCP/IP 配置值。还可用于管理 DHCP 配置。 Nslookup 查询 DNS 服务器。 IPConfig命令

IPConfig实用程序和它的等价图形用户界面(Windows 95/98中的)WinIPCfg可用于显示当前的TCP/IP配置的设置值。这些信息一般用来检验人工配置的TCP/IP设置是否正确。但是,如果我们的计算机和所在的局域网使用了动态主机配置协议(DHCP),这个程序所显示的信息也许更加实用。这时,IPConfig可以让我们了解自己的计算机是否成功的租用到一个IP地址,如果租用到则可以了解它目前分配到的是什么地址。了解计算机当前的IP地址、子网掩码和缺省网关实际上是进行测试和故障分析的必要项目。

1、IPConfig最常用的选项 ·IPConfig

当使用IPConfig时不带任何参数选项,那么它为每个已经配置了的接口显示IP地址、子网掩码和缺省网关值。

·IPConfig /all

当使用all选项时,IPConfig能为DNS和WINS服务器显示它已配置且所要使用的附加信息(如IP地址等),并且显示内置于本地网卡中的物理地址(MAC)。如果IP地址是从DHCP服务器租用的,IPConfig将显示DHCP服务器的 IP地址和租用地址预计失效的日期。

41

·IPConfig /release和IPConfig /renew

这是两个附加选项,只能在向DHCP服务器租用其IP地址的计算机上起作用。如果我们输入IPConfig /release,那么所有接口的租用IP地址便重新交付给DHCP服务器(归还IP地址)。如果我们输入IPConfig /renew,那么本地计算机便设法与DHCP服务器取得联系,并租用一个IP地址。请注意,大多数情况下网卡将被重新赋予和以前所赋予的相同的IP地址。

如果我们使用的是Windows 95/98,那么我们应该更习惯使用WinIPcfg而不是IPConfig,因为它是一个图形用户界面,而且所显示的信息与IPConfig相同,并且也提供发布和更新动态IP地址的选项。

通过鼠标查看网络配置:控制面板——〉网络连接——〉(鼠标右键菜单)属性——>选择协议——>属性或:桌面——>网上邻居——>(选择一个连接)——〉(鼠标右键菜单)属性——>选择协议——>属性

HostName

显示计算机的主机名。

Ping命令

Ping是个使用频率极高的实用程序,用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。根据返回的信息,我们就可以推断 TCP/IP参数是否设置得正确以及运行是否正常。

简单的说,Ping就是一个测试程序,如果Ping运行正确,我们大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。

按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切正常,我们应能得到4个回送应答。 Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping 还能显示TTL(Time To Live存在时间)值,我们可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128- 119);如果返回TTL值为246,TTL起始值就是256,源地点到目标地点要通过9个路由器网段。

1、通过Ping检测网络故障的典型次序

正常情况下,当我们使用Ping命令来查找问题所在或检验网络运行情况时,我们需要使用许多Ping命令,如果所有都运行正确,我们就可以相信基本的连通性和配置参数没有问题;如果某些Ping命令出现运行故障,它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障:

·ping 127.0.0.1

这个Ping命令被送到本地计算机的IP软件,如果不正确,就表示TCP/IP的安装或运行存在某些最基本的问题。

·ping 本机IP

这个命令被送到我们计算机所配置的IP地址,我们的计算机始终都应该对该Ping命令作出应答,如果没有,则表示本地配置或安装存在问题。

42

·ping 局域网内其他IP

这个命令应该离开我们的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。

·ping 网关IP

这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。 ·ping 远程IP

如果收到4个应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。

·ping localhost

localhost是个作系统的网络保留名,它是127.0.0.1的别名,每台计算机都应该能够将该名字转换成该地址。如果没有做到这一带内,则表示主机文件(/Windows/host)中存在问题。

·ping www.xxx.com(如www.http://www.wodefanwen.com/)

对这个域名执行Ping www.xxx.com地址,通常是通过DNS 服务器如果这里出现故障,则表示DNS服务器的IP地址配置不正确或DNS服务器有故障(对于拨号上网用户,某些ISP已经不需要设置DNS服务器了)。

顺便说一句:我们也可以利用该命令实现域名对IP地址的转换功能。

如果上面所列出的所有Ping命令都能正常运行,那么我们对自己的计算机进行本地和远程通信的功能基本上就可以放心了。但是,这些命令的成功并不表示我们所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。

2、Ping命令的常用参数选项

格式:Ping目的地址[参数1][参数2][参数3]

其中目的地址是指被探测主机的地址,既可以是域名,也可以是IP地址。 参数:

-t:连续对IP地址执行Ping命令,直到被用户以Ctrl+C中断。继续Ping直到用户终止。 -a:解析主机地址。

-n数值:发出的探测包的数目,默认值为4。 -l数值:发送缓冲区大小。 -f:设置禁止分割包标志。

-I数值:包生存时间,该数值决定了IP包在网上传播的距离。 -v:服务类型。

步骤1:ping192.168.1.250 步骤2:ping192.168.1.250-t 步骤3:ping192.168.1.250–L1472

步骤4:ping192.168.1.250–l xxxxx(xxxx为最大的数值,测试出结果)

43

步骤5:ping192.168.0.254-f–L1400 步骤6:ping192.168.0.254-f-L1501 步骤7:pingwww.gznet.com-L1472 步骤8:pingwww.gznet.com-L1473

分析结果:步骤4的通信XXXX的最大数值(MTU)为多少?第5、6步的结果为什么不同?第7步和5、6步的关系怎么样。

MTU即意为“最大传输单位”。也就是通过TCP/IP协议所传输的数据包最大有多少字节, MTU值越大,封包就越大,理论上可增加传送速率,但MTU值又不能设得太大,因为封包太大,传送时出现错误的机会大增。一般默认的设置,PPPoE连接的最高MTU值是1492, 而以太网(Ethernet)的最高MTU值则是1500,而在Internet上,默认的MTU大小是576字节, 为什么会有这种差别呢?一般而言,LAN就不说了吧,为充分发挥LAN的效能,MTU可以稍微大一点。Internet的情况恰好相反,对拨号用户来说, 那叫一个慢呀。因此,对于Internet,应当采用较小的数据包。 MTU值设定与宽带接入方式的不同也会影响上网速度,通常推荐的MTU配置是:对于拨号用户,设置成576;对于使用PPPoE的DSL用户,设置成 1400;对于其他用户,设置成1500。

若设定缓冲区大小ping不通时,即可能超出了MTU。

NetStat 命令

NetStat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

如果我们的计算机有时候接受到的数据报会导致出错数据删除或故障,我们不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么我们就应该使用NetStat查一查为什么会出现这些情况了。

netstat 的一些常用选项 ·netstat –s

本选项能够按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。

·netstat –e

本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)。

·netstat –r

选项可以显示关于路由表的信息,类似于后面所讲使用route print命令时看到的信息。除了显示有效路由外,还显示当前有效的连接。

·netstat –a

本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。

·netstat –n

44

显示所有已建立的有效连接。

ARP(地址转换协议)命令

ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址。实用arp命令,我们能够查看本地计算机或另一台计算机的 ARP高速缓存中的当前内容。此外,使用arp命令,也可以用人工方式输入静态的网卡物理/IP地址对,我们可能会使用这种方式为缺省网关和本地服务器等常用主机进行这项作,有助于减少网络上的信息量。

按照缺省设置,ARP高速缓存中的项目是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目。一旦高速缓存的项目被输入,它们就已经开始走向失效状态。例如,在Windows NT/2000网络中,如果输入项目后不进一步使用,物理/IP地址对就会在2至10分钟内失效。因此,如果ARP高速缓存中项目很少或根本没有时,请不要奇怪,通过另一台计算机或路由器的ping命令即可添加。所以,需要通过arp命令查看高速缓存中的内容时,请最好先ping 此台计算机。

ARP常用命令选项: ·arp -a或arp –g

用于查看高速缓存中的所有项目。-a和-g参数的结果是一样的,多年来-g一直是UNIX平台上用来显示ARP高速缓存中所有项目的选项,而Windows用的是arp -a(-a可被视为all,即全部的意思),但它也可以接受比较传统的-g选项。

·arp -a IP

如果我们有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。

·arp -s IP 物理地址

我们可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。

·arp -d IP

使用本命令能够人工删除一个静态项目。

例如我们在命令提示符下,键入 Arp –a;如果我们使用过 Ping 命令测试并验证从这台计算机到 IP 地址为10.0.0.99 的主机的连通性,则 ARP 缓存显示以下项: Interface:10.0.0.1 on interface 0x1

Internet Address Physical Address Type

10.0.0.99 00-e0-98-00-7c-dc dynamic

在此例中,缓存项指出位于10.0.0.99 的远程主机解析成 00-e0-98-00-7c-dc 的媒体访问控制地址,它是在远程计算机的网卡硬件中分配的。媒体访问控制地址是计算机用于与网络上远程 TCP/IP 主机物理通讯的地址。

至此我们可以用ipconfig和ping命令来查看自己的网络配置并判断是否正确、可以用netstat查看别人与我们所建立的连接并找出ICQ使用者所隐藏的IP信息、可以用arp查看网卡的MAC地址。

TraceRT命令

1、Tracert的使用技巧

如果有网络连通性问题,可以使用 tracert 命令来检查到达的目标 IP 地址的路径并记录结果。tracert 命令显示用于将数据包从计算机传递到目标位置的一组 IP 路由器,以及每

45

实验7HTTP通信分析

实验类型、性质与学时

验证、必做、2学时。

实验目的要求与任务

分析验证HTTP协议的通信过程。

实验环境与器具

一个完整的连接到Internet的网络环境; 数据包捕获和分析软件(Wireshark); Telnet工具;

任意的Web浏览器,如Internet Explorer。

实验原理或实验方案

教材关于万维网中浏览器与Web服务器的通信过程的HTTP协议内容。

实验方法与步骤

具体参见“11Lab_HTTP.docx”文档。

实验数据处理及其结论分析

在每个验证过程中,至少对五项服务器应答的信息进行分析。并提供分析的依据。

进一步思考提高

通过学习Socket API编程,通过程序来验证HTTP协议,实现Web URL的获取。 编写一个程序,与Web服务器建立TCP连接,然后发送HTTP请求报文,获取Web服务的响应报文。

#include #include #pragma comment(lib,\ void main() { WSADATA wsaData; WSAStartup(0x0101,&wsaData);//装载动态连接库WinSock DLL struct sockaddr_in SA; char SName[256],SIP[16],FilePath[81]={\ int SPort=80; struct hostent *h; int r=0; char ReqMSG[256];//HTTP请求的报文 21

char recvBuf[1000000];//和服务器端进行通信(send/recv) char input[80]={0}; do{ SOCKET WebSocket=socket(AF_INET,SOCK_STREAM,0);//创建套接字(socket) puts(\ gets(SName); puts(\ scanf(\puts(\ gets(FilePath); //////////////////////////////////////////////////////// h = gethostbyname(SName);//获得对应于给定主机名(例\的主机信息(IP地址...) strcpy(SIP,inet_ntoa(*((struct in_addr *)h->h_addr))); //得到IP地址 SA.sin_addr.s_addr =inet_addr(SIP); //服务器IP地址 SA.sin_family=AF_INET; //服务器地址类型 SA.sin_port = htons(SPort); //服务器端口。 r = connect(WebSocket, (struct sockaddr far *)&SA, sizeof(SA));//向服务器发出连接请求(connect) if(r!=0) { puts(\ closesocket(WebSocket); break; } /////////////////////////////////////////////////////////////////////////////// memset(ReqMSG,0,sizeof(ReqMSG)); strcat(ReqMSG,\ strcat(ReqMSG,FilePath); strcat(ReqMSG,\ strcat(ReqMSG,\ //首部行 strcat(ReqMSG,\ //回车换行 strcat(ReqMSG,\ //首部行 strcat(ReqMSG,SName); //首部行 strcat(ReqMSG,\ //回车换行 strcat(ReqMSG,\首部行 strcat(ReqMSG,\ //回车换行 strcat(ReqMSG,\ //回车换行 printf(\:\\n%s\\n\\n\ r=send(WebSocket,ReqMSG,strlen(ReqMSG),0); if(r == SOCKET_ERROR) { puts(\22

} closesocket(WebSocket); break; } ////////////////////////////////////////////////////////////////////////////// memset(recvBuf,0,sizeof(recvBuf)); r=recv(WebSocket,recvBuf,sizeof(recvBuf),0); //读接收缓冲区 recvBuf[r]=0; printf(\///////////////////////////////////////////////////////////////////////////////////////// closesocket(WebSocket);//关闭套接字 puts(\ gets(input); }while(!strcmp(input,\WSACleanup();//必须调用这个函数清除参数 附录:通过telnet手动获取HTTP URL过程

使用Telnet与Web服务的80端口连接,然后输入HTTP请求报文发送Web服务,查看Web服务的响应报文,并与通过浏览器获得对应的URL资源进行比较。 telnet www.google.cn 80 HEAD /index.html HTTP/1.1 host: www.google.cn (返回数据略) GET /index.html HTTP/1.1 host: www.google.cn (返回数据略) telnet www.snut.edu.cn 80 HEAD /default.htm HTTP/1.1 host: www.snut.edu.cn (返回数据略) GET /default.htm HTTP/1.1 host: www.snut.edu.cn (返回数据略) 23

实验8Socket API编程

实验类型、性质与学时

验证、必做、2学时。

实验目的要求与任务

了解和掌握《基于UDP-无面向连接的应用程序》的运行机制和编程方法; 了解和掌握《基于TCP-面向连接的应用程序》的运行机制和编程方法;

实验环境与器具

WindowsOS,TCP/IP协议,VisualC++6.0。

实验原理或实验方案参考

计算机网络主要是数字信息的传送,开发网络程序,也就是信息的传送与接收。这犹如单机程序的输入输出是标准的输入输出或文件输入输出改成了向网络上(远地的计算机)进行输入输出。所以网络程序设计不难,知道如何向网络上的计算机输入输出信息就行了。程序设计的关键仍然是得到的数据如何设计出有效的算法进行处理。

网络编程包括三个层次模型:

1)核心协议开发

计算机通信系统中的核心协议开发,这些在操作系统和路由器中实现,是计算机网络的核心基础。一般人很少涉及。

2)基于Socket API的C/S编程

基于通信服务,开发新的应用服务—应用层程序开发(C/S系统)

在应用层下面,是传输层。TCP/IP模型中,传输层提供了可靠的面向连接的服务TCP和不可靠的用户数据报服务UDP。

如何使用这两种服务,为我们提供通信,TCP/IP模型没有相应的标准。各实现的平台提供了自己独特的应用编程接口API:

(1)加利福尼亚大学伯克利分校为Berkeley UNIX 操作系统定义了socket interface; (2)微软的Windows操作系统采用并扩展了socket接口,形成了Windows socket; (3)AT&T为UNIX系统V定义了TLI(Transport Layer Interface)。

3)基于Web的B/S编程

基于某种应用模型,开发增值服务——如基于WWW服务的B/S系统;使用CGI、WinCGI、Perl、PHP、ASP.Net、J2EE ??进行Web编程

24

2 WinSock模型介绍

Windows平台Socket程序开发模型如图所示。

实验方法与步骤

1基于UDP的数据包通信

25

本文来源:https://www.bwwdw.com/article/b8i2.html

Top