cover.png

Summary 上一篇讲清了 TCP 怎么保证"不丢不乱",但留了个关键的空:发送方一次能往外扔多少数据? 这个数字定小了,带宽白白浪费;定大了,轻则把接收方撑爆,重则把整个网络堵死。而且它还不能是个固定值——网络状况和对方的处理能力时时刻刻都在变。 TCP 的答案是同时受两个"刹车"约束: 流量控制(flow...

cover.png

上一篇我们提到,网络层的IP协议是"尽力而为"的——它会丢包、乱序、重复、损坏,却什么都不保证。而你用 Go 写 conn.Read,拿到的却是一段完整、有序、正确的字节流。这中间的落差,全靠 TCP 的一套可靠传输机制填平。这套机制的思想(编号、确认、超时重传、去重),不只是网络知识,更是一切"在不可靠信道上做可靠通...

cover.png

TCP 的"连接"到底是什么 物理世界里并没有一根线真的从你连到服务器,数据包依然是一个个独立地在互联网上乱窜、走不同的路线。所谓"连接",纯粹是通信双方各自在内存里记的一本账。 打个比方:两个人开始通信前先对暗号——“我叫 A,我从 100 号开始编号”;“好,我叫 B,我从 500 号开始编号,你的 100 我收...

cover.png

当我们打开一个网页,浏览器到底经历了什么 首先我们看一次完整的网络请求(经典面试题): DNS 解析(应用层):浏览器要访问 example.com,先问 DNS:“它的 IP 是多少?” DNS 返回如 93.184.216.34。(DNS 查询本身通常走 UDP。) 建立 TCP 连接(传输层):浏览器和服务器的...

cover.png

Summary 说到网络,大家第一个想到的都是TCP、IP协议这些的,很容易忽略网络的硬件设施,我们这一篇主要讲网络的硬件基础设施。 一个前提:互联网是"分组交换"的 在讲设备之前,先建立一个总观念。这两种方式的差别,用包车 vs 拼车一比就清楚了。 早期电话网用电路交换,相当于包车:通话前先在你和对方之间独占一条物...