百科问答小站 logo
百科问答小站 font logo



IP地址和MAC地址的区别和联系是什么? 第1页

  

user avatar   mai-wen-xue-67 网友的相关建议: 
      

其实这个问题可以看一两张图就能明白的。


封裝(Encapsulation)是一種通訊協定的設計方法,將網路功能抽象出來,對高層功能隱藏底層功能的資訊。封裝是各種網路協定的基本實作方法,包括OSI模型與TCP/IP都應用了封裝概念在其中。

逐层向下传输, 在封装过程中,每一层都通过添加头和可选的尾来建立一个协议数据单元(PDU),这两部分都包含来自上一层的PDU的控制信息。

例如,在IP协议中,网页的内容被HTTP头封装,然后是TCP头、IP头,然后是帧头和帧尾。“帧”作为比特流被转发到目的节点,逐层向上传输,解包(即“去封装”)成各自的PDU,并由接收节点在每一层进行解释。






开放式系统互联模型(Open System Interconnection Model,OSI模型)是一種概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定義於ISO/IEC 7498-1。该模型将通信系统中的数据流划分为七个层,从跨通信介质传输位的物理实现到分布式应用程序数据的最高层表示。每个中间层为其上一层提供功能,其自身功能则由其下一层提供。功能的类别通过标准的通信协议在软件中实现。开放式系统互联模型的开发始于上世纪70年代后期,用以支持各种计算机联网方法的出现。在上世纪80年代,该模型成为国际标准化组织(ISO)开放系统互连小组的工作产品。


       第7層 應用層 Application Layer)提供為應用軟件而設計的接口,以設定與另一應用軟件之間的通訊。例如:HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3等。  第6層 表示层 Presentation Layer)把數據轉換為能與接收者的系統格式兼容並適合傳輸的格式。  第5層 會議層 Session Layer)負責在數據傳輸中設定和維護计算机網絡中兩台计算机之間的通訊連接。  第4層 傳輸層 Transport Layer)把傳輸表頭(TH)加至數據以形成數據包。傳輸表頭包含了所使用的協定等傳送資訊。例如:傳輸控制協定(TCP)等。  第3層 網路層 Network Layer)決定數據的路徑選擇和轉寄,将網絡表頭(NH)加至數據包,以形成封包。網絡表頭包含了網絡資料。例如:互聯網協定(IP)等。  第2層 数据链路层 Data Link Layer)負責網絡尋址、錯誤偵測和改錯。當表頭和表尾被加至數據包時,會形成資訊框(Data Frame)。數據鏈表頭(DLH)是包含了實體位址和錯誤偵測及改錯的方法。數據鏈表尾(DLT)是一串指示數據包末端的字符串。例如乙太網、無線局域网(Wi-Fi)和通用分組無線服務(GPRS)等。 分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。  第1層 實體層 Physical Layer)在局部區域網絡上傳送数据帧(Data Frame),它負責管理電腦通訊設備和網絡媒體之間的互通。包括了針腳、電壓、線纜規範、集線器、中繼器、網卡、主機介面卡等。     



参考文献


user avatar   s.invalid 网友的相关建议: 
      

没有任何联系。


MAC是Media Access Control Address的缩写,是大部分IEEE 802网络设备使用的物理地址格式。这个地址用于物理上直接可达的网络内的网络设备之间的通讯,在ISO-OSI七层模型中位于第二层数据链路层。


在使用CSMA-CD协议的以太网中,打个比方的话,这个地址的作用是,网卡A大喊网卡B的名字(MAC地址),其它网卡要假装没听到。


注意这个“假装没听到”:只要你打开了网卡的混杂模式(Promiscuous Mode),你就可以收到局域网上传输的所有数据包了。

处于这种状态的计算机被称为“sniffer”,这是一种侦测局域网故障或者盗取内网数据的常用技术,因此很多公司严厉禁止员工把自己的网卡设置到混杂模式。


总之,MAC用于连接在同一个局域网的网卡间的直接通讯;通讯模式是用带着目标MAC地址的数据报文在网络中广播,只有地址正确的那个网卡才会接收这个报文,其它网卡不予理睬(设置为混杂模式除外)。


IP地址是网络层地址,它属于ISO-OSI七层协议的第三层网络层。


IP地址的设计重点在于路由,也就是要考虑如何规划路径才能把报文投递给目标设备。

打个比方的话,IP地址类似于邮政编码,隐含了国家、地区、城市、街道等信息;携带IP地址信息的报文到了路由器之后,路由器要完成分拣工作、按照南来北往东投西递等不同方向给IP不同的报文分类、投递到正确的端口——比如,这一批邮件是发往X省的,都给997号班车;另一批邮件是发往Y省的,都给996号班车,等等。

等到了X省,那里的分拣中心(路由器)要进一步分拣,这一批到YP地区,走8235号班车;那一批到YY地区,走8233号班车,依此类推。


