1. "网络"是什么?两台电脑怎么通信?

📮 类比——寄快递:
你的浏览器(寄件人)→ 网站服务器(收件人)
寄快递需要:地址(IP) + 收件人(端口) + 快递内容(数据) + 运输规则(协议)
你打开网页 = 给服务器"寄了一封信"(请求),服务器"回信"(响应),浏览器把信的内容展示出来。

网络 = 计算机之间传数据的规则和通道。你每天用的浏览器、App、数据库连接,全是网络通信。

关键概念:

一次完整访问:你打开 www.baidu.com
1. 浏览器查 www.baidu.com 的 IP(问 DNS 服务器)→ 110.242.68.66
2. 和 IP:443 建立连接(TCP 三次握手)
3. 发送请求:GET / HTTP/1.1(问百度要首页)
4. 服务器返回:HTTP 200 + 网页内容(HTML)
5. 浏览器解析 HTML 画出页面
// 整个过程 < 1 秒,你无感知——这就是网络

🎯 记住

  • IP 找机器、端口找程序、域名是 IP 的别名
  • 你电脑也有 IP(ipconfig 查),服务器也有(公网 IP)
  • 本地调试:localhost = 127.0.0.1(自己电脑)

2. HTTP 请求和响应长什么样?(会看就会调接口)

HTTP = 网页/接口的通信协议。你调任何后端接口(GET/POST),本质都是发 HTTP 消息。

HTTP 请求的结构
// 请求行:方法 + 路径 + 版本
GET /api/user/1 HTTP/1.1

// 请求头:一堆"元信息"(键: 值)
Host: www.example.com          // 发给谁
User-Agent: Mozilla/5.0 ...    // 我是谁(浏览器/客户端)
Cookie: sessionId=abc123       // 登录凭证
Content-Type: application/json // POST 时的数据格式

// 请求体(GET 没有,POST 有):
{"name": "小明", "age": 18}
HTTP 响应的结构
// 状态行:版本 + 状态码 + 说明
HTTP/1.1 200 OK                // 200 = 成功;404 = 没找到;500 = 服务器错

// 响应头
Content-Type: application/json
Set-Cookie: token=xyz          // 服务器让你存凭证

// 响应体
{"id": 1, "name": "小明", "age": 18}

🎯 状态码速记(面试必问)

  • 2xx 成功(200 正常)· 3xx 重定向(304 用缓存)· 4xx 客户端错(404 不存在、401 没登录)· 5xx 服务器错(500 代码炸了)
  • 调接口报错先看状态码:4xx 是你请求的问题,5xx 是后端的问题
  • curl 命令 / 浏览器 F12 开发者工具都能看 HTTP 请求——多看看就熟了

3. 动手:第一次"抓包"看请求

  1. 打开任意网站,按 F12(开发者工具)→ 点 Network(网络)标签
  2. 刷新页面 → 会看到几十个请求(HTML、CSS、图片、接口)
  3. 点开一个 .js 或接口请求 → 看 Headers(请求头响应头)、Preview/Response(返回内容)
命令行版:curl 直接看请求响应
# Windows CMD / Mac 终端都能用
curl https://www.baidu.com          # 发 GET,看返回的 HTML
curl -i https://www.baidu.com       # -i 连响应头一起看
curl -X POST http://localhost:8080/api/user -H "Content-Type: application/json" -d '{"name":"x"}'
# 调自己 Spring Boot 接口就是这么调的

🎯 学习建议

  • F12 + Network 是程序员每天用的工具,现在就打开看 10 分钟
  • 看懂请求 = 懂前端在调什么;看懂响应 = 懂后端返回什么

4. 网络学习路径

  1. 本篇:IP/端口/HTTP 直觉 ✅
  2. TCP 协议:三次握手四次挥手、可靠传输(面试重灾区)
  3. HTTP/HTTPS:版本演进、TLS 加密、Cookie/JWT
  4. 网络基础:DNS、分层模型、"输入 URL 全过程"
  5. IO 模型:BIO/NIO/epoll(进阶)

🎯 常见误区

  • 误区 1:"HTTP 和 TCP 是一个东西"——HTTP 是应用层协议(内容格式),TCP 是传输层(可靠运输),HTTP 跑在 TCP 上
  • 误区 2:"GET 比 POST 安全"——都不安全(明文),HTTPS 才加密
  • 误区 3:"443 是 HTTP 端口"——80 是 HTTP,443 是 HTTPS

🎤 常见面试追问

  1. IP、端口、域名各自的作用?——IP 找机器(门牌号)、端口找程序(收件人)、域名是 IP 的好记别名(DNS 翻译)。localhost=127.0.0.1 本机。
  2. HTTP 状态码速记?——2xx 成功(200)、3xx 重定向(304 缓存)、4xx 客户端错(404 不存在、401 没登录)、5xx 服务端错(500 代码炸、504 网关超时)。
  3. GET 和 POST 的区别?——GET 查(参数在 URL,可缓存);POST 增(参数在 body,不缓存)。语义差异 > 安全性差异(都不加密,要 HTTPS)。

📖 名词解释(本页术语)

术语 大白话解释
IP 地址电脑的网络门牌号:192.168.x.x 是内网,公网 IP 全球唯一。ipconfig 可查自己的。
端口机器上区分程序的编号(0~65535):80 HTTP、443 HTTPS、3306 MySQL、6379 Redis、8080 开发常用。
域名 / DNS域名 = 网址的好记名字;DNS = 把域名翻译成 IP 的"电话簿"。
HTTP浏览器和服务器通信的协议:请求(GET/POST + 头 + 体)→ 响应(状态码 + 内容)。
请求头 / 响应头请求/响应的"元信息"(Host/Cookie/Content-Type…),F12 Network 里能看到。
抓包查看实际传输的请求/响应内容:浏览器 F12 是最简单的抓包,Charles/Wireshark 是专业工具。
curl命令行发 HTTP 请求的工具:curl -i 看响应头、-X POST 发 POST——调接口调试必备。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。