计算机网络

1.计算机网络

计算机网络是计算机技术与通信技术相结合的产物,它实现了远程通信、远程信息处理和资源共享。

计算机网络的功能:数据通信、资源共享、负载均衡、高可靠性

计算机网络按分布范围和拓扑结构划分如下图所示:

  • 拓扑结构

总线型(利用率低、干扰大、价格低)、星型(交换机形成的局域网、中央单元负荷大,应用最多场景比如办公室)、环型(流动方向固定、效率低扩充难)、树型(总线型的扩充、分级结构)、分布式(任意节点连接管理难成本高)

  • 计算机网络按分布范围

2. 局域网和广域网协议

以太网规范IEEE 802.3 是重要的局域网协议,包括:

IEEE 802.3 标准以太网 10Mb/s 传输介质为细同轴电缆

IEEE 802.3u 快速以太网 100Mb/s 双绞线

IEEE 802.3z 千兆以太网 1000Mb/s 光纤或双绞线

IEEE 802.3ae 万兆以太网 10Gb/s 光纤

  • 无线局域网WLAN技术标准: IEEE 802.11

  • 广域网协议包括: PPP 点对点协议、ISDN 综合业务数字网、XDSL (DSL 数字用户线路的统称HDSL、SDSL、MVL、ADSL)、DDN 数字专线、x.25 、FR中继、ATM异步传输模式。

3.OSI 7层协议

以下是 OSI 七层模型 的详细介绍:


📌 OSI 七层模型总览

层级 名称 主要功能 数据单位(PDU) 常见协议/标准 典型设备
7 应用层 为用户提供网络服务接口(如网页浏览、邮件等),直接面向用户应用 数据(Data) HTTP, FTP, SMTP, POP3, DNS, DHCP, Telnet 网关、终端、主机
6 表示层 负责数据格式转换、加密解密、压缩解压,确保不同系统间的数据可理解 数据(Data) JPEG, GIF, MPEG, ASCII, SSL/TLS, DES 网关
5 会话层 建立、管理和终止应用程序之间的会话(对话控制、同步点设置) 数据(Data) RPC, SQL, NFS, NetBIOS 网关
4 传输层 提供端(端口)到端(进程到进程)的可靠或不可靠数据传输,负责差错控制与流量控制 段(Segment) (TCP) 或 数据报(Datagram)(UDP) TCP, UDP, SCTP 网关、防火墙(部分功能)
3 网络层 负责逻辑寻址、路由选择、分组转发和拥塞控制 包(Packet) IP, ICMP, IGMP, ARP, RARP 路由器、三层交换机
2 数据链路层 在物理链路上提供可靠的数据帧传输,处理物理地址(MAC)、差错检测与流量控制 帧(Frame) Ethernet (IEEE 802.3), PPP, HDLC, STP, ATM, Frame Relay 网桥、交换机(二层)
1 物理层 在物理介质上传输原始比特流,定义电气、机械、功能和规程特性 比特(Bit) RS-232, RS-449, V.35, RJ-45, FDDI, 10BASE-T 中继器、集线器(Hub)

🔍 各层详解

7. 应用层(Application Layer)
  • 作用:为应用程序提供网络服务(不是"应用程序"本身)。
  • 举例:当你使用浏览器访问网站时,HTTP 协议就在这一层工作。
  • 关键点:最靠近用户的一层,不提供底层通信细节。
6. 表示层(Presentation Layer)
  • 作用:解决不同系统间的数据表示差异。
  • 功能
    • 数据编码/解码(如 UTF-8、ASCII)
    • 加密/解密(如 TLS/SSL)
    • 压缩/解压缩(如 ZIP、GIF)
  • 现代实践:在 TCP/IP 模型中,这些功能通常由应用层协议实现。
5. 会话层(Session Layer)
  • 作用:管理通信会话(建立、维持、同步、终止)。
  • 功能
    • 会话检查点(用于恢复)
    • 单工/半双工/全双工控制
  • 例子:远程登录(Telnet)中的会话保持。
4. 传输层(Transport Layer)
  • 核心任务:端到端通信(进程 ↔ 进程)。
  • TCP vs UDP
    • TCP:面向连接、可靠、有序、有流量/拥塞控制。
    • UDP:无连接、不可靠、低延迟,适用于实时应用(如视频通话)。
  • 端口号:用于标识具体应用进程(如 80 → HTTP)。
3. 网络层(Network Layer)
  • 核心任务:逻辑寻址(IP 地址) + 路由。
  • 关键协议
    • IP:负责分组寻址和路由。
    • ICMP :用于网络诊断(如 ping)。
    • ARP:将 IP 地址解析为 MAC 地址(严格说属于链路层辅助功能)。
  • 设备:路由器根据 IP 地址转发数据包。
  • 子层
    • LLC(逻辑链路控制):提供流量控制、差错控制。
    • MAC(媒体访问控制):处理物理地址(MAC 地址)和介质访问。
  • 功能
    • 成帧(Frame)
    • 差错检测(如 CRC)
    • MAC 地址寻址
  • 设备:交换机基于 MAC 地址转发帧。
