<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nc on K-Life Hack | Systems Architecture &amp; DevOps</title><link>https://klifehack.com/en/tags/nc/</link><description>Recent content in Nc on K-Life Hack | Systems Architecture &amp; DevOps</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 09 Oct 2026 10:46:33 +0900</lastBuildDate><atom:link href="https://klifehack.com/en/tags/nc/index.xml" rel="self" type="application/rss+xml"/><item><title>Troubleshooting the Boundary Area Where Ping Succeeds but TCP Connection Fails</title><link>https://klifehack.com/en/p/ping-ok-tcp-connection-failed-troubleshooting/</link><pubDate>Fri, 09 Oct 2026 10:46:33 +0900</pubDate><guid>https://klifehack.com/en/p/ping-ok-tcp-connection-failed-troubleshooting/</guid><description>&lt;p&gt;In infrastructure operations, the issue where &amp;ldquo;Ping succeeds, but connections to the server (such as SSH or HTTP) fail&amp;rdquo; frequently occurs. Relying solely on ICMP for L3-level reachability verification while neglecting the verification of L4 transport layer or L7 application layer leads to delayed incident recovery and incorrect root cause identification.&lt;/p&gt;&#10;&lt;p&gt;The ICMP echo test indicates a successful state with low latency and 0% packet loss.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ping 192.168.10.100&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PING 192.168.10.100 &lt;span style="color:#f92672"&gt;(&lt;/span&gt;192.168.10.100&lt;span style="color:#f92672"&gt;)&lt;/span&gt; 56&lt;span style="color:#f92672"&gt;(&lt;/span&gt;84&lt;span style="color:#f92672"&gt;)&lt;/span&gt; bytes of data.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;64&lt;/span&gt; bytes from 192.168.10.100: icmp_seq&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; ttl&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;64&lt;/span&gt; time&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0.3 ms&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;64&lt;/span&gt; bytes from 192.168.10.100: icmp_seq&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; ttl&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;64&lt;/span&gt; time&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0.2 ms&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, initiating an SSH session or HTTP request results in a connection failure.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ssh 192.168.10.100&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh: connect to host 192.168.10.100 port 22: Connection refused&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alternatively, a timeout occurs during the connection attempt.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ curl http://192.168.10.100:8080&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;7&lt;span style="color:#f92672"&gt;)&lt;/span&gt; Failed to connect to 192.168.10.100 port 8080: Connection timed out&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The assumption that &amp;ldquo;since Ping succeeded, the network is normal, and connection failure means the server itself is broken&amp;rdquo; is technically incorrect. This is because ICMP operates at the network layer (L3), whereas key application protocols such as SSH, HTTP, HTTPS, PostgreSQL, MySQL, and Redis rely on transport layer (L4) TCP sockets bound to specific port numbers.&lt;/p&gt;&#10;&lt;p&gt;This article systematically breaks down this boundary gap and establishes diagnostic methodologies centered on three core Linux utilities: &lt;code&gt;ss&lt;/code&gt;, &lt;code&gt;nc&lt;/code&gt;, and &lt;code&gt;tcpdump&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="1-network-layer-abstraction-and-service-mapping"&gt;1. Network Layer Abstraction and Service Mapping&#10;&lt;/h2&gt;&lt;p&gt;💡 To effectively identify communication bottlenecks, target services are mapped to each layer of the OSI reference model and transport mechanisms.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;ICMP&lt;/b&gt;: Used exclusively for diagnostic and control messaging such as &lt;code&gt;ping&lt;/code&gt; (no transport port exists).&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;SSH&lt;/b&gt;: TCP port &lt;code&gt;22&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;HTTP&lt;/b&gt;: TCP port &lt;code&gt;80&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;HTTPS&lt;/b&gt;: TCP port &lt;code&gt;443&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;PostgreSQL&lt;/b&gt;: TCP port &lt;code&gt;5432&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;MySQL / MariaDB&lt;/b&gt;: TCP port &lt;code&gt;3306&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Redis&lt;/b&gt;: TCP port &lt;code&gt;6379&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Because ICMP operates independently of L4 TCP listening sockets, receiving a response to an ICMP Echo Request provides no guarantee that a TCP port is open or reachable.&lt;/p&gt;&#10;&lt;h2 id="2-low-layer-mechanics-of-ping"&gt;2. Low-Layer Mechanics of &lt;code&gt;ping&lt;/code&gt;&#10;&lt;/h2&gt;&lt;p&gt;Executing &lt;code&gt;ping 192.168.10.100&lt;/code&gt; sends an &lt;b&gt;ICMP Echo Request&lt;/b&gt; packet (Type 8) to the destination host, which returns an &lt;b&gt;ICMP Echo Reply&lt;/b&gt; packet (Type 0).&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+------------------------+ +------------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| Client: 192.168.10.50 | | Server: 192.168.10.100 |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+------------------------+ +------------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |------------ ICMP Echo Request (Type 8) -------------&amp;amp;gt;|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |&amp;amp;lt;----------- ICMP Echo Reply (Type 0) ----------------|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A successful Ping merely confirms that the path from the client through local routing, gateways, the physical network, and the target IP stack back to the ICMP reply is functional. It cannot verify whether firewall rules allow TCP frames or whether an application daemon on the host is actively processing sockets.&lt;/p&gt;&#10;&lt;h2 id="3-structure-of-the-tcp-3-way-handshake"&gt;3. Structure of the TCP 3-Way Handshake&#10;&lt;/h2&gt;&lt;p&gt;When initiating a TCP-based service connection, the operating system kernel must first establish a stateful connection via the &lt;b&gt;TCP 3-Way Handshake&lt;/b&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Client (192.168.10.50) Server (192.168.10.100:22)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |----------------------- 1. SYN ------------------------------&amp;amp;gt;|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |&amp;amp;lt;------------------- 2. SYN-ACK ------------------------------|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |----------------------- 3. ACK ------------------------------&amp;amp;gt;|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[ ESTABLISHED ] [ ESTABLISHED ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;b&gt;SYN&lt;/b&gt;: The client sends a TCP frame with the &lt;code&gt;SYN&lt;/code&gt; flag set to request connection initiation.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;SYN-ACK&lt;/b&gt;: Upon receiving the &lt;code&gt;SYN&lt;/code&gt;, the server checks the socket listening on port &lt;code&gt;22&lt;/code&gt;, allocates a connection state buffer, and responds with &lt;code&gt;SYN-ACK&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;ACK&lt;/b&gt;: The client responds with &lt;code&gt;ACK&lt;/code&gt;, and both endpoints transition to the &lt;code&gt;ESTABLISHED&lt;/code&gt; state.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;For application protocols to function, this L4 sequence must complete successfully.&lt;/p&gt;&#10;&lt;h2 id="4-diagnosing-ping-succeeds--tcp-connection-fails"&gt;4. Diagnosing &amp;ldquo;Ping Succeeds + TCP Connection Fails&amp;rdquo;&#10;&lt;/h2&gt;&lt;p&gt;Define the initial diagnostic state.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ping 192.168.10.100&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Success (0% packet loss)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Failure&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This discrepancy allows immediate narrowing down of the failure domain. Functional ICMP indicates that L3 routing and physical links are operational, while TCP failure indicates an issue with L4 sockets, firewalls, or service daemons.&lt;/p&gt;&#10;&lt;h2 id="5-transport-layer-probing-with-nc-netcat"&gt;5. Transport Layer Probing with &lt;code&gt;nc&lt;/code&gt; (Netcat)&#10;&lt;/h2&gt;&lt;p&gt;Netcat (&lt;code&gt;nc&lt;/code&gt;) functions as a TCP and UDP connection analyzer. Its primary use case in production environments is verifying raw TCP reachability to a specific socket address.&lt;/p&gt;&#10;&lt;p&gt;To run Netcat, specify options for port scanning.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;-z`: Zero-I/O mode (scans for listening daemons without sending payload data).&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;-v&lt;/code&gt;: Verbose output mode.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Determine network status from connection test execution results.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;Handshake Success&lt;/b&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Connection to 192.168.10.100 22 port [tcp/ssh] succeeded!&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;Failure Pattern A&lt;/b&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nc: connect to 192.168.10.100 port 22 failed: Connection refused&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;Failure Pattern B&lt;/b&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nc: connect to 192.168.10.100 port 22 failed: Connection timed out&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Understanding the distinction between &lt;b&gt;Connection Refused&lt;/b&gt; and &lt;b&gt;Connection Timed Out&lt;/b&gt; is critical in identifying root causes.&lt;/p&gt;&#10;&lt;h2 id="6-mechanisms-of-connection-refused-and-connection-timeout"&gt;6. Mechanisms of Connection Refused and Connection Timeout&#10;&lt;/h2&gt;&lt;h3 id="mechanics-of-connection-refused"&gt;Mechanics of Connection Refused&#10;&lt;/h3&gt;&lt;p&gt;⚠️ A &lt;code&gt;Connection refused&lt;/code&gt; error indicates that the client&amp;rsquo;s &lt;code&gt;SYN&lt;/code&gt; packet reached the destination host&amp;rsquo;s kernel, but the host explicitly rejected the connection and returned a TCP &lt;b&gt;Reset (&lt;code&gt;RST&lt;/code&gt;)&lt;/b&gt; frame.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Client Server&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |--------------------------- SYN ----------------------------&amp;amp;gt;| (Destination host reached)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | (No listening process)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |&amp;amp;lt;------------------------ TCP RST ---------------------------|&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="primary-causes"&gt;Primary Causes:&#10;&lt;/h4&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;b&gt;Service Daemon Stopped&lt;/b&gt;: The process (&lt;code&gt;sshd&lt;/code&gt;, &lt;code&gt;nginx&lt;/code&gt;, &lt;code&gt;mysqld&lt;/code&gt;, etc.) is not running.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Incorrect Service Port&lt;/b&gt;: The application is listening on a non-default port (e.g., &lt;code&gt;2222&lt;/code&gt; instead of &lt;code&gt;22&lt;/code&gt;).&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Bound Interface Mismatch&lt;/b&gt;: The daemon is bound strictly to &lt;code&gt;127.0.0.1&lt;/code&gt; rather than &lt;code&gt;0.0.0.0&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Active Packet Filtering&lt;/b&gt;: The localhost firewall is configured to explicitly return TCP Reset packets (REJECT) rather than dropping them (DROP).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="mechanics-of-connection-timeout"&gt;Mechanics of Connection Timeout&#10;&lt;/h3&gt;&lt;p&gt;A &lt;code&gt;Connection timed out&lt;/code&gt; error occurs when the client sends a &lt;code&gt;SYN&lt;/code&gt; packet, but &lt;b&gt;no response whatsoever is returned&lt;/b&gt; before the socket timeout threshold expires.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Client Network / Firewall / Target&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |--------------------------- SYN ----------------------------&amp;amp;gt;|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | ===&amp;amp;gt; [ Drop / Block ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | (No Response) |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | ... Timeout ... |&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="primary-causes-1"&gt;Primary Causes:&#10;&lt;/h4&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;b&gt;Network Security Drop&lt;/b&gt;: Cloud security groups, network ACLs, or hardware firewalls are silently dropping inbound traffic.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Host-Level Firewall Drop&lt;/b&gt;: &lt;code&gt;iptables&lt;/code&gt;, &lt;code&gt;firewalld&lt;/code&gt;, or &lt;code&gt;nftables&lt;/code&gt; are configured with a &lt;code&gt;DROP&lt;/code&gt; action.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Routing Failure&lt;/b&gt;: Incorrect default routing or missing static routes at intermediate network switches or routers.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Asymmetric Routing / Return Path Failure&lt;/b&gt;: The server receives the &lt;code&gt;SYN&lt;/code&gt; and sends a &lt;code&gt;SYN-ACK&lt;/code&gt;, but the packet is dropped or misrouted on the return path.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="7-inspecting-local-sockets-with-ss"&gt;7. Inspecting Local Sockets with &lt;code&gt;ss&lt;/code&gt;&#10;&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;ss&lt;/code&gt; (Socket Statistics) utility inspects active internal sockets on Linux platforms and serves as a modern replacement for the legacy &lt;code&gt;netstat&lt;/code&gt; tool.&lt;/p&gt;&#10;&lt;p&gt;Run the diagnostic command to check socket state.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -lntp&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="flag-specifications"&gt;Flag Specifications:&#10;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;-l&lt;/code&gt;: Displays only listening (&lt;code&gt;LISTEN&lt;/code&gt;) sockets.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;-n&lt;/code&gt;: Displays numeric addresses and ports (prevents overhead from DNS and service name resolution).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;-t&lt;/code&gt;: Displays TCP sockets.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;-p&lt;/code&gt;: Displays process IDs and names associated with sockets (requires &lt;code&gt;root&lt;/code&gt; or &lt;code&gt;sudo&lt;/code&gt; privileges).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Executing the command outputs socket information.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;State Recv-Q Send-Q Local Address:Port Peer Address:Port Process&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:((&amp;#34;sshd&amp;#34;,pid=1234,fd=3))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:((&amp;#34;nginx&amp;#34;,pid=1500,fd=6))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN 0 128 127.0.0.1:8080 0.0.0.0:* users:((&amp;#34;java&amp;#34;,pid=2000,fd=20))&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="8-analyzing-bind-addresses-127001-vs-0000"&gt;8. Analyzing Bind Addresses: &lt;code&gt;127.0.0.1&lt;/code&gt; vs &lt;code&gt;0.0.0.0&lt;/code&gt;&#10;&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;Local Address:Port&lt;/code&gt; bind configuration dictates external reachability.&lt;/p&gt;&#10;&lt;h3 id="loopback-isolation-case-1270018080"&gt;Loopback Isolation Case (&lt;code&gt;127.0.0.1:8080&lt;/code&gt;)&#10;&lt;/h3&gt;&lt;p&gt;Indicates a state where the socket is bound exclusively to the loopback address.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN 0 128 127.0.0.1:8080 0.0.0.0:*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The application process (&lt;code&gt;java&lt;/code&gt;) is bound exclusively to the &lt;b&gt;loopback interface (&lt;code&gt;lo&lt;/code&gt;)&lt;/b&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[ External Client ] [ Target Server ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 192.168.10.50 192.168.10.100&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |--- HTTP request to 192.168.10.100:8080 ---------&amp;amp;gt;| [ Physical Interface ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | (Blocked / No socket)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | [ Loopback Interface ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | 127.0.0.1:8080 (Java Daemon)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Local Verification&lt;/b&gt;: Executing &lt;code&gt;curl http://127.0.0.1:8080&lt;/code&gt; on the server succeeds.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;Remote Verification&lt;/b&gt;: Executing &lt;code&gt;curl http://192.168.10.100:8080&lt;/code&gt; from an external client fails.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="wildcard-ipv4-bind-00008080"&gt;Wildcard IPv4 Bind (&lt;code&gt;0.0.0.0:8080&lt;/code&gt;)&#10;&lt;/h3&gt;&lt;p&gt;Indicates a state where the socket is bound across all interfaces.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN 0 128 0.0.0.0:8080 0.0.0.0:*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The socket accepts inbound TCP traffic through &lt;b&gt;all active IPv4 network interfaces&lt;/b&gt; assigned to the host (e.g., &lt;code&gt;ens160&lt;/code&gt; with IP &lt;code&gt;192.168.10.100&lt;/code&gt;). If permitted by firewalls, connections from external clients are possible.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+-------------------------------------------------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| Server: 192.168.10.100 |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| Interface ens160 [ 192.168.10.100 ] &amp;amp;lt;--- [ External Request ] |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| v |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| Service bound to 0.0.0.0:8080 (Listening on all interfaces) |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+-------------------------------------------------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="9-real-world-troubleshooting-cases"&gt;9. Real-World Troubleshooting Cases&#10;&lt;/h2&gt;&lt;h3 id="case-1-ping-succeeds-but-ssh-fails-connection-refused"&gt;Case 1: Ping Succeeds, but SSH Fails (&lt;code&gt;Connection Refused&lt;/code&gt;)&#10;&lt;/h3&gt;&lt;h4 id="environment-configuration"&gt;Environment Configuration:&#10;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;Client&lt;/b&gt;: &lt;code&gt;192.168.10.50&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Server&lt;/b&gt;: &lt;code&gt;192.168.10.100&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Target Service&lt;/b&gt;: SSH (TCP port &lt;code&gt;22&lt;/code&gt;)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="step-1-client-side-diagnostics"&gt;Step 1: Client-Side Diagnostics&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ping 192.168.10.100&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Result: 64 bytes from 192.168.10.100: icmp_seq=1 ttl=64 time=0.3 ms (Success)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Result: nc: connect to 192.168.10.100 port 22 failed: Connection refused&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="step-2-server-side-socket-inspection"&gt;Step 2: Server-Side Socket Inspection&#10;&lt;/h4&gt;&lt;p&gt;Log in to the server&amp;rsquo;s local console or out-of-band (OOB) management interface.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -lntp&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Output result:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:((&amp;#34;nginx&amp;#34;,pid=1500,fd=6))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;TCP port 22 is absent from the listener table.&lt;/em&gt;&lt;/p&gt;&#10;&lt;h4 id="step-3-verifying-service-state-and-resolution"&gt;Step 3: Verifying Service State and Resolution&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo systemctl status sshd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Output: Active: inactive (dead)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo systemctl start sshd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo systemctl enable sshd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -lntp | grep &lt;span style="color:#e6db74"&gt;&amp;#39;:22&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Output: LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:((&amp;#34;sshd&amp;#34;,pid=3102,fd=3))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Re-executing &lt;code&gt;nc -zv 192.168.10.100 22&lt;/code&gt; on the client side results in a successful connection.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="case-2-process-running-but-external-access-fails-bind-mismatch"&gt;Case 2: Process Running, but External Access Fails (&lt;code&gt;Bind Mismatch&lt;/code&gt;)&#10;&lt;/h3&gt;&lt;h4 id="diagnostic-state"&gt;Diagnostic State:&#10;&lt;/h4&gt;&lt;p&gt;Executing &lt;code&gt;ss -lntp&lt;/code&gt; on the application server yields the socket state.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN 0 128 127.0.0.1:8080 0.0.0.0:* users:((&amp;#34;node&amp;#34;,pid=4211,fd=18))&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="reachability-testing"&gt;Reachability Testing:&#10;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;From Target Server&lt;/b&gt;: &lt;code&gt;curl http://127.0.0.1:8080&lt;/code&gt; $\longrightarrow$ &lt;b&gt;200 OK&lt;/b&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;From Remote Client&lt;/b&gt;: &lt;code&gt;curl http://192.168.10.100:8080&lt;/code&gt; $\longrightarrow$ &lt;b&gt;Connection Refused&lt;/b&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="diagnostics-and-solution"&gt;Diagnostics and Solution:&#10;&lt;/h4&gt;&lt;p&gt;The application (Node.js, Spring Boot, Nginx, etc.) configuration is restricted to &lt;code&gt;localhost&lt;/code&gt;. Modify the host configuration (e.g., &lt;code&gt;server.host = 0.0.0.0&lt;/code&gt; or &lt;code&gt;LISTEN 0.0.0.0:8080&lt;/code&gt;) and restart the service to expose the socket to external interfaces.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="case-3-service-bound-but-external-connection-times-out"&gt;Case 3: Service Bound, but External Connection Times Out&#10;&lt;/h3&gt;&lt;h4 id="diagnostic-state-1"&gt;Diagnostic State:&#10;&lt;/h4&gt;&lt;p&gt;The server&amp;rsquo;s socket table is properly exposed.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -lntp | grep &lt;span style="color:#e6db74"&gt;&amp;#39;:8080&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;128&lt;/span&gt; 0.0.0.0:8080 0.0.0.0:* users:&lt;span style="color:#f92672"&gt;((&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;java&amp;#34;&lt;/span&gt;,pid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;8820,fd&lt;span style="color:#f92672"&gt;=&lt;/span&gt;7&lt;span style="color:#f92672"&gt;))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, client-side execution fails.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nc: connect to 192.168.10.100 port &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt; failed: Connection timed out&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="firewall-inspection"&gt;Firewall Inspection:&#10;&lt;/h4&gt;&lt;p&gt;Because the output is &lt;code&gt;Timeout&lt;/code&gt; rather than &lt;code&gt;Refused&lt;/code&gt;, an inline network device or host firewall rule is silently dropping packets.&lt;/p&gt;&#10;&lt;p&gt;Inspect localhost rules.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo firewall-cmd --list-all&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Check if &amp;#39;8080/tcp&amp;#39; exists in the services and ports section&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo nft list ruleset&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If ICMP is globally permitted in &lt;code&gt;firewalld&lt;/code&gt; but port 8080 is excluded, &lt;code&gt;ping&lt;/code&gt; passes through while L4 TCP traffic to port 8080 is dropped.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Client (192.168.10.50) Server (192.168.10.100)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |----------------------- TCP SYN ----------------------------&amp;amp;gt;|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | [ Host Firewall (nftables) ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | [ Action: DROP Port 8080 ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | &amp;amp;lt;=== Timeout (SYN-ACK is not sent) =========================|&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="10-deep-packet-diagnostics-with-tcpdump"&gt;10. Deep Packet Diagnostics with &lt;code&gt;tcpdump&lt;/code&gt;&#10;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nc&lt;/code&gt; reports connection results, and &lt;code&gt;ss&lt;/code&gt; indicates socket listening state. However, &lt;code&gt;tcpdump&lt;/code&gt; captures actual packet movement and reveals state transitions at the frame level.&lt;/p&gt;&#10;&lt;p&gt;Run packet capture on the target server.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo tcpdump -nn -i ens160 tcp port &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;-n`: Do not resolve hostnames.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;-nn&lt;/code&gt;: Do not resolve hostnames or port names (displays numeric IPs and ports).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;-i ens160&lt;/code&gt;: Monitors traffic on target network interface &lt;code&gt;ens160&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;tcp port 8080&lt;/code&gt;: Filters strictly TCP packets passing through port 8080.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="11-packet-pattern-analysis-with-tcpdump"&gt;11. Packet Pattern Analysis with &lt;code&gt;tcpdump&lt;/code&gt;&#10;&lt;/h2&gt;&lt;h3 id="scenario-a-normal-tcp-3-way-handshake"&gt;Scenario A: Normal TCP 3-Way Handshake&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.001 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [S], seq 1001&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.002 IP 192.168.10.100.8080 &amp;amp;gt; 192.168.10.50.52344: Flags [S.], seq 2001, ack 1002&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.003 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [.], seq 1002, ack 2002&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Flags [S]`: Initial SYN frame from client.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Flags [S.]&lt;/code&gt;: SYN-ACK response from server.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Flags [.]&lt;/code&gt;: ACK frame from client.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Diagnosis&lt;/b&gt;: L4 handshake completed and connection established (&lt;code&gt;ESTABLISHED&lt;/code&gt;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="scenario-b-sustained-unanswered-inbound-syn"&gt;Scenario B: Sustained Unanswered Inbound SYN&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.001 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [S], seq 1001&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:04.005 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [S], seq 1001&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:10.009 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [S], seq 1001&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Observation&lt;/b&gt;: The client is retransmitting TCP &lt;code&gt;SYN&lt;/code&gt;. The server&amp;rsquo;s interface receives the packet, but no outbound &lt;code&gt;SYN-ACK&lt;/code&gt; (&lt;code&gt;[S.]&lt;/code&gt;) is sent.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;Diagnosis&lt;/b&gt;: A host-level security mechanism (&lt;code&gt;iptables&lt;/code&gt;, &lt;code&gt;nftables&lt;/code&gt;, &lt;code&gt;SELinux&lt;/code&gt;, or kernel-level IP filtering) drops the packet immediately upon ingress at the network interface layer.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="scenario-c-server-sends-syn-ack-but-client-retransmits-syn"&gt;Scenario C: Server Sends SYN-ACK, but Client Retransmits SYN&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.001 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [S]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.002 IP 192.168.10.100.8080 &amp;amp;gt; 192.168.10.50.52344: Flags [S.]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:04.005 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [S]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Observation&lt;/b&gt;: The server processes inbound &lt;code&gt;SYN&lt;/code&gt; and transmits &lt;code&gt;SYN-ACK&lt;/code&gt;, but the client continuously sends &lt;code&gt;SYN&lt;/code&gt; frames as if no response was received.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;Diagnosis&lt;/b&gt;: A &lt;b&gt;return path routing failure&lt;/b&gt; between server and client, or egress firewall filtering toward the source direction, is occurring.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Client (192.168.10.50) Server (192.168.10.100)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |----------------------- 1. SYN -----------------------------&amp;amp;gt;|&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | X &amp;amp;lt;=== [ Return routing failure / Egress block ] ---------| (Sending SYN-ACK)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Primary causes:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Misconfigured local default gateway on the target server.&lt;/li&gt;&#10;&lt;li&gt;Return path drops due to asymmetric routing policies.&lt;/li&gt;&#10;&lt;li&gt;Loss of NAT table state.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="scenario-d-immediate-reset-rst-immediately-following-syn"&gt;Scenario D: Immediate Reset (&lt;code&gt;RST&lt;/code&gt; Immediately Following &lt;code&gt;SYN&lt;/code&gt;)&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.001 IP 192.168.10.50.52344 &amp;amp;gt; 192.168.10.100.8080: Flags [S]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10:00:01.001 IP 192.168.10.100.8080 &amp;amp;gt; 192.168.10.50.52344: Flags [R.]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Observation&lt;/b&gt;: The server immediately returns a reset frame (&lt;code&gt;[R.]&lt;/code&gt;).&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;Diagnosis&lt;/b&gt;: The packet passed through the host firewall, but the kernel found no process listening on TCP port 8080. Verify daemon status with &lt;code&gt;ss -lntp&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="12-tracking-socket-state-via-kernel-counters"&gt;12. Tracking Socket State via Kernel Counters&#10;&lt;/h2&gt;&lt;p&gt;Run &lt;code&gt;ss -ant&lt;/code&gt; to review connection state allocation across active sockets.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -ant&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;State Recv-Q Send-Q Local Address:Port Peer Address:Port&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LISTEN &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;128&lt;/span&gt; 0.0.0.0:8080 0.0.0.0:*&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ESTAB &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 192.168.10.100:8080 192.168.10.50:52344&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SYN-RECV &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 192.168.10.100:8080 192.168.10.50:52345&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="critical-socket-states-and-anomalies"&gt;Critical Socket States and Anomalies:&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;Accumulation of &lt;code&gt;SYN-SENT&lt;/code&gt; (Client Side)&lt;/b&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ss -ant state syn-sent&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Meaning*: The client application transmitted a &lt;code&gt;SYN&lt;/code&gt; frame but has not received a &lt;code&gt;SYN-ACK&lt;/code&gt;. Indicates outbound blocking or drop along the path.&lt;/p&gt;&#10;&lt;ol start="2"&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;Accumulation of &lt;code&gt;SYN-RECV&lt;/code&gt; (Server Side)&lt;/b&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ss -ant state syn-recv&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Meaning*: The server received &lt;code&gt;SYN&lt;/code&gt; and transmitted &lt;code&gt;SYN-ACK&lt;/code&gt;, but remains stalled waiting for the final &lt;code&gt;ACK&lt;/code&gt; from the client. Indicates inbound blocking on the client side, asymmetric routing, or a SYN flood attack.&lt;/p&gt;&#10;&lt;h2 id="13-upper-layer-diagnostics-ping-and-tcp-succeed-but-application-fails"&gt;13. Upper-Layer Diagnostics: Ping and TCP Succeed, but Application Fails&#10;&lt;/h2&gt;&lt;p&gt;Define a further elevated failure state.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ping 192.168.10.100&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Success (L3 OK)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Success (L4 TCP connection OK)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ curl http://192.168.10.100:8080/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Failure / Error / HTTP 5xx / No response&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This scenario proves that the network layer (L3) and transport layer (L4) are fully operational.&lt;/p&gt;&#10;&lt;h3 id="application-layer-debugging-with-curl"&gt;Application Layer Debugging with &lt;code&gt;curl&lt;/code&gt;&#10;&lt;/h3&gt;&lt;p&gt;Execute verbose HTTP operations to capture handshake and protocol semantics.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ curl -v http://192.168.10.100:8080/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example of a verbose execution trace:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;* Trying 192.168.10.100:8080...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;* Connected to 192.168.10.100 (192.168.10.100) port 8080 (#0)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;gt; GET / HTTP/1.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;gt; Host: 192.168.10.100:8080&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;gt; User-Agent: curl/7.76.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;gt; Accept: */*&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;lt; HTTP/1.1 504 Gateway Timeout&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;lt; Server: nginx/1.20.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;lt; Date: Mon, 10 Nov 2025 10:00:00 GMT&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;amp;lt; Content-Type: text/html&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="primary-cause-categories-for-l7-failures"&gt;Primary Cause Categories for L7 Failures:&#10;&lt;/h4&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;b&gt;Reverse Proxy Upstream Timeout&lt;/b&gt;: Nginx accepts connections on port 8080, but fails to reach the backend running locally (e.g., Node/Java app on &lt;code&gt;127.0.0.1:8000&lt;/code&gt;), returning HTTP &lt;code&gt;504 Gateway Timeout&lt;/code&gt; or &lt;code&gt;502 Bad Gateway&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;HTTP Host Header Rejection&lt;/b&gt;: Application virtual host filters drop requests lacking a valid &lt;code&gt;Host:&lt;/code&gt; request header.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Application Thread Lock&lt;/b&gt;: Database connection pool exhaustion or internal deadlocks prevent the application layer from transmitting payload frames despite an established L4 socket handshake.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;TLS/SSL Handshake Failure&lt;/b&gt;: Cipher suite mismatches, expired certificates, or SNI misconfigurations cause connection termination immediately following TCP initialization on port 443.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="14-caveats-in-udp-protocol-diagnostics"&gt;14. Caveats in UDP Protocol Diagnostics&#10;&lt;/h2&gt;&lt;p&gt;Unlike TCP, &lt;b&gt;UDP is connectionless&lt;/b&gt;. There are no setup flags (&lt;code&gt;SYN&lt;/code&gt;, &lt;code&gt;ACK&lt;/code&gt;) or state machine checks.&lt;/p&gt;&#10;&lt;p&gt;Testing UDP reachability using &lt;code&gt;nc&lt;/code&gt; requires the &lt;code&gt;-u&lt;/code&gt; flag.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zvu 192.168.10.100 &lt;span style="color:#ae81ff"&gt;53&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="diagnostic-challenges"&gt;Diagnostic Challenges:&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;UDP scanners transmit 0-byte packets. If no &lt;code&gt;ICMP Port Unreachable&lt;/code&gt; frame returns, &lt;code&gt;nc&lt;/code&gt; determines the port to be &amp;ldquo;open&amp;rdquo; or &amp;ldquo;open|filtered&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Due to a high rate of false positives, reliable UDP testing requires protocol-specific query tools (e.g., &lt;code&gt;dig&lt;/code&gt; for DNS UDP 53, &lt;code&gt;snmpwalk&lt;/code&gt; for SNMP UDP 161) alongside active packet capture.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo tcpdump -nn -i ens160 udp port &lt;span style="color:#ae81ff"&gt;53&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="15-tool-matrix-for-systems-engineers"&gt;15. Tool Matrix for Systems Engineers&#10;&lt;/h2&gt;&lt;p&gt;Integrate these diagnostic tools into a unified operational workflow.&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 style="text-align: left"&gt;Utility&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Target Layer&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Core Functionality&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Primary Diagnostic Value&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 style="text-align: left"&gt;&lt;b&gt;&lt;code&gt;ping&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;L3 (Network)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Raw ICMP reachability and link latency evaluation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Verification of basic IP routing and physical connectivity&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 style="text-align: left"&gt;&lt;b&gt;&lt;code&gt;nc&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;L4 (Transport)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;End-to-end TCP/UDP socket availability testing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Differentiation between &lt;code&gt;Connection Refused&lt;/code&gt; and &lt;code&gt;Timeout&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 style="text-align: left"&gt;&lt;b&gt;&lt;code&gt;ss&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Host Kernel Socket&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Local interface bind and socket state inspection&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Confirmation that daemon processes are properly started and bound&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 style="text-align: left"&gt;&lt;b&gt;&lt;code&gt;tcpdump&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Wire Protocol&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Monitoring TCP frames on raw network interfaces&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Failure location identification via sequence flag (&lt;code&gt;SYN&lt;/code&gt;, &lt;code&gt;SYN-ACK&lt;/code&gt;, &lt;code&gt;RST&lt;/code&gt;) analysis&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 style="text-align: left"&gt;&lt;b&gt;&lt;code&gt;curl&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;L7 (Application)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;HTTP/S application protocol transaction validation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Identification of web server errors, proxy misconfigurations, and backend timeouts&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="16-systematic-troubleshooting-flow"&gt;16. Systematic Troubleshooting Flow&#10;&lt;/h2&gt;&lt;p&gt;🛠️ When encountering an event where &amp;ldquo;Ping succeeds, but service access fails&amp;rdquo;, proceed with diagnostics according to the following logical flow.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[ Event Occurred: Ping is successful, but service access fails ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Execute: nc -zv &amp;lt;server_ip&amp;gt; &amp;lt;port&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; +-----------------------------------+-----------------------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v v v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ Connection Refused ] [ Connection Timed Out ] [ Succeeded ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v v v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Log in to target server Run packet capture on server: L3/L4 layers are normal.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Execute: ss -lntp tcpdump -nn -i &amp;lt;nic&amp;gt; port &amp;lt;port&amp;gt; Verify L7 application layer.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | Execute: curl -v http://&amp;lt;ip&amp;gt;:&amp;lt;port&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; +---------------+ +---------------+ |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | | v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v v v v Check app/proxy logs:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ Port not listed ] [ Bound to 127.0.0.1 ] [ SYN not reached ] [ SYN reached, no SYN-ACK ] - Systemd status&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | | - Nginx / App exceptions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v v v v - DB connection pool&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Start daemon: Fix app config Check network path: Check host firewall:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; systemctl start 0.0.0.0:&amp;lt;port&amp;gt; - Network FW - firewall-cmd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;service&amp;gt; Restart app - Security Group - nftables rules&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - Router settings - Kernel IP filtering&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="17-operational-cli-quick-reference"&gt;17. Operational CLI Quick Reference&#10;&lt;/h2&gt;&lt;h3 id="l3-diagnostic-commands"&gt;L3 Diagnostic Commands:&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Send 4 ICMP packets to test link reachability&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ping -c &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; 192.168.10.100&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="l4-socket-probing-commands-nc"&gt;L4 Socket Probing Commands (&lt;code&gt;nc&lt;/code&gt;):&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Investigate standard management and web service TCP ports&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;443&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zv 192.168.10.100 &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Investigate UDP domain name resolution service&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zvu 192.168.10.100 &lt;span style="color:#ae81ff"&gt;53&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="local-socket-inspection-commands-ss"&gt;Local Socket Inspection Commands (&lt;code&gt;ss&lt;/code&gt;):&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# List all active listening TCP ports including process details&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -lntp&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Filter for a specific target socket listener&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -lntp | grep &lt;span style="color:#e6db74"&gt;&amp;#39;:8080&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Display all numeric TCP connections regardless of state&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -ant&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Isolate connections in SYN-SENT or SYN-RECV state&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -ant state syn-sent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo ss -ant state syn-recv&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="packet-analysis-commands-tcpdump"&gt;Packet Analysis Commands (&lt;code&gt;tcpdump&lt;/code&gt;):&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Monitor TCP port 8080 on a specific interface&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo tcpdump -nn -i ens160 tcp port &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Capture raw SYN connection initialization requests globally&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo tcpdump -nn -i ens160 &lt;span style="color:#e6db74"&gt;&amp;#39;tcp[tcpflags] &amp;amp;amp; tcp-syn != 0&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Capture all traffic associated with a specific host IP address&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo tcpdump -nn -i ens160 host 192.168.10.50&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Multiplex tracking of ICMP control packets and target TCP application traffic&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo tcpdump -nn -i ens160 &lt;span style="color:#e6db74"&gt;&amp;#39;tcp port 8080 or icmp&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="host-firewall-operations-firewalld--nftables"&gt;Host Firewall Operations (&lt;code&gt;firewalld&lt;/code&gt; / &lt;code&gt;nftables&lt;/code&gt;):&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Inspect current firewalld configuration&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo firewall-cmd --list-all&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Permanently add permission for TCP 8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo firewall-cmd --add-port&lt;span style="color:#f92672"&gt;=&lt;/span&gt;8080/tcp --permanent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo firewall-cmd --reload&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Inspect low-level nftables ruleset bindings&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo nft list ruleset&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="lessons-learned"&gt;Lessons Learned&#10;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;b&gt;Ping Success Does Not Guarantee Service Health&lt;/b&gt;: ICMP Echo replies prove only Layer 3 interface reachability and routing functionality. Layer 4 port states and Layer 7 application functionality are not verified.&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Accurate Error Message Interpretation&lt;/b&gt;:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Connection refused&lt;/code&gt; indicates that the packet reached the host, but there is no active listener, or it was explicitly rejected with a &lt;code&gt;RST&lt;/code&gt;. Check &lt;b&gt;host socket bindings&lt;/b&gt; (&lt;code&gt;ss -lntp&lt;/code&gt;).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Connection timed out&lt;/code&gt; indicates that frames were lost on the forward or return path. Check &lt;b&gt;firewalls, security groups, and routing loops&lt;/b&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="3"&gt;&#10;&lt;li&gt;&lt;b&gt;Packet Path Tracing via Wire Capture&lt;/b&gt;: Use &lt;code&gt;tcpdump&lt;/code&gt; to answer the fundamental question: &amp;ldquo;How far into the infrastructure stack did the initial SYN frame reach?&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;Step-by-Step Layer Isolation&lt;/b&gt;: Sequentially test from L3 (&lt;code&gt;ping&lt;/code&gt;) to L4 (&lt;code&gt;nc&lt;/code&gt;), inspect local listening states (&lt;code&gt;ss&lt;/code&gt;), verify raw frames on the wire (&lt;code&gt;tcpdump&lt;/code&gt;), and finally validate at L7 (&lt;code&gt;curl&lt;/code&gt;).&lt;/service&gt;&lt;/port&gt;&lt;/port&gt;&lt;/ip&gt;&lt;/port&gt;&lt;/nic&gt;&lt;/port&gt;&amp;lt;/server_ip&amp;gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;</description></item></channel></rss>