如何设计网络系统-物理层-数据链路层-网络层
2022-02-11 16:13:56 3 举报
主要是如何设计网络系统
作者其他创作
大纲/内容
端口
MAC地址cc-cc-cc-ccIP地址:192.168.1.1
端口3
E
端口5
MAC地址表
你给它取名叫集线器,它仅仅是无脑的把电信号转发给所有的出口,不做任何处理,你觉得它是一个没有智商的,所以把它定性在物理层
aa-aa-aa-aa
交换机1
4
A
C
1
ee-ee-ee-ee
mac地址:cc-cc-cc-ccip地址:192.168.0.3
B
根据交换机的MAC地址表,找到端口,也就找到了C把数据包发送给C
cc-cc-cc-cc
mac地址
一个随意修改的IP地址,你可以随意的改变它的拓扑结构
6
mac地址:bb-bb-bb-bbip地址:192.168.0.2
端口4
MAC地址:abab
F
A ~ 路由器这段的包如下
gg-gg-gg-gg
A:192.168.0.1&255.255.255.0=192.168.0.0C:192.168.1.1&255.255.255.0=192.168.1.0不相等,不在一个子网内,于是找到默认网关的IP
数据包
MAC地址cc-cc-cc-cc
第三层:网络层
H
现在两个设备传输,除了数据链路层的头部,还需要网络层的头部
路由器
如果A要给B发送数据包,但是只知道B的IP地址,现实中也是只知道IP地址,那怎么找到192.168.0.2对应的bb-bb-bb-bb MAC地址呢?
端口6
根据路由表来查找
MAC地址aa-aa-aa-aa
交换机只需要增加一条路由器的mac地址和端口号的映射就好了
源mac:aa-aa-aa-aa目标mac:abab
源IP:192.168.0.1目标IP:192.168.1.1
端口2
D
第二层:数据链路层
端口1
dd-dd-dd-dd
路由器-c这段包如下
mac地址:dd-dd-dd-ddip地址:192.168.0.4
MAC地址
交换机2
MAC地址bb-bb-bb-bbIP地址:192.168.0.2
源IP:192.168.0.1目标IP:192.168.0.2
abab
MAC地址表需要把另外交换机的MAC地址表也添加过来,机器少还好,如果机器非常多,那该怎么办呢?
MAC地址dd-dd-dd-ddIP地址:192.168.1.2
路由如何知道C在哪里
但是由于转发了所有出口,那么BCDE怎么知道到底是不是发给自己的呢?所以你给集线器上所有的设备都起了一个全局唯一的专业名称,你把它成为MAC地址
A-C:直接连接交换机,直接发送数据包,网络层没有体现
路由器在接受到数据包,根据目标IP地址,来决定从那个端口出去
A发送的数据包到达交换机,根据MAC地址去查询交换机的端口号,于是数据从端口1发送给了B
如果IP在一个子网里里面,直接通过交换机,不在一个子网里面,交给路由器比如:196.168.0.xxx开头的就在一个子网里面。否则就不是
AIP地址:192.168.0.1子网掩码:255.255.255.0MAC地址:aa-aa-aa-aa默认网关:192.168.0.254
B在收下数据包时,根据头部的目标mac来匹配是不是发送给自己的
通过这样传输方式而组成的小范围的网络,叫做以太网。
第一层:物理层
这样A在给B发送数据包时,就可以在头部拼接一个这样的数据结构就好了
5
那这个MAC地址表怎么形成的呢?一开始A发送数据包到交换机,此时交换机可以在MAC地址总添加一条aa-aa-aa-aa 端口5的记录交换机看目标 MAC 地址(bb-bb-bb-bb-bb-bb)在地址表中并没有映射关系转发给所有的端口,之后只有B接受到数据,B的数据返给交换机,此时MAC地址又增加了一条B的MAC地址和端口记录网络机器不断通信,交换机最终将MAC地址表完善
J
MAC地址:cdcdIP地址:192.168.1.254
MAC地址dd-dd-dd-dd
3
比如A给C发消息:A的IP是192.168.0.1C的IP为192.168.1.1A的子网掩码是255.255.255.0A和C分别和A的子网掩码进行与操作,等则是在一个子网,不相等就是在不同子网192.168.0.1&255.255.255.0=192.168.0.0192.168.1.1&255.255.255.0=192.168.1.0不相等,不在一个子网里面,把数据包发送给路由器即可,要怎么转发,A无需关心
MAC地址bb-bb-bb-bb
A-B:直接连接交换机,直接发送数据包,网络层没有体现
arp 协议
聪明的你们想到可以找个中间设备,把网线插在中间设备上,由这个设备做转发,完成通信
路由器设备,需要根据IP找到Mac地址,查询其ARP缓存表,找到mac表,把他封装到数据链路层的头部,并根据路由表找到其端口,发送给交换机
MAC地址aa-aa-aa-aaIP地址:192.168.0.1
但是随着越来越多的朋友,你们发现自己身上开的网口太多了,有什么其他的解决方式嘛?
A 如何知道,哪个设备是路由器?
路由表
IP地址
hh-hh-hh-hh
那计算机如何判断呢?
随着机器越来越多,交换机端口不够用,聪明的你,只需要将交换机连接起来就可以解决这个问题
bb-bb-bb-bb
MAC地址:ababIP地址:192.168.0.254
2
1. 首先 A(192.168.0.1)通过子网掩码(255.255.255.0)计算出自己与 F(192.168.2.2)并不在同一个子网内,于是决定发送给默认网关(192.168.0.254)2. A 通过 ARP 找到 默认网关 192.168.0.254 的 MAC 地址。3. A 将源 MAC 地址(AAAA)与网关 MAC 地址(ABAB)封装在数据链路层头部,又将源 IP 地址(192.168.0.1)和目的 IP 地址(192.168.2.2)(注意这里千万不要以为填写的是默认网关的 IP 地址,从始至终这个数据包的两个 IP 地址都是不变的,只有 MAC 地址在不断变化)封装在网络层头部,然后发包4. 交换机 1 收到数据包后,发现目标 MAC 地址是 ABAB,转发给路由器15. 数据包来到了路由器 1,发现其目标 IP 地址是 192.168.2.2,查看其路由表,发现了下一跳的地址是 192.168.100.56. 所以此时路由器 1 需要做两件事,第一件是再次匹配路由表,发现匹配到了端口为 2,于是将其封装到数据链路层,最后把包从 2 号口发出去。7. 此时路由器 2 收到了数据包,看到其目的地址是 192.168.2.2,查询其路由表,匹配到端口号为 1,准备从 1 号口把数据包送出去。8. 但此时路由器 2 需要知道 192.168.2.2 的 MAC 地址了,于是查看其 arp 缓存,找到其 MAC 地址为 FFFF,将其封装在数据链路层头部,并从 1 号端口把包发出去。9. 交换机 3 收到了数据包,发现目的 MAC 地址为 FFFF,查询其 MAC 地址表,发现应该从其 6 号端口出去,于是从 6 号端口把数据包发出去。10. F 最终收到了数据包!并且发现目的 MAC 地址就是自己,于是收下了这个包
源mac:aa-aa-aa-aa目标mac:bb-bb-bb-bb
刚才说的都是 IP 层,但发送数据包的数据链路层需要知道 MAC 地址,可是我只知道 IP 地址该怎么办呢?
ff-ff-ff-ff
路由器的每一个端口,都有一个MAC地址
上一步判断A和C不在同一个子网内,把数据包发送给路由器,其实应该说,把数据包发送给默认网关。
所以你想把集线器变得更智能一些,只发给MAC地址指向的那台电脑,你把这个东西叫做交换机,因为比集线器智能一些,你把它放在了数据链路层
电脑A和B中都存在着一张ARP缓存表,表中记录着IP和MAC地址的对应关系
jj-jj-jj-jj
对于A来说,在同一子网下,把数据包发送给路由器,还是其他电脑,A不关心,它只是在乎,只有有IP就行
A 给 C 发数据包,怎么知道是否要通过路由器转发呢?
一开始,你孤苦伶仃一个人
C的IP地址:192.168.1.1C的MAC地址:cc-cc-cc-cc
源mac:cdcd目标mac:cc-cc-cc-cc
于是人们研究出了子网掩码
有一天,你希望和B建立连接,于是你们各开了一个网口,用网线连接了起来,然后你们可以通信了
ARP
192.168.0.0.0/24代表的是前24位是网络号
MAC地址:cdcd
I
默认网关,就是 A 在自己电脑里配置的一个 IP 地址,以便在发给不同子网的机器时,发给这个 IP 地址。
A-C的一个大概过程
你是一台电脑,名字叫A
交换机
子网
交换机已经无法支撑那么庞大的映射关系了,此时你又想到了一个方法,那就是能不能把那根线换成也拥有一个MAC地址的设备,同时这个设备还能帮我转发于是你发现了路由器路由器的功能就是作为一台独立的拥有MAC地址的设备,并且可以帮你做一次转发,于是你把它放在了网络层
但是你发现不好,转发给连接在集线器上所有的电脑,不仅不安全,还浪费资源
ii-ii-ii-ii
192.168.0.2
mac地址:aa-aa-aa-aaip地址:192.168.0.1
G
0 条评论
下一页