网络编程实践实验及课程设计指导书_第1页
网络编程实践实验及课程设计指导书_第2页
网络编程实践实验及课程设计指导书_第3页
网络编程实践实验及课程设计指导书_第4页
网络编程实践实验及课程设计指导书_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、网络编程实践实验及课程设计指导书前 言网络编程实践课程是计算机科学与技术专业的重要专业课程之一。随着计算机网络技术的迅速发展和在当今信息社会中的广泛应用,给 网络编程实践课程的教学提出了新的更高的要求。由于计算机网络是一门实践性较强的技术,课堂教学应该与实践环节紧密结合。将网络编程实践课程建设成一流的课程,是近期网络编程实践课程努力的方向。希望同学们在使用本实验指导书及进行实验的过程中,能够帮助我们不断地发现问题,并提出建议,使网络编程实践课程设计真正成为课堂教学的有益补充。同时也希望同学们能够充分利用实验条件,认真完成实验,从实验中得到应有的锻炼和培养。目 录第一部分:实验第一部分:实验一、

2、一、网络编程实践网络编程实践实验教学实验教学.41.1 学时安排 .4本课程实验安排 8 个学时的上机时间。.41.2 实验内容 .41.3 试验要求 .41.4 验收 .4二、实验一:在二、实验一:在 PC 机上熟悉常用网络命令机上熟悉常用网络命令.4三、实验二:网线制作和局域网组建三、实验二:网线制作和局域网组建.43.1 实验内容和要求.43.2 实验步骤 .4四、实验三:使用四、实验三:使用 SNORT 观察网络数据包和观察网络数据包和 TCP 链接链接.44.1 实验内容和要求.44.2 实验步骤 .44.3 参考文档:参考文档:SNORTSNORT使用说明使用说明.4五、实验四:传

3、输层协议的分析五、实验四:传输层协议的分析.4六、实验五:使用六、实验五:使用 SOCKET 编程实现编程实现 MINI FTP CLIENT/ SERVER 及聊天程序。及聊天程序。 .4第二部分:课程设计第二部分:课程设计一:复杂网络环境组成一:复杂网络环境组成.4实验 1 配置路由器的各种网络接口:.4实验 2:静态路由设置。.4实验 3:动态路由协议 RIP 设置。.4实验 4:安装和配置 FTP 服务器和 WEB 服务器。.4考核.4二:网络编程二:网络编程.4实验一:PING 程序设计.4实验二:文件传输协议的简单设计与实现.4实验三:局域网截包程序设计.4实验四:数据链路层协议的

4、设计与实现.4附录一:参考文献附录一:参考文献.4附录二、附录二、SOCKET 编程编程 .41、SOCKET 规范概述 .42、WINDOWS 环境下 SOCKET 基本函数.43、RAW 模式的 SOCKET 编程.4一、网络编程实践实验教学1.1 学时安排本课程实验安排 8 个学时的上机时间。1.2 实验内容 计算机网络是现代信息社会最重要的基础设施之一。在过去十几年里得到了迅速的发展和应用。 网络编程实践课程实验的目的是为了使学生在课程学习的同时,通过在一个计算机网络环境中的实际操作,对现代计算机网络的基本功能有一个初步的了解。网络编程实践课程设计共提供了4 个实验:实实验验 1 在在

5、 PC 机机上上熟熟悉悉常常用用网网络络命命令令: 实验内容:Ping.exe,Netstat.exe, Telnet.exe, Tracert.exe, Winipcfg.exeArp.exe, Ftp.exe, Ipconfig.exe, Net.exe, Route.exe实验指导资料:电子文档 “网络命令使用说明”实验时间:2 节课。实实验验 2:使使用用 SNORT 观观察察网网络络数数据据包包和和TCP 链链接接实验内容:学会安装使用自由软件SNORT截获以太网数据包,并描述以太网数据包的各层的帧结构。截获 ARP,ICMP 协议数据包并进行分析参考资料:电子文档“snort 使用

