基础
基础
✨五层计算机网络体系结构组成是什么?有什么作用?有哪些协议?
详情
相关信息
层次 | 核心作用 | 关键功能 | 典型协议/标准 | 实现设备/组件 |
---|---|---|---|---|
物理层 | 传输原始比特流(0和1),定义物理信号规则 | - 信号编码(高低电平表示0/1) - 传输速率(如1Gbps) - 接口类型(如RJ45) - 拓扑结构(如星型) | - 以太网物理层标准(10BASE-T、100BASE-TX) - Wi-Fi物理层(802.11系列) - 光纤传输标准(SONET/SDH) | 网卡、网线、光纤、无线发射器 |
数据链路层 | 在相邻节点间传输“帧”,确保链路内数据可靠传输 | - 封装数据包为帧 - 差错检测(CRC校验) - 流量控制 - MAC地址识别与介质访问控制(如CSMA/CD) | - 以太网(Ethernet) - 点对点协议(PPP) - Wi-Fi数据链路层(802.11 MAC子层) | 网卡驱动、交换机 |
网络层 | 实现跨网络数据包转发,解决“源到目标的路径选择” | - IP地址管理 - 路由选择(如OSPF、BGP) - 数据包分片与重组 - 拥塞控制 | - IP协议(IPv4、IPv6) - ICMP(网络探测与差错报告) - 路由协议(RIP、OSPF、BGP) | 路由器、三层交换机 |
运输层 | 为应用程序提供端到端的可靠/高效传输服务 | - 端口号标识应用程序(如80、443) - 可靠传输(TCP) - 高效传输(UDP) - 数据分段与重组 | - TCP(传输控制协议,可靠连接) - UDP(用户数据报协议,无连接) | 操作系统内核的协议栈 |
应用层 | 为用户提供具体网络应用服务,定义应用间通信规则 | - 定义应用数据格式 - 实现特定服务逻辑(如网页传输、文件传输) | - HTTP/HTTPS(网页传输) - FTP(文件传输) - SMTP/POP3/IMAP(邮件) - DNS(域名解析) - Telnet/SSH(远程登录) | 浏览器、邮件客户端、服务器应用程序 |
HTTP
✨Get 和 Post 有什么区别? 有什么优缺点?
详情
相关信息
特性 | GET | POST |
---|---|---|
数据位置 | 参数附加在URL后面(查询字符串) | 参数包含在请求体中 |
安全性 | 低(参数暴露在URL中,不适合敏感数据) | 高(参数不在URL中) |
可见性 | URL可直接看到参数 | 参数不可见 |
缓存性 | 可被缓存 | 不可被缓存 |
幂等性 | 是(多次请求结果相同) | 否(多次提交可能产生副作用) |
数据长度 | 有限制(取决于浏览器/服务器,通常约2KB) | 无限制(取决于服务器配置) |
编码类型 | 仅支持application/x-www-form-urlencoded | 支持多种编码类型(如application/x-www-form-urlencoded、multipart/form-data、application/json等) |
应用场景 | 获取数据(如搜索、查询) | 提交数据(如表单提交、文件上传) |
历史记录 | 参数会被保存在浏览器历史记录中 | 不会保存 |
书签 | 可被收藏为书签 | 不可被收藏为书签 |
✨从浏览器输入 URL 到显示页面发生了什么?
详情
相关信息
1. 输入 URL 并解析
- 用户在浏览器地址栏输入 URL(如
https://www.example.com:8080/path?query=1#fragment
),浏览器首先解析 URL 的各部分:- 协议:如
http
或https
(决定使用的传输协议和端口,http 默认端口 80,https 默认 443)。 - 域名:如
www.example.com
(需转换为 IP 地址)。 - 端口:如
8080
(若未指定则用协议默认端口)。 - 路径:如
/path
(服务器上资源的位置)。 - 查询参数:如
?query=1
(向服务器传递的额外信息)。 - 锚点:如
#fragment
(仅在浏览器端生效,用于定位页面内的指定位置,不发送给服务器)。
- 协议:如
- 浏览器会先检查自身缓存(如 DNS 缓存、页面缓存),若缓存中存在该 URL 的资源且未过期,可能直接使用缓存内容,跳过后续部分步骤。
2. DNS 域名解析:获取 IP 地址
浏览器通过 DNS(域名系统)协议将域名转换为服务器的 IP 地址,过程如下:
- 本地缓存查询:浏览器先检查本地 DNS 缓存(如浏览器缓存、操作系统缓存),若有对应域名的 IP 记录,直接使用。
- 路由器/本地 DNS 服务器查询:若本地缓存无记录,请求发送到路由器或本地 DNS 服务器(如运营商提供的 DNS 服务器),查询其缓存。
- 递归查询根域名服务器:若仍未找到,本地 DNS 服务器会向根域名服务器发起查询,根服务器返回顶级域名服务器(如
.com
服务器)的地址。 - 逐级查询:本地 DNS 服务器向顶级域名服务器查询,得到权威域名服务器(如
example.com
的专属服务器)地址,最终从权威服务器获取目标域名对应的 IP 地址。 - 解析结果返回给浏览器,同时被缓存(以便后续快速访问)。
3. 建立 TCP 连接(三次握手)
浏览器根据解析到的 IP 地址和端口号,通过 TCP 协议与服务器建立连接,过程称为“三次握手”:
- 第一次握手:浏览器(客户端)向服务器发送
SYN
报文(同步请求),表示请求建立连接,并包含初始序列号。 - 第二次握手:服务器收到
SYN
后,返回SYN+ACK
报文(同步+确认),确认收到请求,并生成自己的初始序列号。 - 第三次握手:浏览器收到
SYN+ACK
后,发送ACK
报文(确认),表示同意建立连接。 - 三次握手完成后,TCP 连接建立,为后续数据传输提供可靠的字节流通道(保证数据不丢失、不重复、按序到达)。
4. 若为 HTTPS,建立 TLS 加密连接(可选)
如果 URL 使用 https
协议,在 TCP 连接建立后,还需通过 TLS(传输层安全协议,前身为 SSL)建立加密连接:
- 客户端hello:浏览器向服务器发送支持的 TLS 版本、加密算法列表、随机数等信息。
- 服务器hello:服务器选择合适的 TLS 版本和加密算法,返回服务器证书(包含公钥)和随机数。
- 验证证书:浏览器验证服务器证书的有效性(通过 CA 机构签名确认,防止伪造)。
- 生成会话密钥:浏览器使用服务器公钥加密一个随机数,发送给服务器;双方基于之前交换的随机数和该加密随机数,生成对称加密密钥(用于后续数据传输加密)。
- 加密通信确认:双方使用对称密钥发送加密的“完成”消息,确认 TLS 连接建立,后续 HTTP 数据将通过该加密通道传输。
5. 发送 HTTP 请求报文
浏览器通过已建立的 TCP(或 TLS+TCP)连接,向服务器发送 HTTP 请求报文,结构包括:
- 请求行:包含请求方法(如
GET
获取资源、POST
提交数据)、URL 路径、HTTP 版本(如HTTP/1.1
)。 - 请求头:键值对形式的元数据,如
Host: www.example.com
(指定目标域名)、User-Agent
(浏览器信息)、Cookie
(客户端存储的身份信息)、Accept
(浏览器可接受的响应格式)等。 - 空行:分隔请求头和请求体。
- 请求体:仅在
POST
等方法中存在,用于传递表单数据、JSON 等内容。
6. 服务器处理请求并返回 HTTP 响应报文
服务器收到 HTTP 请求后,经历以下处理:
- 解析请求:服务器解析请求行、请求头、请求体,确定客户端需要的资源(如 HTML 页面、图片)。
- 业务处理:根据请求路径和参数,执行后端逻辑(如查询数据库、处理数据)。
- 生成响应:服务器构建 HTTP 响应报文,结构包括:
- 状态行:包含 HTTP 版本、状态码(如
200 OK
表示成功,404 Not Found
表示资源不存在,500 Internal Server Error
表示服务器错误)、状态描述。 - 响应头:如
Content-Type: text/html
(指定响应体格式)、Content-Length
(响应体长度)、Set-Cookie
(服务器向客户端设置 Cookie)、Cache-Control
(缓存规则)等。 - 空行:分隔响应头和响应体。
- 响应体:请求的资源内容,如 HTML 代码、图片二进制数据、JSON 字符串等。
- 状态行:包含 HTTP 版本、状态码(如
- 服务器通过 TCP 连接将响应报文发送给浏览器。
7. 浏览器解析响应并渲染页面
浏览器收到响应报文后,开始解析和渲染页面,核心步骤包括:
- 解析 HTML,构建 DOM 树:
- 浏览器按顺序解析 HTML 代码,将标签(如
<div>
、<p>
)、文本等转换为 DOM(文档对象模型)节点,形成树形结构(DOM 树),表示页面的结构。
- 浏览器按顺序解析 HTML 代码,将标签(如
- 解析 CSS,构建 CSSOM 树:
- 浏览器解析
<style>
标签内的 CSS 代码或外部 CSS 文件(通过<link>
引用),将样式规则转换为 CSSOM(CSS 对象模型)树,描述每个 DOM 节点的样式(颜色、尺寸等)。
- 浏览器解析
- 构建渲染树(Render Tree):
- 结合 DOM 树和 CSSOM 树,筛选出可见节点(如排除
display: none
的元素),并为每个节点应用对应的样式,形成渲染树,确定节点的位置和外观。
- 结合 DOM 树和 CSSOM 树,筛选出可见节点(如排除
- 布局(Layout):
- 根据渲染树计算每个节点在页面中的精确位置和大小(如宽高、坐标),又称“回流”。
- 绘制(Painting):
- 按布局结果,将节点的颜色、阴影等视觉属性绘制到屏幕上(像素级渲染),又称“重绘”。
- 合成(Composite):
- 若页面包含分层元素(如
z-index
、transform
动画),浏览器将各层绘制结果合成,最终显示完整页面。
- 若页面包含分层元素(如
8. 加载额外资源
HTML 中通常包含其他资源的 URL(如 <img src="image.jpg">
引用图片、<script src="app.js">
引用 JavaScript、<link href="style.css">
引用 CSS),浏览器会对这些资源重复执行以下步骤:
- 解析资源 URL,进行 DNS 解析、建立 TCP(或 HTTPS)连接、发送 HTTP 请求。
- 服务器返回资源,浏览器缓存这些资源(根据响应头的
Cache-Control
等规则)。 - CSS 资源会影响 CSSOM 树和渲染树,JS 资源可能通过代码操作 DOM 或 CSSOM(若
<script>
标签无async
/defer
属性,会阻塞 HTML 解析,需优先加载执行)。 - 所有资源加载完成并处理后,页面完全渲染显示。
9. 关闭 TCP 连接(四次挥手)
当页面加载完成,浏览器与服务器不再需要通信时,通过 TCP 四次挥手关闭连接:
- 第一次挥手:浏览器发送
FIN
报文,表示不再发送数据。 - 第二次挥手:服务器返回
ACK
报文,确认收到FIN
。 - 第三次挥手:服务器发送
FIN
报文,表示服务器也不再发送数据。 - 第四次挥手:浏览器返回
ACK
报文,确认收到FIN
,连接关闭。 - 若使用
HTTP/1.1
的Connection: keep-alive
(默认),TCP 连接会保持一段时间,供后续请求复用,减少连接建立开销;HTTP/2
则通过多路复用进一步优化连接效率。
✨HTTP 常见的状态码有哪些?
详情
相关信息
HTTP 状态码是服务器对客户端请求的响应状态标识,由三位数字组成,分为五大类(以第一位数字区分)。
1. 信息性状态码(1xx)
表示服务器已接收请求,正在处理中,通常为临时响应。
- 100 Continue:服务器已收到请求头,客户端可继续发送请求体(常用于大文件上传场景)。
- 101 Switching Protocols:服务器同意客户端的协议切换请求(如从 HTTP 切换到 WebSocket)。
2. 成功状态码(2xx)
表示请求被服务器成功接收、理解并处理。
- 200 OK:请求成功,响应体包含请求的资源(最常见的成功状态)。
- 201 Created:请求成功并创建了新资源(如 POST 提交表单创建用户),响应头通常包含
Location
指向新资源地址。 - 204 No Content:请求成功,但响应体无内容(如 DELETE 请求删除资源后,无需返回数据)。
- 206 Partial Content:部分请求成功(用于断点续传,客户端通过
Range
头指定了部分资源范围)。
3. 重定向状态码(3xx)
表示客户端需要进一步操作才能完成请求,通常需要跳转至其他 URL。
- 301 Moved Permanently:资源永久迁移到新 URL,浏览器会缓存该跳转,后续请求直接访问新地址(如域名更换)。
- 302 Found:资源临时迁移到新 URL,浏览器不会缓存,每次请求仍需通过原 URL 跳转(早期常用于临时重定向,现在更推荐 307)。
- 304 Not Modified:资源未修改,客户端可直接使用本地缓存(配合
If-Modified-Since
或If-None-Match
头使用,减少带宽消耗)。 - 307 Temporary Redirect:临时重定向,与 302 类似,但严格遵循请求方法(如原请求是 POST,重定向后仍用 POST,而 302 可能被浏览器改为 GET)。
- 308 Permanent Redirect:永久重定向,与 301 类似,但严格遵循请求方法(避免 301 中 POST 被改为 GET 的问题)。
4. 客户端错误状态码(4xx)
表示请求存在错误,服务器无法处理。
- 400 Bad Request:请求语法错误(如参数格式错误、请求体格式不正确)。
- 401 Unauthorized:请求需要身份验证(如未登录时访问需要权限的接口,响应头通常包含
WWW-Authenticate
说明验证方式)。 - 403 Forbidden:服务器拒绝请求(已验证身份,但无访问权限,如普通用户访问管理员页面)。
- 404 Not Found:请求的资源不存在(最常见的错误状态,如输入了错误的 URL)。
- 405 Method Not Allowed:请求使用的 HTTP 方法(如 POST)不被目标资源支持,响应头
Allow
会列出允许的方法(如 GET、HEAD)。 - 406 Not Acceptable:服务器无法提供客户端在
Accept
头中指定的格式(如客户端只接受 JSON,但服务器只能返回 XML)。 - 408 Request Timeout:服务器等待请求超时(客户端未在规定时间内发送完整请求)。
- 409 Conflict:请求与服务器当前资源状态冲突(如提交重复数据,如创建已存在的用户名)。
- 413 Payload Too Large:请求体过大,服务器拒绝处理(如上传文件超过服务器限制)。
- 414 URI Too Long:请求的 URL 过长,服务器无法处理(如 GET 请求参数过多)。
- 429 Too Many Requests:客户端请求过于频繁,触发服务器限流策略(通常配合
Retry-After
头提示重试时间)。
5. 服务器错误状态码(5xx)
表示服务器在处理请求时发生内部错误,无法完成请求。
- 500 Internal Server Error:服务器内部错误(最常见的服务器错误,如代码 bug、数据库连接失败)。
- 502 Bad Gateway:服务器作为网关/代理时,收到上游服务器的无效响应(如反向代理后端服务崩溃)。
- 503 Service Unavailable:服务器暂时无法处理请求(如维护中),通常会包含
Retry-After
头提示恢复时间。 - 504 Gateway Timeout:服务器作为网关/代理时,等待上游服务器响应超时(如后端服务处理过慢)。
- 505 HTTP Version Not Supported:服务器不支持客户端使用的 HTTP 版本(如客户端用 HTTP/3,但服务器只支持 HTTP/1.1)。
HTTP Header 中有哪些字段?
详情
相关信息
HTTP Header 用于在客户端和服务器之间传递附加信息,分为请求头(Request Headers)、响应头(Response Headers) 和通用头(General Headers) 三类。以下是常见的 Header 字段及其说明:
类别 | 字段名 | 说明 | 示例 |
---|---|---|---|
通用头 | Cache-Control | 控制缓存策略(客户端和服务器均可用) | Cache-Control: max-age=3600 (资源缓存 1 小时) |
Connection | 控制连接状态(如是否保持长连接) | Connection: keep-alive (保持 TCP 连接);Connection: close (关闭连接) | |
Date | 消息发送的日期和时间 | Date: Wed, 09 Jul 2025 08:00:00 GMT | |
Pragma | 旧版缓存控制(兼容 HTTP/1.0,与 Cache-Control 作用类似) | Pragma: no-cache (不缓存资源) | |
请求头 | Accept | 客户端可接受的响应数据格式(如文本、JSON 等) | Accept: application/json, text/html |
Accept-Encoding | 客户端支持的压缩算法(如 gzip、deflate) | Accept-Encoding: gzip, deflate | |
Accept-Language | 客户端可接受的自然语言(如中文、英文) | Accept-Language: zh-CN, en-US;q=0.8 (中文优先,英文次之) | |
Authorization | 身份验证信息(如 Basic 认证、Bearer Token) | Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... | |
Cookie | 客户端存储的 Cookie 信息(服务器通过 Set-Cookie 设置) | Cookie: user_id=123; session=abc | |
Host | 目标服务器的域名和端口(HTTP/1.1 必需字段) | Host: www.example.com:8080 | |
User-Agent | 客户端身份标识(如浏览器型号、操作系统) | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0 | |
Referer | 当前请求的来源页面 URL(用于追踪跳转来源) | Referer: https://www.google.com/ | |
Range | 请求资源的部分内容(用于断点续传) | Range: bytes=0-1023 (请求前 1024 字节) | |
Content-Type | 请求体的数据格式(如表单、JSON) | Content-Type: application/x-www-form-urlencoded (表单数据);application/json (JSON 数据) | |
Content-Length | 请求体的字节长度 | Content-Length: 1024 (请求体大小为 1024 字节) | |
响应头 | Content-Type | 响应体的数据格式(同请求头,但用于服务器返回) | Content-Type: text/html; charset=UTF-8 (HTML 页面,编码为 UTF-8) |
Content-Encoding | 服务器使用的压缩算法(如 gzip) | Content-Encoding: gzip | |
Content-Length | 响应体的字节长度(同请求头,但用于服务器返回) | Content-Length: 2048 | |
Location | 重定向的目标 URL(配合 3xx 状态码使用) | Location: https://new.example.com (跳转到新域名) | |
Set-Cookie | 服务器向客户端设置 Cookie | Set-Cookie: user_id=123; Expires=Fri, 01 Aug 2025 00:00:00 GMT | |
Server | 服务器的软件信息(如 Apache、Nginx) | Server: Nginx/1.21.0 | |
ETag | 资源的唯一标识(用于缓存验证,配合 If-None-Match 使用) | ETag: "abc123" | |
Last-Modified | 资源最后修改的时间(用于缓存验证,配合 If-Modified-Since 使用) | Last-Modified: Tue, 08 Jul 2025 12:00:00 GMT | |
Access-Control-Allow-Origin | 跨域资源共享(CORS)允许的来源域名(解决跨域问题) | Access-Control-Allow-Origin: * (允许所有域名访问);https://example.com | |
Retry-After | 提示客户端多久后重试请求(配合 429、503 等状态码使用) | Retry-After: 3600 (1 小时后重试) |
补充说明:
- 部分字段(如
Content-Type
)既可作为请求头也可作为响应头,作用是描述对应消息体的格式。 - 头字段不区分大小写,但通常约定使用大写字母加连字符(如
User-Agent
)。 - 扩展头通常以
X-
开头(如X-Requested-With: XMLHttpRequest
标识 AJAX 请求),但现代规范更推荐无前缀的自定义头。
✨HTTP 和 HTTPS 有什么区别?
详情
相关信息
对比维度 | HTTP | HTTPS |
---|---|---|
安全机制 | 无加密机制,数据以明文传输 | 基于 SSL/TLS 协议加密传输数据,防止窃听、篡改和伪造 |
端口 | 默认使用 80 端口 | 默认使用 443 端口 |
协议组成 | 直接基于 TCP 协议 | HTTP + SSL/TLS + TCP(在 HTTP 与 TCP 之间增加加密层) |
证书要求 | 无需证书 | 需要 CA(证书颁发机构)颁发的数字证书,验证服务器身份 |
数据传输速度 | 较快(无加密、解密过程) | 稍慢(需额外的 SSL/TLS 握手和加密解密步骤,消耗资源) |
URL 标识 | 以 http:// 开头 | 以 https:// 开头 |
安全性 | 低,数据易被中间人窃听、篡改 | 高,数据传输过程加密,且通过证书验证服务器身份 |
适用场景 | 非敏感数据传输(如静态网页、公开信息) | 敏感数据传输(如登录、支付、个人信息等) |
SEO 影响 | 搜索引擎可能降低排名 | 搜索引擎(如 Google)优先收录,利于 SEO |
握手过程 | 简单的 TCP 三次握手后直接传输数据 | 需先完成 SSL/TLS 握手(验证证书、协商加密算法等),再进行 HTTP 通信 |
补充说明:
- HTTPS 的核心作用:通过 SSL/TLS 协议实现三大安全目标——机密性(数据加密)、完整性(数据校验,防止篡改)、身份认证(通过证书确认服务器身份,避免钓鱼)。
- 成本差异:HTTPS 需要购买或申请 CA 证书(免费证书如 Let's Encrypt 也可使用),且服务器需消耗更多计算资源处理加密,而 HTTP 无额外成本。
HTTP 1.0, 1.1, 2.0, 3.0 有什么不同?分别有什么改进?
详情
相关信息
HTTP 协议从 1.0 到 3.0 的演进,核心目标是提升性能、减少延迟、优化资源利用率,以适应互联网从简单文本传输到复杂多媒体应用的发展需求。以下是各版本的关键差异和改进:
1. HTTP 1.0(1996 年)
核心特点:
- 无状态协议:每次请求独立,服务器不保留客户端上下文信息。
- 短连接:默认使用“非持久连接”,即每个 HTTP 请求都需要单独建立和关闭 TCP 连接(“一次请求一个连接”)。
- 基本方法支持:仅支持
GET
、POST
、HEAD
方法。 - 响应头限制:响应头中没有
Host
字段,无法识别同一 IP 下的多个域名(虚拟主机)。
缺点:
- 性能低下:每次请求都要经历 TCP 三次握手和四次挥手,频繁建立连接导致延迟高(“队头阻塞”问题初现)。
- 不支持断点续传:文件传输中断后需重新下载。
2. HTTP 1.1(1999 年)
核心改进:
- 持久连接(长连接):默认使用
Connection: keep-alive
,允许同一 TCP 连接处理多个 HTTP 请求(无需重复建立连接),大幅减少连接开销。 - 管道化(Pipelining):支持在一个 TCP 连接中同时发送多个请求(无需等待前一个响应返回),理论上提升吞吐量。
- Host 字段:新增
Host
头,允许同一服务器(IP)托管多个域名(虚拟主机),解决了 1.0 无法区分域名的问题。 - 更多方法与功能:
- 新增
PUT
、DELETE
、OPTIONS
、TRACE
、CONNECT
方法,支持更丰富的交互。 - 支持断点续传(
Range
头)和分块传输(Transfer-Encoding: chunked
)。 - 缓存机制优化:新增
Cache-Control
、ETag
等字段,更灵活地控制缓存策略。
- 新增
仍存在的问题:
- 队头阻塞(Head-of-Line Blocking):管道化虽然允许并发请求,但服务器必须按请求顺序返回响应(FIFO),若前一个请求延迟,后续请求需排队等待,效率受限。
- 连接数限制:浏览器为避免单个域名占用过多资源,通常限制同一域名的并发 TCP 连接数(如 6-8 个),超过则需排队。
3. HTTP 2.0(2015 年)
核心改进:
- 二进制分帧:将 HTTP 消息(请求/响应)拆分为二进制帧(Frame),而非 1.x 的文本格式,解析效率更高,且为后续优化奠定基础。
- 多路复用(Multiplexing):
- 同一 TCP 连接中可并行传输多个请求/响应,帧通过“流 ID”标识归属,无需按顺序处理,彻底解决 HTTP 1.x 的“队头阻塞”问题。
- 单个连接可承载数百个并发请求,无需建立多个 TCP 连接。
- 服务器推送(Server Push):服务器可主动向客户端推送所需资源(如 HTML 引用的 CSS/JS),无需等待客户端请求,减少延迟(例如:客户端请求
index.html
时,服务器主动推送style.css
)。 - 头部压缩(HPACK):
- 对重复的请求头(如
User-Agent
、Cookie
)进行压缩(通过静态字典、动态字典和哈夫曼编码),减少头部传输体积(HTTP 1.x 头部以明文传输,重复内容多)。
- 对重复的请求头(如
- 优先级控制:客户端可给请求分配优先级(如 CSS 优先于图片),服务器根据优先级处理帧,优化资源加载顺序。
仍存在的问题:
- 依赖 TCP 协议:虽然解决了 HTTP 层的队头阻塞,但 TCP 层仍可能因丢包导致“TCP 队头阻塞”(一个数据包丢失,整个 TCP 连接上的所有帧都需等待重传)。
4. HTTP 3.0(2022 年标准化)
核心改进:
- 基于 QUIC 协议:放弃 TCP,改用 QUIC(Quick UDP Internet Connections) 作为传输层协议(基于 UDP 实现)。
- 解决队头阻塞:
- QUIC 为每个请求分配独立的“流”,流之间相互独立,一个流的丢包不会影响其他流(彻底解决 TCP 层的队头阻塞)。
- 更快的连接建立:
- QUIC 合并了 TCP 三次握手和 TLS 握手过程,首次连接只需 1-2 个 RTT(往返时间),复用连接时可实现 0-RTT 握手(直接复用之前的加密信息)。
- 内置 TLS 1.3 加密:默认加密传输,安全性与 HTTPS 一致,且避免了 TCP 与 TLS 握手的叠加延迟。
- 连接迁移:支持“连接迁移”,当客户端网络切换(如从 Wi-Fi 到 4G)时,QUIC 可通过“连接 ID”保持连接不中断(TCP 依赖 IP+端口,网络切换会导致连接失效)。
优势:
- 相比 HTTP 2.0,在高丢包环境(如移动网络)下性能提升显著,尤其适合实时通信(如视频会议、在线游戏)。
重要
各版本核心差异对比
特性 | HTTP 1.0 | HTTP 1.1 | HTTP 2.0 | HTTP 3.0 |
---|---|---|---|---|
传输层协议 | TCP | TCP | TCP | QUIC(基于 UDP) |
连接方式 | 短连接(默认) | 长连接(默认) | 长连接 + 多路复用 | 长连接 + 多路复用 |
队头阻塞 | 严重(每连接一个请求) | 存在(管道化受顺序限制) | HTTP 层解决(帧复用) | 彻底解决(流独立) |
握手延迟 | TCP 三次握手 | TCP 三次握手 | TCP 三次握手 + TLS 握手 | 1-2 RTT(首次)/ 0-RTT(复用) |
头部压缩 | 无 | 无 | HPACK 算法 | QPACK 算法(基于 HPACK 优化) |
服务器推送 | 不支持 | 不支持 | 支持 | 支持 |
加密 | 无(需额外配置 HTTPS) | 无(需额外配置 HTTPS) | 依赖 TLS(需额外配置) | 内置 TLS 1.3(默认加密) |
典型场景性能 | 低(静态文本) | 中(普通网页) | 高(复杂页面) | 极高(高丢包/移动网络) |
总结
- HTTP 1.0:奠定基础,但性能极差,已基本淘汰。
- HTTP 1.1:通过长连接和管道化提升性能,是过去 20 年的主流协议。
- HTTP 2.0:通过二进制分帧和多路复用大幅优化性能,适合桌面端稳定网络。
- HTTP 3.0:基于 QUIC 协议,解决 TCP 固有缺陷,在移动网络和高延迟场景下优势明显,是未来趋势(目前逐步普及中)。
TCP / UDP
✨TCP 和 UDP 有什么区别?
详情
相关信息
TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是 TCP/IP 协议栈中两种核心的传输层协议,它们在设计目标、工作方式和适用场景上有显著区别。
重要
TCP 与 UDP 的核心区别(表格对比)
对比维度 | TCP | UDP |
---|---|---|
连接方式 | 面向连接:通信前必须通过“三次握手”建立连接,通信结束后通过“四次挥手”释放连接。 | 无连接:通信前无需建立连接,直接发送数据,不保证对方是否接收。 |
可靠性 | 可靠传输:通过序列号、确认应答、重传机制(超时重传、快速重传)、流量控制(滑动窗口)、拥塞控制等确保数据不丢失、不重复、按序到达。 | 不可靠传输:不保证数据送达,无确认、重传机制,可能丢失、乱序。 |
数据传输方式 | 以“字节流”形式传输,数据被拆分为多个报文段,接收端重组后还原为完整数据。 | 以“数据报”为单位传输,每个数据报独立发送,大小限制为 64KB(包含首部)。 |
首部开销 | 首部固定 20 字节,加上选项字段可扩展至 60 字节,开销较大。 | 首部固定 8 字节,开销小(仅包含源端口、目的端口、长度、校验和)。 |
速度 | 因需建立连接、确认和重传,传输效率较低,延迟较高。 | 无需连接和确认,传输速度快,延迟低(实时性好)。 |
拥塞控制 | 有拥塞控制机制(如慢启动、拥塞避免),可根据网络状况调整发送速率,避免网络拥堵。 | 无拥塞控制,即使网络拥堵仍持续发送数据,可能加剧网络负担。 |
适用场景 | 对可靠性要求高、允许延迟的场景: - 网页浏览(HTTP/HTTPS) - 文件传输(FTP) - 邮件发送(SMTP) - 数据库交互 | 对实时性要求高、可容忍少量丢包的场景: - 视频/语音通话(如 Zoom) - 直播、流媒体 - 游戏数据传输 - DNS 查询、DHCP 协议 |
提示
典型场景举例
- TCP 的应用:当你用浏览器访问网页时,HTTP 基于 TCP 传输,确保网页内容完整加载,即使中间有数据包丢失,也会通过重传机制弥补。
- UDP 的应用:直播时,若某一帧画面的数据包丢失,重传已无意义(画面已过时),UDP 的低延迟特性更适合保证流畅性。
总结
- TCP 是“可靠但低效”的协议,适合对数据完整性要求高的场景;
- UDP 是“高效但不可靠”的协议,适合对实时性要求高的场景。
基于 TCP 的协议有哪些?
详情
相关信息
协议名称 | 中文全称 | 英文全称 | 端口号 | 主要用途 |
---|---|---|---|---|
HTTP | 超文本传输协议 | HyperText Transfer Protocol | 80 | 用于传输超文本(如网页内容),是万维网的基础协议。 |
HTTPS | 超文本传输安全协议 | HyperText Transfer Protocol Secure | 443 | HTTP 的加密版本,通过 SSL/TLS 保障数据传输安全,用于敏感信息传输(如支付、登录)。 |
FTP | 文件传输协议 | File Transfer Protocol | 21(控制连接)、20(数据连接) | 用于文件的上传和下载,支持批量传输和断点续传。 |
SSH | 安全外壳协议 | Secure Shell | 22 | 加密的远程登录协议,用于安全地远程控制服务器(替代不安全的 Telnet)。 |
Telnet | 远程登录协议 | Teletype Network | 23 | 远程登录协议(未加密,安全性低,逐渐被 SSH 替代)。 |
SMTP | 简单邮件传输协议 | Simple Mail Transfer Protocol | 25 | 用于发送电子邮件(接收邮件通常用 POP3 或 IMAP)。 |
POP3 | 邮局协议第3版 | Post Office Protocol 3 | 110 | 用于从邮件服务器下载邮件到本地客户端(仅支持下载和删除操作)。 |
IMAP4 | 互联网消息访问协议第4版 | Internet Message Access Protocol 4 | 143 | 用于邮件的远程管理(可在服务器上直接操作邮件,如分类、标记,支持多设备同步)。 |
DNS(部分场景) | 域名系统 | Domain Name System | 53(TCP 用于主从服务器同步) | 主要使用 UDP,但当 DNS 响应数据超过 512 字节时,会自动切换为 TCP 传输。 |
基于 UDP 的协议有哪些?
详情
相关信息
协议名称 (中文) | 协议名称 (英文全称) | 主要用途 |
---|---|---|
DNS (域名系统) | Domain Name System | 将域名解析为 IP 地址,用于互联网访问。 |
DHCP (动态主机配置协议) | Dynamic Host Configuration Protocol | 自动分配 IP 地址和网络配置信息给设备。 |
TFTP (简单文件传输协议) | Trivial File Transfer Protocol | 用于简单的文件传输,通常在无盘系统或网络设备启动时使用。 |
SNMP (简单网络管理协议) | Simple Network Management Protocol | 用于网络设备的监控和管理。 |
RIP (路由信息协议) | Routing Information Protocol | 用于小型网络中的路由选择。 |
NTP (网络时间协议) | Network Time Protocol | 同步计算机系统时间。 |
QUIC (快速 UDP 互联网连接) | Quick UDP Internet Connections | 一种新的传输层协议,旨在提供比 TCP 更低的延迟,被用于 HTTP/3。 |
BOOTP (引导协议) | Bootstrap Protocol | 用于无盘工作站在启动时获取 IP 地址和引导文件。 |
VoIP (网络电话) | Voice over Internet Protocol | 语音通话和视频会议等实时通信应用,如 Skype、Zoom 等。 |
游戏网络协议 | Various Game Protocols (e.g., Valve Anti-Cheat) | 许多在线游戏使用 UDP 以减少延迟,如《使命召唤》《守望先锋》等。 |
流媒体协议 | Real-time Transport Protocol (RTP) | 如 RTP (实时传输协议) 用于音频和视频流的传输。 |
SSDP (简单服务发现协议) | Simple Service Discovery Protocol | 用于设备发现,如 UPnP (通用即插即用) 设备。 |
MDNS (多播 DNS) | Multicast DNS | 在本地网络中解析域名,如 Apple 的 Bonjour。 |
IP 协议是如何工作的?
详情
相关信息
工作流程
IP协议的工作可概括为“封装→路由→解封装”三个步骤,以下以IPv4为例说明:
1. 数据封装:给数据“打包”
当应用程序(如浏览器、微信)发送数据时,数据会经过TCP/IP协议栈的层层处理,最终由IP协议封装为IP数据包:
- 上层数据:来自TCP或UDP协议的“数据段”(包含应用层数据,如网页内容、消息)。
- IP头部:添加20~60字节的控制信息,核心字段包括:
- 版本:标识IP协议版本(如4表示IPv4)。
- 源IP地址:发送设备的IP(如
192.168.1.100
)。 - 目的IP地址:接收设备的IP(如
114.114.114.114
)。 - TTL(生存时间):限制数据包的传输跳数(每经过一个路由器减1,为0则丢弃,避免环路)。
- 协议号:标识上层协议(如6表示TCP,17表示UDP)。
- 校验和:用于检查IP头部是否损坏。
封装完成后,IP数据包会被交给数据链路层(如以太网),进一步封装为帧(Frame),通过物理介质(如网线、无线信号)传输。
2. 路由转发:选择传输路径
IP数据包的传输依赖路由器(Router)的转发能力,核心逻辑是“根据目的IP地址选择下一跳”:
路由器的路由表:每个路由器都维护一张“路由表”,记录了“目的网络→下一跳路由器”的映射关系(类似“地图导航的路线规划”)。
路由表的生成方式有两种:- 静态路由:由管理员手动配置(适用于简单网络)。
- 动态路由:通过路由协议(如OSPF、RIP)自动学习和更新(适用于复杂网络,如互联网)。
转发过程:
- 路由器收到IP数据包后,提取目的IP地址。
- 检查目的IP是否与自身直连网络匹配:
- 若匹配,直接发送到目标设备。
- 若不匹配,查询路由表,找到对应的“下一跳”路由器,将数据包转发给它。
- 每经过一个路由器,数据包的TTL值减1,若TTL变为0,路由器会丢弃数据包并返回“超时”消息(ICMP协议)。
示例:假设用户(
192.168.1.100
)访问百度服务器(180.101.50.242
),数据包可能经过家庭路由器→小区网关→运营商路由器→百度机房路由器等多跳转发,最终到达目标。
3. 数据解封装:拆包并交付数据
当IP数据包到达目的设备后:
- 目的设备的网络层(IP协议)会检查IP头部:
- 验证校验和,确保数据未损坏。
- 确认目的IP地址是否为自身(若不是,可能丢弃或转发,取决于设备是否为路由器)。
- 若校验通过且目的IP匹配,IP协议会移除IP头部,将内部的“数据段”交给上层协议(根据IP头部的“协议号”交给TCP或UDP)。
- 最终,数据经TCP/UDP处理后,交付给应用程序(如浏览器显示网页)。
重要
分片与重组
不同网络的MTU(最大传输单元) 不同(如以太网的MTU通常为1500字节),若IP数据包大小超过MTU,会被分片:
- 分片:路由器将大数据包拆分为多个小分片,每个分片包含:
- 原IP头部的部分信息(如源IP、目的IP)。
- 分片偏移量(标识分片在原数据包中的位置)。
- 标志位(如“更多分片”标识是否还有后续分片)。
- 重组:目的设备收到所有分片后,根据偏移量和标志位将其重组为完整的数据包。
✨DNS 的解析过程是什么样的?
详情
相关信息
DNS(Domain Name System)是互联网的核心基础设施之一,负责将人类可读的域名(如 www.example.com)转换为计算机可识别的 IP 地址(如 93.184.216.34)。其解析过程涉及多个步骤和角色,以下是详细说明:
基本概念
- DNS 层次结构:
- 根域名服务器(Root DNS Server):全球共13组(实际通过任播技术部署数百台),负责管理顶级域名服务器(如 .com、.org、.cn 等)的信息。
- 顶级域名服务器(TLD DNS Server):管理特定顶级域名下的权威域名服务器(如 .com 顶级域名服务器管理 example.com 的权威服务器)。
- 权威域名服务器(Authoritative DNS Server):存储特定域名的实际 IP 地址信息(如 www.example.com 的 IP)。
- 递归解析与迭代解析:
- 递归解析:DNS 客户端向本地 DNS 服务器发起请求,本地服务器负责全程查询并返回最终结果(常见于客户端与本地 DNS 服务器之间)。
- 迭代解析:DNS 服务器在查询过程中,依次向根服务器、TLD 服务器、权威服务器发起请求,逐步获取结果(常见于本地 DNS 服务器与其他层级服务器之间)。
重要
DNS 解析的完整流程
以用户访问 www.example.com 为例,解析步骤如下:
- 客户端发起请求:
- 用户在浏览器输入域名,操作系统(如 Windows、Linux)的 DNS 解析器(Resolver)会首先检查本地缓存(如 hosts 文件、DNS 缓存)。
- 关键点:若本地缓存命中(如近期访问过该域名),直接返回 IP 地址,跳过后续步骤。
- 本地 DNS 服务器处理请求:
- 若本地缓存未命中,客户端将请求发送至配置的本地 DNS 服务器(通常由运营商或企业提供,如 8.8.8.8 或 114.114.114.114)。
- 本地 DNS 服务器同样会检查自身缓存:
- 若缓存命中,直接返回结果。
- 若未命中,进入递归解析流程。
- 本地 DNS 服务器查询根域名服务器:
- 本地 DNS 服务器向根域名服务器发送请求,询问 "www.example.com 的 IP 地址是什么?"。
- 根域名服务器返回 .com 顶级域名服务器的地址(如 A 记录或 NS 记录)。
- 查询顶级域名服务器(TLD):
- 本地 DNS 服务器根据根服务器返回的信息,向 .com 顶级域名服务器发送请求。
- TLD 服务器返回 example.com 的权威域名服务器地址(如 ns1.example.com)。
- 查询权威域名服务器:
- 本地 DNS 服务器向权威域名服务器发送请求,询问 "www.example.com 的 IP 地址是什么?"。
- 权威服务器返回该域名对应的 IP 地址(如 93.184.216.34)。
- 结果返回与缓存:
- 本地 DNS 服务器将获取到的 IP 地址返回给客户端。
- 客户端和本地 DNS 服务器均会缓存该结果(缓存时间由域名的 TTL 值控制,如 3600 秒),以便后续请求快速响应。
相关信息
DNS 解析的优化机制
- 缓存机制:
- 浏览器缓存:现代浏览器会缓存近期访问的域名解析结果(如 Chrome 默认缓存 1 分钟)。
- 操作系统缓存:操作系统维护 DNS 缓存(如 Windows 的 DNS Client 服务、Linux 的 nscd)。
- 本地 DNS 服务器缓存:缓存大量域名解析结果,减少重复查询。
- 预解析技术:
- 浏览器预解析:浏览器在访问页面时,会提前解析页面中引用的资源域名(如图片、脚本)。
<link rel="dns-prefetch" href="https://cdn.example.com">
- HTTP 预解析头:服务器可通过 HTTP 头提示客户端预解析域名。
Link: <https://cdn.example.com>; rel=dns-prefetch
- DNS 预解析工具:
- 客户端可主动触发 DNS 预解析,如使用
dig
命令:dig www.example.com
- 网站性能优化工具(如 Google PageSpeed)会自动分析并优化 DNS 预解析策略。
IP / DNS
IP地址有哪些分类?
详情
相关信息
IP地址(IPv4)的分类是早期为了方便网络管理和地址分配而制定的规则,主要根据IP地址的第一个8位组(即前8位二进制数)来划分。传统上分为A、B、C、D、E五类,其中A、B、C为单播地址(用于标识单个网络接口),D类为多播地址,E类为保留地址。
一、IP地址分类详情
1. A类地址
- 网络位与主机位划分:前8位为网络位,后24位为主机位。
- 第一个8位组范围:0~127(二进制以
0
开头)。- 注:
0.x.x.x
和127.x.x.x
为特殊地址(127.0.0.1
是本地回环地址),实际可用的A类地址范围为1.0.0.0
~126.255.255.255
。
- 注:
- 网络数量:2^7 - 2 = 126个(减去两个特殊地址段)。
- 每个网络可容纳的主机数:2^24 - 2 = 16,777,214台(减去网络地址和广播地址)。
- 应用场景:用于大型网络(如早期的大型企业、国家级网络)。
2. B类地址
- 网络位与主机位划分:前16位为网络位,后16位为主机位。
- 第一个8位组范围:128~191(二进制以
10
开头)。 - 网络数量:2^14 = 16,384个。
- 每个网络可容纳的主机数:2^16 - 2 = 65,534台。
- 应用场景:用于中型网络(如高校、大型企业)。
3. C类地址
- 网络位与主机位划分:前24位为网络位,后8位为主机位。
- 第一个8位组范围:192~223(二进制以
110
开头)。 - 网络数量:2^21 = 2,097,152个。
- 每个网络可容纳的主机数:2^8 - 2 = 254台。
- 应用场景:用于小型网络(如家庭、中小企业)。
4. D类地址
- 用途:多播(组播)地址,用于标识一组网络接口(如视频会议、实时数据传输)。
- 第一个8位组范围:224~239(二进制以
1110
开头)。 - 特点:没有网络位和主机位之分,不可用于单播通信。
5. E类地址
- 用途:保留地址,用于科研和实验目的,不对外公开使用。
- 第一个8位组范围:240~255(二进制以
1111
开头)。 - 注:
255.255.255.255
为受限广播地址,属于E类地址的特殊情况。
重要
分类对比
类别 | 二进制前缀 | 第一个8位组范围 | 网络位长度 | 主机位长度 | 可用网络数 | 每个网络最大主机数 | 主要用途 |
---|---|---|---|---|---|---|---|
A类 | 0xxxxxxx | 1~126 | 8位 | 24位 | 126 | 16,777,214 | 大型网络 |
B类 | 10xxxxxx | 128~191 | 16位 | 16位 | 16,384 | 65,534 | 中型网络 |
C类 | 110xxxxx | 192~223 | 24位 | 8位 | 2,097,152 | 254 | 小型网络 |
D类 | 1110xxxx | 224~239 | - | - | - | - | 多播通信 |
E类 | 1111xxxx | 240~255 | - | - | - | - | 保留/实验 |
提示
补充说明
- 子网掩码的作用:上述分类是“有类地址”划分方式,实际中通过子网掩码(如
255.255.255.0
)可对网络进行更灵活的子网划分(无类地址,CIDR),打破传统分类的限制。 - IPv6的变化:IPv6地址长度为128位,采用无类地址分配方式,不再沿用A~E类的分类规则,以适应更大的地址空间需求。
理解IP地址分类有助于掌握早期网络设计的逻辑,而现代网络更多依赖CIDR(无类别域间路由)进行地址规划,但传统分类仍是网络基础知识的重要部分。
✨什么是子网?
详情
相关信息
子网(Subnet)是将一个大的IP网络(如A类、B类或C类网络)划分为多个较小的、逻辑上独立的网络单元。通过子网划分,可以提高IP地址的利用率,增强网络管理的灵活性,并改善网络性能和安全性。
基本概念
- 为什么需要子网?
- IP地址效率:早期IPv4地址按固定类别(A/B/C类)分配,容易造成地址浪费。例如,一个C类网络(256个地址)可能对小型企业过大,但对大型企业又过小。
- 网络管理:将大型网络划分为多个子网后,可以按部门、地理位置或功能划分流量,简化管理。
- 安全隔离:不同子网之间可以通过防火墙控制访问,提高网络安全性。
- 核心原理
- 子网掩码(Subnet Mask):通过调整子网掩码,将IP地址的主机部分进一步划分为网络位和主机位。
- 网络地址与广播地址:每个子网都有唯一的网络地址(主机位全0)和广播地址(主机位全1),可用IP地址位于两者之间。
提示
优势
- IP地址优化:避免地址浪费,充分利用有限的IPv4地址。
- 流量隔离:减少广播域大小,提高网络性能。
- 安全控制:通过防火墙限制子网间访问,增强安全性。
- 简化管理:按功能或地理位置划分网络,降低维护复杂度。
注
示例1:标准C类网络划分子网
假设原始网络为192.168.1.0/24
(256个地址),现需划分为4个子网:
- 计算所需位数:4个子网需要借用2位主机位(2²=4)。
- 新的子网掩码:原掩码为
/24
(255.255.255.0),借用2位后变为/26
(255.255.255.192)。 - 划分子网:
子网1: 192.168.1.0/26 网络地址: 192.168.1.0 广播地址: 192.168.1.63 可用地址: 192.168.1.1 - 192.168.1.62 (62个地址) 子网2: 192.168.1.64/26 网络地址: 192.168.1.64 广播地址: 192.168.1.127 可用地址: 192.168.1.65 - 192.168.1.126 (62个地址) 子网3: 192.168.1.128/26 网络地址: 192.168.1.128 广播地址: 192.168.1.191 可用地址: 192.168.1.129 - 192.168.1.190 (62个地址) 子网4: 192.168.1.192/26 网络地址: 192.168.1.192 广播地址: 192.168.1.255 可用地址: 192.168.1.193 - 192.168.1.254 (62个地址)
示例2:可变长子网掩码(VLSM)
假设需要为不同规模的网络分配地址:
- 部门A:50台设备 → 需要至少62个地址(2⁶-2=62) → 分配
/26
子网 - 部门B:20台设备 → 需要至少30个地址(2⁵-2=30) → 分配
/27
子网 - 部门C:10台设备 → 需要至少14个地址(2⁴-2=14) → 分配
/28
子网
地址分配:
192.168.1.0/24
├── 部门A: 192.168.1.0/26 (62个地址)
├── 部门B: 192.168.1.64/27 (30个地址)
└── 部门C: 192.168.1.96/28 (14个地址)
✨什么是子网掩码?
详情
相关信息
子网掩码(Subnet Mask)是一个32位的数字,用于区分IP地址中的网络部分和主机部分。在IPv4中,IP地址由网络ID和主机ID两部分组成,子网掩码通过将IP地址与自身进行按位与(AND)运算,来确定哪些位属于网络ID,哪些位属于主机ID。
结构与表示方法
子网掩码通常用点分十进制表示,如255.255.255.0
,也可以用CIDR表示法(如/24
)。在二进制中,子网掩码由连续的1和连续的0组成:
- 1的部分:表示IP地址中的网络部分。
- 0的部分:表示IP地址中的主机部分。
例如:
- 标准C类子网掩码
255.255.255.0
的二进制为11111111.11111111.11111111.00000000
,对应CIDR表示法为/24
。 - 自定义子网掩码
255.255.255.192
(即/26
)的二进制为11111111.11111111.11111111.11000000
。
子网掩码的作用
- 划分子网:通过调整子网掩码,可以将一个大网络划分为多个较小的子网,提高IP地址利用率和网络管理效率。
- 确定网络边界:帮助设备判断目标IP地址是在本地子网内(直接通信)还是需要通过路由器转发(跨子网通信)。
- 计算网络地址和广播地址:
- 网络地址:IP地址与子网掩码进行按位与运算的结果。
- 广播地址:网络地址的主机位全部置为1。
重要
如何使用子网掩码
1. 计算网络地址
将IP地址和子网掩码转换为二进制后进行按位与运算。
示例:
IP地址:192.168.1.100
(二进制:11000000.10101000.00000001.01100100
)
子网掩码:255.255.255.0
(二进制:11111111.11111111.11111111.00000000
)
按位与运算:
IP: 11000000.10101000.00000001.01100100
掩码: 11111111.11111111.11111111.00000000
--------------------------------------------
结果: 11000000.10101000.00000001.00000000 → 192.168.1.0
网络地址:192.168.1.0
2. 计算可用主机范围
网络地址的主机位全为0,广播地址的主机位全为1,可用主机地址位于两者之间。
示例:
网络地址:192.168.1.0/24
广播地址:192.168.1.255
(二进制:11000000.10101000.00000001.11111111
)
可用主机范围:192.168.1.1
至 192.168.1.254
(共254个地址)
3. 划分子网
通过增加子网掩码中的1位数(减小CIDR值),将一个网络划分为多个子网。
示例:
将192.168.1.0/24
划分为4个子网:
- 借用2位主机位(2²=4个子网),新的子网掩码为
/26
(255.255.255.192)。 - 4个子网分别为:
192.168.1.0/26
(可用地址:192.168.1.1-62)192.168.1.64/26
(可用地址:192.168.1.65-126)192.168.1.128/26
(可用地址:192.168.1.129-190)192.168.1.192/26
(可用地址:192.168.1.193-254)
4. 配置设备
在路由器、交换机或计算机中设置IP地址时,需同时指定子网掩码。例如:
- IP地址:
192.168.1.100
- 子网掩码:
255.255.255.0
(或/24
) - 默认网关:
192.168.1.1
(通常是路由器接口IP)
常见子网掩码与CIDR对照表
子网掩码 | CIDR | 网络位 | 主机位 | 可用主机数 |
---|---|---|---|---|
255.0.0.0 | /8 | 8 | 24 | 16,777,214 |
255.255.0.0 | /16 | 16 | 16 | 65,534 |
255.255.255.0 | /24 | 24 | 8 | 254 |
255.255.255.128 | /25 | 25 | 7 | 126 |
255.255.255.192 | /26 | 26 | 6 | 62 |
255.255.255.224 | /27 | 27 | 5 | 30 |
通过合理使用子网掩码,可以高效规划网络结构,优化IP地址分配,并提升网络性能和安全性。
其他
✨NAT(网络地址转换)的用途是什么?
详情
Ping 命令什么时候用到?原理是什么?
详情
相关信息
工作原理
Ping 基于 ICMP(Internet Control Message Protocol,互联网控制消息协议) 实现,核心流程如下:
- 发送请求:本地设备向目标主机发送 ICMP 回显请求报文(Echo Request),报文中包含一个随机的“标识符”和“序列号”,以及可选的数据包(默认32字节)。
- 接收响应:若目标主机在线且允许 ICMP 通信,会返回 ICMP 回显应答报文(Echo Reply),包含与请求报文相同的标识符、序列号和数据包。
- 计算结果:本地设备根据请求与响应的时间差计算“往返时间(RTT)”,并统计成功接收的响应数,最终输出丢包率(如“丢失 = 0(0% 丢失)”)。
如果目标主机不响应(如防火墙禁用 ICMP、网络中断),本地会显示“请求超时”。
提示
应用场景
Ping 命令是网络诊断中最基础且常用的工具,主要用于以下场景:
- 检测网络连通性:判断本地设备与目标主机(如服务器、路由器、另一台电脑)是否能正常通信。例如,访问网站失败时,可通过
ping www.baidu.com
排查是否是网络连接问题。 - 排查网络延迟:通过返回的“往返时间(RTT)”判断数据在本地与目标主机之间的传输速度,延迟过高可能意味着网络拥堵或路由问题。
- 验证域名解析:若
ping 域名
成功但ping IP
失败,可能是 DNS 解析故障;反之则可能是 IP 层或链路层问题。 - 判断目标主机是否在线:若持续超时(Request timed out),可能目标主机离线、防火墙拦截或网络中断。
补充说明
- Ping 命令的结果受多种因素影响,例如:防火墙可能拦截 ICMP 报文导致“超时”,但目标主机实际在线;跨运营商网络可能导致延迟波动。
- 不同系统的 Ping 命令参数略有差异(如 Windows 默认发送4个包,Linux 需手动指定次数),但核心原理一致。
URI 和 URL 有什么区别?
详情
相关信息
URI 和 URL 的定义与关系
- URI(Uniform Resource Identifier,统一资源标识符):是用于唯一标识互联网上资源的字符串,其核心作用是“标识”资源(无论该资源是否可通过网络访问)。
- URL(Uniform Resource Locator,统一资源定位符):是 URI 的一种子集,不仅标识资源,还指定了访问该资源的方式(如协议、主机、路径等)。
重要
简单来说:所有 URL 都是 URI,但并非所有 URI 都是 URL。URI 包含 URL 和 URN(Uniform Resource Name,统一资源名称,仅标识资源名称,不包含访问方式,如 urn:isbn:9780141036144
是一本书的 ISBN 编号,属于 URI 但不是 URL)。
URI 与 URL 的核心区别
对比维度 | URI(统一资源标识符) | URL(统一资源定位符) |
---|---|---|
核心功能 | 唯一标识资源(“是什么”) | 唯一标识资源 + 指明访问资源的路径和方式(“在哪里、如何访问”) |
包含范围 | 范围更广,包含 URL 和 URN 等 | 是 URI 的子集,仅包含“可定位”的资源标识 |
组成要素 | 无强制格式,只要能唯一标识资源即可(如 URN 仅需名称) | 有固定格式,必须包含: - 协议(如 http:// 、ftp:// )- 主机(如 www.example.com )- 路径(如 /page.html )等 |
示例 | - urn:isbn:9780141036144 (书籍 ISBN,URN 类型)- https://www.example.com/user (同时是 URL) | - https://www.example.com/index.html (HTTP 协议访问网页)- ftp://ftp.example.com/file.zip (FTP 协议访问文件) |
侧重点 | 资源的“唯一性标识”,不关心如何访问 | 资源的“访问方式”,强调定位和获取资源的方法 |
总结
- 如果只需要唯一标识某个资源(无论是否能通过网络访问),用 URI。
- 如果需要明确如何访问某个网络资源(包含协议、地址等信息),用 URL。
- 在实际开发中,我们常说的“网址”(如
https://www.baidu.com
)本质上是 URL,同时也是 URI 的一种。
LAN 和 WAN 有什么区别?
详情
相关信息
LAN(局域网)和WAN(广域网)是计算机网络的两种基本类型,它们在覆盖范围、结构、技术和用途上存在显著差异。
1. 覆盖范围
LAN | WAN |
---|---|
覆盖较小的地理区域,如家庭、办公室、学校。 | 覆盖较大的地理区域,如城市、国家甚至全球。 |
通常在单个建筑物或相邻建筑群内。 | 可能跨越城市、国家或洲际距离。 |
重要
对比总结表
特性 | LAN | WAN |
---|---|---|
覆盖范围 | 小(建筑物内) | 大(城市、国家、全球) |
传输介质 | 以太网、Wi-Fi | 光纤、卫星、租用线路 |
传输速率 | 高(100 Mbps ~ 10 Gbps) | 可变(几Mbps ~ 100 Gbps) |
延迟 | 低(<1ms) | 高(10ms ~ 100ms+) |
IP地址类型 | 私有IP | 公网IP |
管理方式 | 本地管理 | ISP或运营商管理 |
典型应用 | 文件共享、打印 | 互联网访问、远程办公 |
安全性 | 内部防护为主 | 需多层安全措施(VPN、加密) |
成本 | 较低 | 较高 |
常见误解澄清
- LAN ≠ 有线网络:LAN可以是有线或无线的,取决于连接技术。
- WAN ≠ 互联网:WAN是连接远距离网络的技术,互联网是最大的公共WAN。
- 家庭网络属于LAN:即使通过Wi-Fi连接,只要设备在同一本地网络内,仍属于LAN。
解释下路由器,交换机和集线器的作用?
详情
相关信息
集线器(Hub)
工作原理
- 物理层设备:工作在OSI模型的第一层(物理层),仅负责信号的放大和转发。
- 共享带宽:所有连接到集线器的设备共享同一带宽(如100Mbps),冲突域为整个集线器。
- 广播转发:接收到数据帧后,会向所有端口(除源端口外)广播,无论目标设备是否在同一端口。
作用
- 简单连接:用于早期局域网中多台设备的简单互联(如办公室多台电脑共享打印机)。
- 信号中继:延长网络传输距离(通过放大电信号)。
缺点
- 效率低:同一时间只能有一个设备发送数据,易产生冲突(Collision)。
- 安全性差:所有设备能接收到同一广播域内的数据包,存在信息泄露风险。
- 已逐步淘汰:被交换机完全替代,仅在极低成本场景中偶尔使用。
相关信息
交换机(Switch)
工作原理
- 数据链路层设备:工作在OSI模型的第二层(数据链路层),基于MAC地址转发数据帧。
- 独享带宽:每个端口提供独立带宽(如每个端口100Mbps),冲突域被隔离到每个端口。
- MAC地址学习:通过分析数据帧的源MAC地址,建立MAC地址表,并根据目标MAC地址转发数据。
作用
- 智能转发:仅向目标设备所在端口转发数据,提高网络效率。
- 隔离冲突域:不同端口的设备间通信互不干扰,提升吞吐量。
- 支持多对多通信:允许同时多个设备间建立独立连接(如全双工通信)。
分类
- 二层交换机:基于MAC地址转发,常见于企业局域网。
- 三层交换机:具备部分路由器功能(如支持VLAN间路由),用于园区网骨干。
应用场景
- 局域网核心:连接服务器、PC、打印机等设备,构建企业内网。
- VLAN划分:通过虚拟局域网隔离广播域,提高安全性和管理效率。
相关信息
路由器(Router)
工作原理
- 网络层设备:工作在OSI模型的第三层(网络层),基于IP地址转发数据包。
- 连接不同网络:连接多个不同网段(如LAN与WAN),实现跨网络通信。
- 路由选择:通过路由协议(如OSPF、BGP)计算最佳路径,并转发数据包到目标网络。
作用
- 跨网段通信:连接不同IP网段(如192.168.1.0/24与10.0.0.0/8)。
- NAT转换:将私有IP转换为公网IP,实现多设备共享一个公网IP访问互联网。
- 流量控制与安全:通过访问控制列表(ACL)、防火墙过滤数据包,保护内部网络。
- 广域网连接:连接ISP网络,实现企业或家庭网络与互联网的互通。
应用场景
- 家庭网络:连接家庭设备与互联网(如光猫后的无线路由器)。
- 企业网络边界:作为企业内网与外网的边界设备,提供安全防护和流量管理。
- 数据中心互联:在大型网络中连接不同区域的数据中心。
重要
三者对比表
特性 | 集线器(Hub) | 交换机(Switch) | 路由器(Router) |
---|---|---|---|
工作层次 | 物理层(第一层) | 数据链路层(第二层) | 网络层(第三层) |
转发依据 | 物理端口 | MAC地址 | IP地址 |
带宽特性 | 共享带宽(冲突域大) | 独享带宽(冲突域隔离) | 跨网络转发 |
广播域 | 整个设备 | 可通过VLAN划分 | 每个接口为独立广播域 |
主要功能 | 信号放大与转发 | 基于MAC地址转发、VLAN | 跨网段路由、NAT、防火墙 |
典型应用 | 早期局域网(已淘汰) | 企业/家庭局域网核心 | 连接不同网络(LAN→WAN) |
安全性 | 无安全机制 | 基于MAC的访问控制 | 防火墙、ACL、VPN |