网络与 Web 基础全解析:从通信原理到实际应用

网络与 Web 基础是编程、运维、前后端开发的 “底层地基”,核心围绕 “设备如何通信” 和 “Web 如何工作” 两大核心问题,涵盖TCP/IP 通信协议、HTTP/HTTPS 传输规则、域名解析、浏览器请求流程四大模块。本文拒绝抽象理论堆砌,用 “通俗解释 + 实操验证 + 场景案例” 的方式,让零基础也能快速掌握核心逻辑,同时覆盖搜索引擎高频检索需求,适合作为入门进阶的实用指南。

一、核心概念速览:先搞懂 “是什么”

学习前先明确关键术语,避免后续理解脱节:

术语 通俗解释 核心作用
TCP/IP 协议族 互联网的 “通信规则集合” 让不同设备(手机、服务器、电脑)跨网络通信
IP 地址 设备的 “网络身份证” 标识网络中唯一设备(如 192.168.1.1)
端口 设备内的 “应用门牌号” 区分设备上的不同服务(如 80 端口对应网页服务)
HTTP/HTTPS Web 的 “数据传输协议” 浏览器与服务器之间传输网页、数据的规则
域名 IP 地址的 “易记别名” 替代难记的 IP(如www.baidu.com替代 110.242.68.3)
DNS 解析 “别名转身份证” 的过程 将域名转换为 IP,让浏览器找到目标服务器

关键逻辑:设备通过 TCP/IP 协议通信 → Web 基于 HTTP/HTTPS 传输数据 → 域名通过 DNS 解析对应 IP → 浏览器按流程请求并渲染页面。

二、TCP/IP 协议族:互联网的 “通信基石”

所有网络通信(包括刷网页、发消息、传文件)都基于 TCP/IP 协议族,核心是 “分层协作”—— 每层负责特定功能,上层依赖下层,无需关心底层实现。

1. TCP/IP 五层模型(实战派简化版)

不用死记七层模型,五层模型更贴合实际应用:

分层 核心功能 通俗类比 实操关联
物理层 传输电信号 / 光信号(硬件层面) 快递的 “公路 / 铁路”(物理通道) 网线、光纤、网卡(坏了会断网)
数据链路层 局域网内通信(MAC 地址识别) 快递的 “同城配送”(按小区地址) 交换机、ARP 协议(局域网内找设备)
网络层 跨网络路由(IP 地址定位) 快递的 “跨省运输”(按邮编地址) 路由器、IP 协议(跨网访问百度)
传输层 端口到端口通信(保障可靠性 / 速度) 快递的 “上门收件 / 派件”(按门牌号) TCP/UDP 协议、端口(80/443 端口)
应用层 具体应用服务(面向用户) 快递的 “面单填写 / 签收”(用户交互) HTTP、HTTPS、DNS、SSH(日常用的服务)

重点:开发 / 运维主要关注

传输层(TCP/UDP)

应用层(HTTP/HTTPS)

,底层由操作系统和硬件自动处理。

2. 传输层核心:TCP 与 UDP 的 “取舍”

传输层有两个核心协议,实际应用中根据需求选择:

特性 TCP(传输控制协议) UDP(用户数据报协议) 实际应用场景
连接方式 面向连接(三次握手建立连接) 无连接(直接发,不建立连接) TCP:网页、支付、文件传输(需可靠);UDP:直播、游戏、语音(需快速)
可靠性 保证数据完整、有序到达(丢包重传) 不保证(可能丢包、乱序)
速度 较慢(有确认、重传开销) 较快(无额外开销)
数据大小 无限制(按流传输) 有限制(单次数据包大小有限)

TCP 三次握手(必懂!)

为什么 TCP 可靠?因为连接前要 “三次确认”:

  1. 客户端 → 服务端:“我要连你,准备好了吗?(SYN)”

  2. 服务端 → 客户端:“我准备好了,你连吧!(SYN+ACK)”

  3. 客户端 → 服务端:“收到,我开始连了!(ACK)”

    三次握手完成,连接建立,后续才能传输数据。

3. 实操验证:用命令看 TCP/IP 工作状态

\ 1. 查看本机IP(Linux/macOS)

ifconfig   或 ip addr

\ Windows用:ipconfig

\ 2. 测试网络连通性(基于ICMP协议,属于网络层)

ping www.baidu.com   能收到回复说明网络可达

ping 127.0.0.1      测试本机网络栈是否正常(不通则本地网络有问题)

\ 3. 查看端口占用(Linux)

netstat -tuln   列出所有监听的TCP/UDP端口

\ 示例:看到0.0.0.0:80 → 80端口正在提供HTTP服务

