第5讲 | 从物理层到MAC层:如何在宿舍自己组网玩联机游戏?

早先的路由器是奢侈品,大学宿舍里的几个人想要联机玩《魔兽争霸》需要自己组网。

第一层(物理层)

物理层怎么互通呢?靠网线,网线有两种,一种是电脑连电脑,一种是电脑连网口。

我们用电脑连电脑的网线。一根网线,两个头,一头插在一台电脑的网卡上,一头插在另一台电脑的网卡上。仅仅这样还是通不了的,水晶头要做交叉线,就是1-3、2-6交叉接法。

水晶头的1、2和3、6脚,分别起着收、发信号的作用。将一端的1号和3号线、2号和6号线互换一下位置,就能在物理层实现一端发送的信号,另一端能收到。

除了物理层互通,还要配置两台电脑的IP、子网掩码和网关,才能实现两台电脑的互通。

到此,两台电脑就已经构成了一个最小的局域网,即LAN,可以玩联机游戏了!

如果第三个人想要加入进来呢?早先的交换机也是很贵。有一个东西叫做Hub,就是集线器。这个设备可以将多台电脑连接起来。

集线器工作在物理层,它将自己收到的每一个字节,都复制到其他端口去。

第二层(数据链路层)

Hub采取广播的模式,一台电脑发出的包,其他每台电脑都能收到,就会产生几个问题:

1. 这个包是发给谁的?谁该接收?

2. 大家都发,会不会产生混乱?有没有谁先谁后的规则?

3. 如果发送的时候出现了错误,怎么办?

这几个问题都是二层,数据链路层即MAC层要解决的问题。

MAC的全称是Medium Access Control,即媒体访问控制。控制往媒体发数据的时候,谁先发、谁后发的问题,防止混乱。这解决的是第二个问题。这个问题中的规则,学名叫多路访问。解决这个问题有多种方法,跟车管所约束马路上跑的车一样:

  • 分多个车道,每个车一个车道,在计算机里叫信道划分;
  • 单双号限行,轮着来,计算机里叫轮流协议;
  • 有事先出门,发现堵就回去。错过高峰再出去。这叫随机接入协议。以太网就是用这种方式。

第二个问题解决了,就是解决了媒体接入访问控制的问题。

回到第一个问题:发给谁,谁接收?这里用到链路层地址,因为第二层主要解决媒体接入控制的问题,所以也叫MAC地址。

这就涉及到第二层的网络包格式。

对于以太网,第二层网络包的开始是目标MAC地址和源MAC地址。然后是类型,大部分类型是IP数据包。

有了MAC地址,数据包在网络上广播,目标机器才能发现这个包是给它的。

以太网的二层包的最后是CRC,循环冗余检测。通过异或算法,计算这个包在传输的过程中是否出现错误,解决的是第三个问题。

还有一个问题没有解决,当源机器知道目标机器的地址的时候,可以将目标机器的地址放入包里,但如果不知道呢?

一个广播网络里有多台机器,我如何知道每台机器的MAC地址呢?这就是ARP协议的作用,就是已知IP地址,求MAC地址。

在一个局域网里,知道了IP地址,不知道MAC怎么办?靠“吼”。

发送一个广播包,谁是目的IP谁来回答。具体的查询和应答报文像下面这样:

为了避免每次都用ARP,机器本地也会进行ARP缓存。当然机器不断上线下线,所以ARP的MAC缓存也有一个有效期。

局域网

至此,宿舍的几台电脑就组成了一个局域网,用Hub连起来就可以玩局域网版的《魔兽争霸》了。

这种方法对于一个宿舍没问题,但是一旦机器数量增多,就会有新问题。因为Hub是广播的,不管别的网口需不需要都会收到所有包。

包一多,发生冲突的概率就会提高。我们需要更智能的设备。一般每个网口只连一台电脑,这台电脑的IP和MAC都是固定的,只要记住这台机器的MAC地址,如果目标MAC不是它,就不向它转发了。

这就是交换机,它检查包的MAC头,然后根据策略转发。

交互机怎么知道每个口的电脑MAC地址呢?需要交换机会学习。

电脑MAC1将一个包发给另一台电脑MAC2,这个包到达交换机时,一开始交换机也不知道电脑MAC2在哪个口,所以只能转发给每个口。但是交换机会记住MAC1来自一个明确的口,以后只要目标是MAC1,直接发到这个口。

过一段时间之后,交换机就有了整个网络的结构了,这就是转发表。但机器IP是会变的,所以这个转发表有一个过期时间。

有了交换机,你接几十台、上百台机器打游戏,就都没什么问题。

小结

  1. MAC是用来解决多路访问的堵车问题的;

  2. ARP是通过广播的方式寻找目标MAC地址的,会将结果缓存下来;

  3. 交互机有MAC地址学习能力,学完就不需要广播了。

两个思考题:

1. 我们讲了二层的ARP协议,即已知IP地址求MAC;还有一种协议叫RARP,即已知MAC求IP,你知道它可以用来干什么吗?

2. 如果一个局域网里有多个交换机,ARP广播的模式会出现什么问题?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值