IP
主机 :配有IP地址但是不能进行路由控制的设备
路由器 :既配有IP地址又能进行路由控制
节点:主机和路由器的统称
IP 协议的核心特点
无连接:发送方发送数据包前,不需要和接收方建立连接;数据包独立传输,彼此无关联(可能走不同路径、乱序到达)。
不可靠:IP 协议不保证数据包的传输成功 ------ 不提供重传机制、不保证顺序、不检测数据损坏(仅头部有校验和,不校验数据部分)。
补充:可靠性由上层协议(如 TCP)实现,IP 只负责 "尽力投递"。
面向数据包:数据被分割成固定格式的 "IP 数据报"(数据包)独立传输,不关心数据的具体内容。
跨网络性:通过 IP 地址区分 "网络标识" 和 "主机标识",支持不同类型网络(局域网、广域网等)的互联互通。

网段划分
网段划分的核心原理:借位子网划分
IPv4 地址默认分为 5 类(A/B/C/D/E),其中 A/B/C 类是常用的单播地址(可分配给设备),默认网络位长度固定:
IP 地址分类详解
| IP 地址类 | 范围(点分十进制) | 默认网络位长度 | 默认子网掩码 | 示例 |
|---|---|---|---|---|
| A 类 | 1.0.0.0 ~ 126.255.255.255 | 8 位(第 1 段) | 255.0.0.0(/8) | 10.0.0.5/8 |
| B 类 | 128.0.0.0 ~ 191.255.255.255 | 16 位(前 2 段) | 255.255.0.0(/16) | 172.16.3.20/16 |
| C 类 | 192.0.0.0 ~ 223.255.255.255 | 24 位(前 3 段) | 255.255.255.0(/24) | 192.168.5.30/24 |
网段划分的本质是「借主机位作为网络位」:默认网络位长度固定,通过从主机位中 "借 n 位" 作为额外的网络位,从而拆分出更多子网。
例如:C 类地址 192.168.1.0/24(默认网络位 24 位,主机位 8 位),借 2 位主机位作为网络位后:
新的网络位长度:24 + 2 = 26 位(CIDR 后缀 /26);
新的子网掩码:255.255.255.192(二进制前 26 位为 1);
子网数:2² = 4 个(借 n 位,子网数 = 2ⁿ);
每个子网的主机位长度:8 - 2 = 6 位,可用主机数 = 2⁶ - 2 = 62 个。
路由
路由(Routing)是 网络中数据从「源设备」到「目标设备」的 "路径选择与转发过程" ------ 简单说,路由就是给数据包找 "高速公路",让它能跨网段、跨网络到达目的地。
路由器(Router):路由的 "执行者"
路由器是实现路由功能的核心硬件 / 设备,本质是「连接多个子网 / 网络,并转发数据包的智能设备」,核心能力:
连接多网络:一个路由器有多个网口(如 WAN 口、LAN 口),每个网口连接一个子网 / 网络(如 WAN 口连互联网,LAN 口连家里的子网);
存储路由表:路由器内部有一张「路由表」(核心数据结构),记录了 "不同目标网络对应的转发路径";
路径选择与转发:收到数据包后,解析目标 IP 地址,查询路由表,找到下一跳(Next Hop),把数据包转发出去。
路由表(Routing Table):路由的 "地图"
路由表是路由器的 "导航地图",记录了到达各个目标网络的关键信息,每条记录(路由条目)包含以下核心字段:
路由表字段详解
| 字段 | 含义 |
|---|---|
| 目标网络(Destination) | 要到达的目标子网/网络(如 192.168.2.0/24、0.0.0.0/0 表示默认路由) |
| 子网掩码(Subnet Mask) | 区分目标网络的网络位和主机位(与目标网络配套) |
| 下一跳(Next Hop) | 数据包要转发到的下一个设备 IP(如路由器的另一网口 IP、上级路由器 IP) |
| 出接口(Interface) | 数据包从路由器的哪个网口转发出去(如 eth0、WAN 口) |
| 度量值(Metric) | 路径优先级(如跳数、带宽),度量值越小,路径越优(用于选最优路径) |
数据链路层
功能:在同一本地网络(或同一个广播域)内,实现两个直接相连的设备之间的可靠、高效的数据帧传输。
核心功能与关键技术
数据链路层通常被划分为两个子层:逻辑链路控制(LLC) 和 介质访问控制(MAC)。
成帧
将网络层传下来的数据包(如IP数据报)封装成"帧",添加帧头和帧尾,使其成为数据链路层可识别的单元。
帧结构:
帧头:通常包含目标MAC地址、源MAC地址和类型/长度字段。
数据载荷:来自上层(网络层)的数据包。
帧尾:通常包含用于差错检测的帧校验序列(FCS)。
常见的成帧方法:
字符计数法:在帧头用一个字段标明帧内的字符数。(已很少使用)
字节填充的标志字节法:用特殊的标志字节(如 01111110)标识帧的开始和结束。如果数据中出现标志字节,就在前面插入一个转义字节。
比特填充的首尾标志法(HDLC协议常用):同样用 01111110 作为开始和结束标志。在数据中,每当发送方连续遇到5个"1",就自动插入一个"0"。接收方则进行反向操作,在连续收到5个"1"后,删除紧随其后的"0"。这保证了标志位序列在数据区中不会出现。
物理层编码违例法:利用物理信号中无效的编码序列来表示帧的边界。(如曼彻斯特编码中的高-高或低-低电平)
差错控制
确保接收方收到的帧是正确的。主要使用检错而非纠错。
核心机制:
发送方:对帧的数据部分进行特定计算,生成一个循环冗余校验(CRC) 值,并将其放入帧尾的FCS字段。
接收方:对收到的数据执行同样的CRC计算,将结果与收到的FCS值比较。
如果一致,认为帧正确,通常会回复一个确认(ACK)。
如果不一致,认为帧出错,将其丢弃,并可能回复一个否定确认(NAK) 或不回复。
后续动作:当发送方收到NAK或超时未收到ACK时,会重传该帧。这个"重传"机制是实现可靠传输的关键,它通常由更高层的协议(如数据链路层的ARQ协议或传输层的TCP)来完成。
流量控制
协调发送方和接收方的速度,防止"淹没"接收方。
核心协议:
停止等待协议:发送方每发完一帧,就停止并等待接收方的确认。收到确认后再发下一帧。简单但效率极低。
滑动窗口协议:
发送方和接收方各维护一个"窗口",窗口大小代表了无需等待确认就能连续发送的帧的最大数量。
发送方每收到一个ACK,发送窗口就向前"滑动"。
这是最常用、最高效的机制。TCP也借鉴了此思想。
介质访问控制(MAC)
这是数据链路层的下半部分,专门解决"多路访问"问题:当多个设备连接在同一个广播信道上时,如何协调它们之间的通信,避免冲突?
静态划分信道:
频分复用(FDM)、时分复用(TDM)、波分复用(WDM)、码分复用(CDM)。
优点:无冲突。缺点:资源利用率低,不够灵活。
动态分配信道:
随机访问(冲突不可避免,但有机制解决):
ALOHA:想发就发,冲突了就随机退避后再发。
CSMA:先听再说。发送前先检测信道是否空闲。
CSMA/CD(载波侦听多路访问/冲突检测):以太网(Ethernet) 使用的经典协议。"边说边听",一旦检测到冲突,立即停止发送,并等待一个随机时间后重试。
CSMA/CA(载波侦听多路访问/冲突避免):Wi-Fi 使用。由于无线网络难以在发送时检测冲突,所以采用"预约信道"的方式来尽量避免冲突,如RTS/CTS机制。
受控访问:
轮询:有一个主设备依次询问每个从设备是否要发送数据。
令牌传递:一个特殊的"令牌"在网络中循环,只有拿到令牌的设备才能发送数据。
MAC地址
概念:一个48位的全球唯一标识符,固化在网卡的ROM中,也称为物理地址。格式如:00-1A-2B-3C-4D-5E。
作用:在本地网络内,用于标识唯一的网络接口。数据链路层通过MAC地址来寻址,决定将帧交付给哪个设备。
与IP地址的区别:
IP地址:逻辑地址,用于网络层在不同网络之间进行寻址,标识设备的网络位置。它是可以变的。
MAC地址:物理地址,用于数据链路层在同一网络内部进行寻址,标识设备的物理身份。它通常是固定的。
ARP地址
ARP(地址解析协议) 是数据链路层和网络层协同工作的一个关键协议,它完美地体现了这两层之间的"粘合剂"作用
核心问题:为什么要用 ARP?
想象一下,在网络层(IP层),你的电脑(比如 192.168.1.10)想要发送一个 IP 数据包给同一局域网内的另一台电脑(192.168.1.20)。
网络层只知道目标设备的 IP 地址(192.168.1.20)。IP地址是逻辑的,用于在不同网络间寻址。
但是,数据最终要交给数据链路层来封装成帧,才能在物理网络(如以太网)上传输。而数据链路层只认 MAC 地址(如 08-00-27-0a-6c-ef),因为它是在本地网络内进行物理寻址的。
这就产生了一个核心矛盾:我知道你要去哪(IP地址),但我不知道你的物理地址(MAC地址),所以我的数据帧没法投递。
ARP 就是为了解决这个问题而生的:根据已知的 IP 地址,查询其对应的 MAC 地址。
ARP 查询(广播)
1.检查缓存:主机 A 首先查看自己的 ARP 缓存表,看是否已经有 192.168.1.20 对应的 MAC 地址。
2.构造 ARP 请求包:如果缓存中没有,主机 A 会构造一个 ARP 请求报文
3.封装与发送:主机 A 将这个 ARP 请求包封装到一个数据链路层的帧中。
目标MAC地址:设置为 FF-FF-FF-FF-FF-FF(广播地址)。
源MAC地址:主机 A 自己的 MAC 地址。
然后将这个广播帧发送到网络上。
ARP 响应(单播)
1.全员接收:局域网内的所有设备都会收到这个广播帧。
2.检查并回应:
其他设备(如 192.168.1.30)看到请求的 IP 地址不是自己,就会忽略这个请求,但可能会将主机 A 的 IP-MAC 对应关系缓存下来。
主机 B (192.168.1.20) 发现请求的 IP 地址正是自己,于是它准备响应。
3.构造 ARP 响应包:主机 B 构造一个 ARP 响应报文,可以理解为:
"单独回信": "嗨 192.168.1.10!我是 192.168.1.20,你要找的我的 MAC 地址是 BB-BB-BB-BB-BB-BB。"
4.封装与发送:主机 B 将这个 ARP 响应包封装到一个帧中。
目标MAC地址:直接使用主机 A 的 MAC 地址 (AA-AA-AA-AA-AA-AA)。
源MAC地址:主机 B 自己的 MAC 地址 (BB-BB-BB-BB-BB-BB)。
这是一个单播帧,直接发送给主机 A。
缓存结果
1.主机 A 收到 ARP 响应后,就从报文中获取到主机 B 的 MAC 地址。
2.主机 A 将这个 IP-MAC 对应关系 存入自己的 ARP 缓存表中,并设置一个有效期(通常为 2-20 分钟)。
3.现在,主机 A 就可以用主机 B 的 MAC 地址作为目标地址,正常封装数据帧并发送了。