02-网络基础知识

一. 基础概念

随着科技的发展,我们现在的设备主要是都是路由来通信;但是如何发展到路由这一步的呢?一起了解一下吧。

了解交互之前,需要先了解两个概念:
IP地址
MAC地址
ARP协议
ICMP协议

通信时必须包含4个地址:源IP地址、源MAC地址,目标IP地址、目标MAC地址,这样才能找到对应的计算机通信。

1.1 IP地址及MAC地址

  • 何为IP地址呢?

简单的说,IP地址就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,也就说,给Internet上每一台电脑一个编号,作为他的地址。例如,mac的上IP地址如何查看呢? 点击左上角的苹果图标->选择“偏好设置”->选择“网络”->选择“高级”->如下图:
02-网络基础知识

  • 何为MAC地址

MAC地址,也成为网卡地址,每台电脑都有唯一的不变的MAC地址;通信上的数据需要输送到网卡上,由网卡接收并发送。
每一个网络数据包,都需要包含两个地址:IP地址和MAC地址;如果某个的MAC地址为FFFF.FFFF…这样格式的,表示MAC地址为空,那么就需要通过广播找到对应IP地址的MAC地址,然后将MAC地址数据回传。

1.2 ARP 和 ICMP协议

  • ARP协议

在了解两个计算机通信时,也需要了解一下ARP协议,当计算机1 想给计算机2 通信时,需要IP地址和MAC地址;如果知道了对象的IP地址,但是并不知道对象的MAC地址,那么就需要通过ARP协议来寻找MAC地址了。

  • ICMP协议

如果知道了计算机2 的IP地址 和 MAC地址,那么就可以用ICMP协议发包,跟计算机2 通信。

二、两个计算机的通信发展过程

2.1 交叉线

在计算机刚开始发展的初期,如果想要两台计算机相互通信的话,可以用“交叉线”,将两台计算机连接起来。但是这种方式呢,只能连接两台电脑,如果机器多了,就不行了。

2.2 集线器

首先,可以先看看集线器长什么样子,如下图:
02-网络基础知识
可以看到集线器上有多个接口可以连接计算器;集线器可以解决初期多个计算机要相互通信的需求。

集线器的工作原理,很简单,就是通过广播的形式将所有的包都广播发送给所有连接到集线器的计算机,计算机再根据MAC地址及IP地址判断是否需要处理

集线器是没有智商的,等于说,任何通信不管是 APR协议还是ICMP协议,只要经过了集线器那么集线器就会转发给所有连接它的计算器。如果某个集线器连接了1000台设备,那么一台设备发送了一个包,那么集线器就会将包转发给其余的999台设备。

而且,集线器还是半双工通信,如果有一方在发送东西,那么其他人都不能发送。

集线器的通信流程如下
02-网络基础知识

如果集线器0 连接着3个计算机:计算机0、计算1、计算2;那么现在设定,计算机0要给 计算机1 发网络数据包(以后统称为发包),那么:
(1)计算机0将包发给集线器,因为是计算机0发的包,所以包里面肯定包含了“计算机0的源IP地址和源MAC地址”,但是只知道目标的IP地址,并不能知道目标的MAC地址是多少;
(2)这时候,就需要ARP协议来寻找MAC地址,怎么找呢?首先,包会经过集线器,集线器会把包发给所有的除了计算机0的其他计算机
(3)计算机1 和 计算机2 接收到 集线器发过来的包后,查看该包的IP地址跟自己的是否一致,如果不一致,就把包丢掉,不做处理;
(4)如果是一致的话,就把自己的MAC地址与IP地址作为源ID和源MAC地址,将计算机0的IP地址和MAC地址作为目标的IP地址和目标MAC地址装到包里,发给集线器,集线器又会把包转发给其他的计算机;然后重复第三个步骤;
(5)这样计算机0 就能知道计算1的MAC地址是多少了,接着就可以通过ICMP协议发包进行真正的数据传输了;
(6)传输的时候,虽然知道了计算机的IP地址和MAC地址;但是也是需要计算机0 把包 发给集线器,集线器转发给其他的计算机;计算机接收到包后查看是否需要处理,如果是发给自己的就处理,如果不是,就丢弃。

集线器的缺点就是:

如果连接的计算机比较多的话,因为是半双工通信,有一台计算机在通信的话,其他人都要等着;
或者有一个地方出问题了,那么整个连接集线器的都不可以用了。

