<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>路漫漫其修远兮，吾将上下而求索</title>
        <link>https://yyboom.me</link>
        <description>记录编程与学习笔记</description>
        <language>zh-CN</language>
        <pubDate>Thu, 12 Nov 2026 00:00:00 +0800</pubDate>
        <lastBuildDate>Thu, 12 Nov 2026 00:00:00 +0800</lastBuildDate>
        <category>JWT</category>
        <category>身份验证</category>
        <category>MongoDB</category>
        <category>NoSQL</category>
        <category>Nginx</category>
        <category>Web 服务器</category>
        <category>反向代理</category>
        <category>计算机网络</category>
        <category>TCP/IP</category>
        <category>网络基础</category>
        <category>网络协议</category>
        <category>Java</category>
        <category>Servlet</category>
        <item>
            <guid isPermalink="true">https://yyboom.me/2026/11/12/computer-network-tcp-ip-notes/</guid>
            <title>计算机网络基础笔记：局域网、TCP/IP、HTTPS 与路由原理</title>
            <link>https://yyboom.me/2026/11/12/computer-network-tcp-ip-notes/</link>
            <category>计算机网络</category>
            <category>TCP/IP</category>
            <category>网络基础</category>
            <category>网络协议</category>
            <pubDate>Thu, 12 Nov 2026 00:00:00 +0800</pubDate>
            <description><![CDATA[ &lt;p&gt;计算机网络要解决的是不同设备如何寻址、互联、可靠地交换数据，以及网络故障如何定位的问题。本文根据一次循序渐进的学习讨论，整理家庭局域网、地址与路由、TCP/UDP、DNS/NAT、HTTP/HTTPS、网络分层、VLAN 以及 OSPF/BGP 等知识，重点保留自己的理解与容易混淆的地方，供复习和后续实践使用。&lt;/p&gt;
&lt;h2 id=&#34;一-从家庭网络理解局域网与互联网&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#一-从家庭网络理解局域网与互联网&#34;&gt;#&lt;/a&gt; 一、从家庭网络理解局域网与互联网&lt;/h2&gt;
&lt;h3 id=&#34;11-lan-wan-和互联网&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#11-lan-wan-和互联网&#34;&gt;#&lt;/a&gt; 1.1 LAN、WAN 和互联网&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;局域网（LAN，Local Area Network）&lt;/strong&gt;：通常在家庭、办公室、实验室等较小范围内，由一个组织或家庭管理。局域网设备可以在不连接互联网时相互通信。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;广域网（WAN，Wide Area Network）&lt;/strong&gt;：连接较大地理范围内的网络，例如不同城市的企业网络或运营商骨干网络。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;互联网（Internet）&lt;/strong&gt;：由多个网络通过 IP 协议体系互联组成的全球网络，不是某一台路由器或某一个局域网。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;家庭上网的简化路径：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;手机 / 电脑 ── Wi-Fi 或网线 ── 家庭路由器 ── 运营商网络 ── 互联网 ── 网站服务器&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;                  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;             家庭局域网（LAN）&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;我的理解：&lt;/strong&gt; 家里的设备先加入同一个家庭网络，再通过路由器与外部网络通信。这个基本框架是正确的。需要补充的是，家庭无线路由器往往集成了无线 AP、以太网交换功能、路由和防火墙等功能。&lt;/p&gt;
&lt;h3 id=&#34;12-交换机-路由器与无线-ap&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#12-交换机-路由器与无线-ap&#34;&gt;#&lt;/a&gt; 1.2 交换机、路由器与无线 AP&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;设备&lt;/th&gt;
&lt;th&gt;主要关注&lt;/th&gt;
&lt;th&gt;典型作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;二层交换机&lt;/td&gt;
&lt;td&gt;MAC 地址、交换机端口&lt;/td&gt;
&lt;td&gt;在同一 VLAN 内转发以太网帧&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;路由器&lt;/td&gt;
&lt;td&gt;目的 IP、路由表&lt;/td&gt;
&lt;td&gt;在不同 IP 网络之间转发数据包&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;无线 AP&lt;/td&gt;
&lt;td&gt;Wi-Fi 接入与二层帧&lt;/td&gt;
&lt;td&gt;让无线终端接入局域网&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;注意：“交换机处于链路层、路由器处于网络层”适用于&lt;strong&gt;典型二层交换机&lt;/strong&gt;与路由器。三层交换机也能执行 IP 路由。&lt;/p&gt;
&lt;h2 id=&#34;二-ip-mac-子网和默认网关&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#二-ip-mac-子网和默认网关&#34;&gt;#&lt;/a&gt; 二、IP、MAC、子网和默认网关&lt;/h2&gt;
&lt;h3 id=&#34;21-ip-地址与-mac-地址的分工&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#21-ip-地址与-mac-地址的分工&#34;&gt;#&lt;/a&gt; 2.1 IP 地址与 MAC 地址的分工&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP 地址&lt;/strong&gt;：用于网络层寻址，例如 &lt;code&gt;192.168.1.10&lt;/code&gt;。它告诉网络数据包的源端与目的端在哪里。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MAC 地址&lt;/strong&gt;：用于以太网等链路层的本地帧交付，例如 &lt;code&gt;A4:5E:60:12:34:56&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;端口号&lt;/strong&gt;：TCP/UDP 用于区分主机上的网络通信端点，例如 &lt;code&gt;192.168.1.10:50000&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;记忆：&lt;strong&gt;IP 决定发往哪个主机或网络；MAC 决定当前链路这一跳交给谁；端口号帮助找到哪个应用端点。&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&#34;容易弄错mac-的长度与能否修改&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#容易弄错mac-的长度与能否修改&#34;&gt;#&lt;/a&gt; 容易弄错：MAC 的长度与能否修改&lt;/h4&gt;
&lt;p&gt;我的早期理解中，把 MAC 地址说成“16 位”，这是错误的。常见以太网 MAC 地址是 &lt;strong&gt;48 位（6 字节）&lt;/strong&gt;，通常用 &lt;strong&gt;12 个十六进制数字&lt;/strong&gt;表示。&lt;/p&gt;
&lt;p&gt;典型 MA-L 分配方式是前 24 位组织标识（OUI）、后 24 位由组织分配，但 MAC 地址方案并非都必须按这一种方式理解。MAC 通常具有唯一性，却不是绝对不会重复，也可以被软件随机化或修改。修改对外呈现的 MAC &lt;strong&gt;不等于硬件变成一块新网卡&lt;/strong&gt;，更不必然需要烧录固件。&lt;/p&gt;
&lt;h3 id=&#34;22-子网掩码&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#22-子网掩码&#34;&gt;#&lt;/a&gt; 2.2 子网掩码&lt;/h3&gt;
&lt;p&gt;IPv4 地址有 32 位，子网掩码用于区分网络部分与主机部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例配置（非实测）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;电脑 A：192.168.1.10/24&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;电脑 B：192.168.1.20/24&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;电脑 C：192.168.2.10/24&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;/24 = 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;网络地址的计算方式：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;网络地址 = IP 地址 按位与 子网掩码&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A 和 B 的网络地址都是 &lt;code&gt;192.168.1.0&lt;/code&gt;，C 的网络地址是 &lt;code&gt;192.168.2.0&lt;/code&gt;。在普通网络规划中，A 和 B 可通过同一二层网络直接通信；C 通常需要路由器或三层交换机进行跨子网转发。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;易混点：&lt;/strong&gt; 不能永远只看 IP 前三组是否一致。比如 &lt;code&gt;/25&lt;/code&gt;、&lt;code&gt;/26&lt;/code&gt; 会在同一个 &lt;code&gt;192.168.1.x&lt;/code&gt; 范围中划分更小的子网。还要考虑 VLAN、设备隔离和防火墙规则。&lt;/p&gt;
&lt;h3 id=&#34;23-默认网关&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#23-默认网关&#34;&gt;#&lt;/a&gt; 2.3 默认网关&lt;/h3&gt;
&lt;p&gt;默认网关是目标网络没有更具体匹配路由时，设备通常选用的下一跳路由器。&lt;/p&gt;
&lt;p&gt;假设电脑配置：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;IP：192.168.1.10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;掩码：255.255.255.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;默认网关：192.168.1.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问 &lt;code&gt;8.8.8.8&lt;/code&gt; 时，电脑发现目的地址不在本地子网，于是按路由表把 IP 包交给 &lt;code&gt;192.168.1.1&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;需要区分两种地址：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP 包的目的 IP&lt;/strong&gt;：仍然是 &lt;code&gt;8.8.8.8&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第一跳以太网帧的目的 MAC&lt;/strong&gt;：是默认网关对应的 MAC，而不是远端 &lt;code&gt;8.8.8.8&lt;/code&gt; 的 MAC。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;三-dhcp-与-arp&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#三-dhcp-与-arp&#34;&gt;#&lt;/a&gt; 三、DHCP 与 ARP&lt;/h2&gt;
&lt;h3 id=&#34;31-dhcp自动获取网络参数&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#31-dhcp自动获取网络参数&#34;&gt;#&lt;/a&gt; 3.1 DHCP：自动获取网络参数&lt;/h3&gt;
&lt;p&gt;DHCP（动态主机配置协议）通常提供 IP、掩码、默认网关、DNS 等配置。常见首次获取地址的过程简称 DORA：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;Discover → Offer → Request → ACK&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;我的理解与修正：&lt;/strong&gt; 重新加入同一个网络时，设备可能尝试请求之前使用的 IP；但地址能否继续使用，取决于租约状态、服务器分配策略等，并不是“申请这个 IP 的永久权限”。&lt;/p&gt;
&lt;h3 id=&#34;32-arp已知-ipv4获取本地下一跳-mac&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#32-arp已知-ipv4获取本地下一跳-mac&#34;&gt;#&lt;/a&gt; 3.2 ARP：已知 IPv4，获取本地下一跳 MAC&lt;/h3&gt;
&lt;p&gt;同一二层网络中，如果 A 已经知道 B 的 IPv4 地址，却不知道 MAC，可广播 ARP 请求：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;A：谁拥有 192.168.1.20？&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;B：我拥有该 IP，我的 MAC 是 BB:BB:BB:BB:BB:BB。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;A：将这条 IP → MAC 映射加入 ARP 缓存。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ARP 广播的范围是&lt;strong&gt;同一个二层广播域&lt;/strong&gt;。访问外部 IP 时，主机通常 ARP 查询&lt;strong&gt;网关&lt;/strong&gt;的 MAC，而不是远端服务器的 MAC。&lt;/p&gt;
&lt;h3 id=&#34;33-arp-欺骗为什么麻烦&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#33-arp-欺骗为什么麻烦&#34;&gt;#&lt;/a&gt; 3.3 ARP 欺骗为什么麻烦&lt;/h3&gt;
&lt;p&gt;ARP 欺骗利用传统 ARP 缺乏原生身份认证的特点，发送伪造 ARP 信息使其他设备缓存错误映射。例如：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;正确：192.168.1.1 → 路由器真实 MAC&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;错误：192.168.1.1 → 攻击者 MAC&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;后续发送给网关的二层帧可能被引导至攻击者，造成中间人攻击或网络中断。攻击既可以借助伪造应答，也可能使用免费 ARP，&lt;strong&gt;不限定只有一种报文形式&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;难以处理的原因在于：清掉缓存只是修复表面状态；如果攻击源持续发送虚假映射，缓存就可能再次被污染。某些设备还缺乏 DAI（动态 ARP 检测）、DHCP Snooping 等防护能力。&lt;/p&gt;
&lt;p&gt;常见防护思路：管理设备接入、限制广播域、在支持的交换机上正确配置 DAI/DHCP Snooping、对固定节点进行适当绑定。MAC 变化不一定是攻击，还可能来自网关切换或设备更换。&lt;/p&gt;
&lt;h2 id=&#34;四-交换机-mac-表-arp-表与路由表&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#四-交换机-mac-表-arp-表与路由表&#34;&gt;#&lt;/a&gt; 四、交换机 MAC 表、ARP 表与路由表&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;表&lt;/th&gt;
&lt;th&gt;通常由谁维护&lt;/th&gt;
&lt;th&gt;根据什么查&lt;/th&gt;
&lt;th&gt;得到什么&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MAC 地址表&lt;/td&gt;
&lt;td&gt;二层交换机&lt;/td&gt;
&lt;td&gt;目的 MAC，结合 VLAN&lt;/td&gt;
&lt;td&gt;出端口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARP 缓存表&lt;/td&gt;
&lt;td&gt;IPv4 主机、路由器&lt;/td&gt;
&lt;td&gt;下一跳 IPv4 地址&lt;/td&gt;
&lt;td&gt;下一跳 MAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;路由表&lt;/td&gt;
&lt;td&gt;主机、路由器、三层交换机&lt;/td&gt;
&lt;td&gt;目的 IP 地址&lt;/td&gt;
&lt;td&gt;下一跳、出接口等&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一个同子网通信的典型过程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;主机先通过路由表确定目标属于本地直连网络。&lt;/li&gt;
&lt;li&gt;通过 ARP 缓存或 ARP 请求获得目标 MAC。&lt;/li&gt;
&lt;li&gt;主机封装以太网帧，交换机按 MAC 地址表转发。&lt;/li&gt;
&lt;li&gt;接收端按协议逐层处理数据。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;跨网段通信时，ARP 解析的是&lt;strong&gt;下一跳网关的 MAC&lt;/strong&gt;。这也解释了为什么 ARP 欺骗时，路由表本身可能完全正常，但数据仍被送到了错误的二层目的地。&lt;/p&gt;
&lt;h2 id=&#34;五-tcpip-与-osi-网络分层&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#五-tcpip-与-osi-网络分层&#34;&gt;#&lt;/a&gt; 五、TCP/IP 与 OSI 网络分层&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;教学五层模型&lt;/th&gt;
&lt;th&gt;主要职责&lt;/th&gt;
&lt;th&gt;示例协议或技术&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;应用层&lt;/td&gt;
&lt;td&gt;应用通信规则&lt;/td&gt;
&lt;td&gt;HTTP、DNS、DHCP、SMTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;传输层&lt;/td&gt;
&lt;td&gt;进程通信、端口、可靠性机制&lt;/td&gt;
&lt;td&gt;TCP、UDP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;网络层&lt;/td&gt;
&lt;td&gt;IP 寻址、路由、诊断&lt;/td&gt;
&lt;td&gt;IPv4、IPv6、ICMP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;数据链路层&lt;/td&gt;
&lt;td&gt;本地链路帧交付&lt;/td&gt;
&lt;td&gt;以太网、VLAN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;物理层&lt;/td&gt;
&lt;td&gt;电、光、无线信号传输&lt;/td&gt;
&lt;td&gt;网线、光纤、无线介质&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;正式的 &lt;strong&gt;TCP/IP 四层模型&lt;/strong&gt; 通常将链路层与物理层合并为“网络接口层”；&lt;strong&gt;OSI 七层&lt;/strong&gt; 还在应用层以下单列表示层、会话层。实际互联网协议不一定严格一对一对应 OSI 每一层。&lt;/p&gt;
&lt;h3 id=&#34;51-封装与解封装&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#51-封装与解封装&#34;&gt;#&lt;/a&gt; 5.1 封装与解封装&lt;/h3&gt;
&lt;p&gt;以基于 TCP 的 HTTPS 为例，逻辑封装过程是：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;应用层 HTTP 请求&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       ↓ TLS 加密保护&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;TCP 首部 + TLS 数据&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;IP 首部 + TCP 报文段&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;以太网帧首部 + IP 数据包 + 帧校验序列&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;电信号 / 光信号 / 无线信号&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接收方按反方向逐层处理，即解封装。路由器转发时通常重新封装链路层帧、递减 IPv4 TTL；如果不存在 NAT 等额外处理，普通转发不会自动改变源、目的 IP。&lt;/p&gt;
&lt;h2 id=&#34;六-tcp-与-udp&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#六-tcp-与-udp&#34;&gt;#&lt;/a&gt; 六、TCP 与 UDP&lt;/h2&gt;
&lt;h3 id=&#34;61-tcp面向连接的可靠字节流&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#61-tcp面向连接的可靠字节流&#34;&gt;#&lt;/a&gt; 6.1 TCP：面向连接的可靠字节流&lt;/h3&gt;
&lt;p&gt;TCP 的主要能力：建立连接、按序交付、确认与重传、滑动窗口、流量控制、拥塞控制。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三次握手（简化）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;客户端                       服务器&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;  SYN       ───────────────→&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;            ←─────────────── SYN + ACK&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;  ACK       ───────────────→&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;          建立连接&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;典型四次挥手（简化）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;主动关闭方                   被动关闭方&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;  FIN       ───────────────→&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;            ←─────────────── ACK&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;            ←─────────────── FIN&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;  ACK       ───────────────→&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;TCP 是全双工的，两个方向的关闭可以分开进行。在一些情况下，最后的 ACK 与 FIN 报文也可合并，因此“四次挥手”是典型过程，不是所有连接都严格呈现四个独立报文。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TCP 是字节流&lt;/strong&gt;：调用两次 &lt;code&gt;send()&lt;/code&gt;，接收端不一定对应两次 &lt;code&gt;recv()&lt;/code&gt;，应用需要自行定义消息边界。&lt;/p&gt;
&lt;h3 id=&#34;62-udp无连接的数据报&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#62-udp无连接的数据报&#34;&gt;#&lt;/a&gt; 6.2 UDP：无连接的数据报&lt;/h3&gt;
&lt;p&gt;UDP 不需要 TCP 式的三次握手，默认不保证可靠到达和顺序，保留数据报边界，首部仅 8 字节。&lt;/p&gt;
&lt;p&gt;“无连接”不等于“只要知道 MAC 和 IP 即可发送”。UDP 仍然依赖 IP 寻址、链路层传输，并使用源端口与目的端口。UDP 上层也可以自行设计可靠传输机制，QUIC 就是一个典型例子。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;比较&lt;/th&gt;
&lt;th&gt;TCP&lt;/th&gt;
&lt;th&gt;UDP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;连接&lt;/td&gt;
&lt;td&gt;面向连接&lt;/td&gt;
&lt;td&gt;无连接&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;数据单位&lt;/td&gt;
&lt;td&gt;字节流&lt;/td&gt;
&lt;td&gt;数据报&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;可靠和按序交付&lt;/td&gt;
&lt;td&gt;协议内置&lt;/td&gt;
&lt;td&gt;不保证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;首部&lt;/td&gt;
&lt;td&gt;最小 20 字节&lt;/td&gt;
&lt;td&gt;8 字节&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;常见用途&lt;/td&gt;
&lt;td&gt;文件传输、数据库、Web&lt;/td&gt;
&lt;td&gt;实时音视频、游戏、部分 DNS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;63-滑动窗口-流量控制与拥塞控制&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#63-滑动窗口-流量控制与拥塞控制&#34;&gt;#&lt;/a&gt; 6.3 滑动窗口、流量控制与拥塞控制&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;滑动窗口&lt;/strong&gt;：让发送方能维持多个未确认的字节，不必逐个数据段停止等待。TCP 的 ACK 确认号通常表示下一个期望按序收到的&lt;strong&gt;字节序列号&lt;/strong&gt;，不是“第几个包”。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;流量控制&lt;/strong&gt;：主要保护接收端，接收方通告 &lt;code&gt;rwnd&lt;/code&gt;（接收窗口）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拥塞控制&lt;/strong&gt;：主要根据网络反馈控制在途数据量，发送方维护 &lt;code&gt;cwnd&lt;/code&gt;（拥塞窗口）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简化关系：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;可容纳的最大在途数据量 ≤ min(rwnd, cwnd)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果已有数据未确认，还能继续发送的新数据量会进一步减少。经典拥塞控制包括慢启动和拥塞避免，但现代系统可能使用 CUBIC、BBR 等不同算法。&lt;/p&gt;
&lt;h2 id=&#34;七-ip-数据包-ttl-mtu-和-ipv6&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#七-ip-数据包-ttl-mtu-和-ipv6&#34;&gt;#&lt;/a&gt; 七、IP 数据包、TTL、MTU 和 IPv6&lt;/h2&gt;
&lt;h3 id=&#34;71-ipv4-数据包&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#71-ipv4-数据包&#34;&gt;#&lt;/a&gt; 7.1 IPv4 数据包&lt;/h3&gt;
&lt;p&gt;IPv4 数据包由首部与载荷组成。基本首部 20 字节，存在选项时可更长。重要字段有：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;源 IP / 目的 IP&lt;/td&gt;
&lt;td&gt;寻址与转发&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TTL&lt;/td&gt;
&lt;td&gt;限制逐跳转发次数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Protocol&lt;/td&gt;
&lt;td&gt;标识上层协议&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Length&lt;/td&gt;
&lt;td&gt;整个 IPv4 数据包长度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identification / Flags / Fragment Offset&lt;/td&gt;
&lt;td&gt;IPv4 分片控制与重组&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Header Checksum&lt;/td&gt;
&lt;td&gt;IPv4 首部校验&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;常见 IPv4 &lt;code&gt;Protocol&lt;/code&gt; 数值：ICMP = &lt;code&gt;1&lt;/code&gt;、TCP = &lt;code&gt;6&lt;/code&gt;、UDP = &lt;code&gt;17&lt;/code&gt;、OSPF = &lt;code&gt;89&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;72-ttl防止无限路由环路&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#72-ttl防止无限路由环路&#34;&gt;#&lt;/a&gt; 7.2 TTL：防止无限路由环路&lt;/h3&gt;
&lt;p&gt;TTL（Time To Live）虽然名字有“时间”，但在现代 IPv4 转发中实际主要充当跳数限制。&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;发送端：TTL = 64&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;经过第一台路由器：TTL = 63&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;经过第二台路由器：TTL = 62&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;……&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;TTL 耗尽时，路由器丢弃数据包，通常发送 ICMP Time Exceeded。Windows 的 &lt;code&gt;tracert&lt;/code&gt; 就利用逐渐增加的 TTL 探测沿途部分路由节点。&lt;/p&gt;
&lt;h3 id=&#34;73-mtu-与分片&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#73-mtu-与分片&#34;&gt;#&lt;/a&gt; 7.3 MTU 与分片&lt;/h3&gt;
&lt;p&gt;MTU（Maximum Transmission Unit）表示链路所能承载的最大网络层数据包大小。普通以太网常用 MTU 为 1500 字节。&lt;/p&gt;
&lt;p&gt;当 IPv4 数据包超过下一跳 MTU 时：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;允许分片&lt;/strong&gt;：可能被拆成多个 IP 分片，接收端负责重组。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DF（Don&#39;t Fragment）置位&lt;/strong&gt;：不能被中间路由器分片，通常丢弃并返回 ICMP 错误。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分片增加额外首部开销；某片丢失还可能导致原数据报无法重组，因此网络通常会尽量避免不必要的分片。&lt;/p&gt;
&lt;h3 id=&#34;74-ipv4-与-ipv6&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#74-ipv4-与-ipv6&#34;&gt;#&lt;/a&gt; 7.4 IPv4 与 IPv6&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项目&lt;/th&gt;
&lt;th&gt;IPv4&lt;/th&gt;
&lt;th&gt;IPv6&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;地址长度&lt;/td&gt;
&lt;td&gt;32 位&lt;/td&gt;
&lt;td&gt;128 位&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;示例&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2001:db8:1234::10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;基本首部&lt;/td&gt;
&lt;td&gt;最小 20 字节&lt;/td&gt;
&lt;td&gt;固定 40 字节&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;地址解析&lt;/td&gt;
&lt;td&gt;ARP&lt;/td&gt;
&lt;td&gt;基于 ICMPv6 的 NDP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;跳数限制&lt;/td&gt;
&lt;td&gt;TTL&lt;/td&gt;
&lt;td&gt;Hop Limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;中间路由器分片&lt;/td&gt;
&lt;td&gt;条件允许时支持&lt;/td&gt;
&lt;td&gt;不执行分片&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;广播&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;td&gt;不使用广播&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;IPv6 地址空间更大，一般无需像家用 IPv4 一样依靠 NAPT 共享公网地址；但仍需要防火墙，且某些场景仍会使用 NAT64 等转换技术。&lt;/p&gt;
&lt;h2 id=&#34;八-icmp-ping-与-tracert&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#八-icmp-ping-与-tracert&#34;&gt;#&lt;/a&gt; 八、ICMP、ping 与 tracert&lt;/h2&gt;
&lt;p&gt;ICMP 主要用于 IP 网络中的错误报告与诊断，&lt;strong&gt;不是&lt;/strong&gt; TCP 或 UDP 的一个端口服务。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ping&lt;/code&gt; 通常通过 ICMP Echo Request / Echo Reply 测试可达性，并测量 RTT（往返时间）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tracert&lt;/code&gt; 利用不同 TTL 对中间路由器进行逐跳探测。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例命令（未在本文执行，不代表实测结果）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;ping &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;1.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;ping &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;tracert &lt;/span&gt;&lt;span style=&#34;color:#999999;--shiki-dark:#666666&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;d &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;81-8888-为什么可以-ping-通&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#81-8888-为什么可以-ping-通&#34;&gt;#&lt;/a&gt; 8.1 8.8.8.8 为什么可以 ping 通&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;8.8.8.8&lt;/code&gt; 是 Google Public DNS 提供服务的公网 IPv4 地址。电脑不需要与该地址处于同一子网；经默认网关、运营商网络及互联网路由转发，就可以到达提供该地址服务的网络节点。&lt;/p&gt;
&lt;p&gt;能 ping 通只表示 ICMP 探测收到了响应，&lt;strong&gt;不表示当前一定在使用 Google DNS，也不代表 DNS、HTTPS 等所有业务都正常&lt;/strong&gt;。Google 公共 DNS 使用 Anycast 等机制部署，不能简单理解为全世界都在 ping 同一台物理计算机。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tracert&lt;/code&gt; 某一跳出现 &lt;code&gt;* * *&lt;/code&gt; 也不必然意味着故障：路由器可能限制 ICMP 回复，但仍正常转发业务数据。&lt;/p&gt;
&lt;h2 id=&#34;九-dns-与-nat&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#九-dns-与-nat&#34;&gt;#&lt;/a&gt; 九、DNS 与 NAT&lt;/h2&gt;
&lt;h3 id=&#34;91-dns域名解析&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#91-dns域名解析&#34;&gt;#&lt;/a&gt; 9.1 DNS：域名解析&lt;/h3&gt;
&lt;p&gt;DNS（Domain Name System）用于查询域名对应的记录，例如 A（IPv4）、AAAA（IPv6）、CNAME（别名）、MX（邮件服务器）、NS（权威名称服务器）等。&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;www.example.com ── DNS 查询 ──→ 对应的 IP 地址记录&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;递归解析器可能直接命中缓存，也可能依次联系根服务器、顶级域服务器和权威服务器。DNS 可以使用 UDP、TCP，以及 DoH/DoT 等加密传输方案。&lt;/p&gt;
&lt;h3 id=&#34;92-nat地址转换&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#92-nat地址转换&#34;&gt;#&lt;/a&gt; 9.2 NAT：地址转换&lt;/h3&gt;
&lt;p&gt;NAT（Network Address Translation）改变数据包中的网络地址。家庭 IPv4 网络常见的是 NAPT/PAT，会利用端口映射让多个私有地址设备共享一个公网 IPv4 地址。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例映射（非实测）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;192.168.1.10:50001 ──→ 公网 IP:40001&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;192.168.1.20:50002 ──→ 公网 IP:40002&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;路由器记录转换关系，以便把返回数据送回正确的内部终端。NAT 不等于防火墙；外部能否主动访问内部设备，还与 NAT 映射、端口转发、防火墙策略等有关。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;容易混淆：DNS 解决“域名查 IP”；NAT 解决“地址和端口如何转换”。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;十-http-https-cookie-session-与-token&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#十-http-https-cookie-session-与-token&#34;&gt;#&lt;/a&gt; 十、HTTP、HTTPS、Cookie、Session 与 Token&lt;/h2&gt;
&lt;h3 id=&#34;101-http请求与响应&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#101-http请求与响应&#34;&gt;#&lt;/a&gt; 10.1 HTTP：请求与响应&lt;/h3&gt;
&lt;p&gt;HTTP 是应用层协议，定义客户端向服务器发送请求、服务器返回响应的规则。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例 HTTP 请求（非抓包结果）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#1E754F;--shiki-dark:#4D9375&#34;&gt;GET&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt; /index.html &lt;/span&gt;&lt;span style=&#34;color:#1E754F;--shiki-dark:#4D9375&#34;&gt;HTTP&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;1.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#1E754F;--shiki-dark:#4D9375&#34;&gt;Host:&lt;/span&gt;&lt;span style=&#34;color:#B56959;--shiki-dark:#C98A7D&#34;&gt; example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;常见方法有 GET、POST、PUT、PATCH、DELETE。常见状态码：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;状态码&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;成功&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;301&lt;/td&gt;
&lt;td&gt;永久重定向&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;请求错误&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;未通过认证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;403&lt;/td&gt;
&lt;td&gt;拒绝访问&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;404&lt;/td&gt;
&lt;td&gt;资源不存在&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;服务端内部错误&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;502&lt;/td&gt;
&lt;td&gt;网关收到无效上游响应&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;102-https用-tls-保护-http&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#102-https用-tls-保护-http&#34;&gt;#&lt;/a&gt; 10.2 HTTPS：用 TLS 保护 HTTP&lt;/h3&gt;
&lt;p&gt;HTTP 本身不提供传输加密和服务器身份认证。HTTPS 通过 TLS 提供通信机密性、完整性保护及证书身份验证。&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;HTTP/1.1 或 HTTP/2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;      TLS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;      TCP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       IP&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;HTTP/3 是重要例外：它通过基于 UDP 的 QUIC 传输，并集成 TLS 1.3 握手机制。&lt;/p&gt;
&lt;p&gt;数字证书通常包含域名、公钥、有效期和签名等信息；浏览器通过可信 CA 链及域名检查来验证服务器身份。&lt;strong&gt;HTTPS 不能证明网站内容本身值得信任&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;103-http-无状态与会话维持&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#103-http-无状态与会话维持&#34;&gt;#&lt;/a&gt; 10.3 HTTP 无状态与会话维持&lt;/h3&gt;
&lt;p&gt;HTTP 本身不会自动保存跨请求的用户登录身份，网站通常借助额外的会话或凭证机制。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;概念&lt;/th&gt;
&lt;th&gt;本质&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cookie&lt;/td&gt;
&lt;td&gt;浏览器保存并按规则携带的数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session&lt;/td&gt;
&lt;td&gt;服务端或应用维护的会话状态&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token&lt;/td&gt;
&lt;td&gt;可供服务器验证的凭证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JWT&lt;/td&gt;
&lt;td&gt;一种结构化令牌格式，通常可通过签名验证&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;典型 Cookie + Session 流程：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;用户登录 → 服务端验证 → 创建会话&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       → 浏览器保存 Session ID Cookie&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       → 后续请求携带 Cookie&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;       → 服务端根据 Session ID 查询会话&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Token 也可以放在 Cookie 中，不是只能放在 HTTP &lt;code&gt;Authorization&lt;/code&gt; 头。普通签名 JWT 的 Payload &lt;strong&gt;不是加密数据&lt;/strong&gt;，不要在其中直接放密码、密钥等敏感信息。&lt;/p&gt;
&lt;h2 id=&#34;十一-vlan-trunk-与-stp&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#十一-vlan-trunk-与-stp&#34;&gt;#&lt;/a&gt; 十一、VLAN、Trunk 与 STP&lt;/h2&gt;
&lt;h3 id=&#34;111-vlan划分二层广播域&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#111-vlan划分二层广播域&#34;&gt;#&lt;/a&gt; 11.1 VLAN：划分二层广播域&lt;/h3&gt;
&lt;p&gt;VLAN（虚拟局域网）使同一套物理交换设备能够划分不同二层广播域。例如：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;VLAN 10 → 研发部门 → 192.168.10.0/24&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;VLAN 20 → 财务部门 → 192.168.20.0/24&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;VLAN 30 → 访客网络 → 192.168.30.0/24&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一个 VLAN 配一个 IP 子网是常见设计，&lt;strong&gt;但 VLAN 与子网不是同一个概念，也不强制严格一一对应&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;即使两台电脑都配置 &lt;code&gt;192.168.1.x/24&lt;/code&gt;，如果它们位于隔离的 VLAN，也不能仅靠普通二层广播和 ARP 直接互通。不同 VLAN 间通信通常需要三层交换机或路由器，并受到 ACL/防火墙等策略约束。&lt;/p&gt;
&lt;h3 id=&#34;112-access-和-trunk&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#112-access-和-trunk&#34;&gt;#&lt;/a&gt; 11.2 Access 和 Trunk&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Access 端口&lt;/strong&gt;：典型情况下连接普通终端，收发不带 VLAN 标签的帧。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trunk 端口&lt;/strong&gt;：通常在网络设备之间携带多个 VLAN，可借助 IEEE 802.1Q 标签区分。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VLAN 不是加密机制，它只能隔离二层广播域，不能单独替代防火墙。&lt;/p&gt;
&lt;h3 id=&#34;113-stp避免二层交换环路&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#113-stp避免二层交换环路&#34;&gt;#&lt;/a&gt; 11.3 STP：避免二层交换环路&lt;/h3&gt;
&lt;p&gt;STP（生成树协议）通过逻辑阻塞部分冗余链路，避免二层环路及广播风暴。以太网二层广播帧不像 IPv4 包那样依靠 TTL 终止，因此交换环路需要特别处理。&lt;/p&gt;
&lt;h2 id=&#34;十二-静态路由-动态路由-ospf-与-bgp&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#十二-静态路由-动态路由-ospf-与-bgp&#34;&gt;#&lt;/a&gt; 十二、静态路由、动态路由、OSPF 与 BGP&lt;/h2&gt;
&lt;h3 id=&#34;121-路由表与路由协议&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#121-路由表与路由协议&#34;&gt;#&lt;/a&gt; 12.1 路由表与路由协议&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;路由表/转发表&lt;/strong&gt;：用于实际选择目的网络的下一跳和出接口。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路由协议&lt;/strong&gt;：帮助设备交换可达性信息、计算并维护路由。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;家庭路由器常通过默认路由将未知外部目的地的流量交给运营商，不需要持有互联网全量路由信息。&lt;/p&gt;
&lt;h3 id=&#34;122-静态路由与动态路由&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#122-静态路由与动态路由&#34;&gt;#&lt;/a&gt; 12.2 静态路由与动态路由&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项目&lt;/th&gt;
&lt;th&gt;静态路由&lt;/th&gt;
&lt;th&gt;动态路由&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;配置来源&lt;/td&gt;
&lt;td&gt;管理员手工设置&lt;/td&gt;
&lt;td&gt;协议自动学习&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;适用范围&lt;/td&gt;
&lt;td&gt;小型、稳定网络&lt;/td&gt;
&lt;td&gt;网络规模较大、拓扑变化较多&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;链路变化&lt;/td&gt;
&lt;td&gt;通常需额外处理&lt;/td&gt;
&lt;td&gt;协议可重新收敛&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开销&lt;/td&gt;
&lt;td&gt;通常较低&lt;/td&gt;
&lt;td&gt;需要交换控制信息与计算&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;123-ospf自治系统内部的链路状态路由&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#123-ospf自治系统内部的链路状态路由&#34;&gt;#&lt;/a&gt; 12.3 OSPF：自治系统内部的链路状态路由&lt;/h3&gt;
&lt;p&gt;OSPF 通过 Hello 维护邻居关系、交换 LSA 链路状态通告、维护 LSDB，并通过 SPF（最短路径优先）算法根据 Cost 计算路径。这里“最短”是&lt;strong&gt;协议度量开销较小&lt;/strong&gt;，不一定表示地理距离短。&lt;/p&gt;
&lt;p&gt;OSPF 直接封装在 IP 中，协议号为 &lt;code&gt;89&lt;/code&gt;，不通过 TCP/UDP 端口。&lt;/p&gt;
&lt;h3 id=&#34;124-bgp自治系统之间的路由策略&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#124-bgp自治系统之间的路由策略&#34;&gt;#&lt;/a&gt; 12.4 BGP：自治系统之间的路由策略&lt;/h3&gt;
&lt;p&gt;BGP 是路径向量路由协议，广泛用于自治系统（AS）之间交换网络前缀可达性信息，也存在 iBGP 在 AS 内传播 BGP 路由的场景。&lt;/p&gt;
&lt;p&gt;BGP 根据本地策略及路由属性选路，&lt;code&gt;AS_PATH&lt;/code&gt; 是其中一个重要属性，但&lt;strong&gt;BGP 不保证总选择 AS_PATH 最短的路线&lt;/strong&gt;。BGP 使用 TCP 端口 &lt;code&gt;179&lt;/code&gt;。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项目&lt;/th&gt;
&lt;th&gt;OSPF&lt;/th&gt;
&lt;th&gt;BGP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;典型用途&lt;/td&gt;
&lt;td&gt;AS 内部路由&lt;/td&gt;
&lt;td&gt;AS 之间路由交换与策略控制&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;协议类别&lt;/td&gt;
&lt;td&gt;链路状态&lt;/td&gt;
&lt;td&gt;路径向量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;主要依据&lt;/td&gt;
&lt;td&gt;链路状态、Cost&lt;/td&gt;
&lt;td&gt;策略和路由属性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;传输&lt;/td&gt;
&lt;td&gt;IP 协议号 89&lt;/td&gt;
&lt;td&gt;TCP 179&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;十三-一次-https-访问如何串起全部知识&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#十三-一次-https-访问如何串起全部知识&#34;&gt;#&lt;/a&gt; 十三、一次 HTTPS 访问如何串起全部知识&lt;/h2&gt;
&lt;p&gt;假设电脑已经通过 DHCP 得到：&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;IPv4：192.168.1.10/24&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;默认网关：192.168.1.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问 &lt;code&gt;https://www.example.com&lt;/code&gt; 时，可以从逻辑上理解为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;DNS&lt;/strong&gt; 查询域名对应的 IP（或命中缓存）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路由表&lt;/strong&gt; 选择目标 IP 的下一跳，通常是默认网关。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ARP&lt;/strong&gt; 取得本地下一跳 MAC（如果缓存中没有）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCP&lt;/strong&gt; 建立连接（这里以基于 TCP 的 HTTPS 为例）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TLS&lt;/strong&gt; 进行密钥协商和服务器身份验证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP&lt;/strong&gt; 生成请求，经 TLS、TCP、IP、链路层逐层封装后发送。&lt;/li&gt;
&lt;li&gt;家庭路由器转发并可能执行 &lt;strong&gt;NAT/PAT&lt;/strong&gt;；互联网中的路由器继续按目的 IP 转发。&lt;/li&gt;
&lt;li&gt;服务器处理请求并返回响应；客户端逐层解封装、解密并显示网页。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这不是严格单线发生的时间顺序：&lt;strong&gt;DNS 请求、TCP 握手、TLS 握手本身也都要依靠 IP 和链路层传输，NAT 发生于相应的数据包经过网关时&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;十四-windows-网络命令备忘&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#十四-windows-网络命令备忘&#34;&gt;#&lt;/a&gt; 十四、Windows 网络命令备忘&lt;/h2&gt;
&lt;p&gt;以下命令仅为学习和排查用例，&lt;strong&gt;不是本次学习中提供的实际运行记录&lt;/strong&gt;。其中示例网关应按实际网络配置修改。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;命令：查看本机配置及缓存&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;ipconfig &lt;/span&gt;&lt;span style=&#34;color:#999999;--shiki-dark:#666666&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;arp &lt;/span&gt;&lt;span style=&#34;color:#999999;--shiki-dark:#666666&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;a&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;route print &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;-4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;getmac &lt;/span&gt;&lt;span style=&#34;color:#999999;--shiki-dark:#666666&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;v&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;命令：测试连通性与路由路径&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;ping &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;127.0&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;0.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;ping &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;1.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;ping &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;tracert &lt;/span&gt;&lt;span style=&#34;color:#999999;--shiki-dark:#666666&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;d &lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;命令：查看 DNS 与连接&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;nslookup &lt;/span&gt;&lt;span style=&#34;color:#998418;--shiki-dark:#B8A965&#34;&gt;www.baidu.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;nslookup &lt;/span&gt;&lt;span style=&#34;color:#998418;--shiki-dark:#B8A965&#34;&gt;www.baidu.com&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt; 8.8&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#2F798A;--shiki-dark:#4C9A91&#34;&gt;8.8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;netstat &lt;/span&gt;&lt;span style=&#34;color:#999999;--shiki-dark:#666666&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#393A34;--shiki-dark:#DBD7CAEE&#34;&gt;ano&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;排查时可以从本机配置、到网关、到外部 IP、DNS、TCP/HTTPS 应用逐步定位。需要注意：ping 被拦截、tracert 不回复中间节点，都不等于实际数据业务一定中断。&lt;/p&gt;
&lt;h2 id=&#34;十五-易混点速查&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#十五-易混点速查&#34;&gt;#&lt;/a&gt; 十五、易混点速查&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;易混之处&lt;/th&gt;
&lt;th&gt;正确记法&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;同一个局域网 = 互联网&lt;/td&gt;
&lt;td&gt;错，LAN 内通信可以独立于互联网&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAC 地址 16 位&lt;/td&gt;
&lt;td&gt;错，常见以太网 MAC 是 48 位&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;修改 MAC = 换了一块网卡&lt;/td&gt;
&lt;td&gt;错，软件修改不改变网卡硬件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DHCP 重新连接一定分配原 IP&lt;/td&gt;
&lt;td&gt;错，取决于租约和服务器策略&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;同一子网 IP 就一定能通信&lt;/td&gt;
&lt;td&gt;不一定，还要有二层连通性与允许的访问策略&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARP 可以查询远端公网服务器 MAC&lt;/td&gt;
&lt;td&gt;通常不会，先查询本地下一跳 MAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UDP 无连接 = 不需要端口&lt;/td&gt;
&lt;td&gt;错，UDP 同样使用端口号&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAC 表 = ARP 表 = 路由表&lt;/td&gt;
&lt;td&gt;三者分别解决端口、地址映射、路由下一跳&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ping 通 8.8.8.8 = DNS 正常&lt;/td&gt;
&lt;td&gt;错，ping 主要测试 ICMP 连通性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TCP 流量控制 = 拥塞控制&lt;/td&gt;
&lt;td&gt;前者关注接收方，后者关注网络&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTPS = 网站一定安全&lt;/td&gt;
&lt;td&gt;错，TLS 保护通信并验证连接身份，不保证内容可信&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VLAN = 子网&lt;/td&gt;
&lt;td&gt;错，VLAN 在二层，IP 子网在三层&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BGP 总选最短 AS_PATH&lt;/td&gt;
&lt;td&gt;错，选路受策略和多种路由属性影响&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;十六-总结与后续练习&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#十六-总结与后续练习&#34;&gt;#&lt;/a&gt; 十六、总结与后续练习&lt;/h2&gt;
&lt;p&gt;目前已经建立起一条比较完整的理解链条：&lt;strong&gt;DHCP 提供网络配置 → DNS 解析域名 → 路由表决定下一跳 → ARP 获得链路层地址 → 交换机按 MAC 转发 → IP 跨网转发 → TCP/UDP 提供进程间传输 → HTTP/HTTPS 等应用协议交换数据&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;本文以概念学习和命令示例为主，尚未提供 Wireshark 抓包、路由器配置截图或真实故障排查结果，不能把上述示例当成实测结论。适合下一阶段动手验证的内容有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用 Wireshark 观察 ARP 请求应答、DNS 解析、TCP 三次握手。&lt;/li&gt;
&lt;li&gt;对照 &lt;code&gt;arp -a&lt;/code&gt;、&lt;code&gt;route print -4&lt;/code&gt; 和 &lt;code&gt;ipconfig /all&lt;/code&gt;，解释一条实际上网连接的下一跳。&lt;/li&gt;
&lt;li&gt;在可控实验网络中配置两个 VLAN，观察跨 VLAN 通信与三层路由。&lt;/li&gt;
&lt;li&gt;阅读一次 &lt;code&gt;tracert&lt;/code&gt; 输出，区分“节点不回复 ICMP”和“路由转发真的失败”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;最终记忆：MAC 解决当前链路的交付，IP 解决跨网络的寻址与转发，TCP/UDP 解决应用进程间的数据传输；其余协议和机制围绕地址分配、解析、安全、管理及路径维护相互配合。&lt;/strong&gt;&lt;/p&gt;
 ]]></description>
        </item>
        <item>
            <guid isPermalink="true">https://yyboom.me/2026/11/10/servlet-notes/</guid>
            <title>Servlet 学习笔记</title>
            <link>https://yyboom.me/2026/11/10/servlet-notes/</link>
            <category>Java</category>
            <category>Servlet</category>
            <pubDate>Wed, 11 Nov 2026 00:00:00 +0800</pubDate>
            <description><![CDATA[ &lt;h2 id=&#34;servletserver-applet&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#servletserver-applet&#34;&gt;#&lt;/a&gt; Servlet（Server Applet）：&lt;/h2&gt;
&lt;p&gt;java编写的服务端程序，主要功能用于交互式浏览和修改数据。狭义的Servlet是指Java语言实现的一个接口，广义的Servlet是指任何实现了这个Servlet接口的类，一般情况下，人们将Servlet理解为后者。Servlet可以响应任何类型的请求,但是大多数情况只用于扩展基于Http协议的服务器。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;目前的Servlet已经内嵌在tomocat中&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;servlet-工作模式&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#servlet-工作模式&#34;&gt;#&lt;/a&gt; Servlet 工作模式：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;客户端发送请求至服务器&lt;/li&gt;
&lt;li&gt;服务器启动并调用Servlet,Servlet根据客户请求生成响应内容传回服务器&lt;/li&gt;
&lt;li&gt;服务器将响应返回给客户端&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;servlet-api&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#servlet-api&#34;&gt;#&lt;/a&gt; Servlet Api：&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;Servlet API 包含以下4个Java包：
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;javax.servlet   其中包含定义servlet和servlet容器之间契约的类和接口。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;javax.servlet.http   其中包含定义HTTP Servlet 和Servlet容器之间的关系。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;javax.servlet.annotation   其中包含标注servlet，Filter,Listener的标注。它还为被标注元件定义元数据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;javax.servlet.descriptor，其中包含提供程序化登录Web应用程序的配置信息的类型。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;servlet-工作原理&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#servlet-工作原理&#34;&gt;#&lt;/a&gt; Servlet 工作原理：&lt;/h2&gt;
&lt;p&gt;Servlet接口定义了Servlet与servlet容器之间的契约。这个契约是：Servlet容器将Servlet类载入内存，并产生Servlet实例和调用它具体的方法。但是要注意的是，在一个应用程序中，每种Servlet类型只能有一个实例。&lt;/p&gt;
&lt;p&gt;用户请求致使Servlet容器调用Servlet的Service（）方法，并传入一个ServletRequest对象和一个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器（例如TomCat）封装好的，并不需要程序员去实现，程序员可以直接使用这两个对象。&lt;/p&gt;
&lt;p&gt;ServletRequest中封装了当前的Http请求，因此，开发人员不必解析和操作原始的Http数据。ServletResponse表示当前用户的Http响应，程序员只需直接操作ServletResponse对象就能把响应轻松的发回给用户。&lt;/p&gt;
&lt;p&gt;对于每一个应用程序，&lt;strong&gt;Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文（应用程序）的环境详情。每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。&lt;/strong&gt;&lt;/p&gt;
 ]]></description>
        </item>
        <item>
            <guid isPermalink="true">https://yyboom.me/2026/03/31/JWT%E4%BB%A4%E7%89%8C/</guid>
            <title>JWT令牌</title>
            <link>https://yyboom.me/2026/03/31/JWT%E4%BB%A4%E7%89%8C/</link>
            <category>JWT</category>
            <category>身份验证</category>
            <pubDate>Tue, 31 Mar 2026 18:21:58 +0800</pubDate>
            <description><![CDATA[ &lt;h1 id=&#34;jwt令牌&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#jwt令牌&#34;&gt;#&lt;/a&gt; JWT令牌&lt;/h1&gt;
&lt;h2 id=&#34;1简述&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#1简述&#34;&gt;#&lt;/a&gt; 1.简述&lt;/h2&gt;
&lt;p&gt;JWT全称为JSON Web Token，是一种用于身份验证的开放标准。它是一个基于JSON格式的安全令牌，主要用于在网络上传输声明或者用户身份信息。JWT通常被用作API的认证方式，以及跨域身份验证。&lt;/p&gt;
&lt;p&gt;JWT令牌由三部分组成，分别是头部（Header）、载荷（Payload）和签名（Signature）。头部包含了令牌使用的加密算法信息，载荷包含了所需传输的用户信息，签名用于保证令牌的完整性和真实性，防止令牌被篡改。&lt;/p&gt;
&lt;h2 id=&#34;2jwt特点&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#2jwt特点&#34;&gt;#&lt;/a&gt; 2.JWT特点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;可以跨语言、跨平台使用，因为它是基于JSON标准的。&lt;/li&gt;
&lt;li&gt;可以直接嵌入到HTTP请求头中，方便传输和验证。&lt;/li&gt;
&lt;li&gt;令牌的有效期可以通过设置过期时间来进行控制，提高了安全性。&lt;/li&gt;
&lt;li&gt;由于令牌中包含了用户信息，因此可以避免频繁查询数据库的情况出现，提高了系统的性能。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3使用流程&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#3使用流程&#34;&gt;#&lt;/a&gt; 3.使用流程&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;用户认证请求&lt;br /&gt;
客户端（如浏览器、App）向服务器发送认证请求，通常是提交用户名和密码等凭证。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务器验证与生成Token&lt;br /&gt;
服务器收到请求后，验证凭证是否正确。若验证通过，服务器会生成一个JWT Token，该Token包含用户身份信息（如用户ID、角色等）的JSON数据，并使用密钥进行签名（确保Token的完整性和真实性）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务器返回Token给客户端&lt;br /&gt;
服务器将生成的JWT Token返回给客户端，通常是通过HTTP响应的头部（如Authorization字段）或响应体返回。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;客户端存储Token&lt;br /&gt;
客户端收到Token后，将其存储在本地，常见的存储方式有浏览器的本地存储（localStorage/sessionStorage）或移动端的本地数据库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;客户端携带Token发送请求&lt;br /&gt;
后续客户端在访问需要认证的资源时，会在HTTP请求的头部（如Authorization字段）中携带JWT Token。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务器验证Token&lt;br /&gt;
服务器收到请求后，会检查请求头中的Token。首先验证Token的签名是否有效（确保Token未被篡改），然后解析Token中的信息，确认用户身份和权限。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务器处理请求并返回响应&lt;br /&gt;
若Token验证通过，服务器会根据请求处理业务逻辑，并返回相应的结果给客户端；若验证失败，服务器会返回错误信息（如401 Unauthorized）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;**总结：**简单来说，JWT的使用流程就是客户端通过认证获取Token，然后在后续请求中携带Token，服务器通过验证Token来确认用户身份和权限，从而实现身份认证和授权的功能。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;首次访问通过认证获取Token，后续用Token替代重复认证，既保证安全又提升效率。同一个用户端首次通过登录注册拿到token后，后续访问只需在请求头带上token，服务器验证通过就能正常访问资源，无需重复登录。&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;text-emphasis&#34;&gt;JWT Token存储在HTTP的泄露风险&lt;/span&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;网络传输风险&lt;br /&gt;
中间人攻击：Token在HTTP请求头中以明文（或Base64编码）传输，若网络环境不安全（如公共WiFi），攻击者可通过抓包工具获取Token，进而利用其伪造身份访问资源。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;存储安全问题&lt;br /&gt;
本地存储漏洞：客户端将Token存储在localStorage/sessionStorage或本地数据库，若设备被恶意软件感染，Token可能被窃取，导致账户被盗用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务器端隐患&lt;br /&gt;
日志泄露：服务器日志若记录了完整请求信息，Token会被存储在日志中，若日志管理不善，可能被内部人员或攻击者获取。&lt;br /&gt;
风险规避建议&lt;br /&gt;
使用&amp;lt;u&amp;gt;&lt;strong&gt;HTTPS&lt;/strong&gt;&amp;lt;/u&amp;gt;：强制所有请求通过HTTPS传输，利用SSL/TLS加密协议保护Token安全。&lt;br /&gt;
短期Token有效期：设置Token的过期时间（如1小时），到期后需重新认证，降低Token被盗用的风险。&lt;br /&gt;
存储优化：移动端可使用更安全的存储方式（如iOS的Keychain、Android的Keystore），浏览器端避免将敏感信息存入localStorage。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注解：&amp;lt;u&amp;gt;&lt;strong&gt;HTTPS&lt;/strong&gt;&amp;lt;/u&amp;gt;通过SSL/TLS加密协议保护Token的核心原理是加密传输和身份验证，具体如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;建立安全连接&lt;br /&gt;
握手阶段：客户端与服务器通过SSL/TLS协议进行“握手”，协商加密算法（如AES、RSA）和会话密钥。此过程中，服务器会发送证书（含公钥），客户端验证证书有效性，确保连接到合法服务器。&lt;/li&gt;
&lt;li&gt;加密Token传输&lt;br /&gt;
对称加密：握手完成后，双方使用协商好的会话密钥对HTTP请求/响应进行加密。Token作为请求头的一部分（如Authorization字段），会被加密后传输，即使数据被拦截，攻击者也无法获取Token明文。&lt;/li&gt;
&lt;li&gt;身份验证与完整性保护&lt;br /&gt;
数字签名：服务器证书包含数字签名，客户端可通过CA机构验证其真实性，防止中间人伪造服务器身份窃取Token。同时，TLS协议通过哈希算法（如SHA-256）确保数据完整性，若Token在传输中被篡改，客户端可检测到并拒绝接收。&lt;/li&gt;
&lt;li&gt;会话管理&lt;br /&gt;
SSL/TLS会话机制：通过会话ID和加密上下文，确保Token仅在安全会话中有效。一旦会话结束，Token的传输安全性将依赖于客户端的存储保护，因此建议结合短期Token有效期和安全存储方式（如Keychain、Keystore）进一步增强安全性。&lt;br /&gt;
简单来说，SSL/TLS为Token传输构建了“加密隧道”，从传输安全、身份验证到数据完整性全方位保护，降低Token泄露风险。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
 ]]></description>
        </item>
        <item>
            <guid isPermalink="true">https://yyboom.me/2026/03/31/MongoDB/</guid>
            <title>MongoDB</title>
            <link>https://yyboom.me/2026/03/31/MongoDB/</link>
            <category>MongoDB</category>
            <category>NoSQL</category>
            <pubDate>Tue, 31 Mar 2026 18:21:58 +0800</pubDate>
            <description><![CDATA[ &lt;h1 id=&#34;mongodb&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#mongodb&#34;&gt;#&lt;/a&gt; MongoDB&lt;/h1&gt;
&lt;h2 id=&#34;1简介&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#1简介&#34;&gt;#&lt;/a&gt; 1.简介&lt;/h2&gt;
&lt;p&gt;MongoDB是一种高性能、开源的，面向文档的NoSQL数据库，使用&lt;span class=&#34;text-emphasis&#34;&gt;JSON风格&lt;/span&gt;的文档存储数据。以其灵活的数据模型和强大的扩展性而闻名。与传统的关系型数据库（如MySQL）不同，MongoDB使用文档存储数据，更适合处理&lt;span class=&#34;text-emphasis&#34;&gt;非结构化或半结构化&lt;/span&gt;的数据。它支持动态模式，允许不同文档具有不同的字段结构。MongoDB的设计目标是提供高性能、高可用性和易于扩展的数据库解决方案。&lt;/p&gt;
&lt;h3 id=&#34;特点&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#特点&#34;&gt;#&lt;/a&gt; 特点：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;灵活的文档模型：数据以文档形式存储，支持嵌套结构，适合复杂数据类型。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;高性能：支持内存中的数据存储，提供高性能的读写操作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;水平扩展：通过分片（Sharding）支持水平扩展，适合大规模数据集。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;丰富的查询语言：支持复杂的查询操作，包括聚合、索引和全文搜索。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;跨平台：支持Linux、Windows和macOS等多种操作系统。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
 ]]></description>
        </item>
        <item>
            <guid isPermalink="true">https://yyboom.me/2026/03/31/Nginx/</guid>
            <title>Nginx</title>
            <link>https://yyboom.me/2026/03/31/Nginx/</link>
            <category>Nginx</category>
            <category>Web 服务器</category>
            <category>反向代理</category>
            <pubDate>Tue, 31 Mar 2026 18:21:58 +0800</pubDate>
            <description><![CDATA[ &lt;h1 id=&#34;nginx&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#nginx&#34;&gt;#&lt;/a&gt; Nginx&lt;/h1&gt;
&lt;h2 id=&#34;1介绍&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#1介绍&#34;&gt;#&lt;/a&gt; 1.介绍：&lt;/h2&gt;
&lt;p&gt;Nginx是十分轻量级的HTTP服务器。Nginx，它的发音为“engine X”，是一个&lt;strong&gt;高性能的HTTP&lt;/strong&gt;和&lt;strong&gt;反向代理服务器&lt;/strong&gt;，同时也是一个&lt;strong&gt;IMAP/POP3/SMTP 代理服务器&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web服务器&lt;/strong&gt;：它的本职工作是将你电脑上的网页文件（HTML， CSS， 图片）发送给用户的浏览器。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反向代理服务器&lt;/strong&gt;：这是它更强大、更常用的角色。它接收客户端的请求，然后代表客户端去向后端的多个服务器索取资源，最后将整合好的结果返回给客户端。客户端并不知道后端的具体情况。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;邮件代理服务器&lt;/strong&gt;：它也能处理邮件相关的协议。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;核心优势&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#核心优势&#34;&gt;#&lt;/a&gt; 核心优势：&lt;/h3&gt;
&lt;h4 id=&#34;1-高性能-高并发&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#1-高性能-高并发&#34;&gt;#&lt;/a&gt; 1. **高性能、高并发 **&lt;/h4&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;传统服务器的&amp;quot;一人一岗&amp;quot;模型&lt;/strong&gt;：像Apache的旧模式，每个用户连接都会创建一个新的操作系统进程或线程。当连接数达到几千时，服务器就会因为进程/线程的创建和切换开销而变得非常缓慢。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nginx的&amp;quot;事件驱动&amp;quot;异步模型&lt;/strong&gt;：Nginx使用一个（或少数几个）主进程来管理多个工作进程。每个工作进程都是&amp;quot;事件驱动&amp;quot;的，能够同时处理数千个连接。它不会为一个连接等待，而是当某个连接有&amp;quot;事件&amp;quot;（比如数据可读了）时才去处理它。这就像餐厅经理同时监听很多张桌子的呼叫铃，而不是一直站在一张桌子前等待。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;结果&lt;/strong&gt;：Nginx可以用很少的系统资源（CPU和内存）处理海量的并发连接。这是它能成为当今互联网顶流的核心原因。&lt;/p&gt;
&lt;h4 id=&#34;2-反向代理与负载均衡&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#2-反向代理与负载均衡&#34;&gt;#&lt;/a&gt; 2. &lt;strong&gt;反向代理与负载均衡&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;这是Nginx最常用的场景之一。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;负载均衡&lt;/strong&gt;：当你的网站流量很大时，一台服务器肯定不够。你会有多台应用服务器。Nginx可以站在它们前面，像交通警察一样，把用户的请求按照一定策略（轮询、权重、最少连接等）分发给这些服务器，防止任何一台服务器过载。&lt;/p&gt;
&lt;p&gt;nginx&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;# 示例配置：定义一个名为 &#34;myapp&#34; 的后端服务器组&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;upstream myapp {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    server 192.168.1.10:8080 weight=3; # 这台机器性能好，给它3个权重&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    server 192.168.1.11:8080;          # 这台性能一般，默认权重1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;server {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    listen 80;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    location / {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;        proxy_pass http://myapp; # 将所有请求转发给 myapp 组&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;3-静态内容服务-快如闪电&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#3-静态内容服务-快如闪电&#34;&gt;#&lt;/a&gt; 3. &lt;strong&gt;静态内容服务 - 快如闪电&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Nginx处理静态文件（图片、CSS、JavaScript、HTML）的能力极强。通常，我们会让Nginx直接处理这些请求，而将动态请求（需要程序处理的）转发给后端的应用服务器（如Tomcat, Django, Node.js）。这种&amp;quot;动静分离&amp;quot;的策略极大地提升了网站的整体性能。&lt;/p&gt;
&lt;h4 id=&#34;4-ssltls终端&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#4-ssltls终端&#34;&gt;#&lt;/a&gt; 4. &lt;strong&gt;SSL/TLS终端&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;当你的网站使用HTTPS时，需要进行加密和解密操作，这很消耗CPU。Nginx可以承担这个工作，它负责与客户端完成SSL握手和解密，然后将明文的请求转发给后端服务器。这样后端服务器就不用操心加密的事了，可以专注于业务逻辑。&lt;/p&gt;
&lt;h4 id=&#34;5-缓存&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#5-缓存&#34;&gt;#&lt;/a&gt; 5. &lt;strong&gt;缓存&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Nginx可以缓存从后端应用服务器返回的响应。如果下一个用户请求相同的资源，Nginx可以直接从缓存里返回，而不用再去麻烦后端服务器。这极大地减少了响应时间和后端压力。&lt;/p&gt;
&lt;h4 id=&#34;6-高可靠性和稳定性&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#6-高可靠性和稳定性&#34;&gt;#&lt;/a&gt; 6. &lt;strong&gt;高可靠性和稳定性&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Nginx以稳定著称，可以7x24小时不间断运行。即使后端某个应用服务器宕机了，Nginx也能检测到并将其从负载均衡组中移除，保证大部分用户不受影响。&lt;/p&gt;
&lt;h3 id=&#34;一个典型的工作流程从输入网址到看到网页&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#一个典型的工作流程从输入网址到看到网页&#34;&gt;#&lt;/a&gt; &lt;strong&gt;一个典型的工作流程（从输入网址到看到网页）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;假设你访问 &lt;code&gt;https://www.example.com/shop/product/123&lt;/code&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;你的浏览器向 &lt;code&gt;www.example.com&lt;/code&gt; 的443端口（HTTPS）发起请求。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;请求到达托管 &lt;code&gt;example.com&lt;/code&gt; 的服务器，Nginx正在监听443端口。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nginx接收到请求，首先完成SSL握手。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nginx查看请求的路径 &lt;code&gt;/shop/product/123&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据预设的规则（&lt;code&gt;location&lt;/code&gt; 指令），Nginx判断这是一个动态请求，需要由后端的Java应用处理。&lt;/p&gt;
&lt;p&gt;nginx&lt;/p&gt;
&lt;pre class=&#34;shiki shiki-themes vitesse-light vitesse-dark&#34; style=&#34;background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee&#34; tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span&gt;server {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    listen 443 ssl;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    server_name www.example.com;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    # ... SSL配置 ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    location /static/ { # 静态文件直接由Nginx处理&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;        root /var/www/html;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    location /shop/ { # 动态请求转发给后端&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;        proxy_pass http://backend_java_app;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&#34;line&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nginx将请求转发给 &lt;code&gt;backend_java_app&lt;/code&gt; 定义的一组Java应用服务器中的一台。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Java服务器处理请求，从数据库查出产品123的信息，生成HTML页面，返回给Nginx。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nginx将这个响应返回给你的浏览器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;浏览器解析HTML，发现里面还有CSS和图片链接（如 &lt;code&gt;/static/css/style.css&lt;/code&gt;），于是又向同一个Nginx发起新的请求。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这次，Nginx看到是 &lt;code&gt;/static/&lt;/code&gt; 路径，直接从服务器的硬盘上读取 &lt;code&gt;style.css&lt;/code&gt; 文件，并以极快的速度发送给浏览器。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;nginx-vs-apache另一个著名的web服务器&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#nginx-vs-apache另一个著名的web服务器&#34;&gt;#&lt;/a&gt; &lt;strong&gt;Nginx vs. Apache（另一个著名的Web服务器）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;这是一个经典的对比，能帮你更好地理解Nginx的定位：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;特性&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Nginx&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Apache&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;架构模型&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;事件驱动&lt;/strong&gt;，异步非阻塞&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;进程/线程驱动&lt;/strong&gt;（传统模式），一个连接一个进程&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;资源消耗&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;低，尤其在高并发下&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;高，并发连接数增多时资源消耗剧增&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;静态内容&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;性能极高&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;性能很好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;动态内容&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;通常需要转发给后端处理器（如PHP-FPM）&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;可以通过模块（如mod_php）在内部直接处理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;配置语法&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;简洁、直观&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;更灵活、功能强大，但也更复杂&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;主要用途&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;反向代理、负载均衡、静态服务&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;传统的全能Web服务器，特别适合共享主机&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;简单总结&lt;/strong&gt;：Nginx更擅长处理高并发连接和充当&amp;quot;交通指挥&amp;quot;，而Apache传统上更擅长在单个服务器内深度处理动态请求。现代架构中，它们常常协同工作：Nginx在前端做反向代理和静态处理，Apache在后端处理动态内容。&lt;/p&gt;
 ]]></description>
        </item>
    </channel>
</rss>
