1.局域网和广域网
局域网(LAN,Local Area Network)也称本地网或私网,局域网的目的连接地理距离较短的、可以认为在同一个逻辑小范围区域内的上网设备。比如,在家里的各个电脑和手机都可以加入局域网中(比如连接到同一个WiFi),然后在这个局域网范围内传输数据。
每个局域网都有一个网段,这个局域网内的所有计算机都在这个网段里。
广域网(WAN,Wide Area Network),又称外网、公网,它的目的是连接地理距离较远的不同区域。比如从北京到上海的数据传输,中间必要经过广域网。
但是,不能总是以地理距离来衡量局域网。比如面对面站着的两个人用手机QQ传输数据,虽然距离非常短,但是却需要绕一大圈:从手机出去,经过广域网的传输流到腾讯服务器,腾讯服务器再将数据经过广域网传到另一手机上。
2.网络设备:网卡
无论手机电脑还是其它各种能上网的设备,要上网必然需要网卡(NIC,Network Interface Controller),也称为网络适配器(Network Adapter)。
网卡分为有线网卡和无线网卡。它的作用就是发送数据和接收数据,电脑或手机向外发送数据时,它是数据的出口,数据经过网络传输后将到达另一个网卡,这时网卡的作用就是接收数据,它是数据的入口。
每个网卡都有一个全球独一无二的MAC地址,也称为物理地址或硬件地址,用来定义网络设备在网络中的位置,它就像是网卡的全球身份证一样。MAC地址由48bit(6字节)的十六进制数字组成,例如“70:f1:1c:05:79:c9”。
换句话说,MAC地址唯一标识了一个网卡,通过指定目标MAC地址,就能将数据传输给指定的网卡。
但是,只靠MAC地址只能在局域网内通信,当跨网段通信甚至跨广域网时,将不知道怎么找到目标MAC地址的位置,从而不知道将数据传向何处。所以这时候需要借助一个称为IP地址的逻辑地址来帮助定位。
3.网络设备:网线
网线是一种网络传输的物理介质,比如双绞线、同轴电缆、光缆,它们的作用是来传输网络数据。当然,现在还有非物理介质,即无线传输。
比如现在个人电脑通过网线连接到交换机或路由器的那根线就是双绞线,它是最古老也是局域网内最常用的传输介质。双绞线有8根线,网线的两头接上RJ-45水晶头。这8根线的作用分别是:1和2用于发送、3和6用于接收、4和5以及7和8是双向线,这些线一般两两绞缠在一起,所以称为双绞线。但不是随便绞缠的,它要求1、2两线必须绞缠在一起,3、6两线绞缠在一起,4、5相互绞缠,7、8相互绞缠。
同轴电缆曾经在局域网内使用非常广泛,但随着技术的发展,局域网现在几乎使用双绞线进行连接。现在同轴电缆主要应用在有线电视方面。
光缆利用光导纤维(即光纤)传递光脉冲信号来传输数据,使用最广泛的高速数据传输介质。它有几大优点:
1)传输损耗小,中继距离长,相对于远距离数据传输来说,非常经济。
2)抗雷电和抗电磁干扰能力强,在大电流环境下这一点非常重要。
3)体积小且重量轻。这一点在布线时非常有利,很多地方的电缆管道拥挤不堪,相比双绞线,光缆的重量要轻10倍左右。
4.网络设备:集线器
在早期,在一个局域网内使用集线器(HUB)将多个计算机连接起来。
集线器的作用是整合局域网内的各设备,使得它们在这个局域网内以集线器为中心,所以集线器是这个局域网的中转点。
可以将这里的网络集线器设备简单看作USB集线器,它提供了了多个接口,扩展了可连入局域网的计算机数量。但是,所有的集线器都有同样的缺点:共用线路资源。
正是因为集线器共用线路资源,导致集线器所组织起来的局域网络是一个冲突域。此外,HUB不会记录连接到它主机的MAC地址,而是直接将数据广播发送给所有节点,所以集线器组织的局域网也是一个广播域。
例如,电脑A要发“你好”消息给给电脑给B,集线器会将这个数据发送给所有连接到它的电脑上(除了数据入口),于是电脑BCDEFGH全都收到“你好”,但是只有B电脑才知道这个消息是发送给自己的,所以其他电脑都会丢弃这份取数据,而B会收下这份数据。
如果A发送“你好”给B的时候,正好C也要发送“不好”给D,那么这两份数据将争抢交换机的数据通道,此时就出现了冲突。
显然,集线器所聚集的设备节点越多,出现冲突的可能性就越大。
集线器为了解决这一冲突,它采用了一种载波监听多路访问/冲突检测(即CSMA/CD)协议的机制。这种机制的工作原理如下:当冲突域中的节点想要发送数据时,首先检测公共线路上是否有其他主机的信号在传送,如果有,就说明其他节点正在占用线路传输数据,如果没有,则自己将数据发送出去,与此同时不断地监听线路,以确保其他节点不会再传输过程中发送数据,如果检测到其他节点信号,则自己就发送一个JAM的阻塞信号通知线路上的其他节点停止发送数据,而其他节点收到JAM信号后将自我退避,等待一段时间再探测线路是否空闲。
在冲突域中,CSMA/CD机制至关重要,它避免了数据的冲撞,但是却因为不断发送各种信号而占用线路带宽,使得线路的平均通信小于最高通信量。
由此可知,集线器虽然扩展了局域网,但是每个集线器都形成了一个冲突域,如果将多个集线器组织在一起,冲突域将继续扩大成为一个更大的冲突域。
这时A节点要和E节点通信,A将数据发送给自己的集线器,该集线器将数据广播给BC和顶点集线器,而这个顶点集线器将数据再次广播给所有节点,即两外两个集线器,各集线器又广播数据给所有节点,整个大环境成为了一个冲突非常严重的大冲突域。
5.网络设备:网桥
使用HUB组织局域网时,整个局域网都处于冲突域中,如果局域网内主机数量较多,冲突域内的冲突问题将变得非常严重,这时很容易出现网络堵塞。
为了将冲突控制在一个小范围内,后来出现了更高一级的网桥(Network Bridge)设备。
当节点A要发送数据给节点D的时候,首先数据发送给集线器,集线器再广播出去,网桥会收到这个数据,网桥再将数据发送给另一个集线器,这个集线器继续广播给DEF节点,于是D节点收到了数据。
网桥比HUB更高级,它能自我学习所有连接到它的主机的MAC地址,并将学习到的MAC地址记录在自己内部的地址表中,使得在交换机组织起来的局域网内传递数据时,可以直接通过交换机直接送到目标接节点上。
例如,A将数据发送给D时,首先会经过网桥,网桥会将A的MAC地址和网桥收数据的接口记录下来,下次要是发送数据给A节点,就可以直接找到A节点所在接口,并将数据通过这个接口发送给A所在集线器。
为了了解网桥的MAC自我学习能力,将网桥设备的范围更扩大一些。如下图,两个网桥M0和M1,每个网桥两个接口,假设均为E0和E1.
1)当节点A要发送数据给节点F时,首先要经过网桥M0的E0接口,M0此时的地址表还是空的,所以记录下来A的MAC地址和E0口的关系。
2)M0由于没有F节点的MAC地址,所以将数据转发给E1口,然后E1口将数据发送给集线器,集线器会广播给所有和它相连的节点(除了入口),于是F收到了消息。
3)同时网桥M1的E1口也受到了集线器广播过来的数据,于是也记录下来节点A的MAC地址和E1口的关系,同时也会将数据发送给E0口,E0口再将数据交给集线器并广播出去。
这一轮的学习就到此为止,但是后续还会有其他节点发送数据,就通过这样不断学习的方式记录下所有节点的MAC地址和网桥接口的对应关系。
如果网桥有多个接口,那么在目标MAC还没有学习的情况下,网桥会将这个包从所有接口(除了入口)发送出去,使得各个网桥设备能够尽快学习到全网节点的MAC地址。这种方式称为端口泛洪:将未知目标的MAC的数据从所有接口发送出去。
以后再经过网桥发数据的时候,网桥就能根据它所记录的地址表找到目标MAC地址在哪里,并从对一个的接口发送出去,而其他接口不再受到任何影响。
这样一来,网桥将各个接口都隔离开来,使得每个接口独自在一个小的冲突域内,不会形成大的冲突域。
6.网络设备:交换机
网桥设备不断发展,为了隔离更多冲突域,它的接口也越来越多,然后就发展成了交换机(Switch)设备,而网桥这类设备直接就成为了历史。所以,最初的交换机其实就是多接口网桥设备。同时,随着交换机的价格越来越低,很多时候都将计算机直接连接到交换机,集线器以及增强式的集线器都不再具备价格优势,集线器设备也基本已经淘汰。
交换机的MAC自我学习能力和网桥是类似的,它也能隔离冲突域。以下图中的直接连接计算机的交换机为例来描述。
电脑A要发送“你好”给电脑B,数据首先交给交换机,交换机在地址表中记录记录电脑A的MAC地址,同时发现目标B的MAC尚未学习,于是将该数据从所有接口(当然,除了数据的入口)泛洪出去,于是B节点和其他所有节点都收到了消息。
随着时间的推移,交换机最终也会学完所有节点的MAC地址。这时任意两个节点通信,数据都直接从交换机中对应的接口流入和流出,不会影响到其他接口。
但是,有的计算机会从交换机接口下拔下,这时交换机地址表中关于该节点的记录就成为了多余的记录。交换机内有有一个进程会定期清理这些无用记录,这在多数情况下是有益的,但是当这台计算机再次接入交换机时,所有发往该计算机的数据会再次被泛洪。
最后,并没有解决广播域的问题。如果节点A发送一个广播,交换机仍然会将这个广播数据包发送给所有节点。
7.网络设备:路由器
MAC地址只能负责局域网内的通信,集线器、网桥、交换机都通过MAC地址转发数据。但是,当跨网段通信时,必须要用到更高一层的设备:路由器(Router)。
网桥、交换机的作用是根据MAC地址找到数据发送的目标,而路由器则是根据IP地址找到数据发送的目标。
如上图所示,当局域网A内的节点X要跨公网发送数据给局域网B内的节点Y,A首先将数据根据MAC地址发送给本网段的路由器R0(中间可能会经历交换机,也可能是直连路由器的),路由器R0再根据目标IP地址进行路由,并将数据转发给下一个路由器,中间可能会路由多次,最终,这份数据会传输到局域网B连接的那个路由器R1,路由器R1再根据MAC地址将数据发送给目标B(中间仍然可能经历交换机,也可能是直连)。
所以,广域网通信时,数据至少需要先出本地局域网交到最近的路由器设备,再进入公网通过一个个的路由设备不断路由找到目标IP地址,再进入目标局域网,从而找到最终目标计算机。