浅记计网知识点
参考资料
计算机网络概述
网络分类
| 分类依据 | 子类 | 说明 |
|---|---|---|
| 按照 作用范围 分类 | WAN(广域网) | 跨城市、跨国家的网络 |
| MAN(城域网) | 覆盖单个城市或大校园 | |
| LAN(局域网) | 同一建筑或校园内部 | |
| 按照网络 使用者 分类 | 公用网络 | ISP、校园网等面向公众的网络 |
| 专用网络 | 企业内部网、军事网等受限网络 |
层次结构(OSI vs TCP/IP)
| OSI 七层模型 | TCP/IP 四层模型 | 基本数据单位 | 对应网络协议 |
|---|---|---|---|
| 应用层 提供用户接口、网络服务 |
应用层 | 数据报文 | HTTP、FTP 等 |
| 表示层 负责数据处理,编码解码、加密解密 |
Telnet | ||
| 会话层 负责建立、维护、重连通信会话 |
SMTP、DNS 等 | ||
| 传输层 负责端到端的网络通信 |
传输层 | 段 | TCP、UDP 等 |
| 网络层 数据路由,决定数据在网络中的路径 |
网络层 | 分组、IP 数据报 | IPv4、IPv6、ICMP、IGMP 等 |
| 数据链路层 负责相邻节点之间的数据通信 |
网络接口层 | 数据帧、比特 | Ethernet、PPP、HDLC、Wi‑Fi (802.11) 等 |
| 物理层 负责实现通信的光电物理特性 |
物理介质、调制解调、光纤、铜线、无线频段等 |
在 TCP/IP 模型中,表示层、会话层 的功能都被“压缩”到 应用层,数据链路层和物理层合并为网络接口层
层次结构设计的基本原则
-
层间独立、解耦
- 每层只通过 服务访问点(SAP) 或 接口 与相邻层交互
- 改动上层或下层不应影响其他层的实现
-
灵活性与可扩展性
-
最小化跨层信息
性能指标
-
速率
bps 即 bit/s,每秒多少比特,简写为 b/s
宽带所说的 100Mbps,即 100Mbit/s
又因为 1 字节 = 8 比特 = 8 位(1Byte=8bit)
所以 100Mbit/s = 12.5MB/s -
时延
包括:发送、传播、排队、处理 4 种时延 -
往返时间 RTT
数据报文在 端到端通信 中来回一次的时间
| 指标 | 含义 | 常用单位 |
|---|---|---|
| 速率(带宽) | 每秒传输的比特数 | bps、Mbps、Gbps |
| 时延(Latency) | 报文从发送到接收的总时间 | ms、μs |
| 时延组成 | 发送时延、传播时延、排队时延、处理时延 | — |
| 往返时延(RTT) | 报文往返一次的时间 | ms |
| 吞吐量 | 单位时间内成功传输的有效数据量 | Mbps、pps(packet per second) |
| 抖动(Jitter) | 连续时延的变化幅度 | ms |
物理层
作用
该层把上层的比特流转换为电/光/无线信号
实现光纤、双绞线、同轴电缆、无线电波等不同设备的互连
还通过编码、调制等技术保证比特在介质上不被破坏
关键设备
| 设备 | 功能 | 备注 |
|---|---|---|
| 中继器(Repeater) | 放大并再生信号,延伸传输距离 | 只能在同一 LAN 中使用,工作在物理层 |
| 集线器(Hub) | 可看作是多端口中继器,半双工,不分割冲突域 | 已被交换机取代 |
| 调制解调器(Modem) | 实现数字信号和模拟信号的互相转换 | 常用于宽带接入 |
| 光电收发器 | 电信号和光信号的互相转换 | 用于光纤链路 |
-
信道
是往一个方向传输信息的媒体,一条通信电路包含一个 发送信道 和一个 接受信道-
通信信道类别
-
单工(Simplex) 只能一个方向通信,没有反方向反馈的信道
例如:键盘与计算机、广播电视等 -
半双工(Half‑duplex) 双方都可以发送和接受信息,但 不能同时 发送也不能同时接收 例如:对讲机等
-
全双工(Full‑duplex) 双方都可以 同时发送和接收 例如:光纤、Wi-Fi 等
-
-
数据链路层
概述
数据链路层在不可靠的物理介质上为网络层提供可靠的传输
基本数据单位为 帧
主要功能有:进行物理地址寻址**(MAC);在数据前后添加首部/尾部(特定的控制字符),封装成帧;流量控制(防止发送方压垮接收方);错误检测与纠正(奇偶校验、CRC);帧重传(ARQ)
如果特定的控制字符出现在了数据内部而不是首尾怎么办?
没事,透明传输机制会在控制字符前面加上 转义字符
帧结构:
[前导码] + [帧首部] + [数据] + [帧尾部]
差错检测
| 方法 | 检测范围 | 典型应用 |
|---|---|---|
| 奇偶校验(Parity) | 单比特错误、奇数个比特错误 | 串行通信、磁盘存储、某些低速总线 |
| 循环冗余校验(CRC) | 单比特错误、双比特错误、以及长度 ≤ n 的突发错误(n 为生成多项式的阶数) | 以太网、PPP、HDLC、USB、存储介质等 |
最大传输单元 MTU
数据帧的长度受到 MTU 的限制,并不是无限大的
以太网协议
是一种局域网技术,应用于数据链路层,用于完成 相邻设备 的数据帧传输
特点是数据传输速率快,硬件价格便宜,网络造价成本低
-
以太网帧结构
字段 长度(Byte) 说明 前导码 + SFD 8 同步时钟 目的 MAC 6 目标设备 源 MAC 6 发送设备 类型/长度 2 表示上层协议或数据长度 数据(Payload) 46~1500 实际承载的数据 CRC 4 循环冗余校验码 由上,以太网帧的最小帧长为 64 字节(6+6+2+46+4 字节)
-
MAC 地址
也叫物理地址或者局域网地址
每一个设备都拥有唯一的 MAC 地址,比如计算机或者手机都是如此
长度为 48 位 = 6 字节,通常采用 十六进制表示法,每个字节表示一个十六进制数,用-或:连接起来,例如00:1A:2B:3C:4D:5E
前 24 bit 为 OUI(组织唯一标识),后 24 bit 为厂商分配的唯一序列号MAC 广播地址:
FF-FF-FF-FF-FF-FF
网络层
关键功能是:寻址(IP 地址)、路由选择(转发决策)、报文转发(存储转发)、差错报告(ICMP)
IP 协议
-
虚拟互联网络的产生
实际的计算机网络错综复杂
物理设备通过使用 IP 协议,屏蔽了物理网络之间的差异
当网络中主机使用 IP 协议连接时,无需关注网络细节可以想象成 IP 协议构成了计算机之间通信的黑盒子
IP 协议是 TCP/IP 的核心协议
仅仅提供 不可靠、无连接 的传送服务
与 IP 协议配套使用实现其功能的还有:
地址解析协议 ARP、逆地址解析协议 RARP、因特网报文协议 ICMP、因特网组管理协议 IGMP