6、指南” 。实验时间:2 节课。实实验验 3:传传输输层层协协议议的的分分析析实验内容:使用 snort 捕获 FTP 连接的数据包用捕获的数据包作为分析的基础,分析TCP 连接的各项特性。实验时间:2 节课。实实验验 4:使使用用 SOCKET 编编程程实实现现mini FTP client/ Server 及及聊聊天天程程序序。 (选选做做)实验内容:使用 Win32 Socket 函数实现,不能使用MFC 的 Csocket 类库(MFC 的 Csocket 类库不能在LINUX、UNIX 等环境下使用,跨平台性差) ,不能用C+ builder 开发(编程量太少,C+ builder 已

7、完成了很多SOCKET 代码的编写)mini FTP client/ Server 要求:在客户端至少实现GET file, PUT file, CD( change Directory), PWD( display current directory in server)功能。独立完成mini FTP client 端及 Server 端程序。mini FTP client/ Server 不一定要使用标准FTP 协议,不一定要与现有的标准FTP server 互通,也不一定要与现有的标准FTP Client(例如 LEAP FTP)互通。mini FTP client/ Server 可使

8、用自定义的FTP 协议、应用层PDU 格式及握手方式。聊天程序要求:能相互对发文本消息。有能力的同学在完成任务后,可以进一步开发client 端软件,尝试与现有的标准FTP server 互通, 实现 GET file, PUT file, CD( change Directory), PWD( display current directory in server)等功能。有能力的同学在完成任务后,可以进一步在自己机器上的linux / unix 平台下实现mini FTP client/ Server 或聊天程序。1.3 试验要求在网络编程实践的课程实验过程中,要求学生做到:(1)预习实验

