实验6实现MAC地址获取.doc_第1页
实验6实现MAC地址获取.doc_第2页
实验6实现MAC地址获取.doc_第3页
实验6实现MAC地址获取.doc_第4页
全文预览已结束

下载本文档

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

文档简介

学生学号 10109281王体方10109282 王雁飞实验课成绩杭州电子科技大学学 生 实 验 报 告 书实验课程名称 计算机网络 实验六 开 课 学 院 软件工程学院 指导老师姓名 谢红标 学 生 姓 名 王体方 王雁飞 学生专业班级 软件2班 2011 2012 学年 第 二 学期实验课程名称: 计算机网络 实验项目名称MAC地址获取编程实现实验成绩实验者10109281王体方10109282 王雁飞专业班级软件2班实验日期12年5月11日第一部分:实验分析与设计一、实验内容描述(问题域描述)1、 实验目的 1.1了解以太网帧的构成,了解各个字段的含义 1.2能够识别不同的MAC地址,并理解MAC地址的作用2、 实验要求 编程实现获取本地网卡MAC地址(语言自选,附源代码)二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等)1、 实验原理 MAC地址,或称为 MAC位址、硬件地址,用来定义网络设备的位置,由48比特长,12位的16进制数字组成,0到23位是厂商向IETF等机构申请用来标识厂商的代码,也称为“编制上唯一的标识符”(Organizationally Unique Identifier)。是识别LAN(局域网)结点的标志。地址的24到47位由厂商自行分派,是各个厂商制造的所有网卡的一个唯一编号。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC位址。因此一个网卡会有一个全球唯一固定的MAC地址,但可对应多个IP地址。第40位是组播地址标志位,MAC(Medium/MediaAccess Control, 介质访问控制)MAC地址是烧录在NetworkInterfaceCard(网卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特/bit长(6字节/byte,1byte=8bits),16进制的数字组成.0-23位叫做组织唯一标志符(organizationally unique,是识别LAN(局域网)节点的标识。24-47位是由厂家自己分配.其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。 也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,著名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(除了管这个外还管别的)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。1、NCB :Network Control Block:是一个用来存放命令结构体, Netbios函数的参数就是NCB结构体指针。2、使用NCB和Netbios时要包含头文件 #include #include 2、 实验步骤 请运行VC+,首先需要在vc+ 工程设置链接,对象/库模块中加入netapi32.lib。然后新建一个工程,接着按下文输入代码,并请参见其中的注释:#include #include #includevoid main()char mac200; /用来存放MAC地址NCB ncb; /存放命令ADAPTER_STATUS Adapter; / 定义一个存放返回网卡信息的变量 LANA_ENUM lana_enum; /定义可用的网卡 UCHAR uRetCode; / Netbios命令的返回值memset(&ncb, 0, sizeof(ncb); memset(&lana_enum, 0, sizeof(lana_enum); /初始化ncb.ncb_command = NCBENUM; / NCBENUM为枚举网卡命令ncb.ncb_buffer = (unsigned char *)&lana_enum; /可用的网卡存储在lana_enumncb.ncb_length = sizeof(LANA_ENUM); uRetCode = Netbios(&ncb); /发送Netbios命令for(int lana=0; lanalana_enum.length; lana+) ncb.ncb_command = NCBRESET; / 对选定的网卡发送一个NCBRESET命/令,以便进行初始化 ncb.ncb_lana_num = lana_enum.lana0; / 指定网卡号uRetCode = Netbios(&ncb); if(uRetCode = NRC_GOODRET) /找到一个可用的网卡跳出循环break; memset(&ncb, 0, sizeof(ncb); ncb.ncb_command = NCBASTAT; /获得网卡状态的命令 ncb.ncb_lana_num = lana_enum.lana0;strcpy(char*)ncb.ncb_callname, *); ncb.ncb_buffer = (unsigned char *)&Adapter;/将网卡的信息赋值给/ADAPTER_STATUS变量ncb.ncb_length = sizeof(Adapter);uRetCode = Netbios(&ncb); sprintf(mac,%02X-%02X-%02X-%02X-%02X-%02X,Adapter.adapter_address0,Adapter.adapter_address1,Adapter.adapter_address2,Adapte

温馨提示

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

评论

0/150

提交评论