<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Networking on Bitsy Wiki</title>
    <link>https://wiki.bitsy.services/wiki/networking/</link>
    <description>Recent content in Networking on Bitsy Wiki</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://wiki.bitsy.services/wiki/networking/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>WebRTC</title>
      <link>https://wiki.bitsy.services/wiki/networking/webrtc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/networking/webrtc/</guid>
      <description>&lt;p&gt;WebRTC is the browser&amp;rsquo;s built-in facility for sending audio, video and arbitrary data directly to another browser, or to a server that speaks the same protocols, with encryption that cannot be switched off. It has two halves. The W3C defines the JavaScript API, whose central object is &lt;code&gt;RTCPeerConnection&lt;/code&gt;. The IETF defines the protocols underneath: &lt;a href=&#34;https://wiki.bitsy.services/wiki/networking/nat-traversal/ice&#34;&gt;ICE&lt;/a&gt; to find a network path, Datagram Transport Layer Security (DTLS) to authenticate the two ends and agree keys, Secure Real-time Transport Protocol (SRTP) for media, and Stream Control Transmission Protocol (SCTP) for data channels. RFC 8825 is the overview.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nostr</title>
      <link>https://wiki.bitsy.services/wiki/networking/nostr/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/networking/nostr/</guid>
      <description>&lt;p&gt;Nostr is a protocol for publishing signed messages through relays. Each user is a key pair on secp256k1, the elliptic curve Bitcoin uses, and each message is an &lt;strong&gt;event&lt;/strong&gt;: a small JSON object carrying the author&amp;rsquo;s public key, a timestamp, a numeric kind, a list of tags, a text body, and a signature over all of them. A client signs events with the user&amp;rsquo;s private key and sends them over WebSockets to &lt;strong&gt;relays&lt;/strong&gt;, servers that store events and forward them to clients whose subscriptions match. The base protocol defines no messages between relays. Clients check signatures themselves, so a relay can refuse, drop or withhold an event but cannot alter one or forge one under another key.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trystero</title>
      <link>https://wiki.bitsy.services/wiki/networking/trystero/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/networking/trystero/</guid>
      <description>&lt;p&gt;Trystero is a JavaScript library that connects browsers directly over &lt;a href=&#34;https://wiki.bitsy.services/wiki/networking/webrtc&#34;&gt;WebRTC&lt;/a&gt; without a signalling server of the application&amp;rsquo;s own. Before two browsers can open a WebRTC connection they have to swap session descriptions, written in the Session Description Protocol (SDP), and the candidate addresses that &lt;a href=&#34;https://wiki.bitsy.services/wiki/networking/nat-traversal/ice&#34;&gt;ICE&lt;/a&gt; finds for each of them. WebRTC leaves the channel for that swap to the application. Trystero sends it through services that other people already run in public: by default &lt;a href=&#34;https://wiki.bitsy.services/wiki/networking/nostr&#34;&gt;Nostr&lt;/a&gt; relays, servers that forward signed messages between any clients that ask, and in other packages BitTorrent trackers, public brokers for MQTT (a publish–subscribe protocol for small devices) or a hosted database. Browsers that join the same &lt;strong&gt;room&lt;/strong&gt; find each other there, exchange encrypted offers and answers, and end up with a direct WebRTC connection. After that, application data no longer passes through the relays.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
