Signal9Signal9 — home
online
all lessons

LPIC-1 Internet Protocols, X11 Display Managers, and Accessibility

Intermediate30 min7 steps
What you'll learn
  • Tell TCP, UDP, and ICMP apart by their delivery guarantees and pick the right one for a given service
  • Map a service to its well-known port using /etc/services
  • Use a CIDR mask to decide whether a destination is local or must go through the gateway, in both IPv4 and IPv6
  • Name the three layers of the Linux GUI stack and switch between graphical and text login with the systemd default target
  • Identify the common Linux accessibility tools and what each one helps with
  1. Why protocols come in flavours

    Understand that the transport protocol is a deliberate trade-off, and that the exam tests whether you know which service uses which.

    Every conversation on a network runs over a transport protocol, and the protocol is a deliberate engineering choice — not an accident. The two you meet constantly are TCP and UDP, with ICMP off to the side for diagnostics.

    Think of TCP as a registered letter: the post office confirms delivery, re-sends anything lost, and guarantees the pages arrive in order. That reliability costs an exchange of paperwork up front. Think of UDP as a postcard: you drop it in the box and hope it lands. No confirmation, no re-send, no ordering — but also no overhead and no waiting.

    • TCP — connection-oriented and reliable. It opens a connection with a three-way handshake (SYN -> SYN-ACK -> ACK) before any data flows, then tracks, acknowledges, and re-transmits. Used where every byte must arrive: HTTP/HTTPS, SSH, SMTP.
    • UDP — connectionless and fire-and-forget. No handshake, no acknowledgements. Used where speed beats perfection or where one tiny request/reply doesn't justify a connection: DNS, DHCP, NTP, most streaming.
    • ICMP — not for carrying user data at all. It's the network's diagnostic and error channel: ping (echo request/reply) and the "time exceeded" messages that make traceroute work both ride on ICMP.

    Check yourself

    A service sends one small request and expects one small reply, retrying on its own if nothing comes back, with no need for ordering or a persistent connection. Is TCP or UDP the natural fit?

  2. Ports and /etc/services

    Look up which port belongs to which service using the local name database.

    An IP address gets a packet to the right host; a port number gets it to the right program on that host. Ports 0-1023 are the well-known ports, reserved for standard services so that anyone, anywhere, can reach https by knocking on 443 without arranging it first.

    Linux keeps a human-readable map of port -> service name in `/etc/services`. It's a plain text file, so you can grep it — and that's exactly how you settle a "which port is this on, and is it TCP or UDP?" question without memorising the whole list.

    grep -E '\b(ssh|http|https)\b' /etc/services | head
    ssh             22/tcp                          # SSH Remote Login Protocol
    ssh             22/udp
    http            80/tcp          www             # WorldWideWeb HTTP
    http            80/udp
    https           443/tcp                         # HTTP protocol over TLS/SSL
    https           443/udp
    -E
    Extended regular expressions, so the alternation (a|b|c) and word-boundary \b work without backslash-escaping the parentheses.
    \b...\b
    Word boundaries: match the whole word ssh, not ssh inside some longer token, to cut false hits.
    Each line reads name, then port/protocol, then aliases and a comment. So ssh 22/tcp means SSH lives on port 22 over TCP. Notice every service is listed for both tcp and udp — the file reserves the number on each protocol; it does not claim the service actively uses both. SSH in practice is TCP. Use the file to find the number, and your protocol knowledge to know which transport really matters.

    Check yourself

    Which file would you grep to find out that the SMTP service conventionally uses port 25?

  3. Addressing: local or gateway?

    Use the CIDR mask to decide whether a destination is on your subnet or has to be routed via the gateway.

    An IPv4 address is 32 bits, written as four dotted octets like 192.0.2.10. On its own that's just a number — the CIDR mask is what gives it meaning. A mask like /24 says "the first 24 bits are the network, the rest is the host." Everything sharing your network bits is on your subnet (a local hop); everything else has to be handed to the gateway to be routed onward.

    This is the single most useful decision a host makes for every packet: is the destination local, or do I send it to the gateway? The host answers it by masking both addresses and comparing the network parts.

    Work an example with the documentation-reserved range 192.0.2.0/24:

    • Your host: 192.0.2.10/24 -> network 192.0.2.0
    • Destination 192.0.2.200 -> network 192.0.2.0 -> same network -> deliver directly (local)
    • Destination 198.51.100.5 -> different network -> not local -> send to the gateway

    Now change only the mask. With 192.0.2.10/26, the network block is just 192.0.2.0-192.0.2.63. Suddenly 192.0.2.200 is outside your subnet and must go via the gateway. Same addresses, different mask, opposite routing decision.

    ip -br addr
    lo               UNKNOWN        127.0.0.1/8 ::1/128
    eth0             UP             192.0.2.10/24 fe80::5054:ff:fe12:3456/64
    -br
    Brief: one tidy line per interface (name, state, addresses) instead of the verbose multi-line default.
    addr
    The address object — show IP addresses assigned to interfaces (same as ip address show).
    eth0 carries 192.0.2.10/24 — a 32-bit IPv4 address with a /24 mask, so this host's subnet is 192.0.2.0 to 192.0.2.255. It also has fe80::.../64, an IPv6 link-local address (more on that next). The /24 here is precisely what the host uses to decide local-vs-gateway for every outbound packet.

    Check yourself

    Host 192.0.2.10/26 wants to reach 192.0.2.200. Does it deliver directly on the local subnet, or hand the packet to the gateway?

  4. IPv6 in one step

    Read an IPv6 address, including :: zero-compression and the fe80:: link-local block.

    IPv6 is 128 bits — four times the width of IPv4 — written as eight groups of four hex digits, like 2001:db8:0:0:0:0:0:1. Two shorthand rules keep that readable:

    • Drop leading zeros in each group: 0db8 becomes db8.
    • `::` collapses one run of all-zero groups to nothing. So 2001:db8:0:0:0:0:0:1 shortens to 2001:db8::1. The rule that catches people: `::` may appear only once in an address, because otherwise the number of zero-groups it stands for would be ambiguous.

    One block matters even on a machine with no internet: `fe80::/10` is link-local. Every IPv6 interface auto-configures an fe80:: address that is valid only on that single link — it is never routed off the local segment. It's the IPv6 equivalent of a name you only answer to inside your own house; it works for neighbours on the wire but means nothing to the outside world. (2001:db8::/32 is the reserved documentation range, the IPv6 cousin of 192.0.2.0/24.)

    ip -6 -br addr
    lo               UNKNOWN        ::1/128
    eth0             UP             2001:db8::a/64 fe80::5054:ff:fe12:3456/64
    -6
    Restrict output to the IPv6 address family, hiding IPv4 so the view is uncluttered.
    -br
    Brief one-line-per-interface format.
    eth0 shows two IPv6 addresses. 2001:db8::a/64 is a routable (here, documentation-range) address — note the :: standing in for the run of zero groups. fe80::5054:ff:fe12:3456/64 is the link-local address: present on essentially every IPv6 interface, usable only on this link, never forwarded by a router. ::1/128 on lo is the IPv6 loopback — the compressed form of 0:0:0:0:0:0:0:1.

    Check yourself

    An IPv6 address begins with fe80::. What is special about where it can be used?

  5. The Linux GUI stack

    Name the three layers of the graphical stack and tell the display server apart from the display manager.

    When a Linux machine shows a graphical desktop, three distinct layers are stacked up, and the exam loves to test whether you can keep them straight:

    1. Display server — the software that actually talks to the GPU, draws pixels, and handles mouse/keyboard input. The traditional one is X11 (the X Window System); the modern replacement is Wayland. This is the engine underneath everything graphical.

    2. Display manager — the graphical login screen. It starts at boot, presents the username/password prompt, and after you authenticate it launches your session. Common ones are GDM (GNOME), SDDM (KDE), and LightDM.

    3. Desktop environment — the windows, panels, and apps you see after login: GNOME, KDE Plasma, Xfce, and so on.

    Think of it as a theatre. The display server is the stage machinery and lighting rig that makes any scene possible. The display manager is the box office that checks your ticket and lets you in. The desktop environment is the play you actually watch. Different jobs, easy to confuse because you only ever see the last one.

    Whether a machine boots to that graphical login at all is decided by the systemd default target:

    • `graphical.target` — boot all the way to the display manager and a GUI login.
    • `multi-user.target` — boot to a full multi-user system but text console only, no GUI.

    You switch the default with systemctl set-default, and you can check the current setting with systemctl get-default.

    systemctl get-default
    graphical.target
    This host boots to `graphical.target` — it will start the display manager and present a GUI login. To make it boot to a text console instead you'd run sudo systemctl set-default multi-user.target and reboot. get-default is the read-only way to confirm which world you're in before changing anything.

    Check yourself

    Which systemd target makes a machine boot to a full multi-user system with no graphical login, just a text console?

  6. Accessibility tools

    Match each common accessibility feature to the barrier it removes.

    LPIC-1 expects you to recognise the standard Linux accessibility (a11y) features and what each one is for. They cluster by the barrier they address:

    • Vision — Orca is the screen reader: it reads the interface aloud and drives a Braille display. A magnifier enlarges part of the screen. High-contrast themes and large text help low-vision users.
    • Motor / dexterity — the on-screen keyboard lets someone type with a pointer instead of a physical keyboard. Several keyboard-assist modes help too:

    - Sticky keys — press modifiers (Ctrl, Alt, Shift) one at a time instead of holding several at once, so one-finger or one-hand users can still do Ctrl+Alt+Del.

    - Slow keys — a key must be held briefly before it registers, filtering out accidental brushes against keys.

    - Bounce keys — ignores a repeated keystroke that arrives too quickly, helping users with tremor who hit a key twice unintentionally.

    Know Orca by name (it's the one most asked) and be able to say what sticky/slow/bounce keys each do — they're easy to mix up.

    Check yourself

    Which Linux accessibility tool reads the screen contents aloud for blind and low-vision users?

  7. Try it in your live terminal

    Run these safe, read-only commands on the real sandbox to your right and read what they tell you.

    You have a real shell. Every command here is read-only — it inspects state and changes nothing. Run them in order and connect each result back to the concept it came from.

    grep -E '\b(ssh|http|https)\b' /etc/services | head
    Confirm the well-known ports from the local database: ssh on 22, http on 80, https on 443. Notice each appears for both tcp and udp — the file reserves the number, your protocol knowledge picks the transport.
    ip -br addr
    Read this host's IPv4 and IPv6 addresses with their CIDR masks. Find the /NN on your main interface — that mask is what decides local-vs-gateway for every packet you send.
    systemctl get-default
    See whether this machine boots to graphical.target (GUI login via a display manager) or multi-user.target (text console). Read-only — it reports the setting without changing it.
Recap
  • Pick the transport by its guarantee: TCP = registered letter (reliable, ordered, three-way handshake); UDP = postcard (connectionless, fire-and-forget); ICMP = diagnostics like ping. Don't assume TCP — DNS and DHCP are UDP.
  • /etc/services maps service names to well-known ports (0-1023). It tells you the conventional port, not what's actually listening.
  • The CIDR mask owns the local-vs-gateway decision — mask both addresses, compare the network parts. Same addresses can route differently under /24 vs /26.
  • IPv6 is 128-bit; :: compresses one run of zero-groups (only once), and fe80:: is link-local — on-link only, never routed.
  • The GUI stack is three layers: display server (X11/Wayland, the engine) -> display manager (GDM/SDDM/LightDM, the login screen) -> desktop environment. Switch GUI/text via the systemd default target.
  • Accessibility: Orca reads the screen; magnifier enlarges; on-screen keyboard replaces typing; sticky (modifiers in sequence), slow (hold to register), bounce (ignore fast repeats) assist keyboard use.
Concept -> what to remember
ConceptKey factExam trap to avoid
TCPConnection-oriented, reliable, 3-way handshakeIt's not the right tool for one-shot lookups
UDPConnectionless, fire-and-forgetDon't forget DNS/DHCP are UDP, not TCP
ICMPDiagnostics: ping, traceroute errorsIt carries no user data
/etc/servicesName -> well-known port/protocolIt's a lookup table, not a live scan
CIDR maskDecides local vs gatewayMisreading /24 vs /26 flips the answer
IPv6 ::Collapses one run of zero-groupsMay appear only once per address
fe80::Link-local, on-link onlyNever routed off the segment
Display serverX11 / Wayland — draws pixelsNot the login screen
Display managerGDM/SDDM/LightDM — GUI loginNot the same as the display server
systemd targetgraphical vs multi-usermulti-user = text login, no GUI
OrcaScreen reader (speech + Braille)A magnifier is a different tool