Skip to main content

Assignment 2: Diagnose a broken connection

Goal: apply the bottom-up troubleshooting model (Lesson 4) and the TCP/port concepts (Lesson 3) to figure out why a connection fails — and prove it with evidence, not guesses.

Where: from the Jumpbox. You'll probe a few real lab services and one deliberately-wrong target.

Tasks

  1. Confirm a working service. Pick a known-good service (e.g. Gitea on 10.100.100.2:3000). Show, with commands, that: the host is reachable, the port is open, and a full request succeeds. Note which command answered which question.
  2. Listening sockets. On a host you can access, list every TCP port that is listening, with the owning process. Identify at least two services and the port each uses.
  3. Refused vs timeout. Produce both failure modes on purpose and capture the output:
    • a connection refused (hit an IP that's up but a port where nothing listens), and
    • a timeout (hit an address that nothing answers — e.g. an unused address on the subnet, or a blocked port). Explain what each result tells you about where the problem is.
  4. Walk the stack. For one of your failures, write out the bottom-up checklist (local → routing → naming → transport → application) and mark how far up the stack you got before it broke.

Deliverable

A short markdown "incident note" with: the commands run, their output (trimmed), and for each failure a one-line conclusion ("the host is up but nothing is listening on port X, so the service is down/misconfigured").

Acceptance criteria — you're done when:

  • For the working service, you show three distinct checks (reachable / port open / full request) and say which tool answered which.
  • You list listening sockets with process names and correctly identify ≥2 services + ports.
  • You produced a genuine "connection refused" and a genuine "timeout", with output, and correctly explained the difference between them.
  • Your stack-walk identifies the layer at which the failure occurred (not just "it didn't work").
  • Every conclusion is supported by command output a grader could reproduce.

Hints

  • ping, traceroute, nc -vz host port, ss -tlnp, curl -v, getent hosts.
  • A port with nothing listening on a live host → refused. A silent/unused address or a firewall drop → timeout. Re-read Lesson 3 §3 and Lesson 4 §4 if those don't feel obvious yet.
  • Don't fabricate output — the whole point is evidence. If a step surprises you, that surprise is the lesson.