<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Diagnostics on IT Comparison</title><link>https://comparison.metacog.co.kr/tags/diagnostics/</link><description>Recent content in Diagnostics on IT Comparison</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 01 Aug 2026 20:10:00 +0900</lastBuildDate><atom:link href="https://comparison.metacog.co.kr/tags/diagnostics/index.xml" rel="self" type="application/rss+xml"/><item><title>Ping vs Traceroute: Testing Reachability vs Mapping the Path</title><link>https://comparison.metacog.co.kr/posts/2026-08-03-ping-vs-traceroute-testing-reachability-vs-mapping-the-path/</link><pubDate>Sat, 01 Aug 2026 20:10:00 +0900</pubDate><guid>https://comparison.metacog.co.kr/posts/2026-08-03-ping-vs-traceroute-testing-reachability-vs-mapping-the-path/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Ping and Traceroute are both ICMP-based diagnostic tools, but they answer different questions: ping tests &lt;strong class="kw"&gt;reachability&lt;/strong&gt; between two hosts, while traceroute reveals the &lt;strong class="kw"&gt;path&lt;/strong&gt; packets take to get there. Ping reports simple round-trip latency and packet loss; traceroute manipulates TTL values to map every router hop along the route.&lt;/p&gt;
&lt;h2 id="comparison-diagram"&gt;Comparison Diagram&lt;/h2&gt;
&lt;div class="compare-diagram"&gt;
&lt;svg viewBox="0 0 640 360" xmlns="http://www.w3.org/2000/svg"&gt;&lt;defs&gt;&lt;marker id="arrowA" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"&gt;&lt;path d="M0,0 L10,5 L0,10 z" style="fill:var(--compare-a)"/&gt;&lt;/marker&gt;&lt;marker id="arrowB" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"&gt;&lt;path d="M0,0 L10,5 L0,10 z" style="fill:var(--compare-b)"/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;line x1="320" y1="20" x2="320" y2="340" style="stroke:var(--border)" stroke-width="1" stroke-dasharray="4 4"/&gt;&lt;text x="160" y="28" text-anchor="middle" style="fill:var(--primary)" font-size="18" font-weight="bold"&gt;PING&lt;/text&gt;&lt;text x="480" y="28" text-anchor="middle" style="fill:var(--primary)" font-size="18" font-weight="bold"&gt;TRACEROUTE&lt;/text&gt;&lt;circle cx="70" cy="200" r="20" style="fill:var(--compare-a-soft);stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;text x="70" y="204" text-anchor="middle" style="fill:var(--content)" font-size="10"&gt;Client&lt;/text&gt;&lt;circle cx="250" cy="200" r="20" style="fill:var(--compare-a-soft);stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;text x="250" y="204" text-anchor="middle" style="fill:var(--content)" font-size="10"&gt;Server&lt;/text&gt;&lt;line x1="88" y1="160" x2="232" y2="160" style="stroke:var(--compare-a)" stroke-width="1.5" marker-end="url(#arrowA)"/&gt;&lt;text x="160" y="150" text-anchor="middle" style="fill:var(--content)" font-size="11"&gt;Echo Request&lt;/text&gt;&lt;line x1="232" y1="240" x2="88" y2="240" style="stroke:var(--compare-a)" stroke-width="1.5" stroke-dasharray="4 3" marker-end="url(#arrowA)"/&gt;&lt;text x="160" y="258" text-anchor="middle" style="fill:var(--content)" font-size="11"&gt;Echo Reply&lt;/text&gt;&lt;text x="160" y="300" text-anchor="middle" style="fill:var(--secondary)" font-size="11"&gt;One round trip → RTT to destination&lt;/text&gt;&lt;circle cx="370" cy="290" r="18" style="fill:var(--compare-b-soft);stroke:var(--compare-b)" stroke-width="1.5"/&gt;&lt;text x="370" y="294" text-anchor="middle" style="fill:var(--content)" font-size="9"&gt;Client&lt;/text&gt;&lt;circle cx="430" cy="230" r="13" style="fill:var(--compare-b-soft);stroke:var(--compare-b)" stroke-width="1.5"/&gt;&lt;text x="430" y="234" text-anchor="middle" style="fill:var(--content)" font-size="9"&gt;R1&lt;/text&gt;&lt;circle cx="480" cy="180" r="13" style="fill:var(--compare-b-soft);stroke:var(--compare-b)" stroke-width="1.5"/&gt;&lt;text x="480" y="184" text-anchor="middle" style="fill:var(--content)" font-size="9"&gt;R2&lt;/text&gt;&lt;circle cx="530" cy="130" r="13" style="fill:var(--compare-b-soft);stroke:var(--compare-b)" stroke-width="1.5"/&gt;&lt;text x="530" y="134" text-anchor="middle" style="fill:var(--content)" font-size="9"&gt;R3&lt;/text&gt;&lt;circle cx="590" cy="80" r="16" style="fill:var(--compare-b-soft);stroke:var(--compare-b)" stroke-width="1.5"/&gt;&lt;text x="590" y="84" text-anchor="middle" style="fill:var(--content)" font-size="9"&gt;Srv&lt;/text&gt;&lt;line x1="388" y1="276" x2="418" y2="240" style="stroke:var(--compare-b)" stroke-width="1.5" marker-end="url(#arrowB)"/&gt;&lt;text x="385" y="220" style="fill:var(--secondary)" font-size="9"&gt;TTL=1&lt;/text&gt;&lt;line x1="388" y1="276" x2="468" y2="190" style="stroke:var(--compare-b)" stroke-width="1.5" marker-end="url(#arrowB)"/&gt;&lt;text x="440" y="170" style="fill:var(--secondary)" font-size="9"&gt;TTL=2&lt;/text&gt;&lt;line x1="388" y1="276" x2="518" y2="140" style="stroke:var(--compare-b)" stroke-width="1.5" marker-end="url(#arrowB)"/&gt;&lt;text x="490" y="120" style="fill:var(--secondary)" font-size="9"&gt;TTL=3&lt;/text&gt;&lt;line x1="388" y1="276" x2="576" y2="93" style="stroke:var(--compare-b)" stroke-width="1.5" marker-end="url(#arrowB)"/&gt;&lt;text x="545" y="70" style="fill:var(--secondary)" font-size="9"&gt;TTL=4&lt;/text&gt;&lt;line x1="419" y1="242" x2="392" y2="270" style="stroke:var(--compare-b)" stroke-width="1" stroke-dasharray="3 2" marker-end="url(#arrowB)"/&gt;&lt;text x="335" y="258" style="fill:var(--secondary)" font-size="8"&gt;Time Exceeded reply&lt;/text&gt;&lt;text x="480" y="330" text-anchor="middle" style="fill:var(--secondary)" font-size="11"&gt;Each probe's TTL expires one hop further&lt;/text&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id="comparison-table"&gt;Comparison Table&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Ping&lt;/th&gt;
&lt;th&gt;Traceroute&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary purpose&lt;/td&gt;
&lt;td&gt;Tests whether a host is reachable and measures round-trip latency&lt;/td&gt;
&lt;td&gt;Maps the sequence of routers (hops) a packet crosses to reach a host&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Underlying mechanism&lt;/td&gt;
&lt;td&gt;Sends an ICMP Echo Request and waits for an ICMP Echo Reply&lt;/td&gt;
&lt;td&gt;Sends probes with incrementing TTL, capturing an ICMP Time Exceeded from each hop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TTL handling&lt;/td&gt;
&lt;td&gt;Uses a fixed, generous TTL (OS default, e.g. 64 or 128) meant to survive the whole path&lt;/td&gt;
&lt;td&gt;Deliberately starts TTL at 1 and increments it per probe to force expiry at each hop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who responds&lt;/td&gt;
&lt;td&gt;Only the final destination host replies&lt;/td&gt;
&lt;td&gt;Every intermediate router along the path replies, plus the destination&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output produced&lt;/td&gt;
&lt;td&gt;Single or repeated RTT values and a packet loss percentage&lt;/td&gt;
&lt;td&gt;Ordered list of hop addresses with per-hop RTT samples&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interpreting failure&lt;/td&gt;
&lt;td&gt;No reply means unreachable or blocked, without saying where&lt;/td&gt;
&lt;td&gt;A missing hop reply pinpoints exactly where the path breaks or gets filtered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical runtime&lt;/td&gt;
&lt;td&gt;Fast, usually sub-second to a few seconds for a handful of probes&lt;/td&gt;
&lt;td&gt;Slower, since it waits on timeouts at each hop before moving to the next&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Common blocking issues&lt;/td&gt;
&lt;td&gt;Firewalls dropping ICMP Echo hide the host entirely, showing total silence&lt;/td&gt;
&lt;td&gt;Firewalls dropping Time Exceeded or Echo hide specific hops, shown as * * *&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="key-differences"&gt;Key Differences&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ping only confirms &lt;strong class="kw"&gt;reachability&lt;/strong&gt; to the final host and reports nothing about the path in between.&lt;/li&gt;
&lt;li&gt;Traceroute exploits &lt;strong class="kw"&gt;TTL expiry&lt;/strong&gt; to make each router along the route reveal itself.&lt;/li&gt;
&lt;li&gt;A ping reply comes from the destination alone; traceroute yields one reply per &lt;strong class="kw"&gt;hop&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Traceroute is inherently slower since it waits on timeouts at every intermediate &lt;strong class="kw"&gt;router&lt;/strong&gt;, not just the endpoint.&lt;/li&gt;
&lt;li&gt;When ICMP is filtered, ping just times out, while traceroute pinpoints the exact &lt;strong class="kw"&gt;blackhole&lt;/strong&gt; hop.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when-to-use-each"&gt;When to Use Each&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ping&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>