9、指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。(2)仔细观察上机和上网操作时出现的各种现象,记录主要情况,作出必要说明和分析。(3)认真书写实验报告。实验报告包括实验目的和要求,实验环境及实验结果分析。对需编程的实验,写出程序设计说明,给出源程序框图和清单。(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。(5)实验课程不迟到。如有事不能出席,所缺实验一般不补。1.4 验收实验的验收将分为两个部分:第一部分是上机操作第二部分是提交书面的实验报告此外,针对以前教学中出现的问题,网络实验将采用 阶阶段段检检查查方式,每个实验都将应当在规定的时间内完成并检查通过,

10、过期视为未完成该实验,不计成绩。以避免集中检查方式产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完成。二、实验一:在 PC 机上熟悉常用网络命令参考文档:网络命令使用说明1、ARP: 显显示示和和修修改改IP 地地址址与与物物理理地地址址之之间间的的转转换换表表 ARP -s inet_addr eth_addr if_addrARP -d inet_addr if_addrARP -a inet_addr -N if_addr -a 显示当前的ARP 信息,可以指定网络地址 -g 跟 -a 一样. -d 删除由 inet_addr 指定的主机.可以使用* 来删除所有主机. -s 添加

11、主机,并将网络地址跟物理地址相对应,这一项是永久生效的。 eth_addr 物理地址. if_addr If present, this specifies the Internet address of the interface whose address translation table should be modified. If not present, the first applicable interface will be used.例子:C:arp a (显示当前所有的表项) Internet Address Physical Address Type-0c-8e-3b

12、dynamic /物理地址一般为48 位即 6 个字节-6a-0e dynamic-0a dynamicNo ARP Entries Found Internet Address Physical Address Type-0c-8e-3b dynamica 验证是否已经加入.2、ftp:(功功能能就就不不用用描描述述了了,请请参参看看下下面面的的具具体体用用法法)该命令只有在安装了 TCP/IP 协议之后才可用。Ftp 是一种服务,一旦启动,将创建在其中可以使用 ftp 命令的子环境,通过键入 quit 子命令可以从子环境返回到 Windows 2000 命令提示符。当 ftp 子环境运行时

13、,它由 ftp 命令提示符代表。ftp -v -n -i -d -g -s:filename -a -w:windowsize computer参数-v 禁止显示远程服务器响应。-n 禁止自动登录到初始连接。-I 多个文件传送时关闭交互提示。-d 启用调试、显示在客户端和服务器之间传递的所有 ftp 命令。-g 禁用文件名组,它允许在本地文件和路径名中使用通配符字符( * 和 ?) 。 (请参阅联机“命令参考”中的 glob 命令。 )-s: filename 指定包含 ftp 命令的文本文件;当 ftp 启动后,这些命令将自动运行。该参数中不允许有空格。使用该开关而不是重定向 ()。-a 在

14、捆绑数据连接时使用任何本地接口。-w:windowsize 替代默认大小为 4096 的传送缓冲区。Computer 指定要连接到远程计算机的计算机名或 IP 地址。如果指定,计算机必须是行的最后一个参数。下面是一些常用命令:!: 从 ftp 子系统退出到系统外壳?:显示ftp 说明,跟help 一样append: 添加文件,格式为:append 本地文件 远程文件cd: 更换远程目录lcd: 更换本地目录,若无参数,将显示当前目录open:与指定的ftp 服务器连接 open computer portclose:结束与远程服务器的 FTP 会话并返回命令解释程序bye:结束与远程计算机的

15、FTP 会话并退出 ftpdir: 结束与远程计算机的 FTP 会话并退出 ftpget 和 recv:使用当前文件转换类型将远程文件复制到本地计算机 get remote-file local-filesend 和 put:上传文件:send local-file remote-file其它命令请参考帮助文件。例子:C:ftp331 Anonymous login ok, send your complete e-mail address as password.Password:230 Anonymous access granted, restrictions apply.ftp dir

16、 /查看本目录下的内容:ftp cd pub /切换目录250 CWD command successful.ftp dir200 PORT command successful.150 Opening ASCII mode data connection for file list.ftp cd microsoft250 CWD command successful.ftp dir200 PORT command successful.150 Opening ASCII mode data connection for file list.-rw-r-r- 1 ftp ftp 288632

17、Dec 8 1999 chargeni.exe226 Transfer complete.ftp: 69 bytes received in 0.01Seconds 6.90Kbytes/sec.ftp lcd e: /本地目录切换Local directory now E:.ftp get chargeni.exe /下载文件200 PORT command successful.150 Opening ASCII mode data connection for chargeni.exe (288632 bytes).226 Transfer complete.ftp: 289739 by

18、tes received in 0.36Seconds 802.60Kbytes/sec.ftp bye /离开221 Goodbye.3、Ipconfig该诊断命令显示所有当前的 TCP/IP 网络配置值。该命令在运行 DHCP 系统上的特殊用途,允许用户决定 DHCP 配置的 TCP/IP 配置值。ipconfig /? | /all | /release adapter | /renew adapter | /flushdns | /registerdns | /showclassid adapter | /setclassid adapter classidtoset /all 产生完

19、整显示。在没有该开关的情况下 ipconfig 只显示 IP 地址、子网掩码和每个网卡的默认网关值。例如:C:ipconfigWindows 2000 IP ConfigurationEthernet adapter 本地连接: Connection-specific DNS Suffix . :C:ipconfig /displaydns /显示本机上的DNS 域名解析列表C:ipconfig /flushdns /删除本机上的DNS 域名解析列表4、Nbtstat.exe该诊断命令使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接。该命令只有在安装了

20、TCP/IP 协议之后才可用。nbtstat -a remotename -A IP address -c -n -R -r -S -s interval参数-a remotename 使用远程计算机的名称列出其名称表。-A IP address 使用远程计算机的 IP 地址并列出名称表。-c 给定每个名称的 IP 地址并列出 NetBIOS 名称缓存的内容。-n 列出本地 NetBIOS 名称。 “已注册”表明该名称已被广播 (Bnode) 或者 WINS(其他节点类型)注册。-R 清除 NetBIOS 名称缓存中的所有名称后,重新装入 Lmhosts 文件。-r 列出 Windows 网络

21、名称解析的名称解析统计。在配置使用 WINS 的 Windows 2000 计算机上,此选项返回要通过广播或 WINS 来解析和注册的名称数。-S 显示客户端和服务器会话,只通过 IP 地址列出远程计算机。-s 显示客户端和服务器会话。尝试将远程计算机 IP 地址转换成使用主机文件的名称。interval 重新显示选中的统计,在每个显示之间暂停 interval 秒。按 CTRL+C 停止重新显示统计信息。如果省略该参数,nbtstat 打印一次当前的配置信息。例子:C:nbtstat A 周围主机的ip 地址C:nbtstat cC:nbtstat nC:nbtstat -S本地连接: Ne

22、tBIOS Connection Table Local Name State In/Out Remote Host Input OutputJJY Listening另外可以加上间隔时间,以秒为单位5、net:许多 Windows 2000 网络命令都以词 net 开头。这些 net 命令有一些公用属性:键入 net /? 可以看到所有可用的 net 命令的列表。 键入 net help command,可以在命令行获得 net 命令的语法帮助。例如,关于 net accounts 命令的帮助信息,请键入 net help accounts。 所有 net 命令都接受 /yes 和 /no

23、选项(可以缩写为 /y 和 /n) 。/y 选项向命令产生的任何交互式提示自动回答“是” ,而 /n 回答“否” 。例如,net stop server 通常提示您确认要停止基于“服务器”服务的所有服务;而 net stop server /y 对该提示自动回答“是” ,然后“服务器”服务关闭。例如:Net send:(可能许多人已经用过,或者感到厌烦,索性把服务给关了)将消息发送到网络上的其他用户、计算机或消息名。必须运行信使服务以接收邮件。net send name | * | /domain:name | /usersmessageNet stop:停止 Windows 2000 网络服

24、务。 net stop service例如:C:net stop messengerMessenger 服务正在停止.Messenger 服务已成功停止。此时再打入net send 本机名 消息,就没用了;相应的,要打开这个服务,只需把stop 改为start,就可以了。Net start FTP Publishing Service 启动 FTP 发布服务。该命令只有在安装了 Internet 信息服务后才可用。net start ftp publishing service类似的命令有很多,请参考帮助文件。6、Netstat.exe显示协议统计和当前的 TCP/IP 网络连接。该命令只有在

25、安装了 TCP/IP 协议后才可以使用。netstat -a -e -n -s -p protocol -r interval参数-a 显示所有连接和侦听端口。服务器连接通常不显示。-e 显示以太网统计。该参数可以与 -s 选项结合使用。-n 以数字格式显示地址和端口号(而不是尝试查找名称) 。-s 显示每个协议的统计。默认情况下,显示 TCP、UDP、ICMP 和 IP 的统计。-p 选项可以用来指定默认的子集。 -p protocol 显示由 protocol 指定的协议的连接;protocol 可以是 tcp 或 udp。如果与 -s 选项一同使用显示每个协议的统计,protocol 可

26、以是 tcp、udp、icmp 或 ip。-r 显示路由表的内容。Interval 重新显示所选的统计,在每次显示之间暂停 interval 秒。按 CTRL+B 停止重新显示统计。如果省略该参数,netstat 将打印一次当前的配置信息。例如:C:netstat -asIP Statistics Packets Received = 256325 ICMP Statistics Received Sent Messages 16 68 TCP Statistics Segments Received = 41828UDP Statistics Datagrams Received = 824

27、017、Ping.exe验证与远程计算机的连接。该命令只有在安装了 TCP/IP 协议后才可以使用。ping -t -a -n count -l length -f -i ttl -v tos -r count -s count -j computer-list | -k computer-list -w timeout destination-list参数-t Ping 指定的计算机直到中断。-a 将地址解析为计算机名。-n count 发送 count 指定的 ECHO 数据包数。默认值为 4。-l length 发送包含由 length 指定的数据量的 ECHO 数据包。默认为 32 字

28、节;最大值是 65,527。-f 在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段。-i ttl 将“生存时间”字段设置为 ttl 指定的值。-v tos 将“服务类型”字段设置为 tos 指定的值。-r count 在“记录路由”字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。-s count 指定 count 指定的跃点数的时间戳。-j computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。-k computer-list 利用 c

29、omputer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。-w timeout 指定超时间隔,单位为毫秒。destination-list 指定要 ping 的远程计算机。较一般的用法是 ping 例如:Reply from .21: bytes=32 time=10ms TTL=253Reply from .21: bytes=32 time10ms TTL=253Reply from .21: bytes=32 time10ms TTL=253Reply from .21: bytes=32 timeroute add C:

30、route print (键入此命令查看路由表,看是否已经添加了)C:route delete .0C:route print (此时可以看见已经没了添加的项)9、Telnet.exe在命令行键入telnet,将进入telnet 模式。键入help,可以看到一些常用命令。Microsoft Telnet help指令可能缩写了。支持的指令为:close 关闭当前连接display 显示操作参数open 连接到一个站点quit 退出 telnetset 设置选项 (要列表,请键入 set ? )status 打印状态信息unset 解除设置选项 (要列表,请键入 unset ? )?/help

31、打印帮助信息可以键入display 命令来查看当前配置:C:telnetMicrosoft Telnet displayEscape 字符为 CTRL+WILL AUTH (NTLM 身份验证)关闭 LOCAL_ECHO发送 CR 和 LFWILL TERM TYPE优选的类型为 ANSI协商的规则类型为 ANSI可以使用set 命令来设置环境变量,如:Microsoft Telnet set local_echo onNTLM 打开 NTLM 身份验证。LOCAL_ECHO 打开 LOCAL_ECHO。TERM x (x 表示 ANSI, VT100, VT52 或 VTNT)CODESET

32、 x (x 表示 Shift JIS, Japanese EUC, JIS Kanji, JIS Kanji(78), DEC Kanji 或 NEC Kanji)CRLF 发送 CR 和 LF例如:假设主机打开了telnet 服务正在连接到您将要发送密码信息到 Internet 区域中的远程计算机。这可能不安全。是否还要发送 (y/n): y (不同系统会有区别)上面曾说明了Escape 字符为 CTRL+,所以键入这个字符就可以切换到外面,再按下单独的 Enter 键又可以回去。Microsoft Telnet status协商的规则类型为 ANSI10、Tracert.exe该诊断实用程

33、序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由。要在转发数据包上的 TTL 之前至少递减 1,必需路径上的每个路由器,所以 TTL 是有效的跃点计数。数据包上的 TTL 到达 0 时,路由器应该将“ICMP 已超时”的消息发送回源系统。Tracert 先发送 TTL 为 1 的回显数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP 已超时”的消息来确定路由。不过,有些路由器悄悄地下传包含过期 TTL 值的数据包,而 t

34、racert 看不到。tracert -d -h maximum_hops -j computer-list -w timeout target_name参数/d 指定不将地址解析为计算机名。-h maximum_hops 指定搜索目标的最大跃点数。-j computer-list 指定沿 computer-list 的稀疏源路由。-w timeout 每次应答等待 timeout 指定的微秒数。target_name 目标计算机的名称。最简单的一种用法如下:.21over a maximum of 30 hops: 2 10 ms 10 ms 10 ms .10 3 10 ms 10 ms

35、认证目标5.02:静态路由和动态路由实验 3:动态路由协议 RIP 设置。实验内容:配置两台路由器的RIP 协议。用 PING 测试连通性。尝试命令并观看结果:show ip route尝试命令并观看结果:show ip protocols尝试命令并观看结果:debug ip rip尝试命令并观看结果:passive-interface实验设备:模拟软件“RouterSim-CCNA2”视图中的Router A, Router B, Router C, Router 2621参考资料:参考文献4P125-142。电子文档 “CCNA2.0中文版教材.zip” 之第5章IP路由选择协议-5.5

36、认证目标5.05:RIP实验指导资料:电子文档 “模拟软件RouterSim 实验指导.zip”实验 4:安装和配置 FTP 服务器和 WEB 服务器。实验内容:配置 WIN 2000 Server PC 成为 FTP 服务器。配置 WIN 2000 Server PC 成为 WEB 服务器(IIS 5.0)。在 CLIENT PC 机(另一台PC 机)上使用DOS FTP 命令访问FTP Server。在 CLIENT PC 机(另一台PC 机)上使用Internet Explorer 访问 WEB Server。实验指导资料:电子文档 “安装和配置FTP 服务器和WEB 服务器.doc”考

37、核 在规定时间内,独立完成由教师给出的模拟实验环境中的各项配置,使用服务器和网络环境都能正常运行。二:网络编程实验一:PING 程序设计2.1 实实验验目目的的PING 程序是我们使用的比较多的用于测试网络连通性的程序。PING 程序基于 ICMP,使用 ICMP 的回送请求和回送应答来工作。由计算机网络课程知道,ICMP 是基于 IP 的一个协议,ICMP 包通过 IP 的封装之后传递。课程设计中选取 PING 程序的设计,其目的是希望同学们通过 PING 程序的设计,能初步掌握 TCP/IP 网络协议的基本实现方法,对网络的实现机制有进一步的认识。2.2 实实验验内内容容1、RAW 模式的

38、 SOCKET 编程 PING 程序是面向用户的应用程序,该程序使用 ICMP 的封装机制,通过 IP 协议来工作。为了实现直接对 IP 和 ICMP 包进行操作,实验中使用 RAW 模式的 SOCKET 编程。熟悉 SOCKET 的编程,包括基本的系统调用如 SOCKET、BIND 等(参考附录二) ;2、具体内容(1)定义数据结构 需要定义好 IP 数据报、ICMP 包等相关的数据结构(2)程序实现 在 WINDOWS 环境下实现 PING 程序(3)程序要求在命令提示符下输入: PING .其中 为目的主机的 IP 地址,不要求支持域名,对是否带有开关变量也不做要求。不带开关变量时,要求

39、返回 4 次响应。返回信息的格式: REPLY FROM .或 REQUEST TimeOut (无法 PING 通的情况)2.3 实实验验步步骤骤和和注注意意事事项项实验按下述步骤进行:1)熟悉IP以及ICMP协议的工作机制2)熟悉RAW模式的SOCKET编程3)编写PING的实现程序4)编译环境中需要包括SOCKET库 WS2_32.lib5)在模拟实现环境下调试并运行自己编写的PING程序6)保留你实现的程序在你的用户目录下,以备辅导教师检查7)最后提交源程序,撰写实验报告实验二:文件传输协议的简单设计与实现3.1 实实验验目目的的文件传送是各种计算机网络都实现的基本功能,文件传送协议是