最终,等邮件到了你所在小区(局域网),IP地址就无能为力了。它只管分拣(路由)这一层,不管数据链路层。


这时候怎么办呢?

转交给MAC地址,让它投递给正确的网卡。


因此,IP协议需要数据链路层协议承载才能工作,单靠它是完成不了消息投递工作的。

但是,互联网上的IP报文并不携带MAC地址啊?它是投递到小区了,怎么找到正确的网卡呢?


这时就需要ARP协议来帮忙了。

ARP协议在你家/你公司的出口路由器里面维护一张ARP表,记录了本地局域网里面每一块网卡的MAC地址和IP地址的对应关系;互联网过来个报文,一看IP地址是202.11.123.13,ARP表一查,MAC地址FE.AC.12.34.56.78,于是在外面包装一层,打包成以太网数据,局域网一丢,完事。


注意,这里是在IP报文外面附加个以太网报头,并不影响IP报文本身。

换句话说,IP并不在乎自己的承载协议是不是以太网协议、也不在乎物理地址是不是MAC地址——所以才说IP地址和MAC地址毫无关系——你完全可以用另外一套地址协议取代以太网/MAC地址。只要实现个自己特有的ARP体系即可。

举例来说,你自己玩无线电,自己定了个地址协议,用甲、乙、丙、丁标记不同的接收机(或者用载波频率90MHZ、94MHZ、96MHZ、104MHZ区分也没问题);那么只要你做一个甲、乙、丙、丁和IP的对应表、正确实现了相关地址的翻译工作,这些接收机就可以通过互联网访问,对IP报文没有丝毫影响。


最后,额外提一提NAT。


我们用的PC、手机往往有一个局域网ip地址,一般是192.168.0.*;这个地址并不能用于互联网访问。它和真实的互联网地址之间可以通过NAT协议相互转换。

比如,路由器的互联网地址是202.10.11.123,你的局域网ip地址是192.168.1.16;当你访问互联网时,路由器会把你的IP地址替换成202.10.11.123然后才发送到互联网;互联网服务器回应你时,也会使用202.10.11.123这个地址(也就是你的路由器的互联网地址)。

然后,你的路由器会维护一个对外通信端口和内部ip的对应表。比如,它把你的报文通过端口14566和互联网服务器通讯;那么当端口14566端口收到报文时,它就会把ip地址202.10.11.123替换成你的局域网ip 192.168.1.16,然后再查ARP表、打包成以太网报文并最终完成通信。

这个过程,就是所谓的NAT(网络地址转换)。


如果你所在的公司很大的话,路由器可能仅仅完成局域网IP的翻译工作,报文仍然需要借助路由协议投递到你所在部门的子网,然后再打包成以太网报文,这才能投递给你。


注意,在公司很大这个场景下,不同部门的子网可能仍然是通过以太网协议接入的;因此,“报文投递到正确子网”这一步也要打包成以太网报文、投递给子网网关(此时用的MAC地址是子网网关的MAC);然后子网网关从中解出IP报文、把以太网包头丢弃,之后再次用你的MAC打包成以太网包,这才能投递给你。

其中,公司主网关使用部门子网网关MAC打包、投递这一步,对你来说是不可见的——甚至于,这一步可能在互联网上就要执行十多次(没错,你用trace router追踪时,看到的每一跳可能都对应着一个重新打包-解包过程)。


由此也可见,IP地址和MAC地址其实是毫无瓜葛的。两者仅仅是在传输过程中偶遇、旋即分开而已——那仅仅是报文投递过程中的一个实现细节罢了。


网络上各种设备既是分散在不同位置、不同岗位上的、职责各不相同的一堆个体,又是彼此联系、彼此合作的一个整体。


因此,学网络,一定要搞明白不同阶段、不同位置报文的投递原理以及地址转换/翻译的具体机制;同时还要搞明白每个设备的职责以及在报文投递链上的作用和位置;千万不要胶柱鼓瑟,死板的记忆一堆散乱的名词——那只会越学越晕。


user avatar   Ivony 网友的相关建议: 
      

一个三层一个二层

一个转发一个直连


user avatar   windroidxie 网友的相关建议: 
      

看了题主的描述,首先纠正一下几个比较模糊的概念:“MAC地址表储存IP地址”,MAC地址表是二层设备中存储“MAC地址”和“转发端口”映射关系的表,并不直接存储IP地址。“路由器根据MAC地址来选择路由进行数据发送”,对于三层设备的三层端口来说,通常是基于报文目的IP地址,对照自身的路由表来选择转发路径,只有二层设备基于“MAC地址”进行数据帧的转发。

这个问题展开了说比较复杂,但是只考虑基本原理在下觉得似乎也没有那么麻烦,一句话概括就是“二层基于MAC地址转发数据帧,三层基于IP地址转发报文