版本指 IP 协议的版本,占 4 位,如 IPv4 和 IPv6
首部位长度表示 IP 首部长度,占 4 位
IP 数据报总长度,占 16 位,最大数值为 2^16=65535
生存时间表示 IP 数据报文在网络中的寿命,占 8 位
上层协议表明 IP 数据所携带的具体数据是什么协议的,如 TCP、UDP
IP 协议的转发流程

- 接收:网卡将帧交给网络层,检查 CRC。
- 解封装:提取 IP 头部,检查校验和。
- 路由查表:在路由表中匹配目标网络前缀,得到下一跳(Next Hop)和出接口。
- TTL‑1:若 TTL 为 0,发送 ICMP TTL Exceeded。
5 转发:重新封装成链路层帧,发送至下一跳。
IP 地址与子网划分
IPv4 类别
总长度位 32 位,即 4 字节
| 类别 | 前缀 | 网络号位 | 主机号位 | 地址范围 |
|---|---|---|---|---|
| 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(地址保留) |

| \ | A 类 | B 类 | C 类 |
|---|---|---|---|
| 前缀长度 | 8 位 | 16 位 | 24 位 |
| 前缀 | 0xxxxxxx |
10xxxxxx.xxxxxxxx |
110xxxxx.xxxxxxxx.xxxxxxxx |
| 最小网络号 | 000000000 |
128.010000000.00000000 |
192.0.011000000.00000000.00000000 |
| 最大网络号 | 12701111111 |
191.25510111111.11111111 |
223.255.25511011111.11111111.11111111 |
| 子网数量 | 2^7 | 2^14 | 2^21 |
| 最小主机号 | 0.0.0 | 0.0 | 0 |
| 最大主机号 | 255.255.255 | 255.255 | 255 |
| 主机数量 | 2^24 | 2^16 | 2^8 |
CIDR 与子网掩码(现代写法)
- CIDR:
<网络地址>/<前缀长度>,如192.168.1.0/24。 - 子网掩码:对应前缀的二进制全 1 部分,如
/24→255.255.255.0。 - 子网划分:
- 网络号 = IP & 子网掩码
- 主机号 = IP & (~子网掩码)
示例:
10.0.0.5/16→ 网络号10.0.0.0,子网掩码255.255.0.0,可用主机 2¹⁶‑2 = 65534 台。
私有地址段(RFC 1918)
| 类别 | 地址范围 |
|---|---|
| A | 10.0.0.0 ~ 10.255.255.255 |
| B | 172.16.0.0 ~ 172.31.255.255 |
| C | 192.168.0.0 ~ 192.168.255.255 |
关键协议
| 协议 | 层次 | 主要功能 |
|---|---|---|
| ARP | 网络层/链路层 | 将 IPv4 地址映射为 MAC 地址(IP → MAC) |
| RARP(已淘汰) | 网络层 | 将 MAC 地址映射为 IPv4 地址(MAC → IP) |
| NAT | 网络层 | 私有 IP ↔ 公网 IP 的地址转换,节约公网地址 |
| ICMP | 网络层 | 差错报告、网络诊断(Ping、Traceroute) |
| IGMP | 网络层 | 组播成员管理(IPv4) |
| IPv6 | 网络层 | 128 bit 地址、内置安全、无 NAT 必要性 |
网络地址转 NAT 技术
用于多个主机通过一个公有 IP 访问互联网的私有网络
减缓了 IP 地址的消耗,但是增加了网络通信的复杂度
-
NAT 工作原理(作 IP 地址替换)
从内网出去的 IP 数据报,将其 IP 地址替换为 NAT 服务器拥有的合法的公共 IP 地址,并将替换关系记录到 NAT 转换表 中
从公共互联网返回的 IP 数据报,依据其目的的 IP 地址 检索 NAT 转换表,并利用检索到的内部私有 IP 地址 替换 目的 IP 地址,然后将 IP 数据报转发到内部网络总的来说就是:通过 NAT 转换表,发出去时候私有 IP 转换成公共 IP,收进来的时候目的 IP 转换成私有 IP
ARP 协议与 RARP 协议
ARP 交互流程
- 主机 A 想发送 IP = B 的报文,但不知道 B 的 MAC。
- A 发送 ARP 请求(广播):“谁拥有 IP = B?”
- 主机 B 收到请求后,发送 ARP 响应(单播):“我的 MAC 是 …”。
- A 将 IP‑MAC 映射缓存到 ARP 表(默认老化时间 60 s~20 min)。
-
ARP 地址解析协议
Address Resolution Protocol
为网卡(网络适配器)的 IP 地址到对应的硬件地址提供动态映射
可以把 网络层 32 位地址 —> 数据链路层 MAC 48 位地址
即插即用,一个 ARP 表是 自动建立的,不需要系统管理员来配置 -
RARP 逆地址解析协议
Reverse Address Resolution Protocol
是 ARP 的逆过程
可以把 数据链路层 MAC 48 位地址 —> 网络层 32 位地址
ICMP 协议
Internet Control Message Protocol,网际控制报文协议
可以报告 错误信息或者异常情况
ICMP 报文封装在 IP 数据报当中

