网络基础概念

网络1:网络基础概念


一、认识网络

1. 什么是网络

网络(Network) 是将多台计算机或设备通过通信介质(网线、光纤、无线信号等)相互连接,实现资源共享和信息传递的系统。

  • 网络中的每一台设备称为节点(Node)
  • 节点之间通过链路(Link) 相连
  • 多个网络互联构成互联网(Internet),Internet 是全球最大的互联网

2. 网络的分类(按地理范围)

类型 全称 覆盖范围 典型场景
LAN 局域网(Local Area Network) 几百米~几千米 家庭、办公室、校园
MAN 城域网(Metropolitan Area Network) 几千米~几十千米 城市范围的网络
WAN 广域网(Wide Area Network) 几百千米以上 省际、国际、Internet


关键理解:

  • LAN 通常由个人或组织自己搭建和管理,速度快、延迟低
  • WAN 通常由电信运营商搭建,通过租用线路连接各地 LAN
  • 我们日常使用的「上网」本质是:家庭 LAN → 运营商 WAN → Internet

3. 网络通信的核心问题

网络通信需要解决以下五个核心问题:

  1. 找到目标:如何在茫茫网络中定位目标主机?→ IP 地址 + 端口号
  2. 可靠传输:数据包在传输过程中会丢失、乱序怎么办?→ TCP 协议
  3. 格式约定:双方如何理解对方发送的数据含义?→ 应用层协议
  4. 高效传输:如何充分利用带宽,避免拥塞?→ 流量控制、拥塞控制
  5. 硬件寻址:同一局域网内如何找到目标设备?→ MAC 地址

二、网络协议

1. 什么是协议

协议(Protocol) 是通信双方必须共同遵守的规则和约定,规定了数据的格式、传输顺序、错误处理等。

类比:两个人打电话,必须使用同一种语言(中文或英文),这个「语言」就是协议。

协议规定了三要素:

  • 语法(Syntax):数据的格式和编码方式(数据长什么样)
  • 语义(Semantics):每个字段的含义(数据表示什么)
  • 时序(Timing):事件发生的顺序和速率匹配(先发什么后发什么)

2. 协议分层的必要性

网络通信非常复杂,涉及硬件、操作系统、应用程序等多个层面。如果将所有功能放在一个模块里,会导致:

  • 代码耦合严重,难以维护
  • 不同厂商设备无法互联
  • 某一功能改变影响全局

