Skip to content

网络基础速查

覆盖:TCP 连接管理、cookie/session、分层模型、内网 IP 与穿透方案。偏面试速答 + 排障背景知识。

一、三次握手(建立连接)

客户端                        服务器
  │ ── SYN=1, seq=x ──────────→ │   客户端进入 SYN_SENT
  │ ←─ SYN=1, ACK=1,            │   服务器进入 SYN_RCVD
  │    seq=y, ack=x+1 ────────  │
  │ ── ACK=1, ack=y+1 ────────→ │   双方进入 ESTABLISHED

为什么是三次不是两次? 防止失效的(网络中滞留的旧)连接请求报文被服务端接收后单方面建立连接,浪费资源并产生错误;两次握手无法确认「客户端能收到服务端的包」。

为什么不是四次? 三次已足够同步双方序号并协商参数,四次徒增开销。

二、四次挥手(释放连接)

客户端                        服务器
  │ ── FIN=1 ─────────────────→ │   客户端进入 FIN_WAIT_1
  │ ←─ ACK=1 ─────────────────  │   服务器进入 CLOSE_WAIT,客户端进入 FIN_WAIT_2
  │ ←─ FIN=1, ACK=1 ──────────  │   服务器进入 LAST_ACK
  │ ── ACK=1 ─────────────────→ │   客户端进入 TIME_WAIT(等 2MSL 后关闭)

为什么挥手要四次? 关闭是双向独立的:收到 FIN 只代表对方不再发数据,己方可能还有数据没发完,所以 ACK 和己方的 FIN 分开发。

TIME_WAIT 等 2MSL 干什么? 保证最后一个 ACK 若丢失,还能重传;同时让本连接的旧报文在网络中自然消亡。

三、cookie vs session

维度cookiesession
存储位置客户端浏览器服务器
安全性低(可被分析、伪造)相对高(基于 cookie/URL 重写实现)
服务器压力占服务器资源,量大需考虑
容量限制单个 ≤4KB,单站点约 20 个无硬性限制
数据类型仅字符串任意类型
跨域可设 domain 支持不支持

四、网络分层模型

OSI 七层TCP/IP 四层典型协议
应用层 / 表示层 / 会话层应用层HTTP、DNS、SMTP
传输层传输层TCP、UDP
网络层网络层IP、ICMP
数据链路层 / 物理层网络接口层Ethernet、ARP

五、应用架构模式速答

  • C/S:客户端装专用软件,传输高效、数据管控强;维护升级麻烦
  • B/S:浏览器即客户端,跨平台、易升级;受限于浏览器能力与网络
  • P2P:去中心化,节点互为客户端/服务器,扩展性强;安全性与节点可靠性难保障

六、内网 IP 与内网穿透

内网 IP 段(背下来)

类别网段范围
A 类10.0.0.0/810.0.0.0 ~ 10.255.255.255
B 类172.16.0.0/12172.16.0.0 ~ 172.31.255.255
C 类192.168.0.0/16192.168.0.0 ~ 192.168.255.255

查出口公网 IP:curl cip.cc

为什么公网无法直接访问内网服务?

NAT 只在内网主机主动外连时建立映射;外部直接请求 公网IP:端口 时,NAT 路由器不知道该转发给内网哪台机器。

四种穿透方案

方案原理适用
端口映射路由器上手工配置 公网端口→内网IP:端口有路由器管理权(家庭/自建机房)
反向代理(frp 等)公网服务器做代理,内网主机主动连上去维持隧道最常用,微信回调等本地联调场景
VPN加密隧道把外部设备「拉进」内网企业远程办公,安全性最高,部署重
NAT 穿透(打洞)UDP/TCP Hole Punching,利用 NAT 临时端口建立 P2P 直连P2P 应用(BitTorrent 等),无需中转流量

打洞要点:UDP 打洞靠双方先互发包让 NAT 开洞;TCP 打洞靠双方同时发 SYN,成功后 NAT 形同交换机直接转发。TCP 打洞只能点对点、建连慢,但成功率高于 UDP。