- 应用
Ping:网络故障的排查
Traceroute:可以探测 IP 数据报在网络中走过的路径
ICMP 常用类型
| 类型 | 代码 | 描述 |
|---|---|---|
| 0 | 0 | Echo Reply(Ping 回显) |
| 3 | 0‑15 | Destination Unreachable(不可达) |
| 8 | 0 | Echo Request(Ping 请求) |
| 11 | 0 | Time Exceeded(TTL 超时) |
| 12 | 0‑1 | Parameter Problem(参数错误) |
网络层的路由
-
路由算法的要求
正确的完整的
在计算上应该尽可能是简单的
可以适应网络中的变化
稳定的公平的 -
自治系统 AS
指处于一个管理机构下的 网络设备群
AS 内部网络自治管理,对外提供一个或多个出入口
其中自治系统 内部的路由协议 为内部网关协议,如 RIP、OSPF 等
自治系统 外部的路由协议 为外部网关协议,如 BGP -
静态路由:人工配置,难度和复杂度高
-
动态路由
-
【链路状态】路由选择算法 LS
收敛快
全局式路由选择算法,每个路由器计算路由时,需构建整个网络拓扑图
利用 Dijkstra 算法 求源端到目的端网络的最短路径 -
【距离-向量】路由选择算法 DV
收敛慢、会存在回路
基础是 Bellman-Ford 方程(简称 B-F 方程)
-
内、外部网关协议
内部
-
RIP
Routing Information Protocol,路由信息协议
位于 应用层
基于距离-向量的路由选择算法,较小的 AS(自治系统)
适合小型网络
报文封装进 UDP 数据报- 特性
采用跳数来度量路径(每个路由器维护自身到其他每个路由器的距离记录)
费用定义在源路由器和目的子网之间
网络直径被限制为不超过 15 跳
和隔壁交换所有的信息,30 主动一次(广播)
- 特性
-
OSPF
Open Shortest Path First,开放最短路径优先协议
位于 网络层
基于链路状态的路由选择算法(即 Dijkstra 算法),较大规模的 AS
适合大型网络
报文直接封装在 IP 数据报- 优点
安全
支持多条相同费用路径
支持区别化费用度量
支持单播路由和多播路由
分层路由
- 优点