1. 物理层(Physical Layer)
  • 作用:在物理介质上传输原始比特(0 和 1)。
  • 定义内容
    • 电压、线缆类型、引脚数量(机械特性)
    • 信号速率、编码方式(如曼彻斯特编码)
  • 注意:不关心数据含义,只管"传比特"。

💡 补充说明

  • OSI 模型 vs TCP/IP 模型

    • OSI 是理论模型(7 层),TCP/IP 是实际使用的模型(4 层:应用、传输、网络、网络接口)。
    • 实际网络(如互联网)主要遵循 TCP/IP,但 OSI 有助于教学和故障排查。
  • 数据封装过程(发送端)

    复制代码
    应用层 → 表示层 → 会话层 → 传输层(加 TCP 头)→ 
    网络层(加 IP 头)→ 数据链路层(加帧头/尾)→ 物理层(转为比特流)
  • 解封装过程(接收端):反向逐层剥离头部,还原原始数据。


如果你需要对比图、记忆口诀(如 "All People Seem To Need Data Processing")或某一层的深入案例,也可以告诉我!

4.TCP/IP 网络模型

TCP/IP 网络模型是互联网实际采用的通信架构,相比理论性的 OSI 七层模型,它更简洁、实用。虽然常被称为"四层模型",但有时也会细分为五层(将物理层单独列出)。下面以 标准四层模型 为主进行介绍,并与 OSI 模型对照说明。


🌐 TCP/IP 四层模型详解

层级 名称 主要功能 对应 OSI 层 常见协议/技术 典型设备或组件
4 应用层(Application Layer) 为用户提供各种网络服务和应用接口(如网页、邮件、文件传输等) 应用层 + 表示层 + 会话层 HTTP, HTTPS, FTP, SMTP, POP3, DNS, DHCP, Telnet, SSH 主机、服务器、客户端
3 传输层(Transport Layer) 提供端到端(进程到进程)的可靠或不可靠数据传输,负责流量控制、差错控制 传输层 TCP, UDP 主机(操作系统内核)
2 网络层(Internet Layer) 负责逻辑寻址(IP 地址)、路由选择、分组转发,实现跨网络的数据传输 网络层 IP, ICMP, IGMP, ARP* 路由器、三层交换机
1 网络接口层(Network Interface Layer) (也称链路层或网络访问层) 负责在物理网络上传输数据帧,处理硬件地址(MAC)、介质访问控制、成帧等 数据链路层 + 物理层 Ethernet, Wi-Fi (802.11), PPP, ARP*, FDDI 网卡、交换机、集线器

💡 注:ARP(地址解析协议)在功能上属于网络层(用于 IP → MAC 解析),但其报文封装在数据链路层帧中传输,因此有时被归入网络接口层。


网络协议三要素: 语法、语义、时序。其中语法部分规定传输数据的格式,语义部分规定所要完成的功能,时序部分规定执行各种操作的条件、顺序关系等。

  • 网络层协议:

    • IP:网络层最重要的核心协议,在源地址和目的地址之间传送数据报,无连接、不可靠。
    • ICMP:因特网控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
    • ARP和RARP:地址解析协议,ARP是将P地址转换为物理地址,RARP是将物理地址转换为IP地址。
    • IGMP:网络组管理协议,允许因特网中的计算机参加多播,是计算机用做向相邻多目路由器报告多目组成员的协议,支持组播。
  • 传输层协议:

    • TCP:整个TCP/IP协议族中最重要的协议之一,在IP协议提供的不可靠数据数据基础上,采用了重发技术,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。一般用于传输数据量比较少,且对可靠性要求高的场合。
    • UDP:是一种不可靠、无连接的协议,有助于提高传输速率,一般用于传输数据量大,对可靠性要求不高,但要求速度快的场合。
  • 应用层协议:基于TCP的FTP、HTTP等都是可靠传输。基于UDP的DHCP、DNS等都是不可靠传输

    • FTP:可靠的文件传输协议,用于因特网上的控制文件的双向传输。
    • HTTP:超文本传输协议,用于从WWW服务器传输超文本到本地浏览器的传输协议。使用SSL加密后的安全网页协议为HTTPS。
    • SMTP和POP3:简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,邮件报文采用ASCI格式表示。
    • Telnet:远程连接协议,是因特网远程登录服务的标准协议和主要方式。
    • TFTP:不可靠的、开销不大的小文件传输协议。
    • SNMP:简单网络管理协议,由一组网络管理的标准协议,包含一个应用层协议、数据库模型和一组资源对象。该协议能够支持网络管理系统,泳衣监测连接到网络上的设备是否有任何引起管理师行关注的情况。
    • DHCP:动态主机配置协议,基于UDP,基于C/S模型,为主机动态分配IP地址,有三种方式固定分配、动态分配、自动分配。
    • DNS:域名解析协议,通过域名解析出IP地址。
  • 协议端口对照表

🔍 各层详细说明

1. 应用层(Application Layer)
  • 作用:直接面向用户,提供各种网络应用服务。
  • 特点
    • 不仅包含"应用",还融合了 OSI 中的表示层 (数据格式、加密)和会话层(会话管理)功能。
    • 协议通常基于 TCP 或 UDP 构建。
  • 典型协议举例
    • HTTP/HTTPS:网页浏览
    • DNS :域名解析(将 www.example.com 转为 IP)
    • FTP:文件传输
    • SMTP/POP3/IMAP:电子邮件
    • DHCP:自动分配 IP 地址
