文章目录
一、引入
我们知道两太不同局域网的主机传递数据并不是直接传递的,而是通过路由器“一跳一跳”的传递过去。
跨网络传输的本质:是由无数个局域网(子网)转发的结果。
所以要理解数据跨网络转发原理,就要先理解一个局域网中数据是如何转发的。
它就是以太网协议。
- 局域网通信原理
在同一个局域网内的两太主机是可以直接通信的。
举个例子:
在局域网通信就好像在教室上课老师喊张三的名字,所有人都能听到,只不过分析发现不是喊的自己就忽略掉,只有张三会处理这个消息。这样老师和张三的通信就可以看作是1对1的直接通信。
二、以太网协议
2.1 MAC帧格式
局域网两台主机之间通信必须要封装MAC帧。
- 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。
- 帧协议类型字段有三种值,分别对应IP协议、ARP协议和RARP协议。
- 帧末尾是CRC校验码。
用红色圈出来的部分就是报头部分。中间的则是数据部分,数据部分包含上层的报头加有效载荷(HTTP、TCP、IP的封装)。
2.2 MAC帧如何将报头与有效载荷进行分离&向上交付?
- 报头与有效载荷分离
MAC帧的分离方式就是采用定长报头。直接对前面的14个和后边的4个进行提取,剩下的就是有效载荷。
- 向上交付给哪个协议?
在MAC帧的帧头当中有2个字节的类型字段,因此在分离出报头和有效载荷后,根据该字段将有效载荷交付给对应的上层协议即可。
2.3 MAC地址
局域网通信,每台主机都要有自己的唯一标识,每一台机器都要配一张网卡,每一个网卡都有一个序列号,这个序列号就是该网卡的MAC地址,在全球范围内具有唯一性(其实在局域网内保证唯一性就够了),长度为48位(6个字节)。
2.4 局域网转发原理(基于协议)
假设现在要MAC1发送数据给MAC7,那么首先就需要封装一个MAC帧。
每台主机的数据链路层都会收到这个MAC帧,然后进行报头和有效载荷的分离,然后查看目的IP地址发现是MAC7,如果发现不是自己,直接把数据帧丢弃,上层根本就不知道收到了这个数据帧;如果发现是自己,就把有效载荷向上交付。
处理结束后,MAC7也会给MAC1一个应答。