外部
- BGP
Border Gateway Protocol,边际网关协议
位于 应用层
是运行在 AS 之间的一种协议,寻找一条好路由
首次交换全部信息,以后只交换变化的部分
BGP 封装进 TCP 报文段
传输层
第一个端到端(主机到主机)的层次
在这一层,信息传送的协议数据单元称为 段或报文
| 传输层的任务 | 说明 |
|---|---|
| 端到端可靠传输 | 确保数据完整、顺序、无重复(TCP) |
| 流量控制 | 防止发送方压垮接收方(滑动窗口) |
| 拥塞控制 | 防止网络整体过载(慢开始、拥塞避免) |
| 多路复用/解复用 | 通过 端口号 区分同一主机上的多个进程 |
| 差错检测 | 对报文头部+数据做校验(TCP/UDP 均使用 16 bit 校验和) |
网络层只是根据网络地址将源结点发出的数据包传送到目的结点
而传输层则负责将数据可靠地传送到 相应的端口
-
重要设备:网关
-
常见协议所占用的端口号
FTP HTTP HTTPS DNS TELNET 21 80 443 53 23 -
端口号
使用不同的端口来标记不同的网络进程
其中端口 port 使用 16 比特位表示,因为 TCP 的报文头部中 源端口号 和 目的端口号 的长度是 16 位
也就是可以表示 2^16=65536 个不同端口号,因此 TCP 可供识别的端口号可能的范围为 [0, 65535]
但是由于 0 到 1023 是知名服务端口,所以实际上还要少 1024 个端口号而对于服务器来说,可以开的端口号与 65536 无关
其实是受限于 Linux 可以打开的文件数量,并且可以通过 MaxUserPort 来进行配置
UDP 协议
User Datagram Protocol,用户数据报协议
UDP 首部 + UDP 数据报 = IP 数据报的数据部分

