系列文章目录
什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 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地址
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协议,再一层一层往上