\ 4. 测试端口是否开放(比如测试百度443端口)

telnet www.baidu.com 443   连接成功说明端口开放

\ 或用nc命令(更强大)

nc -zv www.baidu.com 80 443

三、HTTP/HTTPS:Web 的 “数据传输规则”

Web 的本质是 “浏览器(客户端)” 和 “服务器” 的交互,而 HTTP/HTTPS 就是两者沟通的 “语言”—— 规定了数据如何发送、格式是什么。

1. HTTP 协议:超文本传输协议(基础版)

(1)核心特点

  • 无状态:服务器不记得你的上一次请求(比如第一次登录后,第二次访问仍需验证,需用 Cookie/Session 保持状态);

  • 明文传输:所有数据(账号、密码、网页内容)都是 “裸奔”,容易被劫持、篡改;

  • 基于 TCP:先建立 TCP 连接,再传 HTTP 数据,请求完连接可能关闭(HTTP/1.1 后支持长连接);

  • 请求 - 响应模型:浏览器发 “请求”,服务器回 “响应”,一问一答。

(2)HTTP 请求 / 响应结构(实战抓包示例)

用 Chrome 开发者工具(F12→Network)抓包,能看到真实的 HTTP 请求 / 响应:

\ HTTP请求(浏览器→服务器)

GET /index.html HTTP/1.1   请求行:方法+路径+协议版本

Host: www.baidu.com         请求头:键值对,描述请求信息

User-Agent: Chrome/120.0.0.0   浏览器标识

Accept: text/html           可接收的响应格式

Cookie: BAIDUID=xxx         身份标识(保持状态)

\ 空行(分隔请求头和请求体)

username=test\&password=123   请求体(仅POST/PUT有,传参数)
\ HTTP响应(服务器→浏览器)

HTTP/1.1 200 OK   状态行:协议版本+状态码+描述

Server: nginx     服务器软件

Content-Type: text/html; charset=utf-8   响应数据类型(HTML)

Content-Length: 1024   响应数据大小

Set-Cookie: BAIDUID=xxx   服务器设置Cookie

\ 空行

\<!DOCTYPE html>...   响应体(实际内容,如HTML、图片、JSON)

(3)核心请求方法(动词的含义)

HTTP 请求方法是 “动作指令”,告诉服务器要做什么:

方法 作用 实际场景
GET 获取资源(查) 访问网页、搜索内容(如百度搜 “Python”)
POST 提交资源(改 / 增) 登录、提交表单、上传文件
PUT 全量更新资源 编辑文章(覆盖原有内容)
DELETE 删除资源 删除文件、注销账号
HEAD 只获取响应头(不拿内容) 检查资源是否存在、更新时间

(4)HTTP 状态码(响应结果的 “密码”)

状态码是服务器的 “回复状态”,记住高频码就能快速排查问题:

类别 含义 高频码 场景示例
2xx 成功 200 OK(请求成功) 正常访问网页
3xx 重定向(需进一步操作) 301(永久重定向)、302(临时重定向) 域名变更、页面搬家
4xx 客户端错误(你的问题) 400(参数错误)、401(未登录)、403(无权限)、404(资源不存在) 网址输错、未登录访问会员页
5xx 服务端错误(服务器问题) 500(内部错误)、502(网关错误)、503(服务不可用) 服务器宕机、代码 bug

2. HTTPS 协议:HTTP+SSL/TLS(加密版)

HTTP 明文传输的问题太致命(比如输入密码时被劫持),HTTPS 就是 “HTTP 加了层加密保护”—— 核心是 SSL/TLS 协议,解决 “劫持、篡改、伪造” 三大问题。

(1)HTTPS 核心原理

  • 加密方式:“非对称加密 + 对称加密” 结合:
  1. 握手阶段:用非对称加密(公钥加密,私钥解密)传输 “对称加密密钥”(避免密钥被劫);

  2. 数据传输阶段:用对称加密(同一密钥加密解密)传输数据(速度快);

  • 身份认证:通过 CA 证书验证服务器身份(比如访问淘宝时,证书确保你连的是真淘宝,不是钓鱼网站)。

(2)HTTP vs HTTPS 核心区别

对比维度 HTTP HTTPS
传输方式 明文 加密(SSL/TLS)
端口 80 443
安全性 低(易劫持、篡改) 高(加密 + 认证)
证书 无需 需 CA 颁发证书(免费 / 付费)
性能 快(无加密开销) 稍慢(握手 + 加密,可通过 HTTP/2 优化)

(3)实操:查看 HTTPS 证书信息

\ Linux用openssl查看百度证书

