互联网的那些魔法数字:为什么HTTP是80端口,以太网是1500字节
翻开任何一本计算机网络教材,你会看到它们:80、443、1500、65535、127.0.0.1、1970年1月1日。这些数字像某种古老的咒语,被一代代工程师背诵、使用,却很少有人追问它们的来历。 ...
翻开任何一本计算机网络教材,你会看到它们:80、443、1500、65535、127.0.0.1、1970年1月1日。这些数字像某种古老的咒语,被一代代工程师背诵、使用,却很少有人追问它们的来历。 ...
1981年,Jon Postel在RFC 793中定义了TCP的核心机制,其中累积确认(Cumulative Acknowledgment)的设计在当时看来简洁而优雅:接收方只需报告"我已经收到序列号N之前的所有数据"。这种设计在单包丢失场景下工作良好,但当网络中出现多个数据包丢失时,它暴露出了根本性的信息缺失问题——发送方根本不知道哪些数据已经成功到达,哪些需要重传。 ...
2016年,Cloudflare在部署HTTP/2时遇到了一个奇怪的问题:某个高优先级的大文件传输会阻塞所有其他请求,尽管HTTP/2已经实现了多路复用。问题的根源在于TCP的流量控制机制——所有流共享同一个滑动窗口,一个流的丢包会让整个连接停摆。 ...
当你在浏览器输入一个网址,或者在服务器配置文件中填写IP地址时,这些看似简单的数字串背后,其实是一套精心设计的地址系统。理解IP地址和子网掩码,是理解整个互联网如何运作的起点。 ...
1986年10月,美国劳伦斯伯克利实验室(LBL)到加州大学伯克利分校之间的网络连接发生了一件怪事。这两个地理上相距仅400码、中间只隔两个IMP跳站的站点,数据吞吐量从正常的32 Kbps骤降到40 bps——下降了近1000倍。这不是网络故障,而是人类历史上第一次记录到的"拥塞崩溃"(Congestion Collapse)。 ...
一个拥有16GB内存的服务器,运行着每秒处理5000次HTTP请求的API网关。运维人员发现,即使系统负载很低,新的连接请求却开始失败。ss -tan命令显示数万个连接停留在TIME_WAIT状态。有人建议调低tcp_fin_timeout,有人说要开启tcp_tw_recycle,还有人干脆在代码里加了SO_LINGER。这些建议哪个是对的?答案是:都不对,而且有些已经过时,有些则相当危险。 ...
2015年,Julia Evans在工作中遇到了一个诡异的问题:向本地NSQ消息队列发布消息,每次请求都莫名其妙地多出40毫秒延迟。这是一个本地回环请求,理论上应该在1毫秒内完成。CPU负载正常,内存充足,没有任何明显的性能瓶颈。 ...