|
通讯地址tcp TCP握手三次,通讯像极了寄一封挂号信。地址第一次,通讯你递出信封,地址问:在吗?通讯第二次,对方回执,地址说:在,通讯你呢?地址第三次,你确认:好,通讯那我开始写了。地址但真正寄信的通讯人知道,这三次握手只是地址序曲——地址栏填错一个字,信封再厚也到不了该到的通讯地方。 我上周给老家的地址父亲寄了一台新路由器。填快递单时,通讯我习惯性地写了“XX省XX市XX县XX镇XX村”,然后愣了一下。父亲早就不在村里住了,他搬进了县城的新小区,门牌号是“3栋2单元501”。但我脑子里那个旧地址,像一段缓存在DNS里的记录,十几年都没刷新过。人脑的地址解析协议,比TCP/IP的TTL活得久多了。 通讯地址的本质,是一套“定位+路由”的协议。IPv4地址不够用了,我们搞出了IPv6;门牌号不够精确了,我们加了邮政编码;小区重名了,我们补上街道办名称。这套系统层层封装,像洋葱一样——每一层包头都写着“下一跳该往哪走”。可讽刺的是,信息越精确,人越容易迷路。 我有个朋友做跨境电商,他说最怕的不是客户给错地址,而是客户给“太对”的地址——精确到门牌、楼层、房间号,但那个地址在谷歌地图上根本不存在。他花了三天联系当地邮局,最后发现那栋楼在2019年拆迁了,客户没更新地址,因为“习惯了”。习惯是个可怕的缓存机制,它让你快速访问旧数据,却从不主动检查过期时间。 TCP协议里有个东西叫“重传超时”。如果发出去的包没收到确认,发送方会等一会儿再发一次。这个等待时间不是固定的,它根据网络拥堵情况动态调整。有意思的是,人类寄信也遵循类似逻辑——我奶奶至今相信,如果一封信寄出两周没回音,就该再写一封,但这次要在信封背面加一句“上次那封收到了吗?”这本质上就是TCP的快速重传,只是她的拥塞窗口是手工计算的。 前阵子小区换门牌,蓝底白字的旧牌子换成了反光材料的新牌子。快递员说新牌子晚上看得清,省得他打手电筒找楼号。但邻居老张不乐意,他说“我在这住了二十年,闭着眼都能找到自己家,换牌子干嘛?”老张没意识到,他家的通讯地址不只是给他自己看的,那是给全网路由器的广播报文——你不更新,别人就找不到你。 TCP连接关闭时要四次挥手,比建立连接还多一次。为什么?因为要确保双方都同意断开,且最后一条消息能被确认。我搬离旧居那天,特意去邮局改了一遍所有杂志的订阅地址。但半年后,我还是收到了一封寄往老地址的信——来自某银行,通知我“您的信用卡账单已生成”。那封信在旧小区里转了两圈,被新住户退回,又花了一周才辗转到我手上。这大概就是TCP的TIME_WAIT状态:连接已经断开,但旧包还在网络上游荡,等着被彻底清空。 所以你看,通讯地址从来不只是几行字符。它是一套活着的协议,有生命周期,有缓存机制,有重传策略。你每搬一次家,就是在全网发起一次路由更新;你每填错一次邮编,就是在网络层制造一次黑洞。而最像TCP的那部分在于——它不保证不丢包,只保证努力重传。就像那些寄往旧地址的信,哪怕绕了远路,最终还是会有人帮你转交,哪怕时间晚了些。 |