分层设计的好处:

  • 每层只关注自己的职责,层间通过接口通信
  • 上层不需要知道下层的实现细节(封装
  • 不同厂商只要遵守同一层协议标准,就能互联互通
  • 某一层协议变化不影响其他层

3. 标准化组织

组织 全称 主要负责
ISO 国际标准化组织 制定 OSI 七层模型
IEEE 电气和电子工程师协会 局域网标准(如 802.3 以太网、802.11 WiFi)
IETF 互联网工程任务组 TCP/IP 协议族(RFC 文档)
W3C 万维网联盟 HTTP、HTML 等 Web 标准

三、OSI 七层模型

1. OSI 模型概述

OSI(Open System Interconnection,开放系统互联)模型由 ISO 于 1984 年提出,将网络通信功能划分为 7 层,是理解网络的理论框架(实际互联网使用 TCP/IP 模型)。


其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是5层协议

2. 各层详解

第7层:应用层(Application Layer)

  • 功能:为应用程序提供网络服务接口,直接面向用户
  • 代表协议:HTTP、HTTPS、FTP、SMTP、DNS、SSH
  • 数据单元:报文(Message)

第6层:表示层(Presentation Layer)

  • 功能:数据格式转换、加密解密、压缩解压
  • 举例:将 ASCII 转换为 EBCDIC,TLS/SSL 加密
  • 数据单元:报文

第5层:会话层(Session Layer)

  • 功能:建立、管理、终止通信会话,提供会话恢复能力
  • 举例:RPC、NetBIOS
  • 数据单元:报文

第4层:传输层(Transport Layer)

  • 功能:端到端的可靠传输,提供进程间通信(端口号)
  • 代表协议:TCP(可靠)、UDP(不可靠)
  • 数据单元:段(Segment)/ 数据报(Datagram)

第3层:网络层(Network Layer)

  • 功能:逻辑寻址(IP 地址)、路由选择、跨网络转发
  • 代表协议:IP、ICMP、ARP(部分归属)、OSPF
  • 代表设备:路由器
  • 数据单元:包(Packet)
  • 功能:相邻节点之间的可靠传输,物理寻址(MAC 地址)、帧同步、错误检测
  • 代表协议:Ethernet(以太网)、PPP、WiFi(802.11)
  • 代表设备:交换机、网桥
  • 数据单元:帧(Frame)

第1层:物理层(Physical Layer)

  • 功能:定义物理介质的电气特性、光学特性,负责比特流的传输
  • 代表标准:RJ-45(网线接口)、光纤标准、USB
  • 代表设备:集线器(Hub)、中继器
  • 数据单元:比特(Bit)

3. OSI 七层记忆口诀

从上到下(7→1):应表会传网数物

  • 用层、 示层、 话层、 输层、 络层、 据链路层、理层

从下到上(1→7):物数网传会表应


四、TCP/IP 四层模型

1. 与 OSI 的对应关系

TCP/IP 模型是实际互联网使用的协议栈,将 OSI 七层简化为四层:

TCP/IP 层 对应 OSI 层 代表协议
应用层 应用层 + 表示层 + 会话层 HTTP、FTP、DNS、SMTP
传输层 传输层 TCP、UDP
网络层 网络层 IP、ICMP、ARP
网络接口层 数据链路层 + 物理层 Ethernet、WiFi

2. TCP/IP 各层职责

应用层

  • 应用程序直接使用的协议层
  • 程序员最常打交道的一层,自定义应用协议也在此层
  • 数据以报文形式存在

传输层

  • 提供端到端通信(进程到进程,通过端口号区分)
  • TCP:面向连接,可靠传输,有序,有流量控制和拥塞控制
  • UDP:无连接,不可靠,但速度快、开销小

网络层

  • 提供主机到主机通信(通过 IP 地址)
  • 负责路由:决定数据包从源到目的地经过哪些路由器
  • IP 协议是网络层核心协议(无连接、不可靠,尽力而为)

网络接口层(链路层)

  • 负责同一局域网内节点间的数据传输
  • 使用 MAC 地址进行物理寻址
  • 将数据封装为,完成物理传输

五、数据封装与分用

1. 封装(Encapsulation)

发送方数据从应用层向下传递,每经过一层都会添加该层的头部(Header),这个过程称为封装。

复制代码
应用层:    [数据]
传输层:    [TCP头 | 数据]                → 段(Segment)
网络层:    [IP头 | TCP头 | 数据]         → 包(Packet)
链路层:    [帧头 | IP头 | TCP头 | 数据 | 帧尾] → 帧(Frame)
物理层:    比特流

关键理解:

  • 每一层只处理本层的头部,对上层数据视为不透明的「载荷(Payload)」
  • 下层为上层提供服务,上层不感知下层实现
  • 帧的尾部通常包含 FCS(帧校验序列),用于错误检测

2. 分用(Demultiplexing)

接收方数据从物理层向上传递,每经过一层都会剥离该层的头部,将数据交给上层,这个过程称为分用。

复制代码
物理层:    比特流
链路层:    剥离帧头帧尾 → [IP头 | TCP头 | 数据]
网络层:    剥离IP头    → [TCP头 | 数据]
传输层:    剥离TCP头   → [数据]
应用层:    应用程序处理数据

分用的关键:如何判断数据交给上层哪个协议?

  • 链路层帧头中有类型字段(EtherType):0x0800 → IPv4,0x0806 → ARP
  • IP 头中有协议字段(Protocol):6 → TCP,17 → UDP,1 → ICMP
  • TCP/UDP 头中有目标端口号:80 → HTTP,443 → HTTPS,22 → SSH

六、MAC 地址

1. 什么是 MAC 地址

MAC(Media Access Control)地址是网络设备硬件层面的物理地址,由网卡制造商烧录在网卡中,全球唯一。

  • 长度:48 位(6 字节),通常写成 12 位十六进制数
  • 格式AA:BB:CC:DD:EE:FF(用冒号或连字符分隔)
  • 作用范围 :仅在同一局域网内有效,跨路由器后 MAC 地址会改变

MAC 地址结构:

字段 位数 含义
OUI(厂商标识) 前 24 位 由 IEEE 分配给网卡厂商
设备序列号 后 24 位 厂商自行分配,保证唯一性

2. MAC 地址 vs IP 地址

对比项 MAC 地址 IP 地址
层次 数据链路层 网络层
长度 48 位 IPv4: 32 位 / IPv6: 128 位
分配方式 硬件固化(出厂确定) 软件配置(可变)
作用范围 局域网内寻址 全局寻址(跨网络)
类比 身份证号(固定) 通讯地址(可变)

为什么有 IP 地址还需要 MAC 地址?

  • IP 地址用于跨网络的逻辑寻址(找到目标网络)
  • 到达目标网络后,需要 MAC 地址在局域网内精确定位目标设备
  • 两者配合:IP 负责「找到哪个网络」,MAC 负责「找到网络内哪台设备」

七、IP 地址

1. 什么是 IP 地址

IP(Internet Protocol)地址是网络层分配给主机的逻辑地址,用于在全球互联网中唯一标识一台主机(或网络接口)。

  • IPv4 :32 位,点分十进制表示,如 192.168.1.100
  • IPv6 :128 位,冒号十六进制表示,如 2001:0db8::1

2. IPv4 地址结构

IPv4 地址由两部分组成:

复制代码
[  网络号(Network ID)  |  主机号(Host ID)  ]
  • 网络号:标识主机所在的网络(同一网络内所有主机网络号相同)
  • 主机号:标识网络内的具体主机
  • 子网掩码(Subnet Mask):用于区分网络号和主机号的位数

举例:

  • IP 地址:192.168.1.100
  • 子网掩码:255.255.255.0(即 /24
  • 网络号:192.168.1.0
  • 主机号:100

3. IP 地址分类(有类地址)

类别 首位特征 网络号位数 主机号位数 地址范围 适用规模
A 类 0 8 位 24 位 1.0.0.0 ~ 126.255.255.255 大型网络
B 类 10 16 位 16 位 128.0.0.0 ~ 191.255.255.255 中型网络
C 类 110 24 位 8 位 192.0.0.0 ~ 223.255.255.255 小型网络
D 类 1110 --- --- 224.0.0.0 ~ 239.255.255.255 组播地址
E 类 1111 --- --- 240.0.0.0 ~ 255.255.255.255 保留实验

4. 特殊 IP 地址

地址 含义
127.0.0.1 本地回环地址(loopback),用于测试本机网络栈
0.0.0.0 通配地址,表示「本机所有接口」或「未指定」
255.255.255.255 受限广播地址,发送给本网络所有主机
x.x.x.255(C类) 定向广播地址,发送给指定网络所有主机
x.x.x.0 网络地址(不分配给主机)
169.254.x.x 链路本地地址,DHCP 失败时自动分配

私有 IP 地址(不可路由到公网):

范围 类别
10.0.0.0/8 A 类私有
172.16.0.0/12 B 类私有
192.168.0.0/16 C 类私有

家庭路由器分配给设备的通常是 192.168.x.x,属于私有地址,需要通过 NAT 访问公网。


八、端口号

1. 什么是端口号

端口号(Port) 是传输层用于区分同一主机上不同进程(应用程序) 的标识符。

  • 长度 :16 位无符号整数,范围 0 ~ 65535
  • 作用:IP 地址定位主机,端口号定位主机上的进程
  • 类比:IP 地址是大楼地址,端口号是房间号

2. 端口号分类

范围 类型 说明
0 ~ 1023 知名端口(Well-Known Ports) 由 IANA 分配,用于标准服务,需 root 权限绑定
1024 ~ 49151 注册端口(Registered Ports) 可注册使用,常见应用使用
49152 ~ 65535 动态/私有端口(Ephemeral Ports) 客户端临时端口,系统自动分配

常见知名端口:

端口 协议 服务
20/21 TCP FTP(数据/控制)
22 TCP SSH
23 TCP Telnet
25 TCP SMTP(邮件发送)
53 UDP/TCP DNS
80 TCP HTTP
443 TCP HTTPS
3306 TCP MySQL
6379 TCP Redis
8080 TCP HTTP 代理/开发服务器

3. 端口号的使用规则

  • 服务端 :绑定一个固定端口,等待客户端连接(bind 系统调用)
  • 客户端:通常不手动绑定端口,由操作系统从动态端口范围自动分配
  • 同一主机上,同一协议(TCP/UDP)下端口号不能重复绑定
  • TCP 的 80 端口和 UDP 的 80 端口是相互独立

九、Socket 套接字

1. 什么是 Socket

Socket(套接字) 是操作系统提供给应用程序进行网络通信的编程接口(API),是应用层与传输层之间的抽象层。

类比:Socket 就像网络通信的「插座」,应用程序通过它发送和接收数据,不需要关心底层的 TCP/IP 细节。

  • Socket 是一个文件描述符(在 Linux 中「一切皆文件」)
  • 通过 socket() 系统调用创建,返回一个 int 型文件描述符
  • 可以像操作文件一样用 read/write 收发数据

2. Socket 五元组

一个网络连接由五元组唯一确定:

复制代码
{ 协议, 源IP, 源端口, 目的IP, 目的端口 }
字段 说明
协议 TCP 或 UDP
源 IP 发送方 IP 地址
源端口 发送方端口号
目的 IP 接收方 IP 地址
目的端口 接收方端口号

只要五元组中任意一个字段不同,就是不同的连接。这也是为什么服务器的 80 端口可以同时接受大量客户端连接------每个连接的源IP或源端口不同,五元组唯一。


3. Socket 类型

类型 常量 对应协议 特点
流式套接字 SOCK_STREAM TCP 面向连接,可靠,有序,字节流
数据报套接字 SOCK_DGRAM UDP 无连接,不可靠,有边界,数据报
原始套接字 SOCK_RAW IP/ICMP等 绕过传输层,直接操作网络层,需 root 权限

4. Socket 基本编程流程

TCP 通信流程:

复制代码
服务端:                          客户端:
socket()  创建套接字              socket()  创建套接字
bind()    绑定地址和端口
listen()  开始监听
accept()  等待客户端连接  ←───── connect()  发起连接
read/write 收发数据       ←────→ read/write 收发数据
close()   关闭连接               close()   关闭连接

UDP 通信流程:

复制代码
服务端:                          客户端:
socket()  创建套接字              socket()  创建套接字
bind()    绑定地址和端口
recvfrom() 接收数据      ←───── sendto()  发送数据
sendto()   发送数据      ────→  recvfrom() 接收数据
close()                          close()

十、总结

复制代码
应用程序
    ↕  Socket API(文件描述符)
应用层     HTTP / FTP / DNS / SMTP ...
    ↕
传输层     TCP(可靠)/ UDP(快速)  → 端口号区分进程
    ↕
网络层     IP协议                   → IP地址定位主机,路由转发
    ↕
链路层     Ethernet / WiFi          → MAC地址局域网内寻址
    ↕
物理层     网线 / 光纤 / 无线信号
概念 一句话总结
协议 通信双方共同遵守的规则
分层 解耦复杂性,各层专注自身职责
封装/分用 发送时逐层加头,接收时逐层剥头
MAC 地址 局域网内的硬件物理地址,48位,跨路由器会变
IP 地址 全网逻辑地址,32位,用于跨网络寻址
端口号 区分同一主机上的不同进程,16位
Socket 应用程序与网络协议栈之间的编程接口
五元组 {协议, 源IP, 源端口, 目的IP, 目的端口} 唯一标识一条连接
相关推荐
我在人间贩卖青春2 小时前
Qt 网络编程
网络·qt
白慕慕2 小时前
tcp传输
linux·网络协议·tcp/ip
Mr成文2 小时前
【Linux/Ubuntu】OpenCode +Oh My OpenAgent安装配置实践
linux·运维·ubuntu
超b小哥2 小时前
【超详细】Claude Code Ubuntu平台完整部署指南
linux·人工智能·ubuntu·ai·claude code
原来是猿2 小时前
为什么要配置环境变量?
linux·数据库·python
牢七2 小时前
白盒123
linux·windows·microsoft
kyle~2 小时前
操作系统---指令/调用体系(特权、访管/陷入、系统调用)
linux·操作系统
m0_738120722 小时前
渗透测试——Ripper靶机详细横向渗透过程(rips扫描文件,水平横向越权,Webmin直接获取root权限)
linux·网络·数据库·安全·web安全·php
竹之却2 小时前
【Linux】Linux 中 .service 文件核心介绍
linux·运维·服务器·systemd·.service 文件