2. 传输层(Transport Layer)
  • 核心任务 :实现端到端通信(即从一台主机的某个进程到另一台主机的某个进程)。
  • 两大协议
    • TCP(Transmission Control Protocol)
      • 面向连接、可靠传输
      • 保证数据顺序、无差错、不丢失、不重复
      • 适用于网页、文件传输等场景
    • UDP(User Datagram Protocol)
      • 无连接、不可靠但高效
      • 适用于视频通话、在线游戏、DNS 查询等实时性要求高的场景
  • 关键机制:端口号(Port Number)用于标识具体应用进程(如 80 → HTTP,53 → DNS)。
3. 网络层(Internet Layer)
  • 核心协议IP(Internet Protocol)
    • 负责将数据包从源主机发送到目的主机,跨越多个网络。
    • 使用 IP 地址 (如 192.168.1.12001:db8::1)进行逻辑寻址。
  • 其他重要协议
    • ICMP :用于网络诊断(如 pingtraceroute
    • IGMP:用于组播(Multicast)管理
  • 设备路由器 根据 IP 地址查路由表,决定下一跳。

路由表像一张动态更新的"交通地图",告诉路由器:当收到一个去往某个目的地的数据包时,应该从哪个接口(路由表记录了出接口)转发,以及发给谁(下一跳)。

🧭 一、路由表里有什么?

路由表中的每一条记录(称为 路由条目 / route entry)通常包含以下关键字段:

字段 说明 示例
目的网络(Destination Network) 目标 IP 网络地址(通常是网段,不是单个主机) 192.168.2.0/24
子网掩码(Subnet Mask)前缀长度(Prefix Length) 表示该网络的范围大小 /24(即 255.255.255.0
下一跳地址(Next Hop) 数据包应转发给的下一个路由器的 IP 地址 192.168.1.1
出接口(Outgoing Interface) 本路由器上用于发送该数据包的物理或逻辑接口 GigabitEthernet0/1
管理距离(Administrative Distance, AD) 该路由来源的可信度(值越小越优先) 直连=0,静态=1,OSPF=110,BGP=20
度量值(Metric) 到达该网络的"成本"(如跳数、带宽、延迟等) RIP 跳数=2,OSPF 开销=10

✅ 实际设备中(如 Cisco、华为、Linux),这些字段可能名称略有不同,但逻辑一致。


🔍 二、路由器如何用路由表决定"下一跳"?

当路由器收到一个 IP 数据包时,它会执行以下步骤:

步骤 1:提取目的 IP 地址

例如:收到一个包,目的 IP 是 192.168.2.35

步骤 2:在路由表中最长前缀匹配(Longest Prefix Match)
  • 路由器逐条检查路由表,找出与目的 IP 匹配且子网掩码最长(最具体) 的那条路由。
  • 举例:
    • 路由表中有:
      • 192.168.2.0/24 → 下一跳 10.0.0.2
      • 192.168.0.0/16 → 下一跳 10.0.0.3
      • 0.0.0.0/0(默认路由)→ 下一跳 10.0.0.1
    • 目的 IP 192.168.2.35 同时匹配以上三条,但 /24 最长 → 选择第一条
步骤 3:确定下一跳和出接口
  • 根据匹配的路由条目,得到:
    • 下一跳 IP10.0.0.2
    • 出接口G0/1
步骤 4:通过 ARP 获取下一跳的 MAC 地址(如果在同一网段)
  • 路由器检查:下一跳 10.0.0.2 是否在自己直连的网络中?
    • 如果是 → 发送 ARP 请求 获取其 MAC 地址
    • 如果不是 → 查找通往 10.0.0.2 的路由(递归查找,现代路由器通常避免这种情况)
步骤 5:封装成新帧,从出接口转发
  • 将原 IP 包封装进一个新的数据链路层帧 (如以太网帧)
    • 目的 MAC = 下一跳设备的 MAC
    • 源 MAC = 路由器出接口的 MAC
  • 从指定接口发送出去

至此,完成一次转发!


🗺️ 三、路由表是怎么来的?(路由来源)

路由表不是凭空产生的,它的条目来自以下几种方式:

来源 说明 特点
1. 直连路由(Directly Connected) 路由器接口配置了 IP(如 192.168.1.1/24),自动添加该网段路由 优先级最高(AD=0),无需配置
2. 静态路由(Static Route) 管理员手动配置的路由 简单、可控,适合小型网络
3. 动态路由协议(Dynamic Routing Protocols) 路由器之间自动交换路由信息 适合大型网络,自动适应拓扑变化
-- RIP 距离矢量协议,最大跳数15 简单但效率低
-- OSPF 链路状态协议,基于 Dijkstra 算法 快速收敛,企业常用
-- BGP 路径矢量协议,用于互联网 AS 之间 复杂,控制策略强

💡 默认路由(0.0.0.0/0)是一种特殊的静态或动态路由,表示"所有未知目的地都走这里",常用于连接互联网。


🌐 四、举个实际例子

假设你在家(PC: 192.168.1.10)访问百度(220.181.38.148):

  1. PC 发包 → 目的 IP = 百度 IP
  2. PC 发现不在同一网段 → 发给默认网关(家用路由器,如 192.168.1.1
  3. 家用路由器查路由表:
    • 没有匹配百度的具体路由
    • 但有一条 默认路由0.0.0.0/0 → 下一跳 = 运营商网关(如 100.64.0.1)
  4. 路由器将包转发给运营商路由器
  5. 运营商路由器继续查自己的路由表(可能通过 BGP 学到百度的路由)
  6. 经过多跳转发,最终到达百度服务器所在机房

🔄 每一跳的路由器都只关心"我的路由表告诉我下一步发给谁",而不关心全程路径。


✅ 总结
问题 答案
路由表里有什么? 目的网络、子网掩码、下一跳、出接口、管理距离、度量值等
为什么路由知道下一跳? 因为路由表提前通过直连、静态配置或动态协议学习到了"去某网络该走哪"
如何选择路由? 使用 最长前缀匹配 原则,选最具体的路由
下一跳一定是路由器吗? 是的,在跨网段通信中,下一跳通常是另一个三层设备(路由器或三层交换机)

网络层如何完成端到端的数据传输,并说明各协议的作用和整个流程。

🎯 网络层的核心目标

实现逻辑寻址 + 路由转发 = 跨网络通信

  • 使用 IP 地址 (如 192.168.1.10)标识设备(逻辑地址)
  • 通过 路由器 在不同网络之间转发数据包
  • 不保证可靠性(那是传输层的事),只负责"尽力而为"地传递

🔧 主要协议及其作用
协议 全称 作用
IP(Internet Protocol) 网际协议 负责将数据封装成 IP 数据包,添加源/目的 IP 地址,进行路由选择和分片重组
ICMP(Internet Control Message Protocol) 互联网控制报文协议 用于网络诊断与错误报告(如 pingtraceroute
ARP(Address Resolution Protocol) 地址解析协议 IP 地址 → MAC 地址(仅在同一局域网内有效)
RARP / DHCP(可选) 反向 ARP / 动态主机配置协议 获取自己的 IP 地址(通常由应用层或链路层辅助完成)

⚠️ 注意:ARP 严格来说属于 链路层辅助功能,但为网络层服务,常被归入网络层讨论。


🔄 完整数据传输流程(以主机 A → 主机 B 为例)

假设:

  • 主机 A:IP = 192.168.1.10,MAC = AA:AA:AA:AA:AA:AA
  • 主机 B:IP = 10.0.0.20,MAC = BB:BB:BB:BB:BB:BB
  • 两者不在同一子网(需经过路由器)
步骤 1:上层数据交给网络层
  • 传输层(如 TCP)将数据段交给网络层。
  • 网络层封装成 IP 数据包
    • 源 IP:192.168.1.10
    • 目的 IP:10.0.0.20
步骤 2:判断是否在同一网络
  • 主机 A 用自己的子网掩码(如 255.255.255.0)计算:
    • 自己网络:192.168.1.0
    • 目标网络:10.0.0.0不同网络!
  • → 必须通过 默认网关(通常是路由器)转发

步骤 3:获取默认网关的 MAC 地址(使用 ARP)

  • 假设默认网关 IP 是 192.168.1.1
  • 主机 A 检查 ARP 缓存,若无记录,则广播 ARP 请求 : "谁有 192.168.1.1?请回复你的 MAC!"
  • 路由器收到后,单播回复自己的 MAC(如 RR:RR:RR:RR:RR:RR
  • 主机 A 将 (192.168.1.1 → RR:RR:...) 存入 ARP 缓存
步骤 4:将 IP 包交给数据链路层封装成帧
  • 数据链路层创建以太网帧:
    • 目的 MAC:RR:RR:RR:RR:RR:RR(网关的 MAC)
    • 源 MAC:AA:AA:AA:AA:AA:AA
    • 载荷:完整的 IP 数据包(含源/目的 IP)
  • 通过物理层发送出去
步骤 5:路由器接收并转发
  • 路由器收到帧,检查目的 MAC 是自己 → 接收
  • 剥离帧头,提取 IP 包
  • 查看目的 IP:10.0.0.20
  • 查询 路由表,决定下一跳(可能是另一个路由器或直接连接到目标网络)
  • 若下一跳是直连网络(如 10.0.0.0/24),则:
    • 使用 ARP 获取 10.0.0.20 的 MAC 地址(向该网络广播 ARP)
    • 收到 BB:BB:... 后,重新封装新帧:
      • 源 MAC:路由器出口接口 MAC
      • 目的 MAC:BB:BB:BB:BB:BB:BB
    • 发送帧到主机 B
步骤 6:主机 B 接收
  • 主机 B 收到帧,检查 MAC 是自己 → 接收
  • 剥离帧头,交给网络层
  • 网络层检查 IP 目的地址是自己 → 交给传输层处理

至此,跨网络的数据包成功送达!


🛠️ ICMP 在其中的作用(辅助与诊断)

虽然 ICMP 不参与正常数据传输,但在以下场景至关重要:

  1. ping 命令

    • 发送 ICMP Echo Request
    • 目标回 ICMP Echo Reply
    • 用于测试连通性
  2. 错误报告

    • 目标不可达(Destination Unreachable)
    • 超时(Time Exceeded)→ 用于 traceroute
    • 参数问题等
  3. 路径 MTU 发现(避免分片)

💡 ICMP 报文也封装在 IP 包中传输(协议号 = 1)


📌 总结:网络层数据传输的关键点
关键环节 说明
逻辑寻址 使用 IP 地址标识源和目的
路由决策 路由器根据路由表选择最佳路径
ARP 解析 将下一跳 IP 转为 MAC 地址(仅限本地网络)
分片与重组 若链路 MTU 小于包大小,IP 可分片(IPv4),由目的主机重组
无连接 & 不可靠 IP 不保证送达、不重传、不排序(由 TCP 补偿)
ICMP 辅助 提供诊断和错误反馈机制

🚗 举个生活例子(开车去朋友家):

  • 你知道朋友家地址 → 相当于你知道目的 IP(10.0.0.20)→ 这是寻址
  • 你打开高德地图,输入地址,开始导航 → 地图规划全程路线 → 类似端到端路径规划(但 IP 本身不做这个!)
  • 但 IP 网络不是这样工作的!
    • 实际上,你只关心"下一个路口怎么走":
    • 到第一个路口,看到指示牌:"去市中心 → 右转" → 这就像路由器查路由表,决定下一跳
    • 到下一个路口,又有新指示 → 每一跳只看下一跳
  • 最终靠一连串"局部决策" 到达目的地 → 这就是"逐跳转发"(Hop-by-Hop Forwarding)

💡 所以严格来说:IP 寻址告诉你"最终目的地",而路由(在每个路由器上)告诉你"下一步往哪走"。

4. 网络接口层(Network Interface Layer)
  • 作用 :将 IP 数据包封装成适合底层物理网络传输的(Frame)。
  • 功能包括
    • MAC 地址寻址(如 00:1A:2B:3C:4D:5E
    • 成帧(Frame formatting)
    • 差错检测(如 CRC)
    • 介质访问控制(如 CSMA/CD 用于以太网)
  • 支持多种物理网络
    • 有线:Ethernet(以太网)
    • 无线:Wi-Fi(IEEE 802.11)
    • 点对点:PPP(用于拨号、DSL)

🔄 数据封装与解封装过程

发送端(封装)

复制代码
应用层数据 
→ 传输层加 TCP/UDP 头(形成 Segment/Datagram)  
→ 网络层加 IP 头(形成 Packet)  
→ 网络接口层加帧头/尾(形成 Frame)  
→ 物理层转为比特流发送

接收端(解封装)

复制代码
收到比特流 → 还原为帧 → 去帧头 → 得到 IP 包 → 去 IP 头 → 得到 TCP 段 → 去 TCP 头 → 还原应用数据

📊 TCP/IP 与 OSI 模型对比

TCP/IP 层 对应 OSI 层
应用层 应用层 + 表示层 + 会话层
传输层 传输层
网络层(Internet) 网络层
网络接口层 数据链路层 + 物理层

为什么 TCP/IP 更流行?

因为它是为互联网实际设计的,简洁高效,而 OSI 模型过于理论化,实现复杂。


💡 小贴士:记忆口诀

  • TCP/IP 四层"应传网接"(应用、传输、网络、接口)
  • OSI 七层"All People Seem To Need Data Processing"
    (Application, Presentation, Session, Transport, Network, Data Link, Physical)

4.1 TCP/IP 四层模型通信案列

下面以 TCP/IP 四层模型 为基础,完整梳理 从主机 A 的某个应用程序(进程)发送数据到主机 B 的对应进程 的全过程,包括每一层的作用、涉及的关键协议、数据封装/解封装流程,以及端到端通信的核心机制。


🎯 场景设定

  • 主机 A 上运行一个客户端程序(如浏览器),想访问 主机 B 上的 Web 服务(如 Apache)
  • 主机 A IP:192.168.1.10,端口(临时):50000
  • 主机 B IP:203.0.113.5,Web 服务端口:80
  • 使用 HTTP over TCP

📦 整体流程概览(自上而下 → 自下而上)

text 复制代码
[主机 A]                                    [主机 B]
应用层:  HTTP 请求                         ←→ 应用层:  HTTP 响应
传输层:  TCP 段(源端口50000, 目的端口80) ←→ 传输层:  TCP 段
网络层:  IP 包(源IP 192.168.1.10, 目的IP 203.0.113.5) ←→ 网络层: IP 包
链路层:  以太网帧(含MAC地址)             ←→ 链路层:  以太网帧
物理层:  比特流(通过网线/Wi-Fi)         ←→ 物理层:  比特流

💡 注意:TCP/IP 模型中,物理层被包含在"网络接口层"中,不单独列出。


🔁 分层详解(发送端 → 接收端)

第 4 层:应用层(Application Layer)

  • 功能:生成用户数据,调用传输层服务

  • 协议:HTTP(也可能是 FTP、SMTP、DNS 等)

  • 操作

    • 浏览器构造 HTTP 请求:

      复制代码
      GET /index.html HTTP/1.1
      Host: 203.0.113.5
  • 交给下层 :将此数据块传递给 传输层


第 3 层:传输层(Transport Layer)

  • 功能 :实现 进程到进程 的通信(通过端口号)
  • 协议TCP(可靠)或 UDP(不可靠)
  • 关键操作(以 TCP 为例)
    1. 建立连接 (三次握手):
      • A → B: SYN (seq=x)
      • B → A: SYN-ACK (seq=y, ack=x+1)
      • A → B: ACK (ack=y+1)
    2. 封装数据
      • 添加 TCP 头部:
        • 源端口:50000
        • 目的端口:80
        • 序号、确认号、窗口大小、校验和等
      • 形成 TCP 段(Segment)
    3. 交给网络层

✅ 若使用 UDP(如 DNS 查询),则无连接,直接封装为 UDP 数据报(Datagram)


第 2 层:网络层(Internet Layer)

  • 功能 :实现 主机到主机 的跨网络通信
  • 核心协议IP(IPv4 或 IPv6)
  • 操作
    • 封装 TCP 段为 IP 数据包(Packet)
    • 添加 IP 头部:
      • 源 IP:192.168.1.10
      • 目的 IP:203.0.113.5
      • 协议字段:6(表示上层是 TCP)
      • TTL(防环)、校验和、标识/标志/片偏移(用于分片)等
    • 路由决策
      • 查本地路由表
      • 若目标不在本地网段 → 发给默认网关(路由器)
    • 交给网络接口层

🔧 辅助协议:

  • ARP:若下一跳在本地网络,需用 ARP 获取其 MAC 地址
  • ICMP:用于错误报告(如目标不可达)或诊断(ping)

第 1 层:网络接口层(Network Interface Layer)

  • 功能:在物理网络上传输帧
  • 协议/技术:Ethernet、Wi-Fi (802.11)、PPP 等
  • 操作
    • 将 IP 包封装为 数据帧(Frame)
    • 添加帧头/尾:
      • 目的 MAC:下一跳设备的 MAC(如网关或主机 B)
      • 源 MAC:主机 A 的网卡 MAC
      • 类型字段:0x0800(表示承载的是 IP)
      • FCS(帧校验序列)
    • 通过物理介质(网线、无线电)发送 比特流

⚠️ 如果主机 A 和 B 在同一局域网:

  • 目的 MAC = 主机 B 的 MAC(通过 ARP 获取)

如果跨网络:

  • 目的 MAC = 默认网关的 MAC

🔄 接收端(主机 B)的逆向处理(解封装)

  1. 网络接口层

    • 收到帧,检查目的 MAC 是否是自己 → 是则接收
    • 剥离帧头/尾,提取 IP 包,交给网络层
  2. 网络层

    • 检查目的 IP 是否是自己 → 是则接收
    • 剥离 IP 头部,根据"协议字段"(6)交给 TCP 模块
  3. 传输层

    • 根据目的端口 80,将数据交给 监听 80 端口的 Web 服务进程
    • TCP 执行确认、重传、排序、流量控制等(确保可靠交付)
  4. 应用层

    • Web 服务器解析 HTTP 请求
    • 生成 HTTP 响应(如返回 HTML 页面)
    • 反向流程:封装响应数据,通过 TCP/IP 发回主机 A

📋 涉及的核心协议总结

层级 协议 作用
应用层 HTTP、FTP、DNS、SMTP 等 提供具体网络服务
传输层 TCP (可靠)、UDP(高效) 进程间通信、端口寻址、可靠性保障
网络层 IP(核心)、ICMP、ARP 主机间通信、逻辑寻址、路由、错误报告、地址解析
网络接口层 Ethernet、Wi-Fi、PPP 物理传输、MAC 寻址、成帧

🔑 关键概念强调

  • 端口号:区分同一主机上的不同进程(如 80=Web,22=SSH)
  • IP 地址:标识网络中的主机
  • MAC 地址:标识局域网中的物理设备
  • 封装/解封装:每层加/去头部,像"套信封"
  • 端到端 vs 逐跳
    • TCP 是端到端(A 进程 ↔ B 进程)
    • IP 路由 是逐跳(每台路由器只管下一跳)

✅ 总结一句话:

在 TCP/IP 模型中,主机 A 的进程通过"应用层生成数据 → 传输层加端口 → 网络层加 IP 地址 → 接口层加 MAC 地址"完成封装并发送;主机 B 则逆向解封装,最终将数据精准交付给目标进程。整个过程依赖 HTTP/TCP/IP/ARP 等协议协同工作,实现跨网络的可靠进程通信。


如果你希望看到 Wireshark 抓包示例三次握手细节 ,或者想了解 UDP 场景(如 DNS 查询)的流程对比,也可以告诉我!

4.2 MAC地址

4.2.1 MAC 地址

MAC 地址(Media Access Control Address ,媒体访问控制地址)是网络通信中非常基础且关键的概念。它的核心作用是在 局域网(LAN)内部 唯一标识一个网络接口设备(如网卡),并确保数据帧能准确送达目标设备。


🎯 MAC 地址的核心作用

1. 在数据链路层实现设备寻址

  • IP 地址用于 跨网络的逻辑寻址(网络层)
  • MAC 地址用于 同一物理网络内的物理寻址(数据链路层)
  • 路由器根据 IP 地址决定"下一跳",但实际发送时必须知道 下一跳设备的 MAC 地址

✅ 简单说:IP 告诉你"去哪",MAC 告诉你"发给谁"(在本地网络中)


2. 支持帧的准确投递

  • 在以太网等局域网中,数据以 帧(Frame) 的形式传输
  • 每个帧都包含:
    • 目的 MAC 地址
    • 源 MAC 地址
  • 交换机或网卡收到帧后,会检查目的 MAC:
    • 如果是自己 → 接收并向上层传递
    • 如果不是 → 丢弃(交换机会根据 MAC 表智能转发)

3. 支撑 ARP 协议工作

  • 当主机知道目标 IP,但不知道其 MAC 时,使用 ARP(Address Resolution Protocol)

    text 复制代码
    "谁有 192.168.1.10?请回复你的 MAC!" → 广播
    192.168.1.10 回复:"我是 AA:BB:CC:DD:EE:FF" → 单播
  • 主机将 IP-MAC 映射存入 ARP 缓存表,后续通信直接使用

🔁 反向过程(RARP/BOOTP/DHCP)用于无盘工作站获取 IP,现已基本被 DHCP 取代


4. 交换机学习与转发的基础

  • 交换机通过观察帧的 源 MAC 地址 ,建立 MAC 地址表(CAM 表)

    MAC 地址 接口
    AA:BB:CC:DD:EE:FF Fa0/1
    11:22:33:44:55:66 Fa0/3
  • 当收到发往某 MAC 的帧时,交换机查表,只从对应接口转发(而非广播),提高效率和安全性


📌 MAC 地址的特点

特性 说明
长度 48 位(6 字节),通常写作 XX:XX:XX:XX:XX:XX(如 00:1A:2B:3C:4D:5E
唯一性 由 IEEE 分配厂商前缀(OUI),厂商保证后 24 位唯一(理论上全球唯一)
固化性 通常烧录在网卡硬件中(但可软件修改,称为"MAC 伪装")
作用范围 仅在同一个广播域(如同一个 VLAN 或局域网)内有效,跨路由器不传播

❗ 注意:MAC 地址 不会穿越路由器

路由器在转发 IP 包时,会重新封装帧,使用新出接口的 MAC 作为源,下一跳的 MAC 作为目的。


🌐 举个例子:主机 A → 主机 B(同局域网)

  1. A 想发数据给 B(IP: 192.168.1.20
  2. A 查 ARP 表,若无记录 → 广播 ARP 请求
  3. B 回复自己的 MAC:BB:BB:BB:BB:BB:BB
  4. A 构造以太网帧:
    • 目的 MAC:BB:BB:BB:BB:BB:BB
    • 源 MAC:AA:AA:AA:AA:AA:AA
    • 载荷:IP 包
  5. 交换机收到后,根据目的 MAC 从对应端口转发给 B

没有 MAC 地址,局域网内的设备就无法互相识别和通信!


🆚 MAC 地址 vs IP 地址

对比项 MAC 地址 IP 地址
所属层级 数据链路层(Layer 2) 网络层(Layer 3)
地址类型 物理地址(硬件地址) 逻辑地址(可配置)
作用范围 局域网内(广播域) 全球互联网(跨网络)
是否可变 通常固定(可 spoof) 可动态分配(DHCP)
寻址方式 用于帧的本地投递 用于包的路由转发

✅ 总结

MAC 地址是局域网通信的"身份证",它让数据帧能在同一物理网络中精准找到目标设备。虽然它不出现在跨网络通信的全程中,但每一段本地传输都离不开它------就像快递员送包裹到小区后,仍需门牌号(MAC)才能送到具体住户。

4.2.2 为什么实际发送时必须知道下一跳设备的 MAC 地址

"为什么实际发送时必须知道下一跳设备的 MAC 地址?" ------ 这背后涉及 网络分层模型的本质数据在物理网络中如何真正传输 的原理。

下面从底层逻辑一步步解释:


🧱 核心原因:物理网络只认 MAC,不认 IP

💡 IP 地址是"逻辑地址",用于跨网络寻址;
MAC 地址是"物理地址",用于本地链路传输。

1. 数据最终要通过物理介质传输

  • 无论你发的是网页、视频还是邮件,最终在网络上传输的都是 电信号、光信号或无线电波(即比特流)。
  • 这些信号承载的是 数据链路层的帧(Frame),比如以太网帧。
  • 以太网帧的头部必须包含目的 MAC 地址,否则交换机/网卡不知道该把帧交给谁。

✅ 换句话说:没有 MAC 地址,数据连"出家门"都做不到!


2. 局域网(LAN)是一个共享或交换式广播域

  • 在同一个局域网中(如同一个 Wi-Fi 或有线网段),所有设备通过 MAC 地址 互相识别。
  • 当主机 A 要发送数据:
    • 如果目标在同一网段 → 直接发给目标主机的 MAC
    • 如果目标在其他网段 → 发给 默认网关(路由器)的 MAC
  • 无论哪种情况,最终都要封装成一个带有目的 MAC 的帧,才能被网卡发出。

🔌 就像寄快递:

  • IP 地址 = 收件人全国地址(北京市朝阳区XXX)
  • MAC 地址 = 小区门口快递柜编号 或 快递员工牌号
    即使你要寄到上海,第一步也得先把包裹交给 本小区的快递员(网关) ------ 而你必须知道他的工牌(MAC)!

3. 网卡和交换机只看 MAC 地址

  • 主机的网卡(NIC)收到帧后,第一件事就是检查 目的 MAC 是否是自己 (或广播/组播地址)。
    • 如果是 → 接收并交给上层(如 IP 模块)
    • 如果不是 → 直接丢弃(省电、安全)
  • 交换机也一样:它维护一张 MAC 地址表,根据目的 MAC 决定从哪个端口转发。

❗ 如果帧里没有正确的 MAC 地址,设备根本不会处理这个包!


4. IP 协议本身无法直接驱动硬件

  • IP 是网络层协议,它定义了"源 IP"和"目的 IP",但 IP 包不能直接在网线上跑
  • 必须由 数据链路层(如以太网) 将 IP 包封装进帧中,加上 MAC 头尾,才能发送。
  • 这个过程叫 帧封装(Framing),是操作系统网络栈自动完成的。
text 复制代码
[应用数据]
   ↓
[TCP 头] → TCP 段
   ↓
[IP 头]  → IP 包
   ↓
[以太网头(含MAC) + 以太网尾] → 帧(可在物理网络传输!)

🔄 实际例子:跨网络通信

假设主机 A(192.168.1.10)要访问百度(220.181.38.148):

  1. A 发现目标不在本地网段 → 需要发给 默认网关 (如 192.168.1.1
  2. A 查 ARP 表:"192.168.1.1 对应的 MAC 是什么?"
    • 若没有 → 广播 ARP 请求
    • 路由器回复:MAC = RR:RR:RR:RR:RR:RR
  3. A 构造以太网帧:
    • 目的 MAC = RR:RR:RR:RR:RR:RR(路由器的接口 MAC)
    • 源 MAC = AA:AA:AA:AA:AA:AA
    • 载荷 = IP 包(源 IP=192.168.1.10,目的 IP=220.181.38.148)
  4. 网卡将此帧转为电信号,发送出去
  5. 路由器收到帧 → 检查 MAC 是自己 → 接收 → 剥离帧头 → 处理 IP 包

✅ 注意:IP 包里的目的 IP 始终是百度,但每一跳的帧中,目的 MAC 都是"下一跳设备"的 MAC!


❓ 常见疑问解答

Q:为什么不能直接用 IP 地址代替 MAC?

  • 因为 不同物理网络使用不同的链路层协议
    • 以太网用 MAC
    • PPP(点对点)不需要 MAC
    • Wi-Fi 也有自己的 MAC
  • IP 是通用的,但底层传输机制各异。MAC 是以太网/Wi-Fi 等多路访问网络的必需标识

Q:路由器转发时会改 MAC 吗?

  • 会!而且每次都会重写!
    • 入站帧:目的 MAC = 路由器入接口 MAC
    • 出站帧:源 MAC = 路由器出接口 MAC,目的 MAC = 下一跳设备的 MAC
  • IP 地址在整个过程中保持不变(除非 NAT)

✅ 总结一句话:

因为物理网络设备(网卡、交换机)只能识别 MAC 地址,而 IP 地址只是逻辑标识。要让数据真正"跑起来",就必须在每一跳的本地链路上,用 MAC 地址告诉硬件"这个帧该给谁"。

这正是 "IP 负责端到端,MAC 负责跳到跳" 的精髓所在。

如果你还想了解:

  • ARP 缓存如何工作?
  • 交换机如何学习 MAC 地址?
  • 在 Wi-Fi 或虚拟化环境中 MAC 如何变化?

欢迎继续提问!

相关推荐
框架主义者3 小时前
N2N Maid - 一个开源多端的 N2N 图形界面
计算机网络·rust
Ancelin安心3 小时前
关于代理的一些网络知识复盘
linux·运维·网络·计算机网络·web安全·ubuntu·网络安全
阑梦清川4 小时前
26考研408计算机网络真题---非官方解析
计算机网络·考研
Kendra9196 小时前
计算机网络--- TCP/IP协议簇
网络协议·tcp/ip·计算机网络
yenggd1 天前
企业总部-分支-门点-数据中心使用骨干网SRv6 BE互联互通整体架构配置案例
运维·网络·计算机网络·华为·架构
梁辰兴1 天前
计算机网络基础:局域网的数据链路层
网络·网络协议·计算机网络·计算机·数据链路层·局域网·梁辰兴
梁辰兴1 天前
计算机网络基础:以太网的信道利用率
服务器·网络·计算机网络·计算机·以太网·信道利用率·梁辰兴
yenggd1 天前
华为SRv6 BE跨域配置案例
运维·网络·计算机网络·华为
小陈又菜1 天前
【计算机网络】网络层知识体系全解:从基础概念到路由协议
服务器·人工智能·计算机网络·机器学习·智能路由器