Simple Unified Internet Protocol — Version 0.1
HTTP was designed in 1991 for sharing hypertext documents. Since then, it has been extended, patched, and retrofitted to handle everything from streaming video to real-time chat to REST APIs. The result is a protocol that:
We are not here to replace HTTP. We are here to explore what a protocol designed today, from scratch, might look like.
SUIP (Simple Unified Internet Protocol) is an experimental protocol built on four principles:
The core protocol must be simple enough to understand in one evening and implement in a weekend. Complexity belongs in optional extensions, not in the foundation.
A protocol should explain itself. Clients should be able to discover server capabilities without external documentation. Servers should advertise what they can do.
Extensions should be standardized patterns, not ad-hoc additions. A CRUD API, a streaming service, and a pub/sub system should all use recognizable, universal patterns.
If it's hard to implement, it's wrong. The reference implementation should be under 2000 lines. The specification should be clear, concise, and practical.
SUIP uses a fixed 12-byte binary header followed by a variable-length body:
Byte 0: Protocol Version (0x01) Byte 1: Message Type (REQUEST / RESPONSE / ERROR) Byte 2: Operation (FETCH / STORE / LIST / INFO) Byte 3: Status Code (SUCCESS / NOT_FOUND / etc.) Byte 4: Content Type (TEXT / BINARY / XML / STRUCTURED_PATH) Byte 5: Flags (compression, keep-alive, priority) Bytes 6-7: Reserved Bytes 8-11: Content Length (big-endian)
That's it. No parsing ambiguity. No variable-length headers. No text encoding issues.
suip://host[:port]/path
Default port: 2802. Transport: TCP.
| Code | Name | Purpose |
|---|---|---|
| 0x01 | FETCH | Retrieve a resource |
| 0x02 | STORE | Save a resource |
| 0x03 | LIST | List available resources |
| 0x04 | INFO | Get resource metadata |
| Code | Name |
|---|---|
| 0x00 | SUCCESS |
| 0x01 | NOT_FOUND |
| 0x02 | ACCESS_DENIED |
| 0x03 | SERVER_FAULT |
| 0x04 | INVALID_REQUEST |
| 0x05 | UNSUPPORTED_OPERATION |
Six status codes. That's all you need for MVP.
SUIP defines a minimal XML-based markup for content:
<?xml version="1.0"?>
<page>
<container>
<text class="heading">Welcome to SUIP</text>
<text>A simple page with no JavaScript, no CSS frameworks, no bloat.</text>
<link href="suip://localhost/about.xml">Learn more</link>
</container>
</page>
Four elements: <page>, <container>, <text>, <link>. Everything else is an extension.
The core protocol is intentionally minimal. Additional functionality comes through standardized extensions:
Servers advertise their capabilities through /.well-known/capabilities. Clients adapt automatically.
SUIP is open source. Whether you're a protocol designer, an implementer, or simply curious about how the internet works — you're welcome to contribute.