Contents

浅记计网知识点

参考资料

计算机网络概述

网络分类

分类依据 子类 说明
按照 作用范围 分类 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

./pic/ip数据报格式.png

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

IP 协议的转发流程

./pic/转发流程.png"

  1. 接收:网卡将帧交给网络层,检查 CRC。
  2. 解封装:提取 IP 头部,检查校验和。
  3. 路由查表:在路由表中匹配目标网络前缀,得到下一跳(Next Hop)和出接口。
  4. 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(地址保留)

./pic/ip地址.png"

\ A 类 B 类 C 类
前缀长度 8 位 16 位 24 位
前缀 0xxxxxxx 10xxxxxx.xxxxxxxx 110xxxxx.xxxxxxxx.xxxxxxxx
最小网络号 0
00000000
128.0
10000000.00000000
192.0.0
11000000.00000000.00000000
最大网络号 127
01111111
191.255
10111111.11111111
223.255.255
11011111.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 部分,如 /24255.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 交互流程

  1. 主机 A 想发送 IP = B 的报文,但不知道 B 的 MAC。
  2. A 发送 ARP 请求(广播):“谁拥有 IP = B?”
  3. 主机 B 收到请求后,发送 ARP 响应(单播):“我的 MAC 是 …”。
  4. 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 数据报当中

./pic/ICMP.png"

  • 应用
    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 数据报

    • 优点
      安全
      支持多条相同费用路径
      支持区别化费用度量
      支持单播路由和多播路由
      分层路由

./pic/协议对比.png"

外部

  • 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 数据报的数据部分

./pic/udp协议.png"

首部:8 字节 = 64 位
源端口 + 目的端口 + UDP 长度 + 校验和(各 16 位)
数据字段:应用数据

连接方式:无连接(Best‑effort)
优点:开销小、延迟低、适用于实时业务(VoIP、DNS)
缺点:不保证交付、无拥塞控制、无顺序保证
典型使用:DNS 查询、视频流、游戏实时数据

TCP 协议

Transmission Control Protocol,传输控制协议
TCP 首部 + TCP 数据报 = IP 数据报的数据部分

./pic/tcp协议.png"

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 指数增长,依此类推

    ./pic/慢开始.png

  • 快重传、快恢复
    发送方连续收到 3 个冗余 ACK,执行【快重传】,不必等计时器超时
    执行【快恢复】,阈值变为当前 cwnd 的一半(不能 <2)
    从此新的 ssthresh 点进入【拥塞避免】

    ./pic/快重传.png

TCP 连接的握手

三次握手

./pic/三次握手.png

步骤 客户端 服务器 关键字段
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 状态
      第三次握手可携带数据

  • 为什么需要三次握手?
    第一次握手:客户发送请求,此时服务器知道 客户能发
    第二次握手:服务器发送确认,此时客户知道 服务器能发能收
    第三次握手:客户发送确认,此时服务器知道 客户能收

四次挥手

./pic/四次挥手.png

步骤 说明
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:80example.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_reusetcp_fin_timeout 缩短 TIME_WAIT,提升并发
HTTP/2、HTTP/3(QUIC) 多路复用、头部压缩、0‑RTT 减少时延
应用层 限流/熔断(Token Bucket、Hystrix) 防止突发流量冲击后端
压缩(gzip、brotli) 减少传输数据量

学习建议

  • 将 OSI 与 TCP/IP 对照图、TCP 状态机、IP 报文结构等图片放在笔记的开头,快速回顾
  • 在本机或虚拟机上使用 pingtraceroutetcpdumpwireshark 捕获真实报文,配合笔记加深印象