40、一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是 INTERNET使用最广泛的协议之一。本实验的目的是,学会利用已有网络环境设计并实现简单应用层协议,掌握 TCP/IP 网络应用程序基本的设计方法和实现技巧。3.2 实实验验内内容容和和要要求求1、实验内容我们的计算机网络实验环境建立在TCP/IP 网络体系结构之上。各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。实验室各计算机具备Windows环境中套接字socket 的编程接口功能,可为用户提供全网范围的进程通信功能。本实验要求学生利用这些功能,设计和实现一个简单的文件传送协议。2、具体要求用

41、socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c) ,该程序应能实现下述命令功能:get:取远方的一个文件put:传给远方一个文件pwd:显示远主当前目录dir:列出远方当前目录cd :改变远方当前目录? :显示你提供的命令quit :退出返回这此命令的具体工作方式(指给出结果的形式)可以参照 FTP 的相应命令,有余力的同学可以多实现几个命令。最后,写出实验报告。3.3 注注意意事事项项1、关于端口号(假设用SERV_PORT 来表示)的设定,原则上2000 至5000都可用,为避免冲突,建议取你学号后三位数加上2000,比如学号为9712

42、34,则可定义: #define SERV_PORT 22342、客户和服务程序中要有相应的include 文件(参考所给例子程序)3、有些同学的server 方程序支持多连接,为了不占用更多的系统资源,并发连接数限制在3 个以内。4、最后提交源程序,撰写实验报告,在实验报告中说明设计的思路实验三:局域网截包程序设计4.1 实实验验目目的的目前的局域网基本上都采用以广播为技术基础的以太网,任何两个节点之间的通信数据包,不仅为这两个节点的网卡所接收,也同时为处在同一以太网上的任何一个节点的网卡所截取。因此,黑客只要接入以太网上的任一节点进行侦听,就可以捕获发生在这个以太网上的所有数据包,对其进行

