小白笔记
本节学习LANs
MAC地址和ARP(地址解析协议(ARP))
实际上并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。
·32bitIP地址:
·网络层地址
·用于使数据报到达目的IP子网,而n-1跳
·从而到达子网中的目标节点:最后一跳
ARP协议是完成IP地址到mac地址的自动转换
·LAN(MAC/物理/以太网)地址:
·用于使帧从一个网卡传递到与其物理连接的另一个网卡(在同一个物理网络中)
·48bitMAC地址固化在适配器的ROM,有时也可以通过软件设定
·理论上全球任何2个网卡的MAC地址都不相同
·eg:1A-2F-BB-76-09-AD
mac地址主要作用是,在一个网络内部标识每一个节点,从而把分组封装成帧,通过mac地址从一个节点发到另外一个节点。
IP地址是分层的,便于路由聚集、路由计算,减少路由表的数量。mac地址是平面的,只是用来生成网卡的时候封装在网卡的内部。mac地址主要作用是在一个网络内部完成一个节点到另外一个节点,IP地址主要作用是前n-1跳把它路由到目标网络,最后一跳它的IP地址的目标主机号才起作用,完成最后一个路由器到主机的传递。
网络地址和mac地址分离
1.IP地址和MAC地址的作用不同
a)IP地址是分层的
·一个子网所有站点网络号一致,路由聚集,减少路由表
·需要一个网络中的站点地址网络号一致,如果捆绑需要定制网卡非常麻烦
·希望网络层地址是配置的:IP地址完成网络到网络的交付
b)mac地址是一个平面的
·网卡在生产时不知道被用于哪个网络,因此给网卡一个唯一的标识,用于区分一个网络内部不同的网卡即可
·可以完成一个物理网络内部的节点到节点的数据交付
2.为什么要分离
1)分离的好处
a)网卡坏了,IP不变,可以捆绑到另外一个网卡的mac上
b)物理网络还可以除IP之外支持其它网络层协议,链路协议为任意上层网络协议,如IPX等
2)捆绑的问题
a)如果仅仅使用IP地址,不用mac地址,那么它仅支持IP协议
b)每次上电都要重新写入网卡IP地址
c)另外一个选择就是不适用任何地址,不用MAC地址,则每到来一个帧都要上传到IP层次,由它判断是不是需要接受,干扰一次。
LAN地址和ARP
·MAC地址由IEEE管理和分配
·制造商购入MAC地址空间(保证唯一性)
·类比:
(a)MAC地址:社会安全号
(b)IP地址:通讯地址
·MAC平面地址-->支持移动,可以将网卡连接到其它网络
·IP地址有层次-->不能移动,依赖于节点连接的IP子网,与子网的网络号相同(有与其相连的子网相同的网络前缀)
ARP
问题:已知B的IP地址,如何确定B的MAC地址?
·在LAN上的每个IP节点都有一个ARP表
·ARP表:包括一些LAN节点IP/MAC地址的映射<IP address;MAC address;TTL>
·TTL时间是指地址映射失效的时间
·典型是20min
前面n-1跳是由下一跳的IP地址来得到下一跳的max地址,最后一跳由最终的主机的IP地址来得到它的mac地址。
怎么知道IP地址对应的mac地址呢?
如果在它的栈表中有所求IP地址对应的mac地址,那直接就用。那栈表中IP地址对应的mac地址怎么来的?发送一个广播查询包,广播查询包它的目标mac地址是48位全1的广播地址,相当于我在一个局域网内部广播查询:比如..7.14的站点你的mac地址是什么,所有节点都收到了当然被查询的节点也能收到,它就会把自己的IP地址和mac地址的对应关系反转给我,然后我就把它存在我的栈表当中,20分钟之内我用它,20分钟后删掉,20分钟之后为什么要删掉呢?因为IP地址和mac地址的对应关系有可能变了那么存是为了用的快,删是为了适应它的变化,是即插即用的ARP协议
发送数据到子网以外
以太网
HUB:集线器
·网段(LAN segments):可以允许一个站点发送的网络范围
·在一个碰撞域,同时只允许一个站点在发送
·如果有2个节点同时发送,则会碰撞
·通常拥有相同的前缀,比IP子网更详细的前缀
·所有以Hub连到一起的站点处在一个网段,处在一个碰撞域(在碰撞域之内一次只能有一个节点发送)
·骨干hub将所有网段连到一起
·通过hub可扩展节点之间的最大距离
·通过HUB,不能将10Base和100Base T的网络连接到一起
Hub有这样的一个问题:所有连Hub的设备都在一个碰撞域的范围之内,都在一个网段内,如果在这个网段内设备比较少那还能正常工作,如果设备比较多,我们知道采用CSMA/CD的方式,在高负载的情况下碰撞会经常发生,所以说以太网另一个升级呢,就是把Hub设备把它升级为交换机。交换机从外表看和Hub类似,只不过从一个端口收,可以向另外一个端口发送,并不像Hub一样从一个端口收然后从剩余的所有其它端口发送。交换机是从一个端口收把这个帧完全存下来,它是一个存储转发的设备,然后根据这个帧帧头的mac地址来决定往哪个端口发,然后如果决定了往这个端口发,发之前仍然要采用CSMA/CD方式。可以说每个端口是一个网段。这两个端口接收发送的同时交换机的另外的端口也可以进行接收发送,即允许多个站点同时发送即并发。从Hub变成交换机,每个端口都变成了一个网段,同时并发的主机的数量可以很多,而Hub中同时只允许一个站点发送。
交换机
·链路层设备:扮演主动角色(端口执行以太网协议)
·对帧进行存储和转发
·对于到来的帧,检查帧头,根据目标MAC地址进行选择性转发
·当帧需要向某个(些)网段进行转发,需要使用CSMA/CD进行接入控制
·通常一个交换机端口一个独立网段
·透明:主机对交换机的存在可以不关心
·通过交换机相联的各节点好像这些站点是直接相联的一样
·有MAC地址:无IP地址
·即插即用,自学习:
·交换机无需配置
交换机:多路同时传输
·主机有一个专用和直接到交换机的连接
·交换机缓存到来的帧
·对每个帧进入的链路使用以太网协议,没有碰撞;全双工
·每条链路都是一个独立的碰撞域
·MAC协议在其中的作用弱化了
·交换:A-to-A'和B-to-B'可以同时传输,没有碰撞
交换机转发表
交换机如何知道通过接口1到达A,通过接口5到达B'?
靠交换表,每个交换机都有一个交换表switch table,每个表项:
·(主机的MAC地址,到达该MAC经过的接口,时戳)
·比较像路由表
每个表项是如何创建的?如何维护的?
交换机自学习来的。
·交换机通过学习得到哪些主机(mac地址)可以通过哪些端口到达
·当接收到帧,交换机学习到发送站点所在的端口(网段)
·记录发送方MAC地址/进入端口映射关系,在交换表中。
有这样一个例子,比如交换机1和交换机2相连(交换机1连在交换机2的2号端口上),然后尝试交换机2的1号端口进东西,但是交换机2不知道目的要去哪(因为交换机没记录到这个的对应关系)此时就泛洪,哪个端口都发,回来的时候就不用泛洪啦,因为交换机已经记下来了。进去的端口如果和出来的端口一样的话,就不需要做动作,相当对这个帧做了一个过滤。
交换机和路由器比较
路由器是使用网络层地址转发分组的存储转发分组交换机。尽管交换机也是一个存储转发分组交换机,但它和路由器是根本不同的,因为它用MAC地址转发分组。交换机是第二层的分组交换机,而路由器是第三层的分组交换机。
交换机 和 路由器各自的优点缺点