Experimental internet protocol with its own markup format, server, and browser.
SUIP (Simple Unified Internet Protocol) is a minimalist data transfer protocol that combines the best approaches of modern protocols without the legacy baggage of HTTP.
- SUIP Server - TCP server implementing SUIP protocol in
C - SUIP Browser - GUI browser (client that understands SUIP) in
.NET/Avalonia
cd suip-server
cmake -S . -B build
cmake --build build
./build/suip-serverThe server will start on port 2802 and serve files from ./www
dotnet run --project ./suip-browser/SuipBrowser/SuipBrowser.csprojIn the browser's address bar, enter:
suip://localhost/index.xml
Header (12 bytes, binary):
[0] Protocol Version - 0x01
[1] Message Type - REQUEST/RESPONSE/ERROR
[2] Operation - Operation code (FETCH/STORE/...)
[3] Status Code - Response status (OK/NOT_FOUND/...)
[4] Content Type - Data type (TEXT/BINARY/XML/PATH)
[5] Flags - Bit flags (KEEP_ALIVE/...)
[6-7] Reserved - 0x0000
[8-11] Content Length - body size (big-endian, 4 bytes)
Body: variable length, contains data
suip://host[:port]/path
Examples:
suip://localhost/index.xmlsuip://example.com:2802/page.xml
<?xml version="1.0"?>
<page>
<container id="header">
<text class="heading">Header</text>
</container>
<container id="content">
<text>Regular text</text>
<link href="suip://localhost/about.xml">Link</link>
</container>
</page><page>- root page element<container>- grouping container<text>- text content<link href="...">- clickable link
id- unique identifierclass- class for stylinghref- destination URL (for<link>)
- GCC or Clang (for server)
- CMake 3.16+ (for server)
- .NET 10.0+ (for browser)
- Avalonia UI (for browser)