43、解包分析,从而窃取关键信息,这就是以太网所固有的安全隐患。网上主要的免费黑客攻击工具如 SATAN、ISS、NETCAT 等均将以太网侦听作为基本的手段。本实验实现一个局域网截包程序,目的在于使学生能更好地理解网络的工作机制(包括封包机制、协议分析等) ,该实验是对网络编程实践课程一个有益的补充。4.2 实实验验内内容容在一个局域网环境中,用C 语言实现下面的基本功能:(1)确定截包的方法:包括RAW 模式SOCKET、PACKET32以及直接作为驱动程序挂在NDIS上(2)要求截获以下包的类型并分析:以太网帧格式、 IP包、ICMP包、TCP报文段、UDP报文等相关字段进行描述。4.3 实实

44、验验步步骤骤和和注注意意事事项项实验按下述步骤进行:(1)熟悉RAW模式的SOCKET编程(2)熟悉PACKET32的工作机制(3)熟悉WINDOWS 2000环境下NDIS驱动程序的编写方法(4)编写基于上述某一机制的局域网截包的实现程序;(5)在模拟实现环境下调试并运行自己编写的协议实现程序;(6)如出现异常情况,在实验报告中记录并分析可能的原因实验四:数据链路层协议的设计与实现5.1 实实验验目目的的计算机网络的数据链路层协议保证通信双方在有差错的通信线路上进行无差错的数据传输,是计算机网络各层协议中通信控制功能最典型的一种协议。本实验实现一个数据链路层协议的数据传送部分,目的在于使学生

