赞
踩
起始:我就是一台电脑A
有一天,突然另一台电脑B想和我进行通话·,于是我们各自开了个网口,用一根网线连接起来,这样就可以进行通信了,至于为什么可以,还要研究io,中断…,反正现在可以进行通信了
有一天又来了一位C,每个人开两个端口就可以通信了
随着越来越多的人加入,网口开的太多了,太乱,理论可行,实际不可行。
于是,发明了一个中间设备,将网线都插在这个设备上,由这个设备进行转发,和原来本质上是一样的
这个设备取名集线器,仅仅是将信号转发到所有的出口(广播转发),不用做任何处理,作用就这一点,所以放在了物理层。
那么BCDE怎么知道A是想发给谁的呢?
这就引入了MAC地址(公民身份证)
现在A发数据给B:
B收到的数据包后,根据MAC地址判断出,这个包确实是给我的,CDE收到后,判断MAC地址和自身MAC不同,于是丢弃数据包
上述的集线器是广播转发,可不可以单播呢?
交换机就出现了!!!!!!!比集线器智能一些,所以放在了数据链路层
数据包到达交换机时,查询MAC地址表,发现要从端口1发送,直接发送数据,结束。通过上述传输方式而组成的网络叫以太网
过程如下:
随着机器数量的增加,交换机的端口也不够用了,这个时候就想到,将多个交换机连接起来就可以了吧
最终,两个交换机将分别记录 A ~ H 所有机器的映射记录
左面的交换机
右面的交换机
但是随着时间的推移,电脑的数量在逐渐增多。
路由器的每一个端口,都有独立的 MAC 地址
交换机的 MAC 地址表中,只需要多出一条 MAC 地址 ABAB 与其端口的映射关系,就可以成功把数据包转交给路由器了
怎么把发送给 C 和 D,甚至是把发送给 DEFGH… 的数据包,统统先发送给路由器呢?
假如电脑 C 和 D 的 MAC 地址拥有共同的前缀,比如分别是FFFF-FFFF-CCCC , FFFF-FFFF-DDD,那么可以将目标mac地址开头为FFFF-FFFF的全部发送给路由器,这样是不可行的,mac地址不好统一
于是有聪明的人发明了新的地址(IP地址),如:
11000000.10101000.00000000.00000001
,即192.168.0.1
现在每台电脑有了两个地址(MAC,ip)
如上图所示,假如我想要发送数据包给 ABCD 其中一台设备,不论哪一台,我都可以这样描述,“将 IP 地址为 192.168.0 开头的全部发送给到路由器。
假如A发送数据给B,由于他们直接通过交换机相连,所以直接发送,没体现网络层(交换机)的作用
但是如果给C发送数据,A就需要先转交给路由器,再由路由器转发给C
路由器——>C
A给C发送数据,怎么知道要先发给路由器呢?
------------------------》子网
将源 IP 与目的 IP 分别同子网掩码进行与运算,相等则是在一个子网,不相等就是在不同子网
A电脑:192.168.0.1 & 255.255.255.0 = 192.168.0.0
B电脑:192.168.0.2 & 255.255.255.0 = 192.168.0.0
C电脑:192.168.1.1 & 255.255.255.0 = 192.168.1.0
D电脑:192.168.1.2 & 255.255.255.0 = 192.168.1.0
那么 A 与 B 在同一个子网,C 与 D 在同一个子网,但是 A 与 C 就不在同一个子网,与 D 也不在同一个子网,以此类推。
所以如果 A 给 C 发消息,A 和 C 的 IP 地址分别 & A 机器配置的子网掩码,发现不相等,则 A 认为 C 和自己不在同一个子网,于是把包发给路由器
问题又来了,A怎么知道哪个设备是路由器呢?
问题继续,路由器是怎么知道C在哪里呢
------------->路由表
经过上述的过程A给C发送数据已经可以发送到路由器上面了,目前问题就是,路由器怎么知道的数据要从哪个端口发送出去呢?
路由器收到的数据包有目的 IP 也就是 C 的 IP 地址,需要转化成从自己的哪个端口出去。这里引入了路由表
路由表就表示,192.168.0.xxx 这个子网下的,都转发到 0 号端口,192.168.1.xxx 这个子网下的,都转发到 1 号端口。
路由器------>C,这里要经过交换机,发送数据需要知道MAC地址(数据链路层),这时又引入了arp(其实一开始就有)
A不知道 B 的 MAC 地址,只知道它的 IP 地址,该怎么把数据包准确传给 B 呢?
当A需要向B发送数据时,首先检查B主机的IP地址是否在同一子网上。如果在同一子网上,A会使用ARP协议发送一个ARP请求广播,询问B的MAC地址。B收到广播后,会通过ARP协议回复一个包含自己MAC地址的ARP响应。A接收到响应后,就可以将数据帧封装并发送到A的MAC地址。找到 192.168.0.2 对应的 MAC 地址 BBBB。这种方式就是arp协议,同时电脑 A 和 B 里面也会有一张 arp 缓存表,表中记录着 IP 与 MAC 地址的对应关系。
对A来说:
** 对交换机来说:
对路由器来说:
三张表:
网络拓扑图
路由器 1 连接了路由器 2,所以其路由表有了下一条地址这一个概念,所以它的路由表就变成了这个样子。如果匹配到了有下一跳地址的一项,则需要再次匹配,找到其端口,并找到下一跳 IP 的 MAC 地址
如果 A 给 F 发送一个数据包,能不能通呢?如果通的话整个过程是怎样的?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。