首部:8 字节 = 64 位
源端口 + 目的端口 + UDP 长度 + 校验和(各 16 位)
数据字段:应用数据
连接方式:无连接(Best‑effort)
优点:开销小、延迟低、适用于实时业务(VoIP、DNS)
缺点:不保证交付、无拥塞控制、无顺序保证
典型使用:DNS 查询、视频流、游戏实时数据
TCP 协议
Transmission Control Protocol,传输控制协议
TCP 首部 + TCP 数据报 = IP 数据报的数据部分

| TCP 标记 | 含义 |
|---|---|
| URG | Urgent,紧急位,紧急数据 |
| ACK | Acknowlegement,确认位,使得确认号生效 |
| PSH | Push,推送位,把数据交付给应用层 |
| SYN | Synchronization,同步位,发送连接请求 |
| FIN | Finish,终止位,释放连接 |
| RST | Reset,重置位,重新建立连接 |
特点:点对点通信,提供可靠的传输服务,提供全双工通信(每条 TCP 连接只能一对一)
- TCP 报文结构
字段 长度(Byte) 说明 源端口 2 发送端的端口号 目的端口 2 接收端的端口号 序列号 4 第一个字节的序号 确认号 4 下一个期望接收的字节序号 数据偏移 4 bit 首部长度(单位 32 bit) 保留位 3 bit - 标志位(Flags) 9 bit URG, ACK, PSH, RST, SYN, FIN 等 窗口大小 2 接收方可接受的字节数(流量控制) 校验和 2 包括伪首部的 16 bit 校验 紧急指针 2 URG 标志置位时有效 选项 可变 如时间戳、窗口扩大因子 数据 可变 应用层负载
可靠传输
不可靠传输信道 在数据传输中可能发生的情况:
比特差错、乱序、重传、丢失
-
基于不可靠信道实现可靠数据传输采取的措施
- 差错检测:利用 编码 实现数据包传输过程中的比特差错检测
- 确认:接收方 向 发送方 反馈 接收状态
- 重传:发送方 重新发送 接收方没有正确接收的数据
- 序号:确保数据 按序 提交
- 计时器:解决数据丢失问题
-
可靠传输协议
-
停止等待协议
是最简单的一种,但是该协议对信道的利用率不高 -
连续 ARQ(Automatic Repeat reQuest)自动重传请求
滑动窗口 + 累计确认,大幅提高了信道的利用率
但是在某些情况下,重传的效率并不高,会重复传输部分已经成功接收的字节
TCP 协议使用滑动窗口实现流量控制,让发送方发送速率不要太快
-
拥塞控制
| \ | 流量控制 | 拥塞控制 |
|---|---|---|
| 范围 | 点对点的通信量 | 考虑整个网络,全局性 |
| 使用到的方法 | 滑动窗口 | 慢开始 + 拥塞避免算法 |
-
慢开始、拥塞避免
【慢开始】拥塞窗口从 1 指数增长
到达阈值时进入【拥塞避免】,变成 +1 增长
【超时】,阈值变为当前拥塞窗口 cwnd 的一半(不能 <2)
再从【慢开始】,拥塞窗口从 1 指数增长,依此类推
-
快重传、快恢复
发送方连续收到 3 个冗余 ACK,执行【快重传】,不必等计时器超时
执行【快恢复】,阈值变为当前 cwnd 的一半(不能 <2)
从此新的 ssthresh 点进入【拥塞避免】
TCP 连接的握手
三次握手

