一、OSI七层模型
网络被分为七层,由底层向高层依次是:
- 物理链路层(比特流)->
- 数据传输层(帧)->
- 网络层(包,寻址)->
- 传输层(tcp/udp 保证端到端的可靠传输)->
- 会话层(RPC)->
- 表示层(编码,加密协议)->
- 应用层(http,ftp)
二、协议
定义:是一种通信双方共同遵守的规范。
三、物理层
物理层处于 OSI 七层模型的第一层,它的主要任务是将比特流与电子信号进行转换。
四、数据链路层
数据链路层处于 OSI 七层模型的第二层,它定义了通过通信介质相互连接的设备之间,数据传输的规范。
在数据链路层中,数据不再以 0、1 序列的形式存在,它们被分割为一个一个的“帧”,然后再进行传输。
数据链路层中有两个重要的概念:MAC 地址和分组交换。
4.1 MAC地址
MAC 地址是被烧录到网卡 ROM 中的一串数字,长度为 48 比特,它在世界范围内唯一(不考虑虚拟机自定义 MAC 地址)。由于 MAC 地址的唯一性,它可以被用来区分不同的节点,一旦指定了 MAC 地址,就不可能出现不知道往哪个设备传输数据的情况。
4.2 分组交换
分组交换是指将较大的数据分割为若干个较小的数据,然后依次发送。使用分组交换的原因是不同的数据链路有各自的最大传输单元(MTU: Maximum Transmission Unit)。
以以太网(一种数据链路)为例,它的MTU是 1500 字节,也就是通过以太网传输的数据,必须分割为若干帧,每个帧的数据长度不超过 1500 字节。如果上层传来的数据超过这个长度,数据链路层需要分割后再发送。
4.2.1 以太网帧
以太网帧的开头是“前导码(Preamble)”,长度为 8 字节,这一段没什么用,重点在于以太网帧的本体。
本体由首部,数据和 FCS 三部分组成:
类型部分存储了上层协议的编号,比如上层是 IP 协议,则编号为 0800。
FCS 表示帧校验序列(Frame Check Sequence),用于判断帧是否在传输过程中有损坏(比如电子噪声干扰)。FCS 保存着发送帧除以某个多项式的余数,接收到的帧也做相同计算,如果得到的值与 FCS 相同则表示没有出错。
4.3交换机
交换机是一种在数据链路层工作的网络设备,它有多个端口,可以连接不同的设备。交换机根据每个帧中的目标 MAC 地址决定向哪个端口发送数据,此时它需要参考“转发表”
转发表并非手动设置,而是交换机自动学习得到的。当某个设备向交换机发送帧时,交换机将帧的源 MAC 地址和接口对应起来,作为一条记录添加到转发表中。
关于数据链路层,最重要的一点还是它的定义:“通过通信介质相互连接的设备之间,数据传输的规范”。这说明数据链路层的协议适用于处于同一种数据链路两端的节点。如果不能理解这一点,就无法理解网络层和 IP 协议。
数据链路层的意义在于,如果没有数据链路层,数据只能以流的形式存在与通信介质中,不知道该发送往哪里,过长的数据流可能无法在通信介质中传输。