计算机网络实验lastest.docx
- 文档编号:11783197
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:25
- 大小:435.62KB
计算机网络实验lastest.docx
《计算机网络实验lastest.docx》由会员分享,可在线阅读,更多相关《计算机网络实验lastest.docx(25页珍藏版)》请在冰点文库上搜索。
计算机网络实验lastest
学生学号
0121210680505
实验课成绩
实验报告书
实验课程名称计算机网络
开课学院计算机科学与技术学院
指导老师姓名刘维
学生姓名张韩
学生专业班级软件ZY1201班
2014—2015学年第一学期
实验课程名称:
计算机网络
实验项目名称
Socket支持下网上点对点通信的实现
实验成绩
实验者
张韩
专业班级
软件ZY1201
组别
同组者
实验日期
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
使用Socket接口进行网络通信的过程如图5-1所示,简要步骤如下:
建立一个socket;
按要求配置socket,即将socket连接到远程主机或给socket指定一个本地协议端口;
按要求通过socket发送和接收数据;
关闭此socket。
图1、socket示例
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
开发原理:
服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生。
客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。
客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。
如果了解Unix系统的输入和输出的话,就很容易了解Socket了。
网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。
Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
三、主要仪器设备及耗材
Windows操作系统,JDK
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
ListenTCP:
import.*;
importjava.io.*;
publicclassListenTCP//监听TCP数据包的服务端程序
{
publicstaticvoidmain(String[]args)
{
ServerSocketlisten=null;//定义一个ServerScoket类型的引用
Socketsoc=null;//定义Socket的应用,用于套接字连接
Stringmessage=null;
BufferedReaderbf=null;//定义一个BufferedReader类型的读内容的引用
InputStreamReaderisr=null;//定义一个可读输入流
try{
listen=newServerSocket(10000);//创建一个监听1000端口的对象
soc=listen.accept();//当有socket连接所监听的端口时,连接上该socket
System.out.println("*******************************************");
System.out.println("serverok");
System.out.println("*******************************************");
System.out.println("");
isr=newInputStreamReader(soc.getInputStream());//创建一个来自套接字soc的可读输入流
bf=newBufferedReader(isr);//把soc的可读输入流作为参数创建一个BufferedReader
message=bf.readLine();//以每行为单位读取从客户端发来的数据
System.out.println("Socket:
"+soc);//显示出发送方的IP地址和端口号
System.out.println("Receivethemessagefrom:
"+message);//显示接收到的数据
System.out.println("");
System.out.println("*******************************************");
isr.close();//关闭输入流isr
bf.close();//关闭字符流bf
soc.close();//关闭Socket套接字
}
catch(Exceptione)//异常处理
{
System.out.println("Error:
"+e);
}
}
}
SendTCP:
import.*;
importjava.io.*;
publicclassSendTCP//发送TCP数据包的服务端程序
{
publicstaticvoidmain(String[]args)throwsIOException
{
if(args.length!
=4)
{
System.out.println("命令行的输入格式有误,请按照以下格式重新输入!
");
System.out.println("源IP地址源端口目的IP地址目的端口");
System.exit(0);
}
Stringsource_ip=args[0];
intsource_port=Integer.parseInt(args[1]);
Stringdest_ip=args[2];
intdest_port=Integer.parseInt(args[3]);
if(dest_port!
=10000)
{
System.out.println("请保持目的端口为10000!
");
System.exit(0);
}
OutputStreamos=null;//定义一个输出流
PrintStreamps=null;//定义一个可写流
BufferedReaderbf=null;//定义一个BufferedReader类型的读内容的引用
Stringmessage="Thisismyhomeworkofnetwork!
";
Socketsoc=null;//定义Socket的应用,用于套接字连接
try{
soc=newSocket(dest_ip,dest_port);
System.out.println();
bf=newBufferedReader(newInputStreamReader(System.in));//把soc的可读输入流作为参数创建一个BufferedReader
System.out.print("Pleaseinputthemessage:
");
message=bf.readLine();
os=soc.getOutputStream();/创建一个来自套接字soc的可读输出流
ps=newPrintStream(os);
ps.println(message);
bf.close();//关闭字符流bf
ps.close();//关闭可写流ps
os.close();//关闭输出流os
System.out.println();
System.out.println("***************************************************");
System.out.println("SendOK!
");
System.out.println("Themessagewassendtotheaddress:
"+dest_ip+"["+dest_port+"]");
System.out.println("***************************************************");
soc.close();
}catch(Exceptione)
{
System.out.println(e);
}
}
}
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
图2、发送数据报
图3、监听数据报
由此可知,本次实验成功。
三、实验小结、建议及体会
通过本次实验,我认识到网络中的进程是通过socket来通信的,socket就是“打开open->读写write/read—>关闭close”模式的一个实现,就是说,socket是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),同时,还编写程序实现了客户端与服务器端的通信。
实验课程名称:
计算机网络
实验项目名称
获取以太网卡的mac地址
实验成绩
实验者
张韩
专业班级
软件ZY1201
组别
同组者
实验日期
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
设计一个程序,使得能够获取本机安装的以太网卡的物理地址。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
MAC(MediaAccessControl,介质访问控制层)地址,定义了数据帧怎样在介质上进行传输。
在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。
物理寻址在此处被定义,逻辑拓扑(信号通过物理拓扑的路径)也在此处被定义。
线路控制、出错通知(不纠正)、帧的传递顺序和可选择的流量控制也在这一子层实现。
实验原理:
使用Microsoft的NetbiosAPI。
这是一套通过Winsock提供底层网络支持的命令。
实验Netbios的最大缺点是必须在系统中安装了Netbios服务。
除此之外,这种方法又快又准确。
NetbiosAPI只包括了一个函数,就叫做Netbios。
这个函数使用网络控制块(networkcontrolblock)结构作为参数,这个结构告诉函数要做什么。
其中,结构中最重要的就是ncb_command成员。
这个成员告诉Netbios该做什么。
使用32个命令来探测mac地址,它们在MSDN的定义如下:
NCBENUMWindows:
列举系统中网卡的数量。
使用此命令后,ncb_buffer成员指向由LANA_ENUM结构填充的缓冲区。
NCBASTAT:
获得每个网卡的状态
NCBRESET:
重置网卡。
网卡在接受新的NCB命令之前必须重置。
三、主要仪器设备及耗材
Windows操作系统,VC6.0
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
#include
#include
#include
#include
#include
#pragmacomment(lib,"netapi32.lib")
intgetMAC(char*mac)
{NCBncb;
typedefstruct_ASTAT_//定义结构体ASTAT,*PASTAT
{ADAPTER_STATUSadapt;
NAME_BUFFERNameBuff[30];
}ASTAT,*PASTAT;
ASTATAdapter;//定义ASTAT类的实体Adapter
typedefstruct_LANA_ENUM//定义结构体LANA_ENUM
{UCHARlength;
UCHARlana[MAX_LANA];
}LANA_ENUM;
LANA_ENUMlana_enum;//定义LANA_ENUM类的实体lana_enum
UCHARuRetCode;
memset(&ncb,0,sizeof(ncb));//取得网卡列表
memset(&lana_enum,0,sizeof(lana_enum));
ncb.ncb_command=NCBENUM;//ncb_buffer成员指向由lana_enum填充的缓冲区。
ncb.ncb_buffer=(unsignedchar*)&lana_enum;
ncb.ncb_length=sizeof(LANA_ENUM);//获取缓冲区大小
uRetCode=Netbios(&ncb);
if(uRetCode!
=NRC_GOODRET)
returnuRetCode;
for(intlana=0;lana {ncb.ncb_command=NCBRESET;//重置网卡 ncb.ncb_lana_num=lana_enum.lana[lana]; uRetCode=Netbios(&ncb); if(uRetCode==NRC_GOODRET) break; } if(uRetCode! =NRC_GOODRET) returnuRetCode; memset(&ncb,0,sizeof(ncb));//发送NCBASTAT命令,获得每个网卡的状态 ncb.ncb_command=NCBASTAT; ncb.ncb_lana_num=lana_enum.lana[0]; strcpy((char*)ncb.ncb_callname,"*"); ncb.ncb_buffer=(unsignedchar*)&Adapter; ncb.ncb_length=sizeof(Adapter);//获取缓冲区大小 uRetCode=Netbios(&ncb); if(uRetCode! =NRC_GOODRET) returnuRetCode; sprintf(mac,"%02X-%02X-%02X-%02X-%02X-%02X",//输出网卡地址 Adapter.adapt.adapter_address[0], Adapter.adapt.adapter_address[1], Adapter.adapt.adapter_address[2], Adapter.adapt.adapter_address[3], Adapter.adapt.adapter_address[4], Adapter.adapt.adapter_address[5] ); return0; } intmain(intargc,char*argv[]) {charmac[200]; getMAC(mac); printf("MACAddress: %s\n",mac); return0; } 二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等) 进入路由器设置界面(http: //192.168.1.1/),查看本地mac地址,如下图: 图1、进入路由器查看的本地mac地址 运行程序,得到本机的mac地址,如下图: 图2、运行程序后获得的mac地址 由此可知,本次实验成功! 三、实验小结、建议及体会 通过本实验,我认识到mac地址定义了数据帧怎样在介质上进行传输。 在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。 同时,使用Microsoft的NetbiosAPI进行程序的设计,并且准确获取了本地mac地址。 实验课程名称: 计算机网络 实验项目名称 Windows网络配置和 TCP/IP协议配置及TCP/IP诊断 实验成绩 实验者 张韩 专业班级 软件ZY1201 组别 同组者 实验日期 第一部分: 实验分析与设计(可加页) 一、实验内容描述(问题域描述) 在Windows系统中进行网络配置、用pingipconfig命令工具来进行网络测试、使用tracert路由跟踪命令、使用route、netstat、arp、nslookup命令查看网络状态。 安装TCP/IP协议;配置TCP/IP协议;验证TCP/IP协议是否正确配置;诊断TCP/IP协议配置的连通性;利用网络命令对网络进行简单的操作. 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) (1)TCP/IP配置 (2)ping命令 (3)ipconfig命令 (4)arp命令 (5)route命令 (6)tracert命令 (7)nslookup命令 (8)netstat命令 三、主要仪器设备及耗材 已安装了Win2000或Win XP操作系统的计算机,且计算机已接入网络。 第二部分: 实验调试与结果分析(可加页) 1、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) ① 安装配置TCP/IP协议(Windows XP) 1. 右击“网上邻居”图标,从弹出菜单中选择“属性”选项,打开“网络连接”窗口。 2. 右击“本地连接”图标,从弹出菜单中选择“属性”选项,打开“本地连接属性”对话框,打开“常规”选项卡。 3. 如果在“此连接使用下列项目: ”列表框中未出现“Internet协议(TCP/IP)”,则点击“安装→协议→添加→Internet协议(TCP/IP)→确定”,此时列表框中出现“Internet协议(TCP/IP)”,表明TCP/IP协议已成功安装。 4. 选择“Internet协议(TCP/IP)”,单击“属性”按钮,打开“Internet协议(TCP/IP)属性”对话框,根据计算机所在网络的具体情况,决定自动获得IP地址或指定IP地址。 若选中“自动获得IP地址”,计算机将会从DHCP服务器自动获取IP地址、子网掩码等信息。 若局域网中没有专用的服务器为计算机分配IP地址,或不想通过DHCP服务器分配IP地址,则需要手工输入IP地址。 5. 本实验要求手工输入IP地址。 IP地址在同一个网络中必须是唯一的。 在局域网内部一般使用非路由地址。 非路由地址不会被Internet分配,专用于内部局域网使用。 它们从不会被路由。 ② TCP/IP诊断 1. ping 环回地址: 验证是否已安装TCP/IP协议及配置是否正确。 点击“开始→所有程序→附件→命令提示符”,出现“命令提示符”窗口,在DOS下输入“ping 127.0.0.1”回车后,显示“Reply from 127.0.0.1: bytes=32 time<10ms TTL=128”,则表明TCP/IP协议配置正确。 2. ping默认网关或一个本地计算机的IP地址: 验证TCP/IP协议是否被正确绑定在网卡上,验证能否与本地网络上的其它计算机通信。 在DOS下输入“ping 192.168.0.XX”回车后,显示“Reply from 192.168.0.XX: bytes=32 time<10ms TTL=128”,则表明协议、网卡均无问题,默认网关运行正常,网络连接正常。 3. ping远程主机的IP地址(或域名): 验证能否通过路由通信。 在DOS下运行“ping ”,显示“Reply from 64.233.189.104: ……”,则表明远程连接正常。 ③ 查看DNS、IP、MAC 1. 在DOS下运行“ipconfig/all”,记录显示内容,包括: “Physical Address, IP Address, Subnet Mask, Default Gateway, DNS Servers”。 2. 在DOS下运行“nslookup 202.118.176.2”,记录该IP地址的域名。 从显示内容分析配置该IP地址的计算机为校园网用户提供何种服务? 3. 在DOS下运行“nslookup 202.118.176.8”,记录该IP地址的域名。 从域名分析配置该IP地址的计算机为校园网用户提供何种服务? 4. 在DOS下运行“nslookup ”或运行“nslookup 你所喜欢网站的域名”,观察显示内容,记录该域名的IP地址。 5. 注: nslookup是一个监测网络中DNS服务器是否能正确实现域名解析的命令行工具。 2和3中的两个IP地址为当前计算机用ipconfig/all命令查找到的DNS服务器的IP地址。 ④ 查看当前 ARP 缓存表(了解网关、ARP协议的作用) 1. 在DOS下运行“arp -d”命令清除ARP表 2. 在DOS下运行“ping 192.168.0.8”,然后运行“arp -a”,记录显示的ARP缓存表中的IP与MAC 。 3. 在DOS下运行“arp -d”命令清除ARP表 4. 在DOS下运行“ping ”,然后运行“arp -a”,记录显示的ARP缓存表中的IP与MAC 。 注意观察网关所起的作用。 5. 在DOS下运行“arp -d”命令清除ARP表 6. 在DOS下运行“ping ”,然后运行“arp -a”,记录显示的ARP缓存表中的IP与MAC 。 注意观察ARP协议的作用范围。 ⑤ 查看路由跟踪情况 在DOS下运行“tracert ”,记录到达目的地需要跨越的每个路由器或网关。 2、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等) 运行ipconfig命令,可显示本地计算机(即运行该程序的计算机)所有网卡的IP地址配置,以及网络连接的诊断。 (1)运行cmdping127.0.0.1如下所示: 说明本机的网卡正常可用; (2)运行cmdping172.16.133.254(ping网关)如下所示: 说明本机连接网关的网络正常可用;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 实验 lastest