| 步骤 | 客户端 | 服务器 | 关键字段 |
|---|---|---|---|
| 1 | 发送 SYN(seq = x) | SYN=1 | |
| 2 | 发送 SYN+ACK(seq = y, ack = x+1) | SYN=1, ACK=1 | |
| 3 | 发送 ACK(seq = x+1, ack = y+1) | ACK=1 | |
| 状态 | → ESTABLISHED | → ESTABLISHED |
-
握手过程
-
第一次
客户向服务器发送连接请求段,建立连接请求控制段(SYN=1)
表示传输的报文段的第一个数据字节的序列号是 x
此序列号代表整个报文段的序号(seq=x)
客户端进入 SYN_SEND (同步发送状态) -
第二次
服务器发回确认报文段,同意建立新连接的确认段(SYN=1)
确认序号字段有效(ACK=1),服务器告诉客户端报文段序号是 y(seq=y)
表示服务器已经收到客户端序号为 x 的报文段,准备接受客户端序列号为 x+1 的报文段(ack_seq=x+1)
服务器由 LISTEN 进入 SYN_RCVD (同步收到状态) -
第三次
客户对服务器的同一连接进行确认,确认序号字段有效(ACK=1)
客户此次的报文段的序列号是 x+1(seq=x+1),客户期望接受服务器序列号为 y+1 的报文段(ack_seq=y+1)
当客户发送 ack 时,客户端进入 ESTABLISHED 状态
当服务器收到客户发送的 ack 后,也进入 ESTABLISHED 状态
第三次握手可携带数据
-
-
为什么需要三次握手?
第一次握手:客户发送请求,此时服务器知道 客户能发
第二次握手:服务器发送确认,此时客户知道 服务器能发能收
第三次握手:客户发送确认,此时服务器知道 客户能收
四次挥手

