系列文章目录
什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络
Internet网络的网络层——IP协议之IP数据报的结构
IP分片
IP编址与有类IP地址
IP子网划分与子网掩码
CIDR与路由聚合
DHCP协议
网络地址转换(NAT)
ICMP(互联网控制报文协议)
IPv6简介
路由算法之链路状态路由算法
路由算法之距离向量路由算法
路由算法之层次路由
数据链路层概述
数据链路层——差错编码
多路访问控制(MAC)协议——随机访问MAC协议
- 系列文章目录
- MAC地址
- ARP: 地址解析协议
MAC地址
32位IPv4地址:
- 接口的网络层地址
- 用于标识网络层(第3层)分组,支持分组转发
MAC地址(或称LAN地址,物理地址,以太网地址) :
-
在数据链路层用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
-
48位MAC地址(用于大部分LANs),固化在网卡的 ROM中,有时也可以软件设置。e.g.: 1A-2F-BB-76-09-AD
-
局域网中的每块网卡都有一个唯一的MAC地址
-
MAC地址由IEEE统一管理与分配。任何一个网卡生产厂商需要购买MAC地址空间(前24比特)
-
MAC地址相当于身份证号,无论在哪里都是唯一的;IP地址相当于邮政地址,有归属和层次关系
ARP: 地址解析协议
一个网络接口在网络层有IP地址,在数据链路层有MAC地址。因此在通信过程中就要考虑一个问题:(在同一个LAN内) 如何在已知目的接口的IP地址前提下确定其MAC地址?
为此,LAN中的每个IP结点 (主机、路由器)都会维护一个表,这个表叫做ARP表,这个表会存储某些LAN结点的 IP/MAC地址映射关系< IP地址; MAC地址; TTL>。TTL存活时间设置该映射关系的存在时间(典型值为20min)。这样保证ARP表反映最新的信息。
比如,A想要给同一局域网内的 B发送数据报,但A只知道B的IP地址,这时就要用到ARP协议,大概过程是这样的:
- A广播ARP查询分组,其 中包含B的IP地址。
- 目的MAC地址 = FF-FF-FF-FF-FF-FF
- LAN中所有结点都会接收 ARP查询
- B接收ARP查询分组,IP 地址匹配成功,向A应答 B的MAC 地址
- 利用单播帧向A发送应答
- A在其ARP表中,缓存B的 IP-MAC地址对,直至超时。超时后,再次刷新
显然,ARP是“即插即用”的协议。主机在刚接入网络的时候,ARP表可能是空的,正是在通信过程中不断查询更新MAC地址的。
那如果A和B不在同一个局域网内,这个时候应该怎么做呢?
假设A和B这两个子网通过R路由器进行互连:
- 假设A知道B的IP地址(一般由用户定义输入)
- 假设A知道第一跳路由器R (左)接口IP地址(A主机的默认网关地址就是路由器左侧接口的地址)
- 假设A知道第一跳路由器R (左)接口MAC地址 (通过ARP协议)
过程:
- A构造IP数据报,其中源IP地址是A的IP地址,目的IP地址是B的IP地址。进一步封装数据报,构造链路数据帧,其中源MAC地址是A的MAC地址,目的MAC地址是 R(左)接口的MAC地址
- 路由器左侧的接口收到数据帧以后,提取IP数据报,传递给上层IP协议。一般情况下不会修改源和目的的IP地址。R进一步创建链路层帧,其中源MAC地址是R(右)接口的MAC地址,目 的MAC地址是B的MAC地址
- B在链路层收到数据帧之后,要完成链路层的功能。之后提取出IP数据报,交给上层的IP协议,再一层一层往上