定义:
补充:以太网是局域网技术之一,但是因为现在大部分的局域网均为以太网,因此一般提及局域网都会默认为以太网。
局域网根据相互连通方式,分为:
两者区别为:冲突域不同、数据传输不同、连通不同。
无论哪种方式,在局域网内计算机要实现相互通信,根据OSI七层网络模型,在数据链路层需要知道计算机设备的MAC地址。所以局域网中的计算机(更确切的说是计算机中的网卡)首先要通过ARP协议,广播的方式获取对方的MAC地址。
早期局域网使用的方案,典型代表是使用10Base2/10Base5的总线型网络和以集线器(HUB)为核心的星型网络。
后者使用了集线器将多台计算机集中到一起,这些设备都连接到集线器中的同一个物理总线结构中(因此,以集线器为核心的以太网与总线型以太网并无本质区别)。
1)特点:
2)CSMA/CD协议:
CSMA/CD(Carrie Sense Multiple Access with Collision Detection),载波监听、多点接入和冲突检测。工作原理是:侦听总线上是否有载波,总线无载波时才能发送数据。
3)缺点:
目前局域网基本采用交换式,多台计算机通过双绞线连接到交换机上,形成了一交换机为中心的星形拓扑结构。
在交换式局域网中,交换机根据接收到的数据帧中的MAC地址决定数据帧应发往交换机的哪个端口。因为端口间的帧传输彼此屏蔽,因此节点就不必担心自己发送的数据帧在通过交换机时是否会与其他节点发送的帧发生冲突。交换机为每个用户提供专用的信息通道,除非两个源端口企图将信息同时发往同一目的端口,否则各个源端口与各自的目的端口之间可同时进行通信而不发生冲突。
1)优点:
交换机工作在数据链路层,它有效地隔离了以太网中的冲突域,极大地提升了以太网的性能。
2)交换机的基本工作原理:
交换机中有一个MAC地址-端口表,里面存放了MAC地址与交换机端口的映射关系。初始状态下为空;交换机会通过学习的方式记录MAC地址表。
1.如果进入交换机的是一个单播帧,则交换机会去MAC地址表中查找这个帧的目的MAC地址。
A、如果查不到这个MAC地址,则交换机执行泛洪操作。
B、如果查到了这个MAC地址,则比较这个MAC地址在MAC地址表中对应的端口是不是这个帧进入交换机的那个端口。如果不是,则交换机执行转发操作。如果是,则交换机执行丢弃操作。
2.如果进入交换机的是一个广播帧,则交换机不会去查MAC地址表,而是直接执行泛洪操作。
3)学习MAC地址:
交换机根据接收数据帧中的源MAC地址建立地址和交换机端口之间的映射,并将其写入MAC地址表。交换机将数据帧中的目标MAC地址与已建立的MAC地址表进行比较,以确定转发哪个端口。
补充)冲突域和广播域:
4)交换机(switch)vs集线器(hub)
传统意义上来说交换机属于OSI的第二层(数据链路层)设备,它可以根据MAC地址将数据包转发到相应的端口,从而实现局域网中不同设备之间的直接通信。
与集线器不同,交换机可以识别不同设备之间的通信,并只将数据包转发到目标设备的端口,从而避免了不必要的广播和网络拥塞。此外,交换机还可以实现虚拟局域网(VLAN)等高级功能,以更好地管理网络流量和提高网络安全性。(vlan和三层交换机见下文)
说明:早期二者都是用来局域网中不同计算机之间通信的,并且交换机的出现替代了集线器。后面不断的发展,交换机也提供了三层、四层的功能,三层是在二层平台上提供VLAN和基于IP的路由和交换功能,而四层交换则为基于端口的应用。
总线型、环形和星型网络是常见的局域网拓扑结构,它们在计算机网络中被广泛应用。
目前,最流行的局域网拓扑结构是星型网络。星型网络使用中央设备(如交换机或路由器)作为网络的核心,所有计算机都直接连接到中央设备。
1)广播
2)泛洪
交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写 入MAC地址表中。交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。
关于泛洪,这也是一种交换机常用的转发方式,当交换机要给一个目的主机发送数据帧,而数据帧中的目的MAC地址不在交换机MAC地址表中,则向除了接收端口以外的所有其他端口转发。这个动作就是泛洪。
1)介绍:
ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。
在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。这就好比我们要寄一个快递,如果在快递单上仅仅写了收件人的姓名(IP),却没有写收件人的地址(MAC),那么这个快递就没法寄出,因为信息不完整。
2)原理:
ARP协议采用局域网的"广播"功能:将请求包以广播的形式发送,交换机或WiFi设备(无线路由器)收到广播包时,会将此数据发给同一局域网的其他所有主机。节点收到请求后,拆开包查看询问的ip,如果不是自己则丢弃,如果是自己则单播的形式应答。
DHCP(Dynamic Host Configuration Protocol)是一种动态主机配置协议,用于自动分配 IP 地址、子网掩码、网关、DNS 等网络配置信息。DHCP 获取 IP 地址的过程如下:
以上就是 DHCP 获取 IP 地址的过程。
从上面可以,在局域网内实现多台计算机通信,只需要将他们介入到二层交换机(或者集线器)上即可,会自动通过DHCP(交换机上可以配置DHCP)获取ip,通过ARP获取MAC,利用二层交换机做数据的交换。这种情况下是不需要路由器介入的(不需要网络层转发)。考虑到目前局域网大多采用了VLAN技术,所以交换机使用三层的,或者配合路由器实现VLAN数据包的转发(详见下面VLAN之间数据通信)。
这里将交换机和路由器放在一起对比,主要是目前的交换机已经具备了三层,设置四层的功能。
三层交换机:
机房路由器:
虽然三层交换机和路由器都工作在网络第三层,且在内网中都具备路由功能,用来转发数据包,但是三层交换机和路由器还是有很大的差别的!
在外观上:
在功能方面:
三层交换机在本质上仍是一个交换机,主要适用在局域网内不同逻辑网段之间的通信,提供快速数据交换功能。路由器虽然也适用于局域网,但对于充当网关、防火墙等或需要NAT、VPN等功能的局域网与外部网络间连接设备的场景,路由器是不能被三层交换机所代替的!
vlan的全称是Virtual Local Area Network,即“虚拟局域网”,就是把一个大的局域网,分成多个隔离的,小的局域网。
1)为什么要划分vlan?
虽然交换机解决了局域网的冲突域问题,但是多台机器仍然处在同一个广播域上(广播域是三层网络,二层交换机所有端口都在一个广播域)。一个局域网内有上百台主机,如果一旦产生广播风暴,那么这个网络就会被彻底的瘫痪。可以通过vlan还划分广播域,这样使得广播被限制在每一个vlan里面,而不会跨VLAN传播。不同vlan之间的成员在没有三层路由的前提下是不能互访的,这也是一种安全的考虑。
2)局域网网中最多支持多少个vlan呢?
VLAN是二层虚拟技术,VLAN对应IEEE 802.1Q协议标准,802协议标准定义的是数据链路层的标准。vlan信息在传递的时候,需要用到vlan标签,也就是每个电脑(或手机)发出的数据,会打上他所属的vlan的标签。这样网络设备(如交换机)就知道这台电脑是哪个vlan的了。vlan标签长这样
802.1q标准中定义的vlan号(vlan id)的长度是12位,所以说vlan总共只有2的12次方,4096个。这也就是为什么交换机只支持4k个vlan,多贵的都只支持4k个。
3)如果网络规模较大,4096个vlan不够怎么办?
没关系,网络规模在发展,技术也在发展。就像ipv4地址不够了我们发明了ipv6,vlan数量不够了,ieee的一帮工程师又发明了QinQ(也称Stacked VLAN 或Double VLAN),QinQ也就是802.1q in 802.1q,就是打两层标签,那么总共就有了4096x4096个vlan,一下就把4千个升级成了1677万个,这样就绰绰有余了。
其实现将用户私网VLAN Tag封装在公网VLAN Tag中,使报文带着两层VLAN Tag穿越运营商的骨干网络。
4)划分vlan方法:
不同VLAN之间的主机是无法实现通信,必须通过三层路由设备进行路由转发才能将报文从一个VLAN转发到另外一个VLAN。下面介绍几种方法:
1)利用路由器物理接口实现
二层交换机上配置VLAN,每一个VLAN使用一条独占的物理链路连接到路由器的一个接口上,如图所示:
缺点:通常路由器接口数量较少,此方式对路由器接口要求数量高,不实用。
2)利用路由器子接口实现(单臂路由):
将交换机和路由器之间的链路配置为Trunk链路,并且在路由器上创建子接口以支持VLAN路由。(子接口:在路由器的物理接口上创建逻辑接口,子接口具有同物理接口一样的功能。)
交换机连接路由器的的链路需要配置为Trunk,并允许特定vlan通过,因为这条链路上需通过多个vlan,access链路是无法满足的
3)利用VLAN IF技术实现(三层交换机):
在三层交换机上创建逻辑接口作为网关,VLANIF接口编号与VLAN ID相同,如VLAN10对应VLANIF 10(二层交换机:只能实现基本的交换通信功能;三层交换机:除了二层交换机功能,还能通过逻辑接口实现路由转发功能)
早期我们建了很多局域网,后来人们想如何能将这些局域网之间连起来。不通网段的计算机无法通过ARP获取对方MAC地址,这样就无法使用二层的交换剂进行数据交换。所以需要路由器进行包的转发,将一个局域网的包转发到另一个局域网内。
说明:wan 口地址是 PPPoE 拨号时运营商的其他设备分配的用于公网寻址。model还提供了数字型号到模拟信号的转换功能。
1)路由表、网关:
2)计算机收到数据包后,如何判断走局域网还是走网关?
网络包在发送的时候,需要从本机的多个网卡设备中选择一个合适的发送出去:
网络包在接收的时候,也需要进行路由选择:
注:在默认情况下,Linux 上的转发功能是关闭的,这时候 Linux 发现收到的网络包不属于自己就会将其丢弃。
为什么需要两个地址:一个是MAC(物理地址),另一个是IP地址。
要想说明这个问题,首先得说说计算机网络的目标是什么。计算机网络的根本目标就是将数据从一点传送到另外一点。听起来很简单,但是里面包含的意思很多。例如,两个点之间是在同一个网络还是跨网络连接的,如何才能将数据正确的传送到对方,如果出现错误怎么办等等。
1)MAC地址:
假设两个计算机在同一个局域网通信,只需要MAC地址就可以了。例如:通过交换机将多台电脑组成一个网络,为了找到对方,必须通过一个地址来标识——MAC地址。当A点要将数据传递给B点时,会在数据的首部添加B的MAC地址,即目标地址。当然在首部中也有源地址,还有其它一些信息,例如用于校验的等等。组装好的这个数据称为帧。然后A点就将帧通过网卡发送出去。
此时交换机收到这个帧后,查找自己的转发表。转发表主要有两列,一列是MAC地址,另外一列是该MAC地址对应的端口。如果找到就将数据从该MAC对应的端口转发出去。如果没找到,很简单,交换机会把帧向所有端口广播(除了该帧进入的端口),因此肯定会有一个合适的端口收到的。这个广播的方法很粗暴,也很奏效。(泛洪)
补充:计算机如何得知另一个计算机的MAC地址?
电脑(网卡)缓存里有一张ARP表,该表主要有两列:一列是IP地址,另外一列是MAC地址。这张表不是天生就有的,是随着网卡收到网络中的各种通信数据,不断学习增加的。
2)IP地址:
如果两点不在一个网络内。这时就需要IP地址了。因为IP地址含有两个部分,一个是网络地址,一个是主机地址。因此,通过对方的IP地址,是可以判断出对方是否和本机在一个网络内。
跨网络传输数据时,需要考虑传输的路径,即为了到达目的地,下一跳应该去哪儿,从而一跳一跳的传输到目的地。而网内传输,不需要考虑传输路径,只要发出去一定可以到达(最坏情况下就是通过广播传输也能到达)。而跨网络传输时,无法使用广播,因此,需要使用能够表示网络特征的地址,即IP地址。所以IP地址是负责网络到网络传输的。至于发给网关后,下一步发给谁,本机就管不着了。