| 步骤 | 说明 |
|---|---|
| 1️⃣ FIN → FIN_WAIT_1(客户端) | 客户端发送 FIN,表示数据已发送完毕 |
| 2️⃣ ACK → FIN_WAIT_2(客户端) | 服务器确认 FIN(ACK),客户端进入 FIN_WAIT_2 |
| 3️⃣ FIN → CLOSE_WAIT(服务器) | 服务器发送自己的 FIN,进入 LAST_ACK |
| 4️⃣ ACK → TIME_WAIT(客户端) | 客户端确认 FIN,等待 2 MSL(Maximum Segment Lifetime)后进入 CLOSED |
-
挥手过程
-
第一次
客户向服务器发送释放连接报文段,发送端数据发送完毕,请求释放连接(FIN=1)
传输的第一个数据字节的序号是 x(seq=x)
客户端状态由 ESTABLISHED 进入 FIN_WAIT_1(终止等待 1 状态) -
第二次
服务器向客户发送确认段,确认字号段有效(ACK=1),服务器传输的数据序号是 y(seq=y),服务器期望接收客户数据序号为 x+1(ack_seq=x+1)
服务器状态由 ESTABLISHED 进入 CLOSE_WAIT(关闭等待)
客户端收到 ACK 段后,由 FIN_WAIT_1 进入 FIN_WAIT_2 -
第三次
服务器向客户发送释放连接报文段,请求释放连接(FIN=1)
确认字号段有效(ACK=1),表示服务器期望接收客户数据序号为 x+1(ack_seq=x+1)
表示自己传输的第一个字节序号是 y+1(seq=y+1)
服务器状态由 CLOSE_WAIT 进入 LAST_ACK (最后确认状态) -
第四次
客户向服务器发送确认段,确认字号段有效(ACK=1),表示客户传输的数据序号是 x+1(seq=x+1)
表示客户期望接收服务器数据序号为 y+1+1(ack_seq=y+1+1)
客户端状态由 FIN_WAIT_2 进入 TIME_WAIT,等待 2MSL 时间,进入 CLOSED 状态
服务器在收到最后一次 ACK 后,由 LAST_ACK 进入 CLOSED
-
-
为什么客户机发送方需要在最后等待 2 个 MSL(Max Sagment Lifetime)?
报文在网络中可能存活的最长时间(典型值 2 min),TIME_WAIT 用来确保最后的 ACK 能被对端收到,防止旧报文误认。 最后还有报文需要确定
确保最后的 ACK 可以送达
确保当前连接的所有报文都已过期
端口号概念
| 范围 | 名称 | 说明 |
|---|---|---|
| 0 ~ 1023 | 系统端口(Well‑Known) | 预留给核心服务(HTTP = 80、SSH = 22) |
| 1024 ~ 49151 | 注册端口 | 常被应用程序注册使用 |
| 49152 ~ 65535 | 动态/私有端口 | 客户端临时分配(Ephemeral Port) |
Linux 中的 /proc/sys/net/ipv4/ip_local_port_range 可调整动态端口范围。
Windows 中的 MaxUserPort 注册表键(默认 5000)控制最大可用端口数。
应用层
为操作系统或网络应用程序提供 访问网络服务 的接口
数据传输基本单位为报文
-
主要协议概览
协议 端口 主要功能 HTTP 80 / 8080 超文本传输(Web) HTTPS 443 加密的 HTTP(TLS) FTP 21(控制)/ 20(数据) 文件上传/下载 SMTP 25 / 587 邮件发送 POP3 110 / 995 邮件读取(下载) IMAP 143 / 993 邮件读取(同步) DNS 53 (UDP/TCP) 域名解析 DHCP 67/68 (UDP) 动态 IP 分配 Telnet 23 远程登录(明文) SSH 22 安全远程登录 SNMP 161/162 网络管理 NTP 123 时间同步 大多数应用层协议在 TCP 上实现可靠传输,少数(如 DNS、DHCP、VoIP)使用 UDP 以降低时延
DNS
Domain Name System,域名系统
C/S,UDP,端口 53
解决 IP 地址复杂难以记忆的问题
存储并完成自己所管辖范围内主机的 域名 到 IP 地址 的映射
IP —> DNS 服务 —> 便于记忆的域名
-
域名
由点、字母和数字组成
分为顶级域(com、cn、net、gov、org)
二级域(baidu、taobao、qq、alibaba)
三级域(www)(12-2-0852) -
域名解析的顺序
浏览器缓存
找本机的 hosts 文件,/etc/hosts(Linux)或C:\Windows\System32\drivers\etc\hosts
客户端向本地域名服务器发送查询,服务器若不知道会递归向根服务器、顶级域服务器、权威服务器查询
客户端自行向根 → TLD → 权威服务器逐级查询
DHCP 协议
Dynamic Configuration Protocol,动态主机设置协议
局域网协议,是应用 UDP 协议的应用层协议
作用:为 临时接入局域网 的用户自动分配 IP 地址
FTP 协议
文件传输协议
端口 21 用于发送命令、响应
-
数据连接分为
主动模式:客户端端口 > 1023(PASV)
被动模式:服务器端口 > 1023(PORT)用于传输文件内容
注意,FTP 明文传输,可使用 FTPS(TLS)或 SFTP(SSH)替代
HTTP 协议
HyperText Transfer Protocol,超文本传输协议
TCP,端口 80
可靠的数据传输协议,浏览器向服务器发收报文前,先建立 TCP 连接
HTTP 使用 TCP 连接方式(HTTP 自身无连接)
-
HTTP 请求报文方式
GET:请求指定的页面信息,并返回 实体主体
POST:向指定资源 提交数据 进行处理请求
DELETE:请求服务器 删除 指定的页面
HEAD:请求读取 URL 标识的信息的首部,只返回 报文头
OPETION:请求一些选项的信息
PUT:在指明的 URL 下存储一个文档操作方式 数据位置 明文密文 数据安全 长度限制 应用场景 GET HTTP 报头 明文 不安全 长度较小 查询数据 POST HTTP 正文 可明可密 安全 支持较大数据传输 修改数据 -
存储器层次结构
缓存,Redis
主存,Memcached
辅存,内存 SSD -
HTTP 协议和 TCP 协议的联系和区别
-
联系:
HTTP 协议建立在 TCP 协议之上
浏览器发送 HTTP 请求从服务器端获取网页数据时,会通过 TCP 建立起一个到服务器的连接通道(需要进行三次握手)
直到需要的数据传输完成,HTTP 会立即断开 TCP 连接,该过程很短暂 -
区别:
协议 所在层 定义内容 HTTP 协议 应用层 定义数据内容的规范 TCP 协议 传输层 定义数据传输和连接的规范
-
-
HTTP 常见状态码
状态码 含义 200 请求成功 301 资源(网页等)被永久转移到其它 URL 400 请求无效 403 禁止访问 404 请求的资源(网页等)不存在 500 内部服务器错误
HTTPS 协议
HTTPS(Secure) 是安全的 HTTP 协议,端口号 443
基于 HTTP 协议,通过 SSL 或 TLS 提供 加密处理数据、验证对方身份以及数据完整性保护
对比:
| \ | http | https |
|---|---|---|
| 说明 | 超文本传输协议 | SSL 加密传输协议 |
| 使用的端口 | 80 | 443 |
| 连接方式 | 很简单,无状态 | 由 SSL+HTTP 协议构建的,可进行加密传输和身份认证 |
| 安全性 | 较低 | 较高 |
要升级 https 协议,需要到 CA 进行认证
免费证书较少,所以通常需要一定费用
CA(Certificate Authority)
证书颁发机构,即颁发数字证书的机构
作为电子商务交易中受信任的第三方,承担公钥体系中 公钥的合法性检验 的责任
一些问题
一个 IP 配置多个域名,靠什么识别?
- Hostname(主机名):在操作系统内部,
/etc/hostname(Linux)或系统属性中保存 - 端口号:同一 IP 上的不同服务通过不同端口区分(如
example.com:80与example.com:443) - SNI(Server Name Indication):TLS 握手时客户端发送目标域名,服务器可根据域名返回对应证书,实现同一 IP 多站点(虚拟主机)
单条记录高并发访问的优化思路
| 层面 | 关键技术 | 说明 |
|---|---|---|
| 服务器端 | 缓存(Redis、Memcached) | 将热点数据放在内存,降低 DB 访问 |
| 负载均衡(Nginx、HAProxy、LVS) | 将请求均匀分配到多台后端 | |
| 静态资源分离(CDN、对象存储) | 静态文件(图片、JS、CSS)走 CDN,减轻主机负载 | |
| 异步/消息队列(RabbitMQ、Kafka) | 高并发写操作异步化,削峰 | |
| 数据库端 | 读写分离(主从复制) | 读请求走从库,写请求走主库 |
| 索引优化 | 合理建立 B‑Tree、Hash、覆盖索引 | |
| 分库分表 | 按业务或水平拆分,降低单表规模 | |
| 连接池 | 重用 DB 连接,降低建立/关闭成本 | |
| 网络层 | TCP 参数调优(tcp_tw_reuse、tcp_fin_timeout) |
缩短 TIME_WAIT,提升并发 |
| HTTP/2、HTTP/3(QUIC) | 多路复用、头部压缩、0‑RTT 减少时延 | |
| 应用层 | 限流/熔断(Token Bucket、Hystrix) | 防止突发流量冲击后端 |
| 压缩(gzip、brotli) | 减少传输数据量 |
学习建议
- 将 OSI 与 TCP/IP 对照图、TCP 状态机、IP 报文结构等图片放在笔记的开头,快速回顾
- 在本机或虚拟机上使用
ping、traceroute、tcpdump、wireshark捕获真实报文,配合笔记加深印象

