目录
1. 数据链路层
数据链路层, 是一个底层的层次, 主要用于交换机开发, 对于 Java 开发简单了解即可, 本篇也仅做简单介绍.
1.1 以太网协议
以太网协议, 是数据链路层的核心协议. (严谨来说, 是物理层 + 数据链路层的协议)
我们平时说的网线, 其实就是以太网线. 只要电脑是通过网线的方式来上网的, 那么走的就是以太网协议.
当然, 除了插网线, 还有其他的联网方式:
- WiFi => 走 802.11 协议
- 5G => 走的另外的非 TCP/IP 协议体系
在以太网中, 基本数据单位称为 以太网数据帧.
数据格式名称:
- 包 Packet => IP
- 段 Segment => TCP
- 报 Datagram => UDP
- 帧 frame => 以太网/数据链路层
1.1.1 以太网帧格式
以太网帧格式如下:
1.2 mac 地址
以太网帧中的源地址和目的地址, 指的是 mac 地址, 并非网络层的 IP 地址.
mac 地址, 又称为物理地址, 占 6 个字节, 可表示 2 ^ 16 个地址量, 是 IPv4 的 6w 多倍, 虽然 IP 地址短缺, 但是 mac 地址是很充裕的~
由于 mac 地址量很充裕, 因此每个网卡都有一个唯一的 mac 地址.
并且, 网卡的 mac 地址在网卡出厂的时就已经写死了, 因此 mac 地址可以作为电脑的身份的唯一标识.
一台电脑上可能有多个网卡(无线网卡, 有线网卡, 虚拟机), 有多个 mac 地址, 但是每个 mac 地址都是唯一的, 都可以作为电脑的身份标识.
1.2.1 IP 地址和 mac 地址的区别
- IP 地址是专门给网络层使用的, 关注的是整个网络路径的转发传输过程.
- mac 地址是专门给数据链路层使用的, 关注的是相邻设备之间的转发, 更关注转发细节.
当设备 A 要向设备 B 发送数据时, 这个数据报中的