解析IP地址与MAC地址

一、IP地址

  对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址。IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式。IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类、B类、C类等)的不同而不同。网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机。一个IP地址使得将来自源地址的数据通过路由而传送到目的地址变为可能。

  二、MAC地址

  对于MAC地址,由于我们不直接和它接触,所以大家不一定很熟悉。在OSI(Open System Interconnection,开放系统互连)7层网络协议(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)参考模型中,第二层为数据链路层(Data Link)。它包含两个子层,上一层是逻辑链路控制(LLC:Logical Link Control),下一层即是我们前面所提到的MAC(Media Access Control)层,即介质访问控制层。所谓介质(Media),是指传输信号所通过的多种物理环境。常用网络介质包括电缆(如:双绞线,同轴电缆,光纤),还有微波、激光、红外线等,有时也称介质为物理介质。MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。这个地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到网络的何处,它都有相同的MAC地址,MAC地址一般不可改变,不能由用户自己设定。

  三、MAC地址的长度、表示方法、分配方法及其唯一性

  MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进制数08:00:20代表网络硬件制造商的编号,它由IEEE(Istitute of Electrical and Electronics Engineers,电气与电子工程师协会)分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个网络产品(如网卡)的系列号。每个网络制造商必须确保它所制造的每个以太网设备都具有相同的前三字节以及不同的后三个字节。这样就可保证世界上每个以太网设备都具有唯一的MAC地址

  四、IP地址与MAC地址在互连网中的作用

  既然每个以太网设备在出厂时都有一个唯一的MAC地址了,那为什么还需要为每台主机再分配一个IP地址呢?或者说为什么每台主机都分配唯一的IP地址了,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC地址呢?主要原因有以下几点:(1)IP地址的分配是根据网络的拓朴结构,而不是根据谁制造了网络设置。若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓朴位置基础上,这种方案是不可行的。(2)当存在一个附加层的地址寻址时,设备更易于移动和维修。例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。(3)无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。下面我们来通过一个例子看看IP地址和MAC地址是怎样结合来传送数据包的。

假设网络上要将一个数据包(名为PAC)由北京的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)发送到华盛顿的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,服务器等等),我们假定在传输过程中要经过C1、C2、C3(其MAC地址分别为M1,M2,M3)三个节点。A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,然后在其数据包中封装(Encapsulation)这些地址:IP_A、IP_B,MAC_A和M1。当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2,M3),直至目的地址MAC_B。


  综合上面所述,我们可以归纳出IP地址和MAC地址相同点是它们都唯一,不同的特点主要有:

  1. 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。

  2. 长度不同。IP地址为32位,MAC地址为48位。

  3. 分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。

  4. 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

转载于:https://www.cnblogs.com/Akagi201/archive/2012/03/26/2418484.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

梯度算法的matlab程序,基于MATLAB的梯度法源代码

话不多说,直接上干货。这是基于MATLAB的源代码,目标函数我选择了一个二维函数,根据自己需求,更改目标函数,初始迭代点以及收敛精度第一部分:目标函数 根据自己需求,更改目标函数!&…

UNP Chapter 22 - 信号驱动I/O

22.1. 概述 信号驱动是指当某个描述字上发生了某个事件时,让内核通知进程。 这里描述的信号驱动不是真正的异步I/O。 第15章描述的非阻塞I/O同样不是异步I/O。在非阻塞I/O中,启动I/O操作后内核并不像真正的异步I/O那样立即返回,它只有在进程非…