echo | openssl s\_client -connect www.baidu.com:443 2>/dev/null | openssl x509 -noout -text

\ 能看到证书有效期、颁发机构、公钥等信息

四、域名与 DNS 解析:从 “网址” 到 “IP” 的映射

我们记网址(如www.baidu.com)比记 IP(110.242.68.3)容易,而 DNS 解析就是 “把网址翻译成 IP” 的过程 —— 相当于互联网的 “电话簿”。

1. URL 结构:网址的 “组成部分”

一个完整的 URL 包含所有访问资源的信息,以https://www.baidu.com:443/s?wd=python#top为例:

部分 含义 说明
https 协议(HTTP/HTTPS/FTP 等) 规定数据传输方式
www.baidu.com 域名 对应服务器 IP 的别名
443 端口 HTTPS 默认端口,可省略(HTTP 默认 80)
/s 资源路径 服务器上的具体资源位置
wd=python 查询参数 GET 方法的参数(键值对)
#top 锚点 页面内定位(不传给服务器,浏览器本地处理)

2. DNS 解析流程(从网址到 IP 的 7 步)

当你输入www.baidu.com并回车,DNS 解析会按以下顺序查找 IP:

  1. 浏览器缓存:先查浏览器本地缓存(比如之前访问过百度,直接用缓存的 IP);

  2. 操作系统缓存:查本地 hosts 文件(Linux/etc/hosts,WindowsC:\Windows\System32\drivers\etc\hosts);

  3. 本地 DNS 服务器:向路由器或运营商 DNS(如 114.114.114.114)查询;

  4. 根 DNS 服务器:本地 DNS 找不到时,向根 DNS(互联网顶级 DNS)查询;

  5. 顶级域 DNS:根 DNS 返回.com 顶级域 DNS 服务器地址;

  6. 权威 DNS 服务器:顶级域 DNS 返回百度的权威 DNS 服务器地址;

  7. 返回 IP:权威 DNS 返回www.baidu.com对应的 IP,最终传给浏览器。

实操:手动解析域名

\ 1. 用nslookup解析域名(跨平台)

nslookup www.baidu.com

\ 输出示例:Address: 110.242.68.3(百度的IP)

\ 2. 用dig查看详细解析过程(Linux/macOS)

dig www.baidu.com

\ 能看到解析经过的DNS服务器、记录类型等

五、浏览器请求流程:从输入网址到页面展示

以访问https://www.baidu.com为例,完整流程共 8 步,每一步都能对应前面学的知识点:

  1. 输入网址:用户在地址栏输入www.baidu.com并回车;

  2. DNS 解析:按上面的流程,将域名转为 IP(如 110.242.68.3);

  3. TCP 三次握手:浏览器与百度服务器的 443 端口建立 TCP 连接;

  4. HTTPS 握手:协商加密密钥,验证百度的 CA 证书(确保是真百度);

  5. 发送 HTTP 请求:浏览器发送 GET 请求(请求行 + 请求头,比如要访问首页);

  6. 服务端处理:百度服务器接收请求,查询首页数据,返回 HTTP 响应(200 OK + HTML 内容);

  7. TCP 四次挥手:数据传输完成,关闭 TCP 连接;

  8. 浏览器渲染:解析 HTML(结构)、CSS(样式)、JS(交互),加载图片、字体等资源,最终展示百度首页。

常见问题:页面加载慢的原因(对应流程优化)

  • DNS 解析慢:优化 DNS 缓存,用就近的 DNS 服务器(如阿里云 DNS:223.5.5.5);

  • 握手慢:启用 HTTP/2(复用连接,减少握手次数);

  • 资源加载慢:压缩 HTML/CSS/JS,用 CDN 加速图片 / 视频,开启懒加载;

  • 服务端处理慢:优化接口代码,添加缓存(如 Redis)。

六、实战场景:排查 Web 访问异常

遇到 “网页打不开”“访问报错” 时,按以下步骤排查:

  1. ping 域名ping ``www.baidu.com,不通则网络或 DNS 有问题;

  2. telnet 端口telnet ``www.baidu.com`` 443,不通则端口被防火墙拦截;

  3. 查看状态码:Chrome F12→Network,看状态码:

  • 404:网址输错或资源不存在,核对 URL;

  • 403:无权限,检查是否登录、IP 是否被封禁;

  • 500:服务器内部错误,联系运维或开发排查代码;

  1. 抓包看请求头:检查 Cookie、User-Agent 是否正确,是否有跨域限制(Access-Control-Allow-Origin)。
posted @ 2025-12-08 16:31  python农工  阅读(0)  评论(0)    收藏  举报