45、更好地理解数据链路层协议中的“滑动窗口”技术的基本工作原理,掌握计算机网络协议的基本实现技术。5.2 实实验验内内容容在一个数据链路层的模拟实现环境中,用C 语言实现下面两个数据链路层协议。(1) “退回到N 重发”的滑动窗口协议(参考文献1第四章的协议5) ;(2) “选择重发”的滑动滑动窗口协议(参考文献1第四章的协议6) ;5.3 模模拟拟实实现现环环境境数据链路层协议位于物理层之上,网络层之下。它使用物理层提供的服务,并且向网络层的分组数据传输提供可靠的服务。由于构造实际的工作环境需要系统提供支持,难度较大。因此,实现一个数据链路层协议必须要有一个模拟实现环境。在本实验中,我们仍然采用

46、基于 SOCKET的模拟通信环境。这个模拟系统由以下几部分组成:两个代码文件sim.c 和worker.c;一个通用的头文件common.h,包含类型预定义、常量定义等;协议文件使用的头文件potocol.h,包含支撑函数的函数声明等。模拟系统使用三个进程:main: 控制整个模拟系统。MO: 协议2 和协议3 的发送方(machine 0) 。M1: 协议2 和协议3 的接收方(machine 1) 。文件sim.c 中包含着主程序,它首先分析命令行并且将参数保存起来,接着创建六个管道使得三个进程之间能够进行通信,所创建的文件描述字以如下方式命名:MO 和M1 的通信;w1、r1:MO 到M

