目录
一、MAC地址和IP地址以及ARP协议
1.MAC地址:
单播MAC地址:
广播MAC地址:
多播MAC地址:
2.IP地址:
3.IP地址和MAC地址:
1.什么情况下使用?
2.IP地址和MAC地址填写位置?
3.数据包转发过程中IP地址和MAC地址是怎么变化的?
ARP协议:
二、集线器和交换机
集线器:
交换机:
对比:
使用集线器的共享总线型以太网(共享式以太网)和使用交换机的交换式以太网(交换式以太网):
发送单播帧的情况:
发送广播帧的情况:
多台主机同时向一台主机发送单播帧的情况:
仅使用集线器扩展以太网和仅使用交换机扩展以太网:
发送单播帧的情况:
发送广播帧的情况:
多台主机同时发送帧的情况:
多台主机向与自己在同一个局域网内的目的主机发送帧:
多台主机发送单播帧,目的主机和一些主机在同一个网络,和另外一些不在同一个网络:
如果是将集线器和交换机结合在一起扩展的以太网呢?
一、MAC地址和IP地址以及ARP协议
注意:IP地址和ARP协议属于网络层的范畴,但是因为都与MAC地址有关系,所以放在一起讨论。
1.MAC地址:
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机必须有一个唯一的标识,即一个数据链路层的地址。
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。这类地址即MAC地址。MAC地址一般还被称为硬件地址或物理地址。严格上来说,MAC地址是对网络上各接口的唯一标识。而不是对网络上各适配器的唯一标识。比如:交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。
单播MAC地址:
目的地址字段即为目的主机的MAC地址。
目的主机接受,其余主机收到后丢弃。
广播MAC地址:
目的地址字段为FF-FF-FF-FF-FF-FF。
在该信道的主机都能接受。
多播MAC地址:
如果帧的从左往右数第一个字节的后半字节(或者该字节的最后一位为1)不能整除2(即1,3,5,7,9,B,D,F),那么该地址就为多播地址。
比如:07-E0-12-F6-2A-D8就为多播地址。
多播组列表中有该地址的主机就会接受,其余主机丢弃。
2.IP地址:
IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:网络编号(标识因特网上的网络),主机编号(标识同一网络上的不同主机或路由器各接口)。
在第一章的时候我们有提到过,互连网是多个计算机网络互连而成的网络,每个计算机网络就简称为网络。而且之前也说过,网络层就是为了解决分组在多个网络之间传输的问题。那么我们现在要找到一个主机,肯定就得先找到它所在的网络,再在网络里面找主机。
因特网中不同网络的网络编号必须各不相同。
3.IP地址和MAC地址:
1.什么情况下使用?
如果只是一个单独的网络,不接入因特网,可以只使用MAC地址。
如果网络需要接入因特网,那么IP地址和MAC地址都需要使用。
2.IP地址和MAC地址填写位置?
IP地址在网络层协议首部填写。 MAC地址在数据链路层的协议首部(即帧头)填写。
3.数据包转发过程中IP地址和MAC地址是怎么变化的?
在数据包转发过程中,源IP地址和目的IP地址保持不变。源MAC地址和目的MAC地址逐个链路或逐个网络改变。
就好像快递,你在网上查看物流信息时,快递的物流信息就像MAC地址,不停地变化。但是快递的发件地址和收件地址一直没变,就像IP地址一样。
ARP协议:
地址解析协议ARP就是通过IP地址找到MAC地址。实际上,每个主机都有一个ARP高速缓存表。该表中记录IP地址与MAC地址之间的关系。
当一个主机A想要给另外一个主机B发送数据包时,会先在自己的ARP高速缓存表里面查看是否有主机B的IP地址所对应的MAC地址。
如果没有,A就会发送一个ARP请求报文(广播),该报文封装在MAC帧中,目的地址字段为广播帧的目的地址字段,即FF-FF-FF-FF-FF-FF。报文中有A自己的MAC地址和IP地址以及目的主机B的IP地址,以此来寻找目的主机的MAC地址。
其他主机接收到该广播帧之后,对其进行解析,判断询问的IP地址是否为自己的IP地址。
如果是,就需要进行响应。 假设现在B收到了该帧,发现询问的IP地址就是自己的IP地址。首先将请求报文中的A的IP地址和MAC地址记录到自己的ARP高速缓存表中,然后发送ARP响应报文,以告知自己的MAC地址。ARP响应报文被封装在单播帧中,目的地址字段为主机A的MAC地址,报文中有主机B自己的MAC地址和IP地址。其余主机收到后,检测到目的地址字段和自己的MAC地址不匹配,直接进行丢弃。
主机A收到响应报文后,将B的MAC地址和IP地址记录在自己的ARP缓存表中。缓存表中的类型分为动态和静态两种。
动态:
主机自动获取,生命周期默认为两分钟。生命周期结束后记录自动删除。
静态:
记录是由用户或者网络维护人员手动配置的。
注意:ARP协议只能在一段链路上或一个网络中使用,但不能跨网络使用。
如图:
主机A向B发送数据包,如果要使用ARP协议,那么实际ARP协议是逐链路进行的。
二、集线器和交换机
集线器:
集线器只工作在物理层。
使用集线器的以太网在逻辑上仍是一个总线网。集线器的每个接口仅简单转发比特,不进行碰撞检测。
集线器收到帧后,通过其他接口转发出去,其余主机全部都能接收到。
交换机:
交换机工作在数据链路层(也包括物理层)。
以太网交换机通常有多个接口,每个接口都可以直接与一个主机或另一台以太网交换机相连,一般都工作在全双工方式。
以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时进行通信,无碰撞。
交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发该帧。
以太网交换机是一种即插即用设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的。
对比:
为了讨论方便,忽略ARP过程,并且交换机的帧交换表已经学习好了。
使用集线器的共享总线型以太网(共享式以太网)和使用交换机的交换式以太网(交换式以太网):
发送单播帧的情况:
对于共享式以太网,单播帧会传播到总线上的其他各主机,各主机的网卡根据帧的目的MAC地址决定是否接受该帧。
对于交换式以太网,交换机根据帧的MAC地址以及自身的帧交换表,将帧转发给目的主机。
发送广播帧的情况:
对于共享式以太网,广播帧会传播到总线上的其他各主机。各主机的网卡判断帧的目的MAC地址是广播地址,所以就会接受该帧。
对于交换式以太网,交换机检测到该帧为广播帧后,于是从除该帧进入的接口外的其余接口转发该帧,网络中除了源主机外的其余主机收到帧后接受该帧。
由此可见,共享式以太网的各主机和交换式以太网的各主机在各自的以太网里都属于同一个广播域。
多台主机同时向一台主机发送单播帧的情况:
在进入讨论之前想想,之间讲述的如果在一条总线上多台主机同时发送帧会发生什么情况?
会发生碰撞,所以在这里就是讨论两种以太网在碰撞方面是否有区别。
对于共享式以太网,因为是总线型,自然会发生碰撞。碰撞后产生碰撞的帧会传到总线上的各主机。
对于交换式以太网,交换机收到多个帧时,会将他们先缓存起来,再逐个转发给目的主机。
由此可见,交换式以太网不会产生碰撞。
仅使用集线器扩展以太网和仅使用交换机扩展以太网:
发送单播帧的情况:
假设仍是主机A给主机C发送。
对于仅使用集线器扩展的以太网:和共享式以太网一样,会广播式传播到总线上其他各设备,所有主机接收到后判断帧的目的地址决定是否接受。
对于仅使用交换机扩展的以太网:和交换式以太网一样,根据帧的目的地址和交换机自身的帧转换表判断从哪个接口转发出去。
发送广播帧的情况:
和未扩展的以太网效果一样。
由此可见,扩展后的以太网各主机同属于一个广播域。
多台主机同时发送帧的情况:
多台主机向与自己在同一个局域网内的目的主机发送帧:
如图:假设主机A向主句C发送单播帧,主机F向主机D发送单播帧。
对于仅使用集线器扩展的以太网,两个主机会竞争总线,产生碰撞。
对于仅使用交换机扩展的以太网:转发给目的主机,不会产生碰撞。
多台主机发送单播帧,目的主机和一些主机在同一个网络,和另外一些不在同一个网络:
对于仅使用集线器扩展的以太网:帧会竞争总线,必然会产生碰撞。
对于仅使用交换机扩展的以太网:一个交换机接收到多个帧,先缓存随后逐个发送给目的主机,不会产生碰撞。
由此可见,仅用集线器扩展的以太网,逻辑上仍然是共享总线,形成了更大的碰撞域(冲突域);也就是参与竞争总线的主机更多了。同时也扩大了广播域。而仅用交换机扩展的以太网,仅扩大了广播域,没有碰撞域。
如果是将集线器和交换机结合在一起扩展的以太网呢?
如图:在两个共享式以太网之间加上一个交换机,本该碰撞的帧因为交换机的特点(交换机发现帧的源接口和转发接口一致时,就会丢弃该帧)而没有发送碰撞。
由此可见,这种以太网置扩大了广播域,而没有扩大碰撞域。
综上所述,集线器既不隔离广播域也不隔离碰撞域,而交换机隔离碰撞域不隔离广播域。
有个细节需要注意:在最后图中的以太网中,在各自的共享式以太网内还是会发生碰撞的,比如多台主机向与自己在同一个局域网内的目的主机发送帧的情况。所以准确的来说,交换机是在一定程度上隔离碰撞域,具体情况还是要具体分析。