MAC地址是烧录在网卡或者接口上的物理地址,具有二层意义和全球唯一性,一般不能被改变。IP地址是网络中的主机或者三层接口在网络中的逻辑地址,在同一个网络内具有唯一性

IP地址和MAC地址的关♂系要分在二层通信和在三层通信两个部分来说明(其实本质上是一样的)

二层以下数据帧的交换一般通过交换机或其他二层设备,需要用到主机间的MAC地址,但是通常主机网卡配置的是IP地址,此时就需要借助“ARP协议”将目标主机的IP地址转换为对应主机的MAC地址才能进行通信,完整过程就是主机依靠IP-MAC的对应关系封装数据帧,二层设备在收到含有目标MAC地址的数据帧后,查看自己的“MAC地址表”,便知道这个MAC地址该从自己的哪个端口发送出去。在windows下可以使用arp -a查看这种对应关系,可以在模拟器上轻松展现整个过程。

当PC0和PC1能正常通信时,在PC0上查看ARP表如下:

可以看出,到目标主机的IP地址映射为对应的MAC地址了,此时PC0就可以将目标主机的IP地址转换为对应的MAC地址封装在数据帧中发给交换机。

交换机有那么多端口,它怎么就知道你发送的这个数据帧的目的地址该从自己的哪个端口转发出去呢?因此,交换机自己还要维护一张“MAC地址表”,用来记录目的MAC地址-端口的映射关系,如下图

现在交换机看到0004.9a2e,3ad1的MAC,就知道要从F0/2把数据帧发送出去啦O(∩_∩)O二层数据帧的通信基本原理就是这些,当然这两张表是如何生成的就不是这个话题的讨论范围了,具体可以参考ARP协议的工作过程和交换机的转发原理。

二层讨论的都是同一个网络内(IP地址在同一网段)数据的交换,“IP地址和MAC地址的关系很明确”:虽然主机都配置了IP,但从上面的例子可以看出,IP地址实际并不起作用,在生成数据帧的时候就转化为MAC地址了,并不参与实际的通信过程。但是如果要通信的主机不在一个网络内,这时IP地址才真正发挥它的作用。

IP数据包在三层网络中的寻址通过路由器和各种路由协议来完成,在这个过程中,IP地址和MAC地址又有什么关系呢?

看下面的拓扑

现在路由器的两端分别为两个网络。数据想要从PC0到PC1,实际上经历了两个过程,先从主机到路由器的F0/0,再从F1/0口到PC1,单独看每个过程,由于在同一个网段内,所以就和上一种情况是一致的,唯一不同的是此时我们必须配置网关。我们仿照刚才的过程看看PC0的ARP表是什么样的

可以看出,数据想从PC0到路由器,依然必须经历从IP地址到MAC地址的转换过程,而这个网关的MAC恰好就是F0/0口的MAC,再看交换机1的MAC地址表:

恰好也有对应的端口,此时交换机就知道要把数据从F0/24发送出去,到这里起作用的还是MAC地址,那IP地址到底到哪才发挥真正的作用呢?我们继续往下看,现在查看路由器的路由表:

路由器收到数据包后会查看数据包的目的IP字段,我们是发送到192.168.1.1这台主机,看路由表发现正好有这个条目,到192.168.1.0/24要从F1/0这个端口发送出去。

后面的过程就不再叙述了和前面基本一致了。

也就是说,虽然数据包发送时包含了完整的TCP/IP四层信息,但是IP地址只在网络间寻址才起作用,在同一个网络内,IP地址在发送端被转化为MAC地址进行寻址,而这种转化和交换的对应关系,依赖于ARP协议和MAC地址表。

对于上面的例子来说,在PC0到路由器的F0/0之间的网络和F1/0到PC1之间网络,都是MAC地址负责寻址,IP地址只在负责连接两个不同网段的路由器上才发挥指导作用。




  

相关话题

  暗网用通俗的说法讲是什么?为什么有人说暗网上的视频都很变态? 
  Linux怎么配IP? 
  网线是否经过了空气开关? 
  如何看待王者荣耀里不买推荐的迅游加速器就会故意的造成网络延迟和卡顿? 
  如何理解子网掩码? 
  为什么别人说rt-ax89x这款路由不算好? 
  求推荐看tcp/ip源码的书籍? 
  什么叫做学计算机有天赋? 
  我国 5G 终端连接数达 2.8 亿,占全球 80% 以上,具有哪些实际意义? 
  你工作中最推荐的 C/C++ 程序库有哪些,为什么? 

前一个讨论
Hi-Fi (高保真)设备烧钱吗?
下一个讨论
在美国一顿饭9美元只能吃这种盒饭吗?





© 2024-06-03 - tinynew.org. All Rights Reserved.
© 2024-06-03 - tinynew.org. 保留所有权利