]> git.meshlink.io Git - utcp/blobdiff - README
Rename UTCP to README.
[utcp] / README
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..d5edf56
--- /dev/null
+++ b/README
@@ -0,0 +1,45 @@
+This is a light-weight, user-space implementation of RFC 793 (TCP), without any
+reliance on an IP layer.  It can be used to provide multiple in-order, reliable
+streams on top of any datagram layer.
+
+UTCP does not rely on a specific event system. Instead, the application feeds
+it with incoming packets using utcp_recv(), and outgoing data for the streams
+using utcp_send(). Most of the rest is handled by callbacks. The application
+must however call utcp_timeout() regularly to have UTCP handle packet loss.
+
+The application should run utcp_init() for every peer it wants to communicate
+with.
+
+DIFFERENCES FROM RFC 793:
+
+* No checksum. UTCP requires the application to handle packet integrity.
+* 32-bit window size. Big window sizes are the default.
+* No ECN, PSH, URG
+
+TODO v1.0:
+
+* Implement send buffer
+* Window scaling
+* Handle retransmission
+
+TODO v2.0:
+
+* Nagle
+* NAK and SACK
+* Congestion window scaling
+* Timestamps?
+
+Future ideas:
+
+Fast open:
+       SYN + data?
+
+Receive-only open:
+       SYN|FIN
+
+Fast transaction:
+       SYN|FIN + request data ->
+       <- SYN|ACK|FIN + response data
+       ACK ->
+
+Does this need special care or can we rely on higher level MACs?