Usenet is a global distributed discussion system invented in 1980 — a collection of thousands of newsgroups (discussion forums) organised by topic. NNTP (Network News Transfer Protocol, RFC 3977) is the protocol clients use to read and post Usenet articles. NNTP runs on TCP port 119 (563 for SSL).
| Hierarchy | Topics | Examples |
|---|---|---|
| comp.* | Computing — programming, hardware, protocols | comp.lang.c, comp.protocols.tcp-ip |
| sci.* | Science — physics, maths, biology | sci.crypt, sci.physics |
| rec.* | Recreation — hobbies, sports, games | rec.music, rec.sports.football |
| soc.* | Society — culture, politics, lifestyle | soc.culture.nepal |
| talk.* | Debate — controversial or opinion topics | talk.politics |
| alt.* | Alternative — anything not in main hierarchies | alt.security, alt.fan.* |
NNTP uses a plain-text command-response dialogue similar to SMTP and POP3. After connecting to TCP port 119, the client sends commands like GROUP, ARTICLE, NEXT, POST and the server responds with 3-digit codes followed by data.
| Command | Response | Action |
|---|---|---|
| CAPABILITIES | 101 | List server capabilities (AUTH, OVER, POST, etc.) |
| GROUP name | 211 count first last name | Select a newsgroup and get article range |
| LISTGROUP [name] | 211 + article numbers | List all article numbers in the group |
| ARTICLE [n or msg-id] | 220 n msg-id | Return full article (headers + body) |
| HEAD [n] | 221 n msg-id | Return only article headers (no body) |
| BODY [n] | 222 n msg-id | Return only article body (no headers) |
| NEXT | 223 n msg-id | Move to next article in current group |
| PREV | 223 n msg-id | Move to previous article |
| POST | 340 then data | Post a new article (ends with .) |
| XHDR field range | 221 | Get a specific header field for a range of articles |
| OVER range | 224 | Get overview data for articles (faster than HEAD) |
| QUIT | 205 | End the NNTP session |
| Code | Meaning | Examples |
|---|---|---|
| 1xx | Informational | 100 help text follows |
| 2xx | Success | 200 ready, 211 group selected, 220 article follows |
| 3xx | Continue — more input needed | 335 send article to be transferred |
| 4xx | Error — temporary failure | 411 no such newsgroup, 420 no current article |
| 5xx | Error — fatal | 502 permission denied, 503 server unavailable |
A newsreader application has a classic three-pane layout: groups list (left), article list (top right), and article body (bottom right). This layout was so successful that modern email clients (Outlook, Thunderbird) copied it exactly.
| Pane | Content | Updates When |
|---|---|---|
| Group list (left) | Subscribed newsgroups with unread count | User subscribes/unsubscribes; periodic refresh |
| Article list (top) | Subject, From, Date for current group articles | User selects a different group |
| Article body (bottom) | Full text of selected article with headers | User clicks an article in the list |
| Thread tree | Indented view showing reply chains | Toggled by user — built from References headers |
To post a new article, the NNTP client sends POST, waits for 340, sends the RFC 2822 formatted article, then sends a single dot on its own line. The server validates the article and propagates it to other NNTP servers worldwide.
| Feature | Purpose |
|---|---|
| Kill file | Automatically hide articles from specified senders or subjects — "kill" unwanted noise |
| Score/scoring | Rate articles by rules — positive for keywords you like, negative for spam patterns |
| Mark all read | Mark every article in a group as read — clean start without reading each one |
| Catchup | Mark everything up to today as read — only see future articles |
| Cross-post filter | Hide duplicate articles posted to multiple groups (identified by Message-ID) |
| Binary decoder | Decode uuencoded or yEnc encoded binary files (images, software) from multi-part posts |
Global distributed newsgroup discussion system (1980). Thousands of groups. Replicated across NNTP servers.
Network News Transfer Protocol — TCP port 119. Commands: GROUP, ARTICLE, XHDR, POST, QUIT.
A discussion forum in the Usenet hierarchy (e.g. comp.lang.c). Contains numbered articles.
Grouping articles into reply chains using the References header — showing conversation structure.
Rules that automatically hide articles from specified senders, subjects, or patterns.
NNTP command to retrieve a specific header field (e.g. Subject) for a range of articles efficiently.
- Usenet is a distributed discussion system (1980) of thousands of newsgroups. NNTP (port 119) is the access protocol.
- Newsgroup hierarchy: comp.* (computing), sci.* (science), rec.* (recreation), alt.* (alternative).
- Key NNTP commands: GROUP (select group), ARTICLE (get full article), XHDR (get headers), POST (submit), QUIT.
- NNTP response codes: 2xx=success, 3xx=continue, 4xx=temp error, 5xx=fatal error.
- Threading is reconstructed from the References header — the newsreader builds the reply tree locally.
- Classic newsreader UI: three-pane layout (groups list | article list | article body) — copied by all modern email clients.
- Kill files automatically hide unwanted articles by sender, subject, or pattern — early spam filtering.
- Posting: send POST, wait for 340, send RFC 2822 formatted article, end with a dot (.) on its own line.