break在matlab中的用法,求助这个算法运行的时候说错误: BREAK只能在FOR或WHile使用...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼[filenamel,pathname,filterindex]uigetfile(*.*,选择图像,请选择图像)I imread(num2str(filenamel));disp(请选择添加噪声类型);disp(椒盐噪声 --1);disp(高斯噪声 --2);disp(泊松噪声 --3);disp(斑点噪声 --4);Ainput(请输入选项…

matlab双重差分模型,MATLAB中ARMA模型预测差分问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是我MATLAB预测风速的程序,程序不是我自己写的,我也是拿来参考自己的毕业作业的.每条程序旁的中文是我自己的理解,我也不知道对不对。程序1Xload(C:\Users\asus\Desktop\1-3.txt); 这是我的历史…

[转]AS语言基础

┏━━━━━━━━━━━━━━━━━━┓ ┃ 第一部分:ActionScript 3 语言基础 ┃ ┗━━━━━━━━━━━━━━━━━━┛ 第2章 ActionScript 3 语言基本元素 2.1.2 数据类型概述 简单数据类型 Boolean(布尔)、int(有符整型)、Number(浮点)、String(字符…

php strpos与strrpos,PHP开发之 strpos stripos strrpos strripos的区别

前言在日常PHP开发中strpos stripos strrpos strripos这四个函数是会经常用到的,但是你又掌握了多少呢?在这里将着中就这4个函数做一个详细的解析。正文stripos — 查找字符串首次出现的位置(不区分大小写),应使用 运算符来测试此函数的返回值&#xff…

jQuery选择元素

1、jQuery包装的CSS选择器 $(" p a.speciaClass") 2、子选择器(个人简单的认为:就是在jQuery选择器里面加上了一个">"操作符,再具有一新的特性) $("ul#myList>li>a").fadeOut(); 3、…

php能否缓存,PHP缓存实现

PHP缓存实现classCacheExceptionextendsException {}/*** 缓存抽象类*/abstractclassCache_Abstract {/*** 读缓存变量** param string $key 缓存下标* return mixed*/abstractpublicfunctionfetch($key);/*** 缓存变量** param string $key 缓存变量下标* param string $value…

安装SQL SERVER 2008时出现了SQL SERVER 2005 Express Tool Installed 的错误

安装SQL SERVER 2008时出现了SQL SERVER 2005 Express Tool Installed 的错误,这种情况一般出现在系统中已安装SQL Server 2005 的情况,其实不需要去卸载什么,只要在注册表中修改一个值即可。 HKLM\Software\Microsoft\Microsoft SQL Server\…

凤凰网php,凤凰网某应用sql注入漏洞_MySQL

凤凰网某应用sql注入漏洞凤凰新闻手机app的一个api接口过滤不严,存在注入漏洞。注入点:http://api.iapps.ifeng.com/news/upgrade.json?gv4.2.0&proidifengnews&osandroid_19&screen720x1206&publishid2011&zip1,受影响…

Multiple annotations found at this line: ---关于android string.xml %问题

本文来源于:hunter的博客(http://my.oschina.net/hunterXue/blog/15107) Multiple annotations found at this line: - error: Multiple substitutions specified in non-positional format; did you mean to add the formatted"fals…

南京php基础学习,南京玄武区php培训有哪些(学习PHP的优点有哪些)

南京玄武区php培训有哪些,进行选择南京php培训的时候,肯定要知道php培训的学习周期,php乱码怎么解决,学习PHP的优点有哪些,php的性质有哪些。php培训的学习周期一般都是四到五个月和Java培训周期差不多,不过…

php额拍戏,像这种会演戏的演员,给我焊在剧组365天拍戏可以吗?

最近芭姐疯狂 get 到董子健的演技,每晚换台一边《大江大河 2》一边《流金岁月》交叉着看,太直观了!《大江大河》中,董子健饰演的杨巡虽然戏份不及宋运辉多,但在有限的笔墨中,董子健凭借到位的演技&#xff…

照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象

这几天看到亚瑟boy的技术连载,也试着做了下带滤镜特效的照相机,效果也出来了,但是发现添加滤镜特效后的预览窗口卡屏现象很严重,于是自己索性试着尝试修改,在亚瑟和其他网友的代码中基本上都是对于照相机data视频流先进…

oracle带时间查询语句,请教oracle按时间分组查询语句的写法

请教oracle按时间分组查询语句的写法最近由于要做报表,在一张表中有一个字段为date类型,现在想要在一段时间内(比如一年)能够按照时间段分组查询记录总和,比如我要能够查询2007年到2009年间按月份分组记录条数统计,网上提示用 gro…

C语言中extern修饰符的用法

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。0. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v&…

oracle linux6 u盘安装,U盘安装RHEL6

1)烧录ISO镜像用软碟通写入硬盘镜像rhel-server-6.5-x86_64-boot.iso,然后将rhel-server-6.2-x86_64-dvd.iso复制到U盘根目录备注:如果是烧录DVD那么就直接烧rhel-server-6.2-x86_64-dvd.iso即可,U盘安装linux不注意此处会发生找不到image错误…

ns2 仿真简介

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使…

oracle 邮件过程,oracle 发邮件 存储过程

CREATE OR REPLACE PROCEDURE send_mail(p_recipient VARCHAR2, -- 邮件接收人p_subject VARCHAR2, -- 邮件标题p_message VARCHAR2 -- 邮件正文)IS--下面四个变量请根据实际邮件服务器进行赋值v_mailhost VARCHAR2(30) : ‘smtp.cheyipai.com‘; --SMTP服务器地址v_u…

获得当前系统信息

1:直接调用函数 str 24 ComName; ; ComNameappl.company().ext();//当前公司ID curUserid();//当前用户iD systemDateget();//当前时间 Time2Str(timenow(),1,2);//时间转换函数 curuserid()//当前用户 2,使用Session对象 session xSession; ; xSessionn…