1、计算机网络原理实验指导书课程代码:0660086天津理工大学计算机计算机科学与工程学院2023年9月目 录一、实验指导书的选用范围1二、计算机网络技术课程简介1三、实验的地位、作用和目的及学生能力标准1四、实验方式与基本规定1五、考核方式与实验报告规定2六、实验项目2实验一:验证常用网络命令2实验1.1 验证常用的网络命令2实验1.2 用telnet方式收发邮件11实验二:基于TCP/UDP的Socket编程14实验2.1:基于TCP and UDP的socket编程14实验2.2:基于TCP的Web Server14实验2.3:基于TCP/UDP的Daytime的客户端和服务器端14实验2.
2、4:基于TCP/UDP的Echo的客户端和服务器端15实验2.5 SOCKET编程实现聊天程序15实验2.6 SOCKET编程实现mini FTP Client/ Server程序15附录1 参考程序16附录2 网络编程接口WinSock API19实验三:模拟环境下的路由器配置263.1 Boson Router Simulator 4.3安装及注册263.2 Boson Router Simulator启动及使用323.3 实验习题36七、实验重要仪器名称42八、课程设计交付成果说明42 一、实验指导书的选用范围课程名称:计算机网络原理所属专业:计算机科学与技术、信息与计算科学领域方向:网
3、络编程,网络管理,网络安全等相关方向参考学时:课内12学时,课外12学时以上合用学生:计算机及相关专业的本科生先修课规定:通信原理基础、数据结构、 面向对象程序设计C+、计算机组成原理等实验成绩占总成绩:20 % 大纲依据:课程指导委员会指导意见二、计算机网络技术课程简介本课程是计算机科学与技术专业必修课。课程教学目的是立足于介绍本方向的基本概念、技术和方法,为使学生能追踪网络技术最新发展而奠定基础。通过网络实验,规定学生掌握网络技术的发展规律,掌握网络技术的基本概念、基本原理和基本技术等知识,可以编写网络软件、设计一般的网络并能分析网络的性能及解决网络中的问题。本实验课分为验证性实验和综合性
4、实验。三、实验的地位、作用和目的及学生能力标准计算机网络技术实验是计算机专业的必修课程计算机网络技术的重要组成部分。通过实验,可以填补课堂理论教学中的局限性,增强学生对所学知识的感性结识;掌握网络操作的一般知识;深化理论知识,使理论与实践结合起来;培养学生设计实验方案的能力和运用所学知识解决实际问题的能力。规定学生掌握网络技术的发展规律,掌握网络技术的基本概念、基本原理和基本技术等知识,可以编写网络软件、设计一般的网络并能分析网络的性能及解决网络中的问题。四、实验方式与基本规定1、实验开始前,指导教师要讲解实验过程和注意事项。2、实验分为学生独立完毕实验以及小组完毕实验两种。3、实验过程中要具
5、体记录实验过程和结果。4、在实验结束后一周之内完毕实验报告。小组实验的,要注明每个人的分工。实验报告按照统一规定填写。五、考核方式与实验报告规定实验考核从两方面评估每次的实验成绩:实验操作完毕情况和实验报告书写质量。实验操作情况:指导教师根据学生的实验准备情况、实验情况、源程序质量、回答问题情况、实验纪律等方面给分。实验报告书写:学生在实验后的一周内提交打印好的实验报告。教师根据实验报告质量评估成绩。 3 实验总成绩=1/3( 第i次实验成绩) i=1六、实验项目实验一:验证常用网络命令实验目的:熟悉windows下的一些网络命令的功能和使用方法。进而能用这些命令察看网络的状况并解决网络中的一
6、些问题。掌握收发邮件的命令。实验规定:1、请尝试以下一些windows下的网络命令,记录实验的过程、结果以及碰到的问题及解决方法。2、telnet收发电子邮件。实验过程:实验1.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 添加主机,并将网络地址跟物理
7、地址相相应,这一项是永久生效的。 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 (显示当前所有的表项)Interface: 10.111.142.71 on Interface 0x1000003 Internet Addr
8、ess Physical Address Type 10.111.142.1 00-01-f4-0c-8e-3b dynamic /物理地址一般为48位即6个字节 10.111.142.112 52-54-ab-21-6a-0e dynamic 10.111.142.253 52-54-ab-1b-6b-0a dynamicC:arp -a 10.111.142.71(只显示其中一项)No ARP Entries FoundC:arp -a 10.111.142.1(只显示其中一项)Interface: 10.111.142.71 on Interface 0x1000003 Internet
9、 Address Physical Address Type 10.111.142.1 00-01-f4-0c-8e-3b dynamicC:arp -s 157.55.85.212 00-aa-00-62-c6-09 添加,可以再打入arp a 验证是否已经加入.ftp 文献传输命令该命令只有在安装了 TCP/IP 协议之后才可用。Ftp 是一种服务,一旦启动,将创建在其中可以使用 ftp 命令的子环境,通过键入 quit 子命令可以从子环境返回到 Windows 2023 命令提醒符。当 ftp 子环境运营时,它由 ftp 命令提醒符代表。ftp -v -n -i -d -g -s:fil
10、ename -a -w:windowsize computer参数-v 严禁显示远程服务器响应。-n 严禁自动登录到初始连接。-I 多个文献传送时关闭交互提醒。-d 启用调试、显示在客户端和服务器之间传递的所有 ftp 命令。-g 禁用文献名组,它允许在本地文献和途径名中使用通配符字符(* 和 ?)。(请参阅联机“命令参考”中的 glob 命令。)-s: filename指定包含 ftp 命令的文本文献;当 ftp 启动后,这些命令将自动运营。该参数中不允许有空格。使用该开关而不是重定向 ()。-a 在捆绑数据连接时使用任何本地接口。-w:windowsize 替代默认大小为 4096 的传送
11、缓冲区。Computer 指定要连接到远程计算机的计算机名或 IP 地址。假如指定,计算机必须是行的最后一个参数。下面是一些常用命令:!: 从ftp子系统退出到系统外壳?:显示ftp说明,跟help同样append: 添加文献,格式为:append 本地文献 远程文献cd: 更换远程目录lcd: 更换本地目录,若无参数,将显示当前目录open:与指定的ftp服务器连接 open computer portclose:结束与远程服务器的 FTP 会话并返回命令解释程序bye:结束与远程计算机的 FTP 会话并退出 ftpdir: 结束与远程计算机的 FTP 会话并退出 ftpget 和 recv
12、:使用当前文献转换类型将远程文献复制到本地计算机 get remote-file local-filesend 和 put:上传文献:send local-file remote-file其它命令请参考帮助文献。例子:C:ftpftp open Connected to .220 ProFTPD 1.2.0pre9 Server (浙江大学自由软件服务器) User (:(none): anonymous331 Anonymous login ok, send your complete e-mail address as password.Password:230 Anonymous acc
13、ess granted, restrictions apply.ftp dir /查看本目录下的内容: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 f
14、or file list.-rw-r-r- 1 ftp ftp 288632 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 byte
15、s).226 Transfer complete.ftp: 289739 bytes received in 0.36Seconds 802.60Kbytes/sec.ftp bye /离开221 Goodbye.Ipconfig该诊断命令显示所有当前的 TCP/IP 网络配置值。该命令在运营 DHCP 系统上的特殊用途,允许用户决定 DHCP 配置的 TCP/IP 配置值。ipconfig /? | /all | /release adapter | /renew adapter | /flushdns | /registerdns | /showclassid adapter | /set
16、classid adapter classidtoset /all 产生完整显示。在没有该开关的情况下 ipconfig 只显示 IP 地址、子网掩码和每个网卡的默认网关值。例如:C:ipconfigWindows 2023 IP ConfigurationEthernet adapter 本地连接: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 10.111.142.71 /IP地址 Subnet Mask . . . . . . . . . . . : 255.255.255.0 /子网掩码 D
17、efault Gateway . . . . . . . . . : 10.111.142.1 /缺省网关C:ipconfig /displaydns /显示本机上的DNS域名解析列表C:ipconfig /flushdns /删除本机上的DNS域名解析列表 Nbtstat该诊断命令使用 NBT(TCP/IP 上的 NetBIOS)显示协议记录和当前 TCP/IP 连接。该命令只有在安装了 TCP/IP 协议之后才可用。nbtstat -a remotename -A IP address -c -n -R -r -S -s interval参数-a remotename 使用远程计算机的名称
18、列出其名称表。-A IP address 使用远程计算机的 IP 地址并列出名称表。-c 给定每个名称的 IP 地址并列出 NetBIOS 名称缓存的内容。-n 列出本地 NetBIOS 名称。“已注册”表白该名称已被广播 (Bnode) 或者 WINS(其他节点类型)注册。-R 清除 NetBIOS 名称缓存中的所有名称后,重新装入 Lmhosts 文献。-r 列出 Windows 网络名称解析的名称解析记录。在配置使用 WINS 的 Windows 2023 计算机上,此选项返回要通过广播或 WINS 来解析和注册的名称数。-S 显示客户端和服务器会话,只通过 IP 地址列出远程计算机。-
19、s 显示客户端和服务器会话。尝试将远程计算机 IP 地址转换成使用主机文献的名称。interval重新显示选中的记录,在每个显示之间暂停 interval 秒。按 CTRL+C 停止重新显示记录信息。假如省略该参数,nbtstat 打印一次当前的配置信息。例子:C:nbtstat A 周边主机的ip地址C:nbtstat cC:nbtstat nC:nbtstat -S本地连接:Node IpAddress: 10.111.142.71 Scope Id: NetBIOS Connection Table Local Name State In/Out Remote Host Input Ou
20、tputJJY Listening此外可以加上间隔时间,以秒为单位 net:许多 Windows 2023 网络命令都以词 net 开头。这些 net 命令有一些公用属性:键入 net /? 可以看到所有可用的 net 命令的列表。 键入 net help command,可以在命令行获得 net 命令的语法帮助。例如,关于 net accounts 命令的帮助信息,请键入 net help accounts。 所有 net 命令都接受 /yes 和 /no 选项(可以缩写为 /y 和 /n)。/y 选项向命令产生的任何交互式提醒自动回答“是”,而 /n 回答“否”。例如,net stop s
21、erver 通常提醒您确认要停止基于“服务器”服务的所有服务;而 net stop server /y 对该提醒自动回答“是”,然后“服务器”服务关闭。例如:Net send:(也许许多人已经用过,或者感到厌烦,索性把服务给关了)将消息发送到网络上的其他用户、计算机或消息名。必须运营信使服务以接受邮件。net send name | * | /domain:name | /usersmessageNet stop:停止 Windows 2023 网络服务。 net stop service例如:C:net stop messengerMessenger 服务正在停止.Messenger 服务已
22、成功停止。此时再打入net send 本机名 消息,就没用了;相应的,要打开这个服务,只需把stop改为start,就可以了。Net start FTP Publishing Service 启动 FTP 发布服务。该命令只有在安装了 Internet 信息服务后才可用。net start ftp publishing service类似的命令有很多,请参考帮助文献。 Netstat显示协议记录和当前的 TCP/IP 网络连接。该命令只有在安装了 TCP/IP 协议后才可以使用。netstat -a -e -n -s -p protocol -r interval参数-a 显示所有连接和侦听端
23、口。服务器连接通常不显示。-e 显示以太网记录。该参数可以与 -s 选项结合使用。-n 以数字格式显示地址和端标语(而不是尝试查找名称)。-s 显示每个协议的记录。默认情况下,显示 TCP、UDP、ICMP 和 IP 的记录。-p 选项可以用来指定默认的子集。 -p protocol 显示由 protocol 指定的协议的连接;protocol 可以是 tcp 或 udp。假如与 -s 选项一同使用显示每个协议的记录,protocol 可以是 tcp、udp、icmp 或 ip。-r 显示路由表的内容。Interval 重新显示所选的记录,在每次显示之间暂停 interval 秒。按 CTRL
24、+B 停止重新显示记录。假如省略该参数,netstat 将打印一次当前的配置信息。例如:C:netstat -asIP Statistics Packets Received = 256325 ICMP Statistics Received Sent Messages 16 68 TCP Statistics Segments Received = 41828UDP Statistics Datagrams Received = 82401 Ping验证与远程计算机的连接。该命令只有在安装了 TCP/IP 协议后才可以使用。ping -t -a -n count -l length -f -
25、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 字节;最大值是 65,527。-f 在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段。-i ttl将“生存时间”字段设立为 ttl 指定的值。-v tos
26、将“服务类型”字段设立为 tos 指定的值。-r count 在“记录路由”字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。-s count 指定 count 指定的跃点数的时间戳。-j computer-list 运用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。-k computer-list 运用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。-w timeout 指定超时间隔,单位为毫秒
27、。destination-list 指定要 ping 的远程计算机。较一般的用法是 ping t 例如:C:ping Pinging 10.10.2.21 with 32 bytes of data:Reply from 10.10.2.21: bytes=32 time=10ms TTL=253Reply from 10.10.2.21: bytes=32 time10ms TTL=253Reply from 10.10.2.21: bytes=32 time10ms TTL=253Reply from 10.10.2.21: bytes=32 timeroute add 10.13.0.0
28、 mask 255.255.0.0 10.111.142.1C:route print (键入此命令查看路由表,看是否已经添加了)C:route delete 10.13.0.0C:route print (此时可以看见已经没了添加的项) Telnet虚拟终端命令在命令行键入telnet,将进入telnet模式。键入help,可以看到一些常用命令。Microsoft Telnet help指令也许缩写了。支持的指令为:close 关闭当前连接display 显示操作参数open 连接到一个站点quit 退出 telnetset 设立选项 (要列表,请键入 set ? )status 打印状态信
29、息unset 解除设立选项 (要列表,请键入 unset ? )?/help 打印帮助信息可以键入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 (
30、x 表达 ANSI, VT100, VT52 或 VTNT)CODESET x (x 表达 Shift JIS, Japanese EUC, JIS Kanji, JIS Kanji(78), DEC Kanji 或 NEC Kanji)CRLF 发送 CR 和 LF例如:假设主机10.111.142.71打开了telnet服务Microsoft Telnet open 10.111.142.71正在连接到10.111.142.71. 您将要发送密码信息到 Internet 区域中的远程计算机。这也许不安全。是否还要发送(y/n): y (不同系统会有区别)上面曾说明了Escape 字符为 C
31、TRL+,所以键入这个字符就可以切换到外面,再按下单独的Enter键又可以回去。Microsoft Telnet status已连接到 10.111.142.71协商的规则类型为 ANSI Tracert该诊断实用程序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目的,以决定到达目的采用的路由。要在转发数据包上的 TTL 之前至少递减 1,必需途径上的每个路由器,所以 TTL 是有效的跃点计数。数据包上的 TTL 到达 0 时,路由器应当将“ICMP 已超时”的消息发送回源系统。Tracert 先发送 TTL 为 1 的回显数据包,并在随后
32、的每次发送过程将 TTL 递增 1,直到目的响应或 TTL 达成最大值,从而拟定路由。路由通过检查中级路由器发送回的“ICMP 已超时”的消息来拟定路由。但是,有些路由器悄悄地下传包含过期 TTL 值的数据包,而 tracert 看不到。tracert -d -h maximum_hops -j computer-list -w timeout target_name参数/d 指定不将地址解析为计算机名。-h maximum_hops 指定搜索目的的最大跃点数。-j computer-list 指定沿 computer-list 的稀疏源路由。-w timeout 每次应答等待 timeout
33、 指定的微秒数。target_name 目的计算机的名称。最简朴的一种用法如下:C:tracert Tracing route to 10.10.2.21over a maximum of 30 hops: 1 10 ms 10 ms 10 ms 10.111.136.1 2 10 ms 10 ms 10 ms 10.0.0.10 3 10 ms 10 ms 10 ms 10.10.2.21Trace complete.实验1.2 用telnet方式收发邮件举例:telnet 25/连接smtp服务器.端口是25220 SMTP Server of AIMC 2.9.5.1; Mon, 25
34、Jun 202312:41:51 +0800/服务器返回的信息l HELO250 , unknown.host okay.MAIL FROM: /告诉服务器发件人的Email地址250 , sender ok.RCPT TO: /告诉服务器收件人的地址.250 User not local, will forward to ./OK!下面开始写信了DATA /告诉服务器我们要开始写信了SUBJECT:HELLO /subject后面填写的是邮件的主题.假如不需要主题可以直接输入内容.Hi:How are you?. /换行后输入.(dot)后按回车,表达信件内容书写完毕.250 Request
35、ed mail action okay, completed.QUIT /发送信件,结束对话,退出SMTP服务器.假如想取消发送可以用RSET命令.221 closing connection. 下面用POP服务器收刚才发送的Email.telnet 110 /还是要先连接.端口110+OK incore system mail POP3 Server readyuser stonegong /告诉服务器你的用户名+OK core mailpass * /这里的*代表你的密码.你输入的时候会明文显示.+OK 1 message(s) 457 byte(s) /看到信了吗?list /查看信件列
36、表.+OK 1 4571 457. /第一个475是所有邮件的总字节数,1后面的那个是第一封邮件的字节数.由于只有一封,所以相等了.retr 1 /返回第一封信的所有内容.+OK 457 octetsReceived: from (unknown 61.140.60.248)by (Postfix) with SMTP id E578D1CED4CACfor ; Mon, 25 Jun 2023 12:49:17 +0800(CST)Received: from unknown.host(61.138.26.124) by (AIMC2.9.5.1)with SMTP id jma3b36f1
37、fc; Mon, 25 Jun 2023 12:43:27 +0800subject:HELLOhi:How are you?Message-Id: Date: Mon, 25 Jun 2023 12:49:17 +0800 (CST)From: . /刚才发的那封dele 1 /删除邮件.+OK core maillist+OK 0 0. /这时邮件并没有完全删除,要等到退出后在完全删除/假如现在想恢复可以用REST n命令,n表达Email的编号.Quit /退出.+OK core mail假如上面有哪些命令你没有理解也可以看看下面这份命令详解.先看SMTP服务器的.HELO:运用HELO
38、命令可以告诉SMTP服务器你的地址,一般为你的Email地址后面的部分。若你的电子邮件地址为:,则就为(我就什么也没输入.也可以的)MAIL FROM:运用MAIL FROM命令输入收信者回复你时可用的电子邮件地址,一般为你的电子信箱地址,但也可以是符合邮件地址格式的任意字符。RCPT TO:RCPT TO命令规定你输入收信人的电子邮件地址,可以用多个RCPTTO命令将邮件同时发送给多个收信人。VRFY:VRFY命令将验证其后的电子邮件地址的对的性。一般可先运用VRFY命令对电子邮件地址进行校验,再运用RCPT TO命令将邮件发送到该地址。l DATA键入DATA后回车,即可开始输入邮件内容。假如在首行输入Subject:主题内容