说明:个人不大喜欢太理论的东西,喜欢把一个东西说的越简单越好,如果你想了解更深层次的东西就去其他博客吧。

首先还是贴出对这两个东西的定义吧:

路由器(英语:Router,又称路径器)是一种电讯网络设备,提供路由转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。(来自维基百科)

交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等 。

简单点说两者区别:

1.路由器根据路由表转发数据,路由表中含有网段和接口;交换机根据mac地址表转发数据,mac地址表中含有mac地址和接口;

2.交换机连接的是同一网络段(不懂就去看Google吧)的计算机;路由器连接的是不同网段的。数据要想通过交换机,则发送方的计算机必须给这个数据加上发送端和接收端这双方的mac地址和接口;

3.路由器工作在网络层,交换机工作在数据链路层。

4.正如定义所说路由器有路由和转送的功能,交换机只有转发功能但是因为路由器相对比较智能,他在转送的时候还可以选择最佳路劲。

补充说明:因为现在的交换机做的越来越智能,上面所说的区别3和区别4这两个区别也越来越模糊,因此不做特意强调。

计算机A想给计算机B发送数据:

1.如果这两个计算机在同一个网段,假设他们通过交换机S1连接,通信过程如下:

a.计算机A广播信息:“有没有人知道B的mac地址,我想给B发送消息”。

b.交换机S1收到消息后发现自己的mac地址表中没有记录计算机A和B的相关信息,就先通过这则消息把A的端口号和mac地址记录在它的mac地址表中,然后继续把这个消息广播给这个网段内的所有计算机,当B收到消息后就回复消息给交换机S1,交换机S1就根据这则消息记录下到达B1的端口号和mac地址,然后回复消息给A.

c.A知道了B可以接受这则消息的端口号和B的mac地址,就把这些信息封装在他所要发送的消息中,经交换机发给B.

2.如果这两台计算机不在同一个网段(设为10和20网段,10网段连接A计算机,20网段连接B计算机),假设通过的路由器为R1,则通信过程如下(省略通过交换机的过程):

a.因为A在同一网段内的广播信息无法穿越路由器直接到达B,这个时候路由器就能发挥它的路由和转发功能了,当广播的消息到达R1时,路由器根据自己的路由表去查找,发现了到达B的ip地址和端口,就回复消息给A说:“我知道到达B的最优路径,你把消息先发给我就可以了,接下来,你等着就行”。

b.A收到了从R1回复的消息就把要发送给B的消息连同R1的mac地址和端口号一起封装,然后发给R1,R1收到消息后改变这则消息的原始端口和IP地址(原始端口和IP地址是A的端口和IP)为自己所处网段为10的IP和端口P0,然后把这则消息连同P0和自己的mac封装起来,查找自己的路由表,找到了到达B的最佳路径后就把刚才封装的信息发给B,路由器的这个转换过程详情请看地址解析协议ARP

(当然这个过程还涉及消息比较长的情况,这时还要将消息分块,选择不同路径发给B,这些讲起来就太细节了,我也不太熟悉,哈哈,这里就不深究,路由器是如何知道到达B的路径的这就涉及到路由器的初始化和路由算法了,这些我就知道的更能少了)。

啰嗦了这么点东西,但是感觉自己写了好久,希望对看到的人有一点作用吧。

更多参考:

http://baike.baidu.com/link?url=DQqmJN5e2jcg7Ix-6FRQBwypaXnh5priAXxUhX9rHPvSE7Ig50euGkzlpN6qsiNVrf7gDz9xPJpS2ey1rYsdXK

https://zh.wikipedia.org/zh-cn/%E8%B7%AF%E7%94%B1%E5%99%A8