- Jan 2024
-
hypothes.is hypothes.is
-
ting so
Tags
Annotators
URL
-
-
hypothes.is hypothes.is
-
using the sidebar on the right of the screen. Pin the Hypothesis extens
-
up an
Tags
Annotators
URL
-
- Aug 2023
-
en.wikipedia.org en.wikipedia.org
-
In computing, the robustness principle is a design guideline for software that states: "be conservative in what you do, be liberal in what you accept from others". It is often reworded as: "be conservative in what you send, be liberal in what you accept". The principle is also known as Postel's law, after Jon Postel, who used the wording in an early specification of TCP.
https://en.wikipedia.org/wiki/Robustness_principle
Robustness principle: be conservative in what you do, be liberal in what you accept from others.
-
- May 2023
-
fiatjaf.com fiatjaf.com
-
IPFS can open up to 1000 connections by default and suck up all your bandwidth – and that’s just for exchanging keys with other DHT peers.
imho, the main problem with IPFS is that it does DHT over TCP, which is crazy-inefficient, compared to bittorrent, which does DHT over UDP, which "just works"
one reason for DHT over TCP is to make this work in a web browser, which does not support UDP. so instead of teaching web browsers to talk UDP, IPFS took the simple route of "lets take bittorrent and run DHT over TCP"
IPFS is obsolete, many goals of IPFS can be achieved with bittorrent v2
generally, treating web browsers as the main target platform (and thus inheriting their limitations) is a bad idea, equally stupid as the "lets run everything in javascript/WASM" idea
Tags
Annotators
URL
-
-
iq.thc.org iq.thc.org
-
developers.cloudflare.com developers.cloudflare.com
-
blog.cloudflare.com blog.cloudflare.com
-
🥳
```js import { connect } from 'cloudflare:sockets';
export default { async fetch(req: Request) { const gopherAddr = "gopher.floodgap.com:70"; const url = new URL(req.url);
try { const socket = connect(gopherAddr); const writer = socket.writable.getWriter() const encoder = new TextEncoder(); const encoded = encoder.encode(url.pathname + "\r\n"); await writer.write(encoded); return new Response(socket.readable, { headers: { "Content-Type": "text/plain" } }); } catch (error) { return new Response("Socket connection failed: " + error, { status: 500 }); }
} };
ts connect(address: SocketAddress | string, options?: SocketOptions): Socket
declare interface Socket { get readable(): ReadableStream; get writable(): WritableStream; get closed(): Promise<void>; close(): Promise<void>; startTls(): Socket; }
declare interface SocketOptions { secureTransport?: string; allowHalfOpen: boolean; }
declare interface SocketAddress { hostname: string; port: number; } ```
-
-
datatracker.ietf.org datatracker.ietf.org
Tags
Annotators
URL
-
-
chromestatus.com chromestatus.com
Tags
Annotators
URL
-
-
-
```ts
/* * Initiates a connection to the selected port. / async function connectToServer(): Promise<void> { hostInput.disabled = true; portInput.disabled = true; connectButton.textContent = 'Connecting...'; connectButton.disabled = true;
try { socket = new TCPSocket(hostInput.value, parseInt(portInput.value)); connection = await socket.opened; term.writeln('<CONNECTED>'); connectButton.textContent = 'Disconnect'; connectButton.disabled = false; } catch (e) { console.error(e); term.writeln(
<ERROR: ${e.message}>
); markDisconnected(); return; }try { reader = connection?.readable.getReader(); for (;;) { const {value, done} = await reader.read(); if (value) { await new Promise<void>((resolve) => { term.write(value, resolve); }); } if (done) { break; } } reader.releaseLock(); reader = undefined; } catch (e) { console.error(e); term.writeln(
<ERROR: ${e.message}>
); }markDisconnected(); }
/* * Closes the currently active connection. / async function disconnectFromServer(): Promise<void> { // Canceling |reader| will close the connection and cause the read loop in // connectToServer() to exit when read() returns with done set to true. if (reader) { await reader.cancel(); } } ```
-
- Apr 2023
-
github.com github.com
-
blog.cloudflare.com blog.cloudflare.com
Tags
Annotators
URL
-
-
datatracker.ietf.org datatracker.ietf.org
Tags
Annotators
URL
-
- Mar 2023
-
www.wireshark.org www.wireshark.org
-
Use Follow TCP Stream to display HTTP response chunks
-
- Dec 2022
-
plantegg.github.io plantegg.github.io
-
到底一台服务器上最多能创建多少个TCP连接
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
在以TCP为连接方式的服务器中,为什么在服务端设计当中需要考虑心跳?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
网关和路由器的区别是什么?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
QQ 为什么以 UDP 协议为主,以 TCP 协议为辅?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
TCP 协议下 socket 有可能丢包吗?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
单机单网卡最大 tcp 长连接数真的是 65535 吗?
-
-
www.zhihu.com www.zhihu.com
-
有了 IP 地址,为什么还要用 MAC 地址?
-
-
www.zhihu.com www.zhihu.com
-
如何学习 TCP/IP 协议?
-
- Oct 2022
-
arthurchiao.github.io arthurchiao.github.io
-
www.bortzmeyer.org www.bortzmeyer.org
Tags
Annotators
URL
-
-
datatracker.ietf.org datatracker.ietf.org
Tags
Annotators
URL
-
-
squeeze.isobar.com squeeze.isobar.com
-
blog.apnic.net blog.apnic.net
Tags
Annotators
URL
-
- Jun 2022
-
wicg.github.io wicg.github.io
Tags
Annotators
URL
-
-
www.w3.org www.w3.org
Tags
Annotators
URL
-
-
stomp.github.io stomp.github.ioSTOMP1
- Mar 2022
-
Local file Local file
- Feb 2022
-
lwn.net lwn.net
Tags
Annotators
URL
-
- Sep 2021
-
www.joelonsoftware.com www.joelonsoftware.com
-
This is what I call a leaky abstraction. TCP attempts to provide a complete abstraction of an underlying unreliable network, but sometimes, the network leaks through the abstraction and you feel the things that the abstraction can’t quite protect you from. This is but one example of what I’ve dubbed the Law of Leaky Abstractions:
-
- Jul 2021
-
datatracker.ietf.org datatracker.ietf.orgrfc64551
-
Relationship to TCP and HTTP _This section is non-normative._ The WebSocket Protocol is an independent TCP-based protocol. Its only relationship to HTTP is that its handshake is interpreted by HTTP servers as an Upgrade request. By default, the WebSocket Protocol uses port 80 for regular WebSocket connections and port 443 for WebSocket connections tunneled over Transport Layer Security (TLS) [RFC2818].
-
- Feb 2021
-
www.schneems.com www.schneems.com
-
The alternative was to have multiple scripts or stylesheet links on one page, which would trigger multiple HTTP requests. Multiple requests mean multiple connection handshakes for each link “hey, I want some data”, “okay, I have the data”, “alright I heard that you have the data, give it to me” (SYN, ACK, SYNACK). Even once the connection is created there is a feature of TCP called TCP slow start that will throttle the speed of the data being sent at the beginning of a request to a slower speed than the end of the request. All of this means transferring one large request is faster than transferring the same data split up into several smaller requests.
-
- Nov 2018
-
www.diva-portal.org www.diva-portal.org
-
overview of UDP , TCP and other protocols
-
- Oct 2018
-
www.keycdn.com www.keycdn.com
Tags
Annotators
URL
-
-
www.unixteacher.org www.unixteacher.org
-
bradleyf.id.au bradleyf.id.au
Tags
Annotators
URL
-
- Jul 2017
-
blog.chionlab.moe blog.chionlab.moe
-
fake TCP to UDP
好奇如何做到
Tags
Annotators
URL
-
- Jan 2017
- Nov 2013
-
www.nytimes.com www.nytimes.com
-
In a Literary Lab project on 18th-century novels, English students study a database of nearly 2,000 early books to tease out when “romances,” “tales” and “histories” first emerged as novels, and what the different terms signified.
This may be a reference to the Eighteenth Century Collection Online-Text Creation Partnership (ECCO-TCP) project, which transcribed and marked up in XML ~2,200 eighteenth-century books from the Eighteenth Century Collections Online database (ECCO). The ECCO-TCP corpus is in the public domain and available for anyone to use: http://www.textcreationpartnership.org/tcp-ecco/
-