2.3 网桥

网桥就是有两个接口的连接两个集线器,网桥的样子如下:
02-网络基础知识
网桥比集线器智能一点,可以通过自学习得到两个口对应的MAC地址;也就说,可以通过自学习,知道左边的口有哪些MAC地址,右边的口有哪些MAC地址。

网桥的优势:

可以起到隔绝冲突域的作用

利用网桥的通信过程如下:
02-网络基础知识
假定 计算机6 要与 计算机2 通信;那么过程如下:

(1) 计算6 将自己的IP地址和MAC地址作为源IP和MAC地址,将计算机2的IP地址作为目标IP地址,将包发给集线器1;(因为这时候不知道计算机2的MAC地址,所以需要用ARP协议找到MAC地址)
(2)集线器1 因为没有智商,所以会把包发给 其他连接集线器1 的其他设备;也就是 计算机7 和8 还有 网桥0;计算机7和8 收到包后,发现IP地址不是自己,就将包丢弃不处理;
(3)网桥0 收到包后,会将计算6 的Mac地址记录到自己的MAC表中,即网络就可以知道左边的口有 计算机6 的MAC地址;然后网桥看这个包的目标MAC地址没有,就将包发给集线器0;
(4)集线器0 收到包后,又会转发给所有的其他机器;计算机1 和计算机3收到包后发现不是自己的IP地址,丢弃不处理;计算机2收到包后,发现IP地址是自己,就把自己的IP地址和MAC地址作为“源IP地址和源MAC地址”,将计算机6的IP地址和MAC地址作为“目标IP地址和目标MAC地址”,将包再发给集线器0;
(5)集线器0,会转发给其他的设备,计算机1和3 发现不是给自己的,就丢弃了;网桥0收到包后,就将计算机2的MAC地址记录下来;那么此时,网络0就知道,右侧的端口有个计算2的MAC地址;
(6)之后,网桥0由把包发给集线器1,集线器1会把包转发给其他的设备;计算机7和8发现目标IP地址不是自己丢弃不处理,计算机6发现IP和MAC地址都是自己,就接收;
(7)这时候,计算机6 就是计算机2的IP地址和MAC地址,就可以给计算机2 发ICMP的包;步骤跟第二步的一致,就不在复述了。

在假设上面的通信完成后,再假定 计算机6 要与 计算机7 通信;那么过程与上面的流程差不多;只不过经过网桥0后,网桥会记录左边的端口有计算机7的MAC地址;那么下次再与计算机7通信的时候,网桥0发现计算机7的MAC地址在左侧端口里,就不会给左侧端口连接的集线器0发包了。

2.4 交换机

虽然网桥可以带来一定的遍历,但是还是比较麻烦,于是就出现了交换机:
02-网络基础知识

交互机可以理解为集合了集线器和网桥的功能于一身的机器;交互机可以通过链接多个设备,而且是 全双工通信。当一个设备通信时,对其他的设备通信不影响。

交互机每个口都连接一台设备,所以每个端口都可以记住连接设备的IP地址和MAC地址是多少。

利用交换机的通信流程如下:
02-网络基础知识
假定计算机1 要给计算3 发送消息:

(1)计算1 将自己的IP地址和MAC地址作为源IP和MAC地址,将计算机3的IP地址作为目标IP地址,将包发给交换机1;(因为这时候不知道计算机3的MAC地址,所以需要用ARP协议找到MAC地址);
(2)经过交换机后,交换机会记录下连接计算机1 那个端口的MAC地址是多少;
(3)交换机会广播的方式把包转发给其他的设备;(因为这时候交换机不知道IP地址对应的MAC地址是多少,所以也需要广播的方法找);
(4)计算机0 和2 接收到包后,对比IP地址不是自己的,就把包丢弃了;计算机3 发现IP地址是自己,就把自己的IP地址和MAC地址作为“源IP地址和源MAC地址”,将计算机1的IP地址和MAC地址作为“目标IP地址和目标MAC地址”,将包发给交换机,交换机此时会把计算机3的MAC地址保存下来;
(5)因为此时这个包有计算机1的MAC地址,而且交换机也有保留MAC地址的记录,所以交换机会直接把包发给计算机1。
(6)如果下次再次与计算机3通信时,因为有计算机3的mac地址了,会直接把包发给计算3。

—后续待更新未完—