47、1 的帧传递w2、r2:M1 到MO 的帧传递Main 和MO 的通信:W3、r3:main 通知MO go-aheadw4、r4:MO 通知main,MO 已准备好Main 和M1 通信:w5、r5: main 通知M1-go-aheadw6、r6:M1 通知main,M1 已准备好。模拟实现环境的源程序放置在相应的目录下,请同学们首先把这些文件拷贝到自己的用户 目录下。5.4 实实验验步步骤骤和和注注意意事事项项实验按下述步骤进行:(1)熟悉已给出的数据链路层协议模拟实现环境的功能;(2)编写两个数据链路层协议的实现程序;(3)在模拟实现环境下调试并运行自己编写的协议实现程序;(4)了解协

48、议的工作轨迹,如出现异常情况,在实验报告中写出原因分析;(5)保留你实现的数据链路层协议在你的用户目录下,以备辅导教师检查。附录一:参考文献参考文献1“Computer Networks (Third Edition)”, Andrew S. Tanenbaum, Prentice-Hall, 清华大学出版社影印, 1996 中译本网络编程实践 ,熊桂喜等译,清华大学出版社,1998参考文献2TCP/IP 网络原理与技术 ,周明天、汪文勇编著,清华大学出版社,1993参考文献3网络编程实践 (第3版) ,谢希仁编著,大连理工大学出版社,2000参考文献4:CCNA实验指南 , (美)Gary

49、Heap等 ,袁爱平译,人民邮电出版社 2002 附录二、SOCKET 编程1、SOCKET 规范概述Windows Sockets 规范以 U.C. Berkeley 大学 BSD UNIX 中流行的Socket 接口为范例定义了一套Micosoft Windows 下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows 的扩展库函数,以使程序员能充分地利用Windows 消息驱动机制进行编程。Windows Sockets 规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Win

50、dows 的基础上,Windows Sockets 也定义了一个二进制接口(ABI) ,以此来保证应用Windows Sockets API 的应用程序能够在任何网络软件供应商的符合Windows Sockets 协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套Windows Sockets 规范的网络软件,我们称之为Windows Sockets 兼容的,而Windows Sockets 兼容实现的提供者,我们称之为Windows Sockets 提供者。一个网络软件供应商必须百分之百地实现Windows Socket

51、s 规范才能做到现Windows Sockets 兼容。任何能够与Windows Sockets 兼容实现协同工作的应用程序就被认为是具有Windows Sockets 接口。我们称这种应用程序为Windows Sockets 应用程序。Windows Sockets 规范定义并记录了如何使用API 与 Internet 协议族(IPS,通常我们指的是 TCP/IP)连接,尤其要指出的是所有的Windows Sockets 实现都支持流套接口和数据报套接口. 应用程序调用Windows Sockets 的 API 实现相互之间的通讯。Windows Sockets 又利用下层的网络通讯协议功能

