我们来讲一讲如何局域网内的通信
我们从第一层物理层开始讲起
物理层是最基本的接入层,比如网线的插入,在很久以前,网线是可以进行交换线口的,有一根网线,两个头,一头插在了电脑的网卡上,另一头插在了另一个电脑的网卡上,但是一般的网线是不行的,只有水晶头做了交叉线才行,就是1-3 2-6 交叉法, 12 36 分别起着收 发信号的作用,将一端的1-3 2-6 进行交换,就能做到物理层一端发送信号,另一端直接能收到
当然,除了物理上的改变外,还需要配置这两台的IP地址 子网掩码和默认网关
需要这两台电脑配置的IP在一个网段内
一个可以为192.168.1.1/24 另一台为 192.168.1.2/24
然后这两台的电脑的网络包还需要MAC层才能进行通信,至此,两台电脑已经构成了一个最小的局域网,也就是LAN,可以联机网局域网游戏了
这就是两台电脑之间的互联
但是如果再加入几台呢?
这就需要一种名为Hub的东西,就是集线器,可以有多个口,将宿舍的多个电脑连接起来,但是集线器没有大脑,完全在物理层工作,将自己的每一个字节,都复制到其他的端口上去
然后是第二层的工作
这一层就是我们常说的MAC层,因为HUB采用的广播的模式,每一台电脑发出的包,宿舍的每一台电脑都是能收到的
这就可能带来了问题
1.这个包是发给谁的,应该谁来接手
2.大家都在发,会不会产生混乱,有没有谁先发后发的规则
3.如果发送的时候出现了问题,怎么办
这里我们先说一下MAC层的全称 Medium Accrss Control 即媒体访问控制,控制上面呢?就是媒体上发送数据的时候,谁先发,谁后发的问题,这就是第二个问题的解决方案,解决的规则,学名叫做多路访问控制,常见的方式就是
1.分多个车道,每个车一个车道,各走各的,叫做信道划分
2.今天单号出行,明天双号出行,轮着来,这就是轮流协议
3.先尝试出门,发现拥堵就回去,等待高峰多去,就是随机接入协议
解决了第二个问题,就是媒体控制的问题解决了,然后就是第一个问题
发给谁,谁接收,这就是一个物理地址,叫做链路层地址,但是是因为第二层主要是为了解决媒体接入控制的问题,叫做MAC地址
接下来是类型,大部分的类型是IP数据包,然后IP中包含了TCP UDP,以及HTTP等,这是里层封装的问题
然后又了目标的MAC地址,才能在广播的时候,对方的网卡打开发现,这个包是给他的,MAC的网卡将包收进来,打开IP,发现IP也是他的,在打开TCP发现也是,最后发给端口
相同,返回一个数据也是,层层封装,到了MAC层,然后来的时候有源MAC,返回的时候,源MAC变成了目标MAC,返回给请求的机器
对于以太网,第二层的后面的CRC,也就是循环冗余检测,通过XOR异或的算法,计算整个包是否在发送的过程中出现了错误,解决了第三个问题
其次是,第三个问题,源机器知道了目标机器的时候,可以将目标地址放在包里面,如果不知道呢?
一个广播的网络内接入了N台设备,我仍然不知道MAC地址是谁,这就需要IP求MAC地址
就是ARP协议
协议如下
一个局域网内,知道了iP地址,不知道Mac地址怎么办?靠吼
发送一个广播的包,谁是这个IP谁来回答,告诉发送端自己的MAC地址
当然,接受到了之后,接受的节点会进行ARP缓存,缓存到一个表中.ARP表
至此,我们的局域网就创建了
但是这种组网的问题,会导致出现一旦机器数目增加了,问题就出现了,因为HUB是广播的
不管某个接口是否需要,所有的主机都会收到包然后判断是不是自己的.
这样就很浪费,而且导致网路很拥堵
那么最好有人能够记录下MAC地址,然后根据策略进行转发
这个设备为MAC层工作,是个二层设备,我们将其称为交换机
交换机怎么知道每个口的MAC地址呢?这就需要交换机来学习
一台MAC1将包发给MAC2电脑的时候,当这个包到达交换机的时候,交换一开始也不知道MAC2的地址,于是需要广播,但是,这时候我们知道了MAC1的地址不是,以后发给目的地址是MAC1的,直接可以找到并发送了
然后了过了一段时间,就有了整个网络的一个结构了,这个时候就不在需要广播了,可以精准的发送,因为IP会改变,所以口也会变,这个转发表也就会有对应的TTL
有了交换机,这样就能接个十几台去上网了
本章总结
1.Mac层可以解决多路访问的堵车的问题的
2.ARP是通过吼的方式获取到目标MAC地址的,然后缓存一段时间
3.交换机是有MAC地址学习能力的,学完就知道在哪里了
课后思考
1,其实除了ARP协议外,还有着已知MAC地址,求IP的,RARP协议可以用它来干什么呢?
2.如果一个局域网里面有多个交换机,会怎么办呢?
1.对于没有硬盘的机器,没法持久化ip到本地,所以只能通过RARP协议来获取到IP地址,RARP协议可以用于局域网管理员想要指定机器IP,却又不想每台都取设置ip的地方,不过也很麻烦,现在普遍还是使用BOOTP或者DHCP了
2,如今有多个交换机,一个数据包从A交换机到B交换机,交换A已经发送了一次广播,B再发送一次广播,如果还有更多的交换机,会导致数据包再回到A,再发送一次,如此循环,最后导致占满了带宽,形成广播风暴
对于广播风暴的解决方案,可以划分vlan,实现多个广播域,每个接口都是一个单独的冲突域
通过自我学习,构建出CAM的表,并且基于CAM的表进行转发数据
利用生成树的算法,构建出物理有环,逻辑无环的网络,网络冗余和数据传输效率都甩出Hub几条街