网络基础学习(一)

目录

一、计算机网络背景

[1. 网络发展过程](#1. 网络发展过程)

[2. 数据传输的基本设想](#2. 数据传输的基本设想)

[3. 协议的出现](#3. 协议的出现)

二、协议

[1. 协议分层](#1. 协议分层)

[2. OSI七层模型](#2. OSI七层模型)

[3. TCP/IP五层(⭐⭐⭐)](#3. TCP/IP五层(⭐⭐⭐))

[3.1 物理层](#3.1 物理层)

[3.2 数据链路层](#3.2 数据链路层)

[3.3 网络层](#3.3 网络层)

[3.4 传输层](#3.4 传输层)

[3.5 应用层](#3.5 应用层)

三、数据封装与解封装

[1. 基本概念](#1. 基本概念)

[2. 核心认识(⭐⭐⭐)](#2. 核心认识(⭐⭐⭐))

[2.1 分离能力(将报头和有效载荷分离)](#2.1 分离能力(将报头和有效载荷分离))

[2.2 交付能力(决定将有效载荷交给上层的谁)](#2.2 交付能力(决定将有效载荷交给上层的谁))

四、局域网通信原理

[1. 局域网与以太网](#1. 局域网与以太网)

[2. MAC地址](#2. MAC地址)

[3. 以太网通信原理(⭐⭐⭐)](#3. 以太网通信原理(⭐⭐⭐))

[4. 网卡的混杂模式](#4. 网卡的混杂模式)

[5. 交换机:分割碰撞域](#5. 交换机:分割碰撞域)

五、跨网络通信:路由器与IP地址(⭐⭐⭐)

[1. 全局定位的基石:IP 地址(源 IP 与 目的 IP)](#1. 全局定位的基石:IP 地址(源 IP 与 目的 IP))

[2. 逐跳传递的接力棒:MAC 地址(源 MAC 与 目的 MAC)](#2. 逐跳传递的接力棒:MAC 地址(源 MAC 与 目的 MAC))

[3. 网络边界的导航员:路由器 (Router)](#3. 网络边界的导航员:路由器 (Router))

[4. 认识MAC地址与IP地址](#4. 认识MAC地址与IP地址)

[4.1 MAC地址](#4.1 MAC地址)

[4.2 IP地址](#4.2 IP地址)


一、计算机网络背景

1. 网络发展过程

2. 数据传输的基本设想

有了网络之后这只是解决了"搬运"的问题。 但是,搬运过去的是一串 0 和 1(二进制流),接收方的网卡拿到这一串 0 和 1 就像拿到一堆乱码,它不知道:

  • 这串数据的开头 在哪?结尾在哪?

  • 哪些位是给网卡看的(MAC地址)?

  • 哪些位是给操作系统看的(IP/端口)?

  • 哪些位是真正的用户数据

另外,如果双方操作系统不一样,那么:

  • Linux 的驱动程序对数据的解读方式可能和 Windows 完全不同。

  • 如果双方不约定好统一的"格式",数据传过去就是"鸡同讲讲"。

为了解决这样的问题,协议应运而生。

物理链路解决了"手拉手",而协议解决了"心连心"。

3. 协议的出现

协议是通信双方共同遵守的规则和约定。就像两个人交流需要用同一种语言一样,计算机之间要互相理解,也必须遵循相同的协议。

  • 确保数据能够被正确接收和解析

  • 解决同步、差错控制、流量控制等问题

  • 让不同厂商的设备能够互操作

二、协议

1. 协议分层

想象一下,如果整个网络通信只有一套巨复杂的规则,那么任何改动都会牵一发而动全身。分层设计的好处是:

  • 高内聚、低耦合:每一层只关注自己的任务,层与层之间通过标准接口交互。修改某一层的实现不会影响其他层。

  • 易于维护和升级:可以单独更新某一层的技术(例如从铜线换成光纤),而不需要重写整个协议栈。

  • 简化问题:将复杂问题分解为多个小问题,逐个解决。

2. OSI七层模型

国际标准化组织(ISO)制定的理论模型,共七层:

层号 名称 功能简介
7 应用层 直接为用户提供服务(HTTP、FTP、SMTP)
6 表示层 数据格式转换、加密、压缩
5 会话层 建立、管理和终止会话
4 传输层 端到端的可靠或不可靠传输(TCP、UDP)
3 网络层 地址管理与路由选择(IP协议)
2 数据链路层 相邻节点间的数据传递(以太网协议)
1 物理层 比特流的透明传输(电压、接口、线缆)

3. TCP/IP五层(⭐⭐⭐)

TCP/IP模型是事实标准,通常简化为五层:

层号 名称 对应OSI层 核心协议
5 应用层 5~7 HTTP、DNS、SMTP
4 传输层 4 TCP、UDP
3 网络层 3 IP(IPv4、IPv6)、ICMP
2 数据链路层 2 Ethernet、PPP
1 物理层 1 双绞线、光纤、无线电

我们日常说的"TCP/IP协议"通常指整个协议簇,而不仅仅是TCP和IP两个协议。

3.1 物理层

核心问题:如何把数据变成信号发出去?

  • 电脑只认识 0 和 1,但网线里只能跑电信号,光纤里只能跑光信号。物理层要解决的就是:怎么用高低电平或者光亮来代表 0 和 1?

  • 关键要素: 网线、光纤、集线器 (Hub)、比特流 (Bit)。

  • 类比: 修建高速公路,并决定是用卡车还是火车来运货。

简单来说,物理层就是让原始比特流能够在信道中"跑起来",而不关心这些比特的含义。

3.2 数据链路层

核心问题:在同一个局域网(子网)内,数据该发给谁?谁先发?

  • 物理层只管发信号,但一根网线上连着好多电脑(碰撞域)。如果大家同时发信号就会乱套。数据链路层要解决"相邻节点"之间的通信:用 MAC 地址找到隔壁的电脑,并通过交换机避免大家抢跑(碰撞)。

  • 关键要素: MAC 地址(网卡出厂自带的身份证)、以太网协议、交换机、帧 (Frame)。

  • **类比:**快递员在同一个小区里,根据门牌号(MAC)把包裹从 1 栋送到 5 栋。

数据链路层让相邻节点之间可以"点对点"地交换数据单元,典型的协议就是以太网协议

3.3 网络层

核心问题:跨越不同的局域网,数据怎么找到最终的终点?

  • 世界上有无数个局域网。当你要访问国外的服务器时,数据链路层那套"在小区里喊话"的机制就失效了。网络层引入了 IP 地址 ,它是一张全球地图,路由器就是地图上的导航员,负责在一堆错综复杂的路径中选出一条最优路线(路由选择)。

  • 关键要素: IP 地址(逻辑地址)、路由器、数据报 (Datagram)。

  • 类比: 从北京寄快递到纽约,你不需要知道每一条街道怎么走,你只需要写上纽约的邮编(IP),沿途的邮局(路由器)会自动帮你规划下一站去哪。

网络层让数据可以在复杂的互联网中穿梭,典型协议是IP协议(IPv4、IPv6)。

3.4 传输层

核心问题:数据到了目标主机后,该交给哪个"进程"?

  • 数据千辛万苦通过 IP 找到了目标电脑,但电脑上同时跑着微信、浏览器和 QQ。数据到底该给谁?传输层通过端口号 (Port) 来区分不同的进程。此外,它还要决定传输策略:是必须百分百送达、丢了重传(TCP),还是只管发、不管死活(UDP)?

  • 关键要素: 端口号、TCP(可靠)、UDP(高效)、段 (Segment)。

  • 类比: 快递送到了纽约的某栋大楼(主机),传输层负责把快递准确交到 502 室的王老板(具体的进程)手里。

传输层提供了两种主要服务:TCP (面向连接、可靠)和UDP(无连接、不可靠但高效)。

3.5 应用层

核心问题:拿到数据后,我们拿它来干嘛?

  • 数据终于完整地交到了你的 C++ 程序或者浏览器手里。但这些二进制数据代表的是一张图片、一段文字、还是一条控制命令?应用层就是各种软件自己定义的业务规则(比如 HTTP、FTP、DNS)。

  • 关键要素: HTTP/HTTPS、SSH、FTP、报文 (Message)。

  • 类比: 王老板拆开快递,发现是一份英文合同,于是他叫了个翻译来解读(按特定应用协议解析数据)。

应用层协议规定了数据交换的格式、交互顺序以及错误处理方式,让应用程序能够理解网络上传送的数据。

三、数据封装与解封装

1. 基本概念

在发送数据时,数据会从应用层向下传递,每一层都会给上层数据加上一个头部(Header) ,形成新的数据单元。这个过程叫封装

  • 报文 = 报头 + 有效载荷(上层数据)

  • 例如:传输层加TCP头 → 网络层加IP头 → 数据链路层加MAC头(和尾部FCS)

接收方则逐层剥去头部,最终还原原始数据,这叫解封装

同一层之间可以认为是在"直接通信",但实际上数据是垂直流动的。这种逻辑通信让设计更清晰。

2. 核心认识(⭐⭐⭐)

无论我们在学哪一层的哪种协议,面对"解包"这个动作时,该协议都必须具备两种基本能力。

2.1 分离能力(将报头和有效载荷分离)

  • 协议在收到一长串二进制数据时,必须能精准地切上一刀------"这里之前是我的报头(快递单),这里之后是有效载荷(快递里的物品)"。

  • 技术深度剖析: 如果分不开,有效载荷就会遭到破坏。

2.2 交付能力(决定将有效载荷交给上层的谁)

  • 拆完快递(剥离报头),我不能把里面的东西随便扔在地上,我得知道它是给谁的。因为上层往往有多个协议在同时运行。

  • 技术深度剖析(多路分解): 每一层的报头里,必定包含一个"标识字段",用来指明上层协议是谁。因为每一层的协议也有不同的种类。

四、局域网通信原理

1. 局域网与以太网

局域网(LAN)是小范围内的网络,比如家庭、办公室。以太网是最常用的局域网技术。

在同一个局域网内,设备可以直接通信,不需要经过路由器。它们遵循的是局域网协议(如以太网协议)。

2. MAC地址

每块网卡出厂时都有一个全球唯一的MAC地址 (48位,通常用十六进制表示)。它相当于设备的物理身份证,用于在同一个子网中标识设备。

3. 以太网通信原理(⭐⭐⭐)

想象一下老师(主机A)在教室里(局域网)点名:"张三,请回答问题!"(发送数据帧)。所有学生(主机)都能听到,但只有张三(MAC地址匹配)会回应。

  • 数据碰撞:如果两个同学同时站起来发言,声音就会混杂,谁也听不清。这就是"数据碰撞"。

  • 碰撞域:发生碰撞的范围。在早期的共享式以太网(使用集线器)中,所有设备都在同一个碰撞域内,任何时刻只允许一台主机发送消息,否则就会碰撞。

4. 网卡的混杂模式

正常情况下,网卡只接收目的MAC是自己的帧。但如果设置为混杂模式 ,它会接收所有经过的帧。这就是抓包工具(如Wireshark)的原理------将网卡设为混杂模式,捕获所有流量进行分析。

5. 交换机:分割碰撞域

为了解决碰撞问题,我们使用交换机(Switch)。交换机能记住每个接口连接的MAC地址,只在需要的时候把数据转发给特定端口,从而将碰撞域分割为每个端口独立的一个小区域。这样多个端口可以同时通信,大大提升了网络效率。

五、跨网络通信:路由器与IP地址(⭐⭐⭐)

为了直观理解跨网通信的底层逻辑,我们可以构建一个地理坐标模型:假设当前的主机(源端)位于广州,而目标服务器(目的端)位于山西。

1. 全局定位的基石:IP 地址(源 IP 与 目的 IP)

在数据包启程前,操作系统会在其网络层报头中烙印下两个关键信息:

  • 源 IP 地址 (Source IP): 数据的出发地(广州)。

  • 目的 IP 地址 (Destination IP): 数据的最终归宿(山西)。

核心法则(端到端通信): 在漫长的网络传输过程中,无论数据包经过多少个复杂的网络节点、走过多少条崎岖的链路,IP 报头中的"源 IP"和"目的 IP"是绝对不会改变的。 IP 地址提供的是全局视角的端到端(End-to-End)逻辑定位,它指明了数据传输的终极方向,这也是网络层(IP协议)最为核心的使命。

2. 逐跳传递的接力棒:MAC 地址(源 MAC 与 目的 MAC)

虽然终极目标是山西,但数据包无法直接从广州"瞬移"到山西。真实的物理传输必须依赖数据链路层,分段进行:

  • 第 1 段: 广州 韶关

  • 第 2 段: 韶关 湖南郴州

  • 第 3 段: 郴州湖南长沙 ...

在每一次跨越物理网段的过程中,"数据包当前所在的节点"和"即将前往的下一个节点"是不断更迭的。

在网络协议栈中,这种"上一站"与"下一站"的物理寻址,正是由 MAC 地址 来负责的。每当数据包经过一个网络边界节点,原有的以太网帧报头就会被剥离,系统会根据下一跳的物理位置,重新封装新的"源 MAC"和"目的 MAC"。尽管外层的 MAC 地址在不断变幻,但内部包裹的 IP 地址(广州到山西)始终如一。

3. 网络边界的导航员:路由器 (Router)

作为一个初出茅庐的数据包,它并不掌握前往山西的全局地图。它唯一能做的,就是前往网络边界的"交通枢纽"寻求指引------这个枢纽就是路由器

  • 数据包(查问): 携带目的 IP(山西),抵达广州边界路由器。

  • 路由器(决断): 路由器内部维护着一张至关重要的路由表 (Routing Table)。它不需要,也不可能记录全网所有设备的精确拓扑。它只需提取数据包中的"目的 IP",在自己的路由表中进行最长前缀匹配。

  • 路由转发: 匹配完成后,路由器得出结论:"前往山西的最优路径,下一跳 (Next Hop) 必须先出省前往湖南郴州。" 随后,路由器将数据包重新封装,发往下一个网段。

当数据包抵达郴州的路由器时,同样的逻辑会再次上演。 数据包正是通过路由器间不断地路由查询与转发 ,在各个子网之间进行 MAC 地址的接力重写,最终依靠着那颗始终不变的目的 IP 指引,成功跨越重重网络,抵达终点。

4. 认识MAC地址与IP地址

4.1 MAC地址

  • 本质: 物理地址(硬件地址)。

  • 存在位置: 它是在网卡(NIC)出厂时,被硬编码(烧录)在硬件里的。

  • 格式: 长度为 48 位(6 个字节),通常用冒号分隔的十六进制表示,例如:08:00:27:03:FB:19

  • 特点: 全球唯一,且终身不变。无论你把这台电脑带到办公室、咖啡厅还是带出国,它的 MAC 地址永远是这一个。

  • 作用范围: 仅在局域网(同一子网)内部有效。它负责解决相邻两台设备之间"最后一公里"的数据投递问题。

4.2 IP地址

  • 本质: 逻辑地址。

  • 存在位置: 它不存在于硬件中,而是由操作系统(网络协议栈)在软件层面配置的。

  • 格式: 目前主流的 IPv4 是 32 位(4 个字节),通常用"点分十进制"表示,例如:192.168.1.100。(而未来的趋势 IPv6 则是 128 位)。

  • 特点: 动态可变。它就像你的收件地址。你在公司上网,分配的是公司的 IP;回到家连上 Wi-Fi,就换成了家里的 IP。

  • 作用范围: 面向整个互联网(广域网)。它负责跨越不同的网络节点,进行全局的路径规划和路由寻址。

相关推荐
专注VB编程开发20年1 小时前
深思数盾国产.NET 加密工具与 VMProtect、.NET Reactor、Zprotect、ILProtector 的优缺点
大数据·网络·.net·加密·加壳
爱丽_1 小时前
WebSocket/Netty 实时通信:从连接管理到消息路由
网络·websocket·网络协议
Lsir10110_1 小时前
【Linux】网络基础——协议与网络传输基本原理
运维·服务器·网络
Fuliy962 小时前
第三阶段:进化与群体智能 (Evolutionary & Swarm Intelligence)
人工智能·笔记·python·学习·算法
ejinxian2 小时前
Go语言完整学习规划(2026版)- Part 1
学习·go
小陈phd2 小时前
多模态大模型学习笔记(十六)——Transformer 学习之 Decoder Only
人工智能·笔记·深度学习·学习·自然语言处理·transformer
路由侠内网穿透.2 小时前
本地部署中间件系统 JBoss 并实现外部访问
运维·服务器·网络·网络协议·中间件
嵌入小生0072 小时前
网络通信 --- TCP并发服务器/IO模型/多路复用IO相关函数接口 --- Linux
服务器·网络·select·tcp并发服务器·fcntl·io模型·多路复用io
艾莉丝努力练剑2 小时前
【QT】常用控件(一):初识控件,熟悉QWidget
android·linux·数据库·qt·学习·mysql·qt5