趣谈网络协议-第二模块-底层网络知识详解:1从一层到三层

趣谈网络协议-第二模块-底层网络知识详解:1从一层到三层

一层:物理层
二层:链路层(MAC层)
三层:网络层(IP层)

1:从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?

第一层(物理层)

物理层就是各种线,硬件如集线器。

网线

从古老的1-3、2-6 交叉接线法(现在已经不需要)到现在七类线

集线器(Hub)

这种设备有多个口,可以将宿舍里的多台电脑连接起来。但是,和交换机不同,集线器没有大脑,它完全在物理层工作。它会将自己收到的每一个字节,都复制到其他端口上去。即:Hub 采取的是广播的模式,如果每一台电脑发出的包,宿舍的每个电脑都能收到。

连接设备的还有交换机和路由器:
交换机(注意,交换机不是一层设备)交换机有“大脑”。后面再补充怎么个“大脑”
路由器(注意,路由器不是一层设备)后面再说。

第二层(数据链路层)

Hub 采取的广播模式,会有以下问题:

  1. 这个包是发给谁的?谁应该接收?
  2. 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?
  3. 如果发送的时候出现了错误,怎么办?

数据链路层就是用来解决上述问题的。MAC的全称是Medium Access Control,即媒体访问控制

多路访问解决“谁先发、谁后发”问题

第二个问题是“谁先发、谁后发的问题,防止发生混乱”的问题,解决这个问题的规则,学名叫多路访问
多路访问算法(车管所管束马路上跑的车作类比):

  1. 方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作信道划分
  2. 方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作轮流协议
  3. 方式三:不管三七二十一,有事儿先出门,发现特堵,就回去。错过高峰再出。我们叫作随机接入协议。著名的以太网,用的就是这个方式。(以太网?局域网?广域网?互联网?以太网与互联网有什么区别?

数据链路层中说的媒体访问控制MAC、平时说的MAC层, 和MAC地址没什么关系。?

链路层地址解决收发人的问题

回头看年第一个问题:发给谁,谁接收?这里用到一个物理地址,叫作链路层地址。但是因为第二层主要解决媒体接入控制(Medium Access Control,MAC)的问题,所以它常被称为MAC 地址
先看看第二层的网络包的格式:
在这里插入图片描述

目标的 MAC 地址和源的 MAC 地址
类型

大部分的类型是 IP 数据包,然后 IP 里面包含 TCP、UDP,以及 HTTP 等,这都是里层封装的事情。

包是怎么流转和被解释的:
有了这个目标 MAC 地址,数据包在链路上广播,MAC地址为目标MAC 的网卡才能发现,这个包是给它的。MAC地址为目标MAC 的网卡把包收进来,然后打开 IP 包,发现 IP 地址也是自己的,再打开 TCP 包,发现端口是自己,也就是 80,而 nginx 就是监听 80。
于是将请求提交给 nginx,nginx 返回一个网页。然后将网页需要发回请求的机器。然后层层封装,最后到 MAC 层。因为来的时候有源 MAC 地址,返回的时候,源 MAC 就变成了目标 MAC,再返给请求的机器。

CRC

对于以太网,第二层的网络包的最后面是CRC,即循环冗余检测(Cyclic Redundancy Check)。它通过 XOR( 异或)的算法,来计算整个包是否在发送的过程中出现了错误,主要解决第三个问题,即“如果发送的时候出现了错误,怎么办?”。

ARP 协议解决已知IP地址求MAC地址的问题

当源机器知道目标机器的时候,可以将目标MAC地址放入包里面。但如果不知道呢?一个广播的网络里面接入了 N 台机器,只知道目标IP地址,怎么知道对应的 MAC 地址呢?
这时,要使用ARP (Address Resolution Protocol,地址解析协议)协议,ARP就是已知 IP 地址,求 MAC 地址的协议(即根据IP地址获取物理地址的一个TCP/IP协议)。
局域网内,机器A只知目标IP,求目标MAC的示意图如下,这时A广播一下,等人回答:
在这里插入图片描述
A问和B答的过程如下:
在这里插入图片描述
注意1和4,为了避免每次都用 ARP 请求,机器本地也会进行 ARP 缓存。当然机器会不断地上线下线,IP 也可能会变,所以 ARP 的 MAC 地址缓存过一段时间就会过期。

具体询问和回答的报文如下:
在这里插入图片描述
PS1:
数据链路层其实不等于MAC层?数据链路层协议又被分为两个子层 :逻辑链路控制(LLC)协议和媒体访问控制(MAC)协议?)

局域网

Hub 采取的是广播的模式,机器多了,会乱,且本身也浪费。
这时可以用交换机,交换机是二层设备。它能把 MAC 头拿下来,检查一下目标 MAC 地址,然后根据策略转发给MAC地址为目标MAC地址的设备。
这要求交换机知道连接它的各个口的机器的MAC地址。交换机得知这些信息靠的是一个“学习的过程”。过程如下:

交换机得知MAC地址的过程

一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑,当这个包到达交换机的时候,一开始交换机也不知道 MAC2 的电脑在哪个口,所以没办法,它只能将包转发给除了来的那个口之外的其他所有的口。但是,这个时候,交换机会干一件非常聪明的事情,就是交换机会记住,MAC1 是来自一个明确的口。以后有包的目的地址是 MAC1 的,直接发送到这个口就可以了。

当交换机作为一个关卡一样,过了一段时间之后,就有了整个网络的一个结构了,这个时候,基本上不用广播了,全部可以准确转发。当然,每个机器的 IP 地址会变,所在的口也会变,因而交换机上的学习的结果,我们称为转发表,是有一个过期时间的。

2 :交换机与VLAN:办公室太复杂,我要回学校

拓扑结构是怎么形成的?

这样子是没问题的,因为没有环路。
在这里插入图片描述

环路问题具体是怎么样?

这样子就有问题了,因为形成了环路。
在这里插入图片描述
想象一下机器 1 访问机器 2 的过程。一开始,机器 1 并不知道机器 2 的 MAC 地址,所以它需要发起一个 ARP 的广播。广播到达机器 2,机器 2 会把 MAC 地址返回来,看起来没有这两个交换机什么事情。
但是!这两个交换机还是都能够收到广播包的。交换机 A 一开始是不知道机器 2 在哪个局域网的,所以它会把广播消息放到局域网二,在局域网二广播的时候,交换机 B 右边这个网口也是能够收到广播消息的。交换机 B 会将这个广播息信息发送到局域网一。局域网一的这个广播消息,又会到达交换机 A 左边的这个接口。交换机 A 这个时候还是不知道机器 2 在哪个局域网,于是将广播包又转发到局域网二。即数据这样子走,A左->A右->B右->B左->A左……死循环了,这个包停不下来了。
而且,交换机A/B都会懵逼,不知道机器A在哪边。一开始,交换机A收到第一个直接从机器 A广播而来的ARP包,记住了机器A是在左边,但,马上又收到从交换机B的右口发出的ARP包(这个包是机器A广播的,由交换机B的左口入,交换机B右口出),所以交换机A会以为机器A换位置了,更新记忆,记住机器A在右边。如此往复,左右左右左右。

怎么破环路问题?STP!

STP(Spanning Tree Protocol,生成树协),即一个复杂的,带环形的图,变成树结构的一个方法。带环的叫图,还带环的叫树。

先看几个概念

Root Bridge,即根交换机。这个比较容易理解,可以比喻为“掌门”交换机,是某棵树的老大,是掌门,最大的大哥。(就是树的根节点。生成树的过程中,可能会有若干个根节点,即有多棵树。生成树的过程是合并这些树的过程。)

Designated Bridges

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值