<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>网络安全 on 云雾海的博客</title><link>https://blog.yunwuhai.com/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/</link><description>Recent content in 网络安全 on 云雾海的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 17 Nov 2025 18:31:28 +0800</lastBuildDate><atom:link href="https://blog.yunwuhai.com/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>蓝牙协议HCI抓包实验</title><link>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/</link><pubDate>Mon, 17 Nov 2025 18:31:28 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/cover.jpg" alt="Featured image of post 蓝牙协议HCI抓包实验" /&gt;&lt;h1 id="蓝牙协议hci抓包实验"&gt;&lt;a href="#%e8%93%9d%e7%89%99%e5%8d%8f%e8%ae%aehci%e6%8a%93%e5%8c%85%e5%ae%9e%e9%aa%8c" class="header-anchor"&gt;&lt;/a&gt;蓝牙协议HCI抓包实验&#10;&lt;/h1&gt;&lt;h2 id="实验准备"&gt;&lt;a href="#%e5%ae%9e%e9%aa%8c%e5%87%86%e5%a4%87" class="header-anchor"&gt;&lt;/a&gt;实验准备&#10;&lt;/h2&gt;&lt;h3 id="实验硬件"&gt;&lt;a href="#%e5%ae%9e%e9%aa%8c%e7%a1%ac%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;实验硬件&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;一台电脑&lt;/li&gt;&#10;&lt;li&gt;一台安卓手机（以VIVO手机为例）&lt;/li&gt;&#10;&lt;li&gt;一个蓝牙设备（以小米手环为例）&lt;/li&gt;&#10;&lt;li&gt;一根手机数据线&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="实验软件"&gt;&lt;a href="#%e5%ae%9e%e9%aa%8c%e8%bd%af%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;实验软件&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn" target="_blank" rel="noopener"&#10; &gt;安卓调试桥（ADB工具）&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="实验步骤"&gt;&lt;a href="#%e5%ae%9e%e9%aa%8c%e6%ad%a5%e9%aa%a4" class="header-anchor"&gt;&lt;/a&gt;实验步骤&#10;&lt;/h2&gt;&lt;h3 id="软件安装"&gt;&lt;a href="#%e8%bd%af%e4%bb%b6%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;软件安装&#10;&lt;/h3&gt;&lt;h4 id="下载adb工具"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bdadb%e5%b7%a5%e5%85%b7" class="header-anchor"&gt;&lt;/a&gt;下载ADB工具&#10;&lt;/h4&gt;&lt;p&gt;访问链接后，根据电脑平台选择软件包&lt;img alt="image-20251117183731056" class="gallery-image" data-flex-basis="542px" data-flex-grow="226" height="619" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117183731056.webp" width="1400"&gt;&lt;/p&gt;&#10;&lt;h4 id="解压文件"&gt;&lt;a href="#%e8%a7%a3%e5%8e%8b%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;解压文件&#10;&lt;/h4&gt;&lt;p&gt;下载得到一个压缩包，将其解压缩到一个文件夹中，并打开该文件夹&lt;/p&gt;&#10;&lt;img alt="image-20251117184035148" class="gallery-image" data-flex-basis="3094px" data-flex-grow="1289" height="38" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117184035148.webp" width="490"&gt;&lt;img alt="image-20251117184350656" class="gallery-image" data-flex-basis="336px" data-flex-grow="140" height="999" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117184350656.webp" width="1400"&gt;&lt;h4 id="检查下载"&gt;&lt;a href="#%e6%a3%80%e6%9f%a5%e4%b8%8b%e8%bd%bd" class="header-anchor"&gt;&lt;/a&gt;检查下载&#10;&lt;/h4&gt;&lt;p&gt;在该目录下右键选择在终端中打开，或可以先行打开终端然后跳转到该目录。&lt;/p&gt;&#10;&lt;img alt="image-20251117184436327" class="gallery-image" data-flex-basis="2629px" data-flex-grow="1095" height="47" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117184436327.webp" width="515"&gt;&lt;p&gt;输入&lt;code&gt;.\adb.exe --version&lt;/code&gt;来检查是否可用，如果正常，应该会显示版本号。&lt;/p&gt;&#10;&lt;img alt="image-20251117185501167" class="gallery-image" data-flex-basis="1207px" data-flex-grow="502" height="203" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117185501167.webp" width="1021"&gt;&lt;h3 id="手机设置"&gt;&lt;a href="#%e6%89%8b%e6%9c%ba%e8%ae%be%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;手机设置&#10;&lt;/h3&gt;&lt;h4 id="打开开发者模式"&gt;&lt;a href="#%e6%89%93%e5%bc%80%e5%bc%80%e5%8f%91%e8%80%85%e6%a8%a1%e5%bc%8f" class="header-anchor"&gt;&lt;/a&gt;打开开发者模式&#10;&lt;/h4&gt;&lt;p&gt;现在的安卓手机，开发者选项是隐藏的，需要手动打开开发者模式才能看到。&lt;/p&gt;&#10;&lt;p&gt;根据不同手机，可能有不同打开开发者模式的方法，vivo手机的方式是进入&lt;code&gt;设置-关于手机-版本信息&lt;/code&gt;，连续点击软件版本号，即可开启开发者模式。大部分手机应该也是类似的方式，如果该操作不行，请自行搜索自己手机的开启方式。&lt;/p&gt;&#10;&lt;img alt="ab4198ebaed6d20d10ee83711c66b7da" class="gallery-image" data-flex-basis="108px" data-flex-grow="45" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/ab4198ebaed6d20d10ee83711c66b7da.webp" width="630"&gt;&lt;h4 id="开启日志功能"&gt;&lt;a href="#%e5%bc%80%e5%90%af%e6%97%a5%e5%bf%97%e5%8a%9f%e8%83%bd" class="header-anchor"&gt;&lt;/a&gt;开启日志功能&#10;&lt;/h4&gt;&lt;p&gt;进入设置中，选择开发者选项，并将&lt;code&gt;启用蓝牙HCI信息收集日志&lt;/code&gt;选项设置为启用。&lt;strong&gt;注意：如果此时蓝牙已经启动，应该将其关闭后重启，然后蓝牙日志就将开始记录。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;img alt="85ecdf4b9a96df9ffb096d142be7bf55" class="gallery-image" data-flex-basis="108px" data-flex-grow="45" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/85ecdf4b9a96df9ffb096d142be7bf55.webp" width="630"&gt;&lt;h4 id="开启usb调试功能"&gt;&lt;a href="#%e5%bc%80%e5%90%afusb%e8%b0%83%e8%af%95%e5%8a%9f%e8%83%bd" class="header-anchor"&gt;&lt;/a&gt;开启USB调试功能&#10;&lt;/h4&gt;&lt;p&gt;为了电脑能够读取日志，需要开启USB调试功能。&lt;/p&gt;&#10;&lt;img alt="0d63412e35d35021c1d5172f4b2785e2" class="gallery-image" data-flex-basis="108px" data-flex-grow="45" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/0d63412e35d35021c1d5172f4b2785e2.webp" width="630"&gt;&lt;h4 id="完成一次数据传输"&gt;&lt;a href="#%e5%ae%8c%e6%88%90%e4%b8%80%e6%ac%a1%e6%95%b0%e6%8d%ae%e4%bc%a0%e8%be%93" class="header-anchor"&gt;&lt;/a&gt;完成一次数据传输&#10;&lt;/h4&gt;&lt;p&gt;正常情况下，手环只要是用过的，在手机蓝牙开启后都会自动连接到手机上，不过为了测试，我们可以手动打开手环软件，比如小米的运动健康，然后刷新手环数据。此时理论上我们的手机和手环会进行如下通信：手机告知手环自己需要的数据，手环将数据传输给手机，当然它们可能还会参杂一些其他相关的认证消息，但是总体内容应该差不多就是这些。&lt;/p&gt;&#10;&lt;img alt="10bedddd5a0ce8cfad0be2d2b47de836" class="gallery-image" data-flex-basis="108px" data-flex-grow="45" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/10bedddd5a0ce8cfad0be2d2b47de836.webp" width="630"&gt;&lt;p&gt;在完成了这个操作后，为了数据干净，就可以选择关闭蓝牙了，我们的通信日志已经被记录下来了。&lt;/p&gt;&#10;&lt;h3 id="开始调试"&gt;&lt;a href="#%e5%bc%80%e5%a7%8b%e8%b0%83%e8%af%95" class="header-anchor"&gt;&lt;/a&gt;开始调试&#10;&lt;/h3&gt;&lt;h4 id="连接电脑"&gt;&lt;a href="#%e8%bf%9e%e6%8e%a5%e7%94%b5%e8%84%91" class="header-anchor"&gt;&lt;/a&gt;连接电脑&#10;&lt;/h4&gt;&lt;p&gt;我们现在需要的工作就是将通信日志保存到电脑中，此时就需要用到我们的ADB调试工具了。首先将手机通过数据线连接电脑。&lt;/p&gt;&#10;&lt;p&gt;因为开启了USB调试模式，此时会弹窗问是否允许该电脑进行调试，选择允许即可。&lt;/p&gt;&#10;&lt;img alt="ce5bee27055c32a4712b02fccfca0d6f" class="gallery-image" data-flex-basis="229px" data-flex-grow="95" height="1056" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/ce5bee27055c32a4712b02fccfca0d6f.webp" width="1008"&gt;&lt;p&gt;然后选择传输模式为管理文件。&lt;/p&gt;&#10;&lt;img alt="9adc00c77d4d63f6da7ad58484c76d77" class="gallery-image" data-flex-basis="185px" data-flex-grow="77" height="1279" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/9adc00c77d4d63f6da7ad58484c76d77.webp" width="986"&gt;&lt;p&gt;此时，我们的电脑已经可以对其进行调试了。&lt;/p&gt;&#10;&lt;h4 id="adb读取报告"&gt;&lt;a href="#adb%e8%af%bb%e5%8f%96%e6%8a%a5%e5%91%8a" class="header-anchor"&gt;&lt;/a&gt;ADB读取报告&#10;&lt;/h4&gt;&lt;p&gt;通过&lt;code&gt;.\adb.exe bugreport&lt;/code&gt;然后加压缩包文件名的方式，可以将日志下载到一个压缩包中，该过程需要一两分钟。&lt;/p&gt;&#10;&lt;img alt="image-20251117192226872" class="gallery-image" data-flex-basis="5014px" data-flex-grow="2089" height="67" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117192226872.webp" width="1400"&gt;&lt;p&gt;下载完成后就可以解压缩该压缩包，然后通过访问这个路径，可以找到蓝牙日志。如果是其他手机，不确定是不是一样的，但是可以通过搜索&lt;code&gt;hci&lt;/code&gt;和&lt;code&gt;log&lt;/code&gt;两个关键字来查找。&lt;/p&gt;&#10;&lt;img alt="image-20251117192405842" class="gallery-image" data-flex-basis="3333px" data-flex-grow="1389" height="91" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117192405842.webp" width="1264"&gt;&lt;img alt="image-20251117192505861" class="gallery-image" data-flex-basis="1012px" data-flex-grow="421" height="332" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117192505861.webp" width="1400"&gt;&lt;p&gt;其中&lt;code&gt;btsnoop_hci.log.last&lt;/code&gt;就是我们的目标文件了，当然根据实际情况可能没有&lt;code&gt;.last&lt;/code&gt;文件，此时只有&lt;code&gt;.log&lt;/code&gt;文件大概率也是对的。&lt;/p&gt;&#10;&lt;h3 id="查看抓包内容"&gt;&lt;a href="#%e6%9f%a5%e7%9c%8b%e6%8a%93%e5%8c%85%e5%86%85%e5%ae%b9" class="header-anchor"&gt;&lt;/a&gt;查看抓包内容&#10;&lt;/h3&gt;&lt;h4 id="找到连接"&gt;&lt;a href="#%e6%89%be%e5%88%b0%e8%bf%9e%e6%8e%a5" class="header-anchor"&gt;&lt;/a&gt;找到连接&#10;&lt;/h4&gt;&lt;p&gt;打开WireShark，将&lt;code&gt;btsnoop_hci.log.last&lt;/code&gt;拖拽进去打开。&lt;/p&gt;&#10;&lt;img alt="image-20251117192819626" class="gallery-image" data-flex-basis="621px" data-flex-grow="258" height="541" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117192819626.webp" width="1400"&gt;&lt;p&gt;现在我们关注&lt;code&gt;Source&lt;/code&gt;和&lt;code&gt;Destination&lt;/code&gt;，只要其中出现了我们的设备名，就说明抓包成功了。&lt;/p&gt;&#10;&lt;img alt="image-20251117193059622" class="gallery-image" data-flex-basis="9882px" data-flex-grow="4117" height="34" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117193059622.webp" width="1400"&gt;&lt;p&gt;可以发现，我们的手机先给手环发送了一个L2CAP发送包，然后手环回了一个L2CAP的接收包。我们知道L2CAP是用于蓝牙协议中建立连接的，故此可以知道我们的通信成功了。&lt;/p&gt;&#10;&lt;h4 id="观察数据"&gt;&lt;a href="#%e8%a7%82%e5%af%9f%e6%95%b0%e6%8d%ae" class="header-anchor"&gt;&lt;/a&gt;观察数据&#10;&lt;/h4&gt;&lt;p&gt;我们继续往下观察，可以发现RFCOMM协议的几个包，我们知道RFCOMM协议是用于构建虚拟串口的，显然这里是在构建通信连接。&lt;/p&gt;&#10;&lt;img alt="image-20251117200144842" class="gallery-image" data-flex-basis="2024px" data-flex-grow="843" height="166" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117200144842.webp" width="1400"&gt;&lt;p&gt;而后我们继续观察，可以发现过了一段时间后，突然出现了大量的SPP包，我们知道这个包适用于规范RFCOMM传输内容的，而且通过数据包长度也可以知晓，这显然就是在传输我们的手环数据给手机。&lt;/p&gt;&#10;&lt;img alt="image-20251117200315178" class="gallery-image" data-flex-basis="2947px" data-flex-grow="1228" height="114" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117200315178.webp" width="1400"&gt;&lt;p&gt;让我们点开其中的一个看一下里面的数据：&lt;/p&gt;&#10;&lt;img alt="image-20251117200450721" class="gallery-image" data-flex-basis="594px" data-flex-grow="247" height="565" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AEhci%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251117200450721.webp" width="1400"&gt;&lt;p&gt;这部分数据是data部分的内容，而具体内容则是非常杂乱的，我们在此可以猜测这个数据大概率是加密的数据，需要在手机软件中才会解密，防止被中间截获。&lt;/p&gt;&#10;</description></item><item><title>WireShark抓包实验</title><link>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/</link><pubDate>Wed, 15 Oct 2025 22:49:58 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/cover.jpg" alt="Featured image of post WireShark抓包实验" /&gt;&lt;h1 id="wireshark抓包实验"&gt;&lt;a href="#wireshark%e6%8a%93%e5%8c%85%e5%ae%9e%e9%aa%8c" class="header-anchor"&gt;&lt;/a&gt;WireShark抓包实验&#10;&lt;/h1&gt;&lt;h2 id="目标"&gt;&lt;a href="#%e7%9b%ae%e6%a0%87" class="header-anchor"&gt;&lt;/a&gt;目标&#10;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;掌握TCP/IP网络体系结构的网络接口层、网络层、传输层和应用层典型协议（Ethernet II、IP、TCP、ICMP、HTTP）的分析。&lt;/li&gt;&#10;&lt;li&gt;分析常用即时通讯软件的通信过程。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="实验内容"&gt;&lt;a href="#%e5%ae%9e%e9%aa%8c%e5%86%85%e5%ae%b9" class="header-anchor"&gt;&lt;/a&gt;实验内容&#10;&lt;/h2&gt;&lt;h3 id="抓包ping"&gt;&lt;a href="#%e6%8a%93%e5%8c%85ping" class="header-anchor"&gt;&lt;/a&gt;抓包PING&#10;&lt;/h3&gt;&lt;p&gt;Ping命令是一种常用的网络诊断工具，用于测试两台计算机之间的连通性。本次实验中我们通过Ping命令访问百度的网址，并对整个过程进行抓包分析。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;我们打开WireShark然后进入抓包界面，并开始抓包。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;我们打开命令行，然后输入指令&lt;code&gt;ping www.baidu.com&lt;/code&gt;。&lt;/p&gt;&#10;&lt;img alt="image-20251012211651131" class="gallery-image" data-flex-basis="645px" data-flex-grow="268" height="452" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251012211651131.webp" width="1215"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="分析dns"&gt;&lt;a href="#%e5%88%86%e6%9e%90dns" class="header-anchor"&gt;&lt;/a&gt;分析DNS&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DNS查询报文：因为我们不知道百度的IP地址，所以我们使用域名进行访问，而这个过程中，Ping会向DNS服务器寻求百度的IP地址，然后DNS服务器会返回它的IP地址。我们可以在WireShark中可以发现这两个包。&lt;/p&gt;&#10;&lt;img alt="image-20251012215157514" class="gallery-image" data-flex-basis="9600px" data-flex-grow="4000" height="35" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251012215157514.webp" width="1400"&gt;&lt;p&gt;首先让我们分析一下请求包，首先我们可以从统计表中得知数据是从&lt;code&gt;172.20.*.*&lt;/code&gt;这个网址发出去的，这个就是我们的IP地址，根据网段不难得知这是一个私网网址。根据&lt;code&gt;Protocol&lt;/code&gt;可以得知这是一个DNS包，而通过&lt;code&gt;Info&lt;/code&gt;可以得知本次&lt;code&gt;DNS&lt;/code&gt;查询是一次标准查询，通讯ID号是&lt;code&gt;0x1c2d&lt;/code&gt;，而其中的&lt;code&gt;A&lt;/code&gt;表示查询记录类型是IPv4地址（因为我这里的网络没有通IPv6，如果是IPv6，则应该为&lt;code&gt;AAAA&lt;/code&gt;)，而后面跟的就是我们想要查询IP的网址&lt;code&gt;www.baidu.com&lt;/code&gt;。让我们看看报文内容。&lt;/p&gt;&#10;&lt;p&gt;首先让我们看看&lt;code&gt;Ethernet II&lt;/code&gt;，即以太网帧（其中不重要的内容还有隐私内容已被我打码，下同）：&lt;/p&gt;&#10;&lt;img alt="image-20251012220735873" class="gallery-image" data-flex-basis="1639px" data-flex-grow="682" height="205" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251012220735873.webp" width="1400"&gt;&lt;p&gt;我们可以在其中找到我们的以太网帧的帧头，这其中包含了目标MAC地址和源MAC地址，以及帧里面的数据包类型。在WireShark中，我们可以看到右边是实际发送的数据，左边是其解析的含义。&lt;/p&gt;&#10;&lt;p&gt;接着我们观察IPv4报头，这是属于网络层的内容：&lt;/p&gt;&#10;&lt;img alt="image-20251013105029977" class="gallery-image" data-flex-basis="786px" data-flex-grow="327" height="427" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251013105029977.webp" width="1400"&gt;&lt;p&gt;其中重要的就是我们的源IP地址和目标IP地址，这里我的主机也就是源IP是&lt;code&gt;172.20.*.*&lt;/code&gt;，目标IP是DNS服务器&lt;code&gt;61.139.2.69&lt;/code&gt;。不过我们也可以关注一下其它部分，首先开头的&lt;code&gt;45&lt;/code&gt;中&lt;code&gt;4&lt;/code&gt;代表IPv4，&lt;code&gt;5&lt;/code&gt;代表IP首部长度为&lt;code&gt;5x4=20&lt;/code&gt;字节。*Differentiated Services Field（区分服务字段）*则是用于改善流量转发效果的，此处&lt;code&gt;DSCP=00(CS0)&lt;/code&gt;让路由器默认处理该数据包，不改变其优先级，而&lt;code&gt;ECN=00(Not-ECT)&lt;/code&gt;则代表不支持ECN显式拥塞通知功能。而后的&lt;code&gt;3b&lt;/code&gt;代表IP数据包的总长度为59字节。而后&lt;code&gt;4c f8&lt;/code&gt;代表其标识符ID。再后面的&lt;code&gt;0000&lt;/code&gt;则依次代表&lt;code&gt;Flag(3bit)=0(可以分片但是没有分)&lt;/code&gt;，&lt;code&gt;Fragment Offset(13bit)=0(片偏移量为0)&lt;/code&gt;。而后&lt;code&gt;80&lt;/code&gt;代表该报文生存时间为128跳。后面的&lt;code&gt;11&lt;/code&gt;代表报文所用协议为&lt;code&gt;UDP&lt;/code&gt;。然后又是个&lt;code&gt;0000&lt;/code&gt;，代表首部校验和为0，用于校验IP头部的完整性。再然后就是源IP地址和目标IP地址了，前面已经说过。&lt;/p&gt;&#10;&lt;p&gt;再往下则是UDP的报文内容。&lt;/p&gt;&#10;&lt;img alt="image-20251013113324896" class="gallery-image" data-flex-basis="788px" data-flex-grow="328" height="426" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251013113324896.webp" width="1400"&gt;&lt;p&gt;UDP报文的内容包括源端口号（2byte）、目的端口号（2byte）、UDP报文长度（2byte）、校验和（2byte）。&lt;/p&gt;&#10;&lt;p&gt;然后后面就是我们的DNS报文了，这一部分根本目的是为了顺利获取到域名对应的IP地址：&lt;/p&gt;&#10;&lt;img alt="image-20251014194558517" class="gallery-image" data-flex-basis="728px" data-flex-grow="303" height="461" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251014194558517.webp" width="1400"&gt;&lt;p&gt;其事务ID（Transaction ID）为0x1c2d，代表该查询的唯一标识，这个查询报文对应的响应报文其事务ID也会是这个。Flags的值为0x0100，则代表了这是一个标准（Opcode=0)查询（Response=0）且授权应答位（Authoritative，在左侧未标注，但是可以观察到Opcode和Truncated中间有一个0，这一位只有在响应报文中有用）和截断位（Truncated）均未设置（=0），期望递归位已设置（Recursion desire=1，这个可以递归解析器，而不需要客户端自己去遍历根、TLD等服务器）、可递归位未设置（Recursion available，在Recursion desire和Z中间有一个0，这一位只有在响应报文中有用），保留位为0（Z=0），应答认证位（Answer authenticated，在Z和Non-authenticated data中间有一个0，表示服务器已经验证了DNSSEC签名，并确认数据是经过认证的，即来自权威源且未被篡改，这个只在响应报文中有用），禁用DNSSEC验证位（CD，即是否需要禁用前面的AD验证，0表示没有禁用，不过因为这里是查询报文，所以WireShark中显示的是Non-Authenticated data）。之后是连续4个2字节的计数字段分析，Questions=1代表报文中包含一个查询问题，后续三个都是在响应报文中才会出现的数据。至于Queries中的数据其实就是查询部分了，域名占用了13个字节（包括点号），不过我们仔细查看报文其实可以发现，这里的点号是用计数的方式来表示实现的，例如最开始的&lt;code&gt;03 77 77 77&lt;/code&gt;其实代表了&lt;code&gt;www&lt;/code&gt;，而&lt;code&gt;03&lt;/code&gt;其实代表的接下来的一个标签（也就是&lt;code&gt;www&lt;/code&gt;）长度为&lt;code&gt;3&lt;/code&gt;，后续的&lt;code&gt;baidu&lt;/code&gt;是&lt;code&gt;05&lt;/code&gt;，&lt;code&gt;com&lt;/code&gt; 是 &lt;code&gt;03&lt;/code&gt;也是同理，而最后面还需要跟一个&lt;code&gt;00&lt;/code&gt;作为结束符表示后面没有标签了。再后面的&lt;code&gt;00 01&lt;/code&gt;代表希望查询的IP类型是&lt;code&gt;A&lt;/code&gt;，即IPv4。最后的&lt;code&gt;00 01&lt;/code&gt;则代表Class是Internet类，即互联网，这是最常用的类别。至此我们对于DNS查询报文的分析完成。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DNS响应报文：关于响应报文，前面的以太网帧头、IP报头、UDP协议包头都没有什么继续分析的必要了，因为本质上和查询报文没有区别，只是方向反过来而已。我们重点关注最后的DNS部分：&lt;/p&gt;&#10;&lt;img alt="image-20251014221115665" class="gallery-image" data-flex-basis="350px" data-flex-grow="145" height="959" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251014221115665.webp" width="1400"&gt;&lt;p&gt;首先事务ID和查询报文是一样的。其次，它的Flags中Response变为了1，代表是响应报文。Opcode为&lt;code&gt;0000&lt;/code&gt;，则仍代表该查询是标准查询。授权应答位Authoritative=0，代表该服务器不是该域名的权威服务器。Truncated为&lt;code&gt;0&lt;/code&gt;代表报文没有截断，完整返回。Recursion Desire为&lt;code&gt;1&lt;/code&gt;代表客户端希望递归查询。Recursion Desire为&lt;code&gt;1&lt;/code&gt;代表服务器支持递归查询，提供递归服务。Z是保留位为&lt;code&gt;0&lt;/code&gt;。Answer Authenticated为&lt;code&gt;0&lt;/code&gt;表示该答案部分没自由经过DNSSEC认证，Checking Disabled为&lt;code&gt;0&lt;/code&gt;代表没有禁用DNSSEC认证。Questions为&lt;code&gt;1&lt;/code&gt;表示查询部分包含1个问问题，Answer RRs为&lt;code&gt;3&lt;/code&gt;表示有三个资源记录，剩下两个都是0代表没有授权服务器信息和没有附加信息，全是字面意思。Queries和查询报文一样。我们重点还是看Answers部分，这是这个响应报文的核心部分。我们从Answer RRs中可以知道，我们有三个答案记录，而第一个记录的Name是&lt;code&gt;www.baidu.com&lt;/code&gt;，Type是&lt;code&gt;CNAME&lt;/code&gt;，Class是&lt;code&gt;Internet&lt;/code&gt;。我们应当注意的是，这里的Name在报文中显示的数据是&lt;code&gt;c0 0c&lt;/code&gt;，这里其实是代表的一个类似于指针的设置，用于指示重复的域名以缩减报文传输量，&lt;code&gt;c&lt;/code&gt;的二进制是&lt;code&gt;1100&lt;/code&gt;，其中&lt;code&gt;11&lt;/code&gt;其实代表的就是这是个指针，而后的&lt;code&gt;00&lt;/code&gt;以及后面的12bit，共同组成了偏移量，这样它就指示到了从DNS报文的0字节开始，往后第12字节开始的那个域名，正是&lt;code&gt;wwww.baidu.com&lt;/code&gt;，后面出现类似情况也是同理。然后我们注意这里的Type是&lt;code&gt;CNAME&lt;/code&gt;，也就是说它其实是检测到一个别名了，而这个别名的值是&lt;code&gt;www.a.shifen.com&lt;/code&gt;，这个是百度以前的一个广告系统的网址，看来百度是直接把它的&lt;code&gt;www.baidu.com&lt;/code&gt;域名连接到这个域名上了，它还可以将其它域名的别名也设置成这个，这样未来如果需要迁移地址，只需要迁移这个域名的地址就可以了。然后我们可以查看下面这个域名，检测到两个IP，分别是&lt;code&gt;183.2.172.177&lt;/code&gt;和&lt;code&gt;183.2.172.17&lt;/code&gt;，看样子百度用了多IP轮询机制来实现负载均衡或者容灾备份。最终从我们的Ping命令效果来看，我们最终应该是选用了第一个，或者说当时第一个就可以联通，不需要使用第二个备用IP了。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="分析icmp"&gt;&lt;a href="#%e5%88%86%e6%9e%90icmp" class="header-anchor"&gt;&lt;/a&gt;分析ICMP&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;ICMP报文：在获取到DNS响应报文后，程序即获得了IP地址，此时即可以通过ICMP报文与服务器通信。PING命令会连续发送四条ICMP报文，并根据返回报文计算连通性性和通信时间，我们只需要分析其中一对即可。&lt;/p&gt;&#10;&lt;img alt="image-20251015162525481" class="gallery-image" data-flex-basis="8000px" data-flex-grow="3333" height="42" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015162525481.webp" width="1400"&gt;&lt;p&gt;ICMP报文由三部分组成：以太网帧头、IP报头和ICMP协议数据部分。其中前两者和DNS相比差不多，只是内容存在部分差异，我们就不重复详细分析了。重点针对ICMP协议数据部分进行讨论：&lt;/p&gt;&#10;&lt;img alt="image-20251015164123794" class="gallery-image" data-flex-basis="1059px" data-flex-grow="441" height="317" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015164123794.webp" width="1400"&gt;&lt;p&gt;我们首先观察Type=&lt;code&gt;8&lt;/code&gt;，其代表了这是一个回显请求，即&lt;code&gt;ping&lt;/code&gt;的发送端。而Code=&lt;code&gt;0&lt;/code&gt;则代表了无特殊错误码，正常请求。Checksum=&lt;code&gt;0x4d2c&lt;/code&gt;是一个校验字段，用于验证报文完整性，已校验通过。Identifier(BE)=&lt;code&gt;1&lt;/code&gt;表示发送大端格式的进程标识符，通常是进程的ID或者PID，此处为1。Identifier(LE)=&lt;code&gt;256&lt;/code&gt;表示小端格式的进程标识符，对应了BE的值，本质上其实就是同一个值。Sequence Number(BE)=&lt;code&gt;47&lt;/code&gt;表示大端格式的序列号，LE=&lt;code&gt;12032&lt;/code&gt;表示小端格式的序列号，本质上就是同一个值。而后的Data部分有32个字节，根据ASCII码不难发现，其实发送的内容本质就是&lt;code&gt;abcdefghijklmnopqrstuvwabcdefghi&lt;/code&gt;，其目的其实就是为了填充数据，没有实际含义。接下来让我们查看响应报文：&lt;/p&gt;&#10;&lt;img alt="image-20251015165452997" class="gallery-image" data-flex-basis="985px" data-flex-grow="410" height="341" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015165452997.webp" width="1400"&gt;&lt;p&gt;不难发现，其实内容也没有什么区别，只有Type变为了&lt;code&gt;0&lt;/code&gt;，代表这是回显应答，即&lt;code&gt;ping&lt;/code&gt;的响应端。校验和在值上发生了改变但是结果仍然正确没有问题。并且我们可以看到Response time=&lt;code&gt;35.251ms&lt;/code&gt;，与我们在终端看到的&lt;code&gt;35ms&lt;/code&gt;是对应的，这其实是抓包工具计算出的时间，并不在报文之中。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="分析http"&gt;&lt;a href="#%e5%88%86%e6%9e%90http" class="header-anchor"&gt;&lt;/a&gt;分析HTTP&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;HTTP报文：现在让我们分析一下方法百度的三次握手包。因为只是初次尝试，我们选择访问&lt;code&gt;HTTP&lt;/code&gt;的百度。通过在命令行中运行&lt;code&gt;nslookup baidu.com&lt;/code&gt;这个代码获取百度网页的ip地址。&lt;/p&gt;&#10;&lt;img alt="image-20251015172626691" class="gallery-image" data-flex-basis="587px" data-flex-grow="244" height="325" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015172626691.webp" width="795"&gt;&lt;p&gt;应答中出现了两个地址，我们选择访问第一个试试，在此之前记得打开Wireshark：&lt;/p&gt;&#10;&lt;img alt="image-20251015172741106" class="gallery-image" data-flex-basis="404px" data-flex-grow="168" height="831" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015172741106.webp" width="1400"&gt;&lt;p&gt;看来没问题，然后我们在Wireshark中添加过滤来找到这个访问，输入&lt;code&gt;ip.host == 39.156.70.37&lt;/code&gt;然后回车即可：&lt;/p&gt;&#10;&lt;img alt="image-20251015173409903" class="gallery-image" data-flex-basis="2196px" data-flex-grow="915" height="40" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015173409903.webp" width="366"&gt;&lt;p&gt;然后我们就可以查看显示结果了：&lt;/p&gt;&#10;&lt;img alt="image-20251015185910439" class="gallery-image" data-flex-basis="2366px" data-flex-grow="985" height="142" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015185910439.webp" width="1400"&gt;&lt;p&gt;可以发现，不知道为何，我们这里出现了两个三次握手，不过下面有一个HTTP报文，可以通过它来分析哪一个才是我们需要的。其中关于以太网帧和IP数据包的部分仍然可以忽略，让我们观察TCP部分：&lt;/p&gt;&#10;&lt;img alt="image-20251015190542901" class="gallery-image" data-flex-basis="239px" data-flex-grow="99" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015190542901.webp" width="1396"&gt;&lt;p&gt;TCP部分可以注意到其Source Port是59049，Destination Port是80，说明我们只需要找到上方同样通信Port是59049和80的报文就可以了，刚好有三个，可以组成三次握手。其它的都是一些传输信息，我们不需要太关注。HTTP报文中在TCP后面还有一个HTTP部分，这一部分其实就是该网页的一些基础信息，不同网页内容也不一样，这里我们也同样不关注。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="分析三次握手"&gt;&lt;a href="#%e5%88%86%e6%9e%90%e4%b8%89%e6%ac%a1%e6%8f%a1%e6%89%8b" class="header-anchor"&gt;&lt;/a&gt;分析三次握手&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;三次握手报文：在三次握手中，我们主要需要关注的还是TCP部分。&lt;/p&gt;&#10;&lt;p&gt;这是第一次握手的内容：&lt;/p&gt;&#10;&lt;img alt="image-20251015205007760" class="gallery-image" data-flex-basis="239px" data-flex-grow="99" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015205007760.webp" width="1396"&gt;&lt;p&gt;我们可以注意到其Flags的SYN标志被置为1了，这是而ACK仍为0，所以这显然是第一次握手的内容。而Sequence Number初始为0，因为这是当前客户端的第一个报文。Acknowledgment Number被设置为0，因为这是第一次握手。Options中则设置了包括分块等一系列设置，这会在前两次握手中出现。&lt;/p&gt;&#10;&lt;p&gt;现在我们观察第二次握手的报文：&lt;/p&gt;&#10;&lt;img alt="image-20251015205638328" class="gallery-image" data-flex-basis="252px" data-flex-grow="105" height="1329" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015205638328.webp" width="1400"&gt;&lt;p&gt;这一次我们可以看到Flags中的ACK被置为1了，而Syn也仍然为1，可以判断这是第二次握手。Sequence Number也仍然为0，因为这是服务器的第一个报文。而Acknowledgment Number则为1，因为已经接收到一次报文了。Options仍然有一些反馈设置。&lt;/p&gt;&#10;&lt;p&gt;我们观察第三次握手报文：&lt;/p&gt;&#10;&lt;img alt="image-20251015205959870" class="gallery-image" data-flex-basis="269px" data-flex-grow="112" height="1245" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015205959870.webp" width="1400"&gt;&lt;p&gt;在这一次中，Flags中只有ACK被置为1，同时Sequence Number变成了1，Acknowledgment Number也变成了1，符合我们的发送接收情况。同时我们可以注意这一次没有Options了。&lt;/p&gt;&#10;&lt;p&gt;至此，我们的三次握手分析完毕。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="分析微信"&gt;&lt;a href="#%e5%88%86%e6%9e%90%e5%be%ae%e4%bf%a1" class="header-anchor"&gt;&lt;/a&gt;分析微信&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;接下来我们简单分析一下微信的数据传输，首先我们需要确定微信通信的IP地址，这个过程非常简单，我们只需要打开资源管理器并选中网络部分，接着给文件传输助手发送一个比较大的文件，然后观察资源管理器中的变化就可以了。&lt;/p&gt;&#10;&lt;img alt="image-20251015215753890" class="gallery-image" data-flex-basis="201px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015215753890.webp" width="1177"&gt;&lt;p&gt;显然，我们获知了微信的IP地址，现在让我们在筛选器中填入&lt;code&gt;ip.addr == 219.153.153.110&lt;/code&gt;就好了，接着我们会发现一大堆GQUIC报文：&lt;/p&gt;&#10;&lt;img alt="image-20251015221134577" class="gallery-image" data-flex-basis="1063px" data-flex-grow="443" height="316" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015221134577.webp" width="1400"&gt;&lt;p&gt;关于QUIC的介绍可以参考《&lt;a class="link" href="https://zhuanlan.zhihu.com/p/405387352" target="_blank" rel="noopener"&#10; &gt;QUIC协议详解&lt;/a&gt;》，而gQUIC则是谷歌的版本，与其相对的是IETF版本的iQUIC。&lt;/p&gt;&#10;&lt;img alt="image-20251015220956982" class="gallery-image" data-flex-basis="436px" data-flex-grow="181" height="770" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/wireshark%E6%8A%93%E5%8C%85%E5%AE%9E%E9%AA%8C/img/image-20251015220956982.webp" width="1400"&gt;&lt;p&gt;我们通过前面的介绍还有名字不难发现微信使用的QUIC协议本质上其实就是一种UDP的传输层协议，在协议中通过QUIC将实际需要发送的UDP数据加密打包发送。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="总结"&gt;&lt;a href="#%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;总结&#10;&lt;/h2&gt;&lt;p&gt;通过本次实验，我们完成了包括针对PING、三次握手、微信传输三个大流程中使用到的各个报文的抓包和协议解析，基本掌握了WireShark的操作方法和筛选技巧，以及针对具体应用（如微信）如何通过资源管理器进行限位，以快速找到通信IP地址实现抓包。&lt;/p&gt;&#10;</description></item><item><title>使用IIS组件搭建服务器（HTTPs）</title><link>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/</link><pubDate>Sun, 05 Oct 2025 19:28:38 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/cover.jpg" alt="Featured image of post 使用IIS组件搭建服务器（HTTPs）" /&gt;&lt;h1 id="使用iis组件搭建服务器https"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8iis%e7%bb%84%e4%bb%b6%e6%90%ad%e5%bb%ba%e6%9c%8d%e5%8a%a1%e5%99%a8https" class="header-anchor"&gt;&lt;/a&gt;使用IIS组件搭建服务器（HTTPs）&#10;&lt;/h1&gt;&lt;h2 id="目标"&gt;&lt;a href="#%e7%9b%ae%e6%a0%87" class="header-anchor"&gt;&lt;/a&gt;目标&#10;&lt;/h2&gt;&lt;p&gt;根据《&lt;a class="link" href="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE%E5%AD%A6%E4%B9%A0/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/" &gt;使用IIS组件搭建服务器（Web）&lt;/a&gt;》，将原本HTTP网站改为HTTPS网站，注意你应该已经完成了该文章所述的所有步骤。&lt;/p&gt;&#10;&lt;h2 id="步骤"&gt;&lt;a href="#%e6%ad%a5%e9%aa%a4" class="header-anchor"&gt;&lt;/a&gt;步骤&#10;&lt;/h2&gt;&lt;h3 id="创建签名"&gt;&lt;a href="#%e5%88%9b%e5%bb%ba%e7%ad%be%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;创建签名&#10;&lt;/h3&gt;&lt;p&gt;因为HTTPS需要安全签名，所以我们要创建一个，如果你需要将其应用于公网，也可以自行申请一个。不过我们只是实验，创建一个本地用就够了。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在IIS管理器中，选择计算机名称（不是某个网站），然后在中间的功能视图中，双击服务器证书。&lt;/p&gt;&#10;&lt;img alt="image-20251007161123837" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/img/image-20251007161123837.webp" width="1179"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在右侧选择“创建自签名证书”。&lt;/p&gt;&#10;&lt;img alt="image-20251007161206222" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/img/image-20251007161206222.webp" width="1179"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;输入证书名称，然后确定。&lt;/p&gt;&#10;&lt;img alt="image-20251007161303242" class="gallery-image" data-flex-basis="278px" data-flex-grow="116" height="1158" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/img/image-20251007161303242.webp" width="1346"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="绑定https"&gt;&lt;a href="#%e7%bb%91%e5%ae%9ahttps" class="header-anchor"&gt;&lt;/a&gt;绑定HTTPS&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;右键点击你原本的HTTP网站，然后选择编辑绑定。&lt;/p&gt;&#10;&lt;img alt="image-20251007161721535" class="gallery-image" data-flex-basis="90px" data-flex-grow="37" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/img/image-20251007161721535.webp" width="530"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;点击添加。&lt;/p&gt;&#10;&lt;img alt="image-20251007161818440" class="gallery-image" data-flex-basis="364px" data-flex-grow="151" height="848" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/img/image-20251007161818440.webp" width="1288"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;类型选择&lt;code&gt;https&lt;/code&gt;，SSL证书选择刚刚创建的证书，其它全部保持默认即可。然后点击确定。你网站的https就配置好了。&lt;/p&gt;&#10;&lt;img alt="image-20251007162143260" class="gallery-image" data-flex-basis="269px" data-flex-grow="112" height="940" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/img/image-20251007162143260.webp" width="1054"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="测试"&gt;&lt;a href="#%e6%b5%8b%e8%af%95" class="header-anchor"&gt;&lt;/a&gt;测试&#10;&lt;/h3&gt;&lt;p&gt;直接访问&lt;code&gt;https://localhost&lt;/code&gt;，你可能收到浏览器的警告，这是因为我们的SSL是自己创建的，并不被公共认可，浏览器认为其可能不安全。此时强制访问即可。&lt;/p&gt;&#10;&lt;img alt="image-20251007162618807" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8https/img/image-20251007162618807.webp" width="1179"&gt;</description></item><item><title>使用IIS组件搭建服务器（FTP）</title><link>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/</link><pubDate>Sun, 05 Oct 2025 19:28:30 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/cover.jpg" alt="Featured image of post 使用IIS组件搭建服务器（FTP）" /&gt;&lt;h1 id="使用iis组件搭建服务器ftp"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8iis%e7%bb%84%e4%bb%b6%e6%90%ad%e5%bb%ba%e6%9c%8d%e5%8a%a1%e5%99%a8ftp" class="header-anchor"&gt;&lt;/a&gt;使用IIS组件搭建服务器（FTP）&#10;&lt;/h1&gt;&lt;h2 id="目标"&gt;&lt;a href="#%e7%9b%ae%e6%a0%87" class="header-anchor"&gt;&lt;/a&gt;目标&#10;&lt;/h2&gt;&lt;p&gt;使用IIS组件搭建一个Web服务器。&lt;/p&gt;&#10;&lt;h2 id="步骤"&gt;&lt;a href="#%e6%ad%a5%e9%aa%a4" class="header-anchor"&gt;&lt;/a&gt;步骤&#10;&lt;/h2&gt;&lt;h3 id="启用iis功能"&gt;&lt;a href="#%e5%90%af%e7%94%a8iis%e5%8a%9f%e8%83%bd" class="header-anchor"&gt;&lt;/a&gt;启用IIS功能&#10;&lt;/h3&gt;&lt;p&gt;IIS在Windows中是默认关闭的，需要手动启用。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;打开控制面板，选择“程序”&lt;img alt="image-20251006105646203" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251006105646203.webp" width="1179"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;进入程序界面，选择“程序和功能”。&lt;/p&gt;&#10;&lt;img alt="image-20251006105854994" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251006105854994.webp" width="1179"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;进入程序和功能界面，选择“启用或关闭Windows功能”&lt;/p&gt;&#10;&lt;img alt="image-20251006110019020" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251006110019020.webp" width="1179"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;展开“Internet Information Services”，将“FTP服务器”中的所有选项勾上。&lt;/p&gt;&#10;&lt;img alt="image-20251007142242849" class="gallery-image" data-flex-basis="262px" data-flex-grow="109" height="764" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007142242849.webp" width="835"&gt;&lt;p&gt;点击确定后等待系统自动安装所需文件，完成后点击关闭即可。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="添加ftp站点"&gt;&lt;a href="#%e6%b7%bb%e5%8a%a0ftp%e7%ab%99%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;添加FTP站点&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;按&lt;code&gt;Win+R&lt;/code&gt;，输入&lt;code&gt;inetmgr&lt;/code&gt;，然后打开“IIS管理器”。在左侧连接框中展开计算机，然后右键点击站点，选择“添加FTP站点”。&lt;img alt="image-20251007142749525" class="gallery-image" data-flex-basis="427px" data-flex-grow="178" height="786" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007142749525.webp" width="1400"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在信息填写界面，根据你的喜好输入一个网站名称，物理路径你可以根据需要在一个地址创建一个文件夹并选中，这会是你的FTP根目录，例如我的&lt;code&gt;C:\Workspace\Test\FTPService&lt;/code&gt;。你可以在这个路径下创建一些文件，你可以随意在文件中写一些东西，以便于等会测试用。之后点击下一页。&lt;/p&gt;&#10;&lt;img alt="image-20251007143208027" class="gallery-image" data-flex-basis="278px" data-flex-grow="116" height="1158" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007143208027.webp" width="1346"&gt;&lt;img alt="image-20251007154822707" class="gallery-image" data-flex-basis="201px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007154822707.webp" width="1177"&gt;&lt;img alt="image-20251007155050879" class="gallery-image" data-flex-basis="228px" data-flex-grow="95" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007155050879.webp" width="1335"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;IP地址选择“全部未分配”（这样我们可以直接使用环回地址&lt;code&gt;127.0.0.1&lt;/code&gt;来进行测试），端口使用默认的21端口，SSL选择“无SSL”（因为我们没有SSL，而且只是测试用，没必要设置）。点击下一页。&lt;/p&gt;&#10;&lt;img alt="image-20251007143821970" class="gallery-image" data-flex-basis="278px" data-flex-grow="116" height="1156" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007143821970.webp" width="1343"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;身份验证我们选择基本，这样需要输入用户名和密码，然后再授权中选择所有用户，并给他们权限。这里其实无所谓如何设置，因为只是我们自己测试使用。设置完成后点击完成即可。&lt;/p&gt;&#10;&lt;img alt="image-20251007143934538" class="gallery-image" data-flex-basis="278px" data-flex-grow="116" height="1158" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007143934538.webp" width="1346"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;如无意外，你可以看到你左侧网站界面多了一个你刚才创建的FTP网站，点击它，中间的界面就会变成FTP的管理界面。&lt;/p&gt;&#10;&lt;img alt="image-20251007151159539" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="788" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007151159539.webp" width="1400"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="使用命令行访问ftp"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8%e5%91%bd%e4%bb%a4%e8%a1%8c%e8%ae%bf%e9%97%aeftp" class="header-anchor"&gt;&lt;/a&gt;使用命令行访问FTP&#10;&lt;/h3&gt;&lt;p&gt;现在你已经可以访问FTP了，打开一个命令行，例如Powershell，然后导航到一个你希望下载文件的路径。例如&lt;code&gt;C:\Workspace\Test\FTPDownload&lt;/code&gt;。使用指令&lt;code&gt;ftp 127.0.0.1&lt;/code&gt;访问FTP服务器。然后输入用户名和密码，这个用户名和密码就是你当前登录的Windows账户的用户名和登录密码。此时你就可以登录到FTP服务器中了，此时输入&lt;code&gt;ls&lt;/code&gt;即可查看当前FTP服务器中的文件，使用&lt;code&gt;get &amp;quot;文件名&amp;quot; [&amp;quot;重命名&amp;quot;]&lt;/code&gt;即可将获取文件。使用完毕后，输入&lt;code&gt;quit&lt;/code&gt;即可退出访问。&lt;/p&gt;&#10;&lt;img alt="image-20251007155649315" class="gallery-image" data-flex-basis="316px" data-flex-grow="131" height="968" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007155649315.webp" width="1275"&gt;&lt;p&gt;此时我们的路径下就获得了FTP中的文件。&lt;/p&gt;&#10;&lt;img alt="image-20251007155740570" class="gallery-image" data-flex-basis="960px" data-flex-grow="400" height="350" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8ftp/img/image-20251007155740570.webp" width="1400"&gt;</description></item><item><title>使用IIS组件搭建服务器（Web）</title><link>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/</link><pubDate>Sun, 05 Oct 2025 19:28:13 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/cover.jpg" alt="Featured image of post 使用IIS组件搭建服务器（Web）" /&gt;&lt;h1 id="使用iis组件搭建服务器web"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8iis%e7%bb%84%e4%bb%b6%e6%90%ad%e5%bb%ba%e6%9c%8d%e5%8a%a1%e5%99%a8web" class="header-anchor"&gt;&lt;/a&gt;使用IIS组件搭建服务器（Web）&#10;&lt;/h1&gt;&lt;h2 id="目标"&gt;&lt;a href="#%e7%9b%ae%e6%a0%87" class="header-anchor"&gt;&lt;/a&gt;目标&#10;&lt;/h2&gt;&lt;p&gt;使用IIS组件搭建一个Web服务器。&lt;/p&gt;&#10;&lt;h2 id="步骤"&gt;&lt;a href="#%e6%ad%a5%e9%aa%a4" class="header-anchor"&gt;&lt;/a&gt;步骤&#10;&lt;/h2&gt;&lt;h3 id="启用iis功能"&gt;&lt;a href="#%e5%90%af%e7%94%a8iis%e5%8a%9f%e8%83%bd" class="header-anchor"&gt;&lt;/a&gt;启用IIS功能&#10;&lt;/h3&gt;&lt;p&gt;IIS在Windows中是默认关闭的，需要手动启用。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;打开控制面板，选择“程序”&lt;img alt="image-20251006105646203" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251006105646203.webp" width="1179"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;进入程序界面，选择“程序和功能”。&lt;/p&gt;&#10;&lt;img alt="image-20251006105854994" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251006105854994.webp" width="1179"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;进入程序和功能界面，选择“启用或关闭Windows功能”&lt;/p&gt;&#10;&lt;img alt="image-20251006110019020" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251006110019020.webp" width="1179"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;勾选“Internet Information Services”旁边的复选框，这会默认勾选大部分子项，我们只需要这些默认的子项即可，不过你也可以检查一下是否和我的一样。注意下面的“可承载的Web核心”不需要勾选，这部分更加类似于一个可被编程调用的库，并非我们本次实验的目的。&lt;/p&gt;&#10;&lt;img alt="image-20251006110405143" class="gallery-image" data-flex-basis="247px" data-flex-grow="103" height="923" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251006110405143.webp" width="952"&gt;&lt;p&gt;点击确定后等待系统自动安装所需文件，完成后点击关闭即可。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="创建网站文件夹和内容"&gt;&lt;a href="#%e5%88%9b%e5%bb%ba%e7%bd%91%e7%ab%99%e6%96%87%e4%bb%b6%e5%a4%b9%e5%92%8c%e5%86%85%e5%ae%b9" class="header-anchor"&gt;&lt;/a&gt;创建网站文件夹和内容&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在合适的地方创建一个文件夹用于管理你的网站，例如我的&lt;code&gt;C:\Workspace\Test\WebService&lt;/code&gt;。&lt;/p&gt;&#10;&lt;img alt="image-20251007132358768" class="gallery-image" data-flex-basis="201px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007132358768.webp" width="1177"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;创建首页文件：在你创建的文件夹中创建一个名为&lt;code&gt;index.html&lt;/code&gt;的文件，使用记事本或你的文本编辑器打开它并修改内容。你可以在其中添加一些简单的HTML内容，例如：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;IIS Web服务测试&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;meta&lt;/span&gt; &lt;span class="na"&gt;charset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;meta&lt;/span&gt; &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;zh-CN&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;这是IIS Web服务测试&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;欢迎使用IIS Web服务&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;img alt="image-20251007135654725" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007135654725.webp" width="1179"&gt;&lt;img alt="image-20251007132754658" class="gallery-image" data-flex-basis="201px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007132754658.webp" width="1177"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="在iis管理器中创建网站"&gt;&lt;a href="#%e5%9c%a8iis%e7%ae%a1%e7%90%86%e5%99%a8%e4%b8%ad%e5%88%9b%e5%bb%ba%e7%bd%91%e7%ab%99" class="header-anchor"&gt;&lt;/a&gt;在IIS管理器中创建网站&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;现在使用IIS管理器来配置网站。按住&lt;code&gt;Win+R&lt;/code&gt;，输入&lt;code&gt;inetmgr&lt;/code&gt;，然后回车。也可以在开始菜单搜索“IIS”或“Internet Information Services(IIS)管理器”。&lt;/p&gt;&#10;&lt;img alt="image-20251007133034885" class="gallery-image" data-flex-basis="281px" data-flex-grow="117" height="1194" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007133034885.webp" width="1400"&gt;&lt;img alt="image-20251007133125211" class="gallery-image" data-flex-basis="425px" data-flex-grow="177" height="789" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007133125211.webp" width="1400"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;展开左侧“连接”面板中计算机名称，然后右键点击站点，选择“添加网站”。&lt;/p&gt;&#10;&lt;img class="gallery-image" data-flex-basis="279px" data-flex-grow="116" height="621" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007133342997.webp" width="722"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;接下来在打开的网站信息填写界面，根据你的喜好输入一个网站名称，物理路径选择你刚才创建的文件夹。其他的暂时可以默认不变。不过需要注意你的端口可能会冲突，此时可以修改你的端口为&lt;code&gt;8080&lt;/code&gt;或其它未被占用的端口。点击确定。你可以参考我的填写内容。&lt;/p&gt;&#10;&lt;img alt="image-20251007135013312" class="gallery-image" data-flex-basis="185px" data-flex-grow="77" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007135013312.webp" width="1081"&gt;&lt;img alt="image-20251007134147029" class="gallery-image" data-flex-basis="687px" data-flex-grow="286" height="331" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007134147029.webp" width="948"&gt;&lt;img alt="image-20251007134211924" class="gallery-image" data-flex-basis="273px" data-flex-grow="113" height="115" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007134211924.webp" width="131"&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;如无意外，你可以看到你的左侧网站界面多了一个你刚才创建的网站。点击它，中间的界面就会变成该网站的管理界面。&lt;/p&gt;&#10;&lt;img alt="image-20251007134421293" class="gallery-image" data-flex-basis="657px" data-flex-grow="274" height="127" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007134421293.webp" width="348"&gt;&lt;img alt="image-20251007135849126" class="gallery-image" data-flex-basis="427px" data-flex-grow="178" height="786" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007135849126.webp" width="1400"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="测试网站"&gt;&lt;a href="#%e6%b5%8b%e8%af%95%e7%bd%91%e7%ab%99" class="header-anchor"&gt;&lt;/a&gt;测试网站&#10;&lt;/h3&gt;&lt;p&gt;现在我们可以测试这个网站了，打开一个浏览器，输入地址并在其后添加你刚刚选择的端口号，例如&lt;code&gt;http://localhost:8080&lt;/code&gt;，你就可以打开刚才你的&lt;code&gt;index.html&lt;/code&gt;网站。实验成功。&lt;/p&gt;&#10;&lt;img alt="image-20251007140127244" class="gallery-image" data-flex-basis="202px" data-flex-grow="84" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/%E4%BD%BF%E7%94%A8iis%E7%BB%84%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1%E5%99%A8web/img/image-20251007140127244.webp" width="1179"&gt;</description></item><item><title>IPv4和IPv6比较</title><link>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/ipv4%E5%92%8Cipv6%E6%AF%94%E8%BE%83/</link><pubDate>Sun, 05 Oct 2025 19:07:56 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/ipv4%E5%92%8Cipv6%E6%AF%94%E8%BE%83/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/ipv4%E5%92%8Cipv6%E6%AF%94%E8%BE%83/cover.jpg" alt="Featured image of post IPv4和IPv6比较" /&gt;&lt;h1 id="ipv4和ipv6比较"&gt;&lt;a href="#ipv4%e5%92%8cipv6%e6%af%94%e8%be%83" class="header-anchor"&gt;&lt;/a&gt;IPv4和IPv6比较&#10;&lt;/h1&gt;&lt;h2 id="前言"&gt;&lt;a href="#%e5%89%8d%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;前言&#10;&lt;/h2&gt;&lt;p&gt;IPv4和IPv6是当前互联网协议的两个主要版本，并基于它们的不同特点进行对比。&lt;/p&gt;&#10;&lt;h2 id="特点"&gt;&lt;a href="#%e7%89%b9%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;特点&#10;&lt;/h2&gt;&lt;h3 id="兼容性"&gt;&lt;a href="#%e5%85%bc%e5%ae%b9%e6%80%a7" class="header-anchor"&gt;&lt;/a&gt;兼容性&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;IPv4：IPv4是互联网的基础，已经应用数十年，几乎所有现有网络设备、操作系统、应用程序都完美支持IPv4，兼容性极佳。&lt;/li&gt;&#10;&lt;li&gt;IPv6：尽管IPv6是未来趋势，但其普及率仍不及IPv4，部分老旧设备、操作系统或应用程序可能不完全支持IPv6，存在兼容性问题。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;此外，兼容性也带来了过度成本问题，包括设备升级改造成本和技术学习成本。&lt;/p&gt;&#10;&lt;h3 id="易用性"&gt;&lt;a href="#%e6%98%93%e7%94%a8%e6%80%a7" class="header-anchor"&gt;&lt;/a&gt;易用性&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;IPv4：地址采用点分十进制表示，格式简单，便于人类记忆、输入和配置。&lt;/li&gt;&#10;&lt;li&gt;IPv6：地址采用冒号分隔的十六进制表示，长度较长且复杂，不便于人类记忆和手动输入。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="地址空间"&gt;&lt;a href="#%e5%9c%b0%e5%9d%80%e7%a9%ba%e9%97%b4" class="header-anchor"&gt;&lt;/a&gt;地址空间&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;IPv4：采用32位地址，理论地址总数约43亿个，但由于互联网高速发展，这点地址空间根本不够，甚至不足以全世界每人一个IP地址。这是IPv4最大的缺陷。尽管通过NAT技术可以缓解这一问题，但是这本质上破坏了端到端的通信原则，增加了网络复杂性，可能导致连接延迟，并使得网络故障排查和安全溯源更加困难。&lt;/li&gt;&#10;&lt;li&gt;IPv6：采用128位地址，理论上地址数量高达2的128次方个，足以满足未来物联网、智能设备等海量终端接入的需求，从根本上解决了地址枯竭问题，且无需NAT转换，保证了互联网端到端通信的特性，简化了网络结构，提高了通信效率和可靠性。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="路由效率"&gt;&lt;a href="#%e8%b7%af%e7%94%b1%e6%95%88%e7%8e%87" class="header-anchor"&gt;&lt;/a&gt;路由效率&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;IPv4：地址分配不均，导致路由表庞大且难以聚合，路由器查找路由的负担较重，影响数据转发效率。&lt;/li&gt;&#10;&lt;li&gt;IPv6： 地址层次结构清晰，具有良好的可聚合性，能有效压缩路由表规模，减轻路由器负担，加快路由查找和数据包转发速度。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="安全性"&gt;&lt;a href="#%e5%ae%89%e5%85%a8%e6%80%a7" class="header-anchor"&gt;&lt;/a&gt;安全性&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;IPv4：协议本身设计时未充分考虑安全性，其安全机制（如IPsec）是可选的附加功能，而非强制内置，使得网络更容易受到攻击。&lt;/li&gt;&#10;&lt;li&gt;将IPsec（IP安全协议）作为强制性标准集成在协议中，为数据传输提供端到端的加密和认证，大大增强了网络通信的安全性。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="自动配置"&gt;&lt;a href="#%e8%87%aa%e5%8a%a8%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;自动配置&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;IPv4：依赖于DHCP服务器，需要单独进行配置DHCP服务器。&lt;/li&gt;&#10;&lt;li&gt;IPv6：支持无状态地址自动配置（SLAAC），设备接入网络后可以自动获取IP地址，无需依赖DHCP服务器，简化了网络管理，尤其适合大规模设备部署。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="总结"&gt;&lt;a href="#%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;总结&#10;&lt;/h2&gt;&lt;p&gt;IPv4凭借其成熟和兼容性仍是当前的主流，但其地址枯竭和安全性的根本缺陷使其难以适应未来发展。IPv6则通过巨大的地址空间、内置安全、高效路由和自动配置等优势，成为解决当前互联网瓶颈的必然选择，是未来互联网发展的方向。目前，两者正处于长期共存的过渡阶段，最终IPv6将逐步取代IPv4成为主流。&lt;/p&gt;&#10;</description></item><item><title>ARP协议分析</title><link>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/arp%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90/</link><pubDate>Sat, 27 Sep 2025 15:07:00 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/arp%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/arp%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90/cover.jpg" alt="Featured image of post ARP协议分析" /&gt;&lt;h1 id="arp协议分析"&gt;&lt;a href="#arp%e5%8d%8f%e8%ae%ae%e5%88%86%e6%9e%90" class="header-anchor"&gt;&lt;/a&gt;ARP协议分析&#10;&lt;/h1&gt;&lt;h2 id="arp协议简介"&gt;&lt;a href="#arp%e5%8d%8f%e8%ae%ae%e7%ae%80%e4%bb%8b" class="header-anchor"&gt;&lt;/a&gt;ARP协议简介&#10;&lt;/h2&gt;&lt;p&gt;ARP全称为“Address Resolution Protocol”（地址解析协议）。其功能是将IP地址解析转换为MAC地址。因为IP地址工作在网络层，MAC地址工作在数据链路层，通常IP地址用于局域网之外的数据转发，而MAC地址用于局域网内的数据通信。当一台主机需要向同一局域网内的另一台主机发送数据时，它虽然知道对方的IP地址，但是最终数据需要以帧的形式在物理网络上传输，这个传输过程依赖于MAC地址，故需要一种机制将目标IP地址翻译成的对应的MAC地址。&lt;/p&gt;&#10;&lt;h2 id="为什么不能只用mac或ip"&gt;&lt;a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e8%83%bd%e5%8f%aa%e7%94%a8mac%e6%88%96ip" class="header-anchor"&gt;&lt;/a&gt;为什么不能只用MAC或IP&#10;&lt;/h2&gt;&lt;p&gt;MAC地址工作在数据链路层，IP地址工作在网络层，它们其实负责的是不同板块的功能。MAC地址负责同一局域网内的数据定位，而IP则负责不同局域网之间的数据定位。如果只用MAC地址，因为MAC地址本身没有分层的结构，路由表将会变得极其庞大而难以管理。&lt;/p&gt;&#10;&lt;p&gt;而如果只用IP地址，因为IP地址已经包含了过多功能，在对IP数据包进行处理的时候会相对复杂，且路由器本身成本也更高，相比于使用一台路由器来管理，远不如用一台有硬件级MAC转发电路的交换机来得更为高效和划算，而且这也会导致路由器的角色混乱和性能下降。&lt;/p&gt;&#10;&lt;h2 id="arp工作流程"&gt;&lt;a href="#arp%e5%b7%a5%e4%bd%9c%e6%b5%81%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;ARP工作流程&#10;&lt;/h2&gt;&lt;p&gt;ARP的工作流程简单讲就是&lt;strong&gt;先广播询问，后单播应答&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;假设两台设备在同一局域网内，A设备知道B设备的IP地址，但不知道它的MAC地址，此时就可以启动ARP协议：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;检查缓存表：主机A先检查自己的ARP缓存表（该缓存表可以避免重复广播），查看是否已有主机B的MAC地址。如果存在，则直接使用该地址构造数据帧。如果不存在，则进入ARP请求过程。&lt;/li&gt;&#10;&lt;li&gt;广播ARP请求：主机A在局域网内广播一个ARP请求报文，该报文包含主机A的IP和MAC，以及主机B的IP，而该报文的目标MAC地址设置为&lt;code&gt;FF:FF:FF:FF:FF:FF&lt;/code&gt;用于广播，本地广播域内所有设备将会接收到这个请求。&lt;/li&gt;&#10;&lt;li&gt;单播ARP响应：只有主机B接收到广播并通过IP地址确定了该广播询问的是自己的MAC地址后，向主机A发送一个单播的ARP应答报文，里面包含了自己的MAC地址。&lt;/li&gt;&#10;&lt;li&gt;更新ARP缓存：主机B在接收到ARP请求后，就将主机A的MAC地址存入自己的ARP缓存。主机A在接受到主机B的应答报文后，也将主机B的MAC地址存入自己的ARP缓存。&lt;/li&gt;&#10;&lt;li&gt;正常通信：现在双方都知道了对方的MAC地址，就可以开始正常通信了，而在一段时间内，一因为双方ARP缓存都有对方的MAC地址，也无需要再次广播。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="arp报文格式"&gt;&lt;a href="#arp%e6%8a%a5%e6%96%87%e6%a0%bc%e5%bc%8f" class="header-anchor"&gt;&lt;/a&gt;ARP报文格式&#10;&lt;/h2&gt;&lt;p&gt;ARP时一个独立的三层协议，所以ARP报文在数据链路层不需要经过IP协议的封装，而是直接生成自己的报文。ARP报文可以分为ARP请求报文和ARP应答报文两种，但是它们的格式可以统一为同一种格式：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;名称&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;大小（字节）&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;功能&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;硬件类型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;表示ARP报文可以在哪种网络上传输，值为1时表示以太网地址。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;上层协议类型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;表示硬件地址要映射的协议地址类型，映射IP地址时的值为0x0800。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MAC地址长度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;标识MAC地址长度，以字节为单位，此处为6。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;IP地址长度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;标识IP得知长度，以字节为单位，此处为4。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;操作类型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;指定本次ARP报文类型。1标识ARP请求报文，2标识ARP应答报文。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;源MAC地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;发送方的MAC地址。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;源IP地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;发送方的IP地址。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;目的MAC地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;接收方的MAC地址。若为请求报文，因为当前不知道该地址，则此时全为0，即&lt;code&gt;00:00:00:00:00:00&lt;/code&gt;，表示任意地址。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;目的IP地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;接受方的IP地址。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="arp帧格式"&gt;&lt;a href="#arp%e5%b8%a7%e6%a0%bc%e5%bc%8f" class="header-anchor"&gt;&lt;/a&gt;ARP帧格式&#10;&lt;/h2&gt;&lt;p&gt;ARP报文并非直接在网络层发送和使用的，还需要向下传输到数据链路层，此时需要再次封装。以以太网为例，ARP报文传输到以太网数据链路层后会形成ARP帧，ARP帧是在ARP报文前面添加了一个以太网帧头，以太网帧头如下表所示：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;名称&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;大小（字节）&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;功能&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;目标MAC地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;接收方的MAC地址。若为请求报文，则为广播帧，设置为广播地址&lt;code&gt;FF:FF:FF:FF:FF:FF&lt;/code&gt;。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;源MAC地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;发送方的MAC地址。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;帧类型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;表示帧封装的上层协议，ARP帧封装的ARP报文，所以此处填ARP的协议号0x0806。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;</description></item></channel></rss>