52、和操作系统调用实现实际的通讯工作。它们之间的关系如下图:应用程序1应用程序N网络编程截面,如WINDOWS SOCKET网络通信协议服务截面,如TCP/IP操作系统,如WINDOWS物理通信介质2、WINDOWS 环境下 SOCKET 基本函数(1)WSAStartup 函数int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData); 使用 Socket 的程序在使用 Socket 之前必须调用 WSAStartup 函数。该函数的第一个参数指明程序请求使用的 Socket 版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用

53、第二个参数返回请求的 Socket 的版本信息。当一个应用程序调用 WSAStartup函数时,操作系统根据请求的 Socket 版本来搜索相应的 Socket 库,然后绑定找到的 Socket库到该应用程序中。以后应用程序就可以调用所请求的 Socket 库中的其它 Socket 函数了。该函数执行成功后返回 0。 例:假如一个程序要使用 2.1 版本的 Socket,那么程序代码如下wVersionRequested = MAKEWORD( 2, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); (2)WSACleanup

54、函数 int WSACleanup (void); 应用程序在完成对请求的 Socket 库的使用后,要调用 WSACleanup 函数来解除与Socket 库的绑定并且释放 Socket 库所占用的系统资源。 (3)socket 函数SOCKET socket( int af, int type, int protocol ); 应用程序调用 socket 函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于 TCP/IP 协议族,该参数置 PF_INET;第二个参数指定要创建的套接字类型,流套接字类型为 SOCK_STREAM、数据报套接字类型为SOC

55、K_DGRAM;第三个参数指定应用程序所使用的通信协议。该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回 INVALID_SOCKET。套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。下面是一个创建流套接字的例子: struct protoent *ppe; ppe=getpr

56、otobyname(tcp); SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe-p_proto); (4)closesocket 函数 int closesocket( SOCKET s ); closesocket 函数用来关闭一个描述符为 s 套接字。由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。套接字数据结构中专门有一个字段存放该结构的被引用次数,即有多少个套接字描述符指向该结构。当调用closesocket 函数时,

57、操作系统先检查套接字数据结构中的该字段的值,如果为 1,就表明只有一个套接字描述符指向它,因此操作系统就先把 s 在套接字描述符表中对应的那条表项清除,并且释放 s 对应的套接字数据结构;如果该字段大于 1,那么操作系统仅仅清除 s在套接字描述符表中的对应表项,并且把 s 对应的套接字数据结构的引用次数减 1。 closesocket 函数如果执行成功就返回 0,否则返回 SOCKET_ERROR。 (5)send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用 send 函数

58、来向 TCP 连接的另一端发送数据。客户程序一般用 send 函数向服务器发送请求,而服务器则通常用 send 函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步 Socket 的 send 函数的执行流程。当调用该函数时,send 先比较待发送数据的长度 len 和套接字 s 的发送缓冲区的长度,如果 len 大于 s 的发送缓冲区的长度,该函数返回 SOCKET_ERROR;如果 len 小于或者等于 s 的发送缓冲区的长度,那么 send 先检查协

59、议是否正在发送 s 的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送 s 的发送缓冲中的数据或者 s 的发送缓冲中没有数据,那么 send 就比较s 的发送缓冲区的剩余空间和 len,如果 len 大于剩余空间大小 send 就一直等待协议把 s 的发送缓冲中的数据发送完,如果 len 小于剩余空间大小 send 就仅仅把 buf 中的数据 copy 到剩余空间里(注意并不是 send 把 s 的发送缓冲中的数据传到连接的另一端的,而是协议传的,send 仅仅是把 buf 中的数据 copy 到 s 的发送缓冲区的剩余空间里)。如果 send 函数copy 数据成功,就

60、返回实际 copy 的字节数,如果 send 在 copy 数据时出现错误,那么 send就返回 SOCKET_ERROR;如果 send 在等待协议传送数据时网络断开的话,那么 send 函数也返回 SOCKET_ERROR。要注意 send 函数把 buf 中的数据成功 copy 到 s 的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个 Socket 函数就会返回SOCKET_ERROR。(每一个除 send 外的 Socket 函数在执行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时

温馨提示

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

评论

0/150

提交评论