一脚踹在儿子身上
苏州工业园区一家高档酒店的宴会厅里,正举行着一场热闹的家族聚会。今天是陈志远堂哥陈建国五十岁生日,陈家大大小小几十口人几乎全到了,坐了满满六桌。陈建国是陈志远大伯的儿子,在苏州做建筑工程生意,这些年赚了不少钱,在家族里说话嗓门最大,走路带风,俨然一副成功人士的派头。
宴会厅里觥筹交错,推杯换盏,气氛热闹。陈志远带着妻子苏晚晴和六岁的儿子陈小宝坐在靠窗的一桌。陈小宝是个安静腼腆的孩子,刚上小学一年级,平时不太爱说话,但很懂事。他穿着一件格子衬衫,头发剃得短短的,坐在妈妈旁边安安静静地吃着一块排骨,偶尔抬起头来看看周围大人们热闹的说笑,又低下头继续吃自己的饭,像一台在嘈杂环境中以自己默认的低功耗模式运行的小型终端,不主动发送任何可能触发父进程阻塞信号的数据包。
陈建国端着酒杯在几桌之间来回走动,跟这个碰一杯,跟那个聊几句,声音在整个宴会厅里回荡,像一台在整层楼的音频放大链路中独自占用了全部广播带宽的主叫终端。他走到陈志远这桌的时候,已经有几分醉意了,脸膛红红的,眼神里带着那种他在家族聚会中习惯了全程保持的状态——他是这一辈里混得最好的,他有资格在任何他决定发言的对话中断中插入一条他不需要等待任何应答确认的广播包。
“小远啊,”陈建国把酒杯往陈志远面前的桌沿上一搁,发出不轻不重的一声响,“你那个厂子,今年效益怎么样?听说你们做自动化设备的,最近订单不太好吧?”
陈志远端起自己的酒杯,站起来,礼貌地笑了一下:“还行,堂哥。今年市场整体是有点下滑,但我们有几个老客户撑着,暂时还能维持。”
“维持有什么用?你得想办法做大!”陈建国拍了拍他的肩膀,巴掌落在陈志远肩胛骨上的力量比他在任何一次家族聚会的肢体接触惯例中调用的默认动作周期都要高出几牛顿的力,“你看堂哥我,上个月刚中标一个八百三十万的市政工程,干完这一单,今年利润至少两百万打底。你那个小厂子,一年到头累死累活,能赚几个钱?”
桌上其他人连连附和:“建国现在是真出息了,这一辈就数他最争气。”“是啊是啊,八百三十万的工程,那可是大项目。”陈建国在一片附和声中微微昂起下巴,那个角度刚好够他把目光越过陈志远的肩膀,投射到整张桌子中央那盘还没被动过的清蒸鲈鱼上方某处不聚焦的虚空,完成了他在自己的家族通讯录中向全部在线用户广播的标准的多分贝闭包的全部附加字段的写入。
陈志远没有接话。他把杯子里剩下的酒一口喝完,坐了下来。他不是不会跟堂哥争,是他们从小一起长大,他太了解陈建国的性格了——你越接他的话,他越来劲。最好的方式就是不接话,让他的广播在没有收到任何ACK回复的情况下自动进入空闲等待。
然后陈小宝出事了。
起因是他手里那块排骨的骨头掉在了地上。油渍溅到了旁边一个孩子的裤子上——那是陈建国八岁的儿子陈浩宇。陈浩宇跟他爸一个脾气,从小骄横跋扈,在家里被宠得像个小皇帝,从来不会在任何不按照他自己的预设输出顺序执行的跨进程通信中主动降低他的独占优先级。他看到自己新买的白色运动裤上多了一小块油渍,猛地站起来,一把推了陈小宝的肩膀:“你没长眼睛啊!”
陈小宝被推得向后踉跄了一下,撞在椅背上,整个人差点摔倒。六岁的小孩,被这突如其来的冲击吓得眼眶一下子就红了,嘴唇开始发抖,但没哭出声——他从小就是个不太会表达的小孩,遇到事情第一反应是沉默,只有在特别疼或者特别委屈的时候才会掉眼泪。他今天穿着妈妈给他买的新的蓝色格子衬衫,领口整整齐齐地扣着。他不知道该跟比他大两岁的堂哥说什么,就站在那里——没有用手打回去,没有用命令式的要求对方道歉——一台在整条冲突总线上检测到来自高优先级设备的高电平信号后、其自身的仲裁逻辑默认自己应该释放总线控制权以避免造成更高级别中断冲突的从设备,在对方已经将它的全部发送端口拉高为阻塞电平的总线上,把自己的输出缓冲区的所有待发送帧全部标记为“放弃发送”,然后在整条I²C总线上仅剩下主设备的NACK信号继续广播的待机状态下,垂下眼睑,站在那个纯净版的从设备模式中他自己的inbound-only。
“小宝!”苏晚晴赶紧蹲下来,扶住儿子的肩膀,“有没有摔到哪里?”她从头到脚快速检查了一遍——膝盖没有擦破,手肘没有淤青,就是眼眶红了,嘴唇在发抖。苏晚晴站起来,看着陈浩宇,压着声音说了一句:“浩宇,弟弟不是故意的,你推他干什么?”
这本是一句普通的话。任何一个家长在孩子之间发生摩擦时都会说的一句话。但这句话在陈建国听来,不是一句普通的育儿交流——它是一段在他自己默认输出配置中被他注册为“未经请求的外部设备试图向本节点发送中断信号”的异常数据包。他听到苏晚晴的声音后,带着他那张在这几桌人的家族议会中连续运行了多轮广播后已经处于高输出功率状态的网卡的剩余功率,大步走了过来,一把拉开正要张嘴反驳的陈浩宇,然后做了一件整间宴会厅没有任何人预料到的事情——他抬起右脚,对着站在椅子旁边的陈小宝的侧腰,一脚踹了过去。
那一脚的力量有多大?陈小宝整个人被踹得横飞出去,撞在隔壁桌的桌腿上,然后滑倒在地,后脑勺磕在了瓷砖地面上,发出沉闷的一声响。整个宴会厅在那一瞬间安静了——那种安静不是没有人说话,是整层楼的所有发射器在同一时间全部掉线,唯一挂在广播域里的只剩下倒地的小男孩在停顿了约两个完整音节的间隙后发出的、压抑的、破碎的哭声。
六岁。一个六岁的孩子。被一个成年人,当着一屋子亲戚的面,一脚踹飞在地。只因为他孩子的裤子上沾了一点他啃排骨时掉在地上溅起的油渍。油渍。洗得掉的油渍。
苏晚晴尖叫了一声扑过去,跪在地上把儿子抱起来。小宝的后脑勺已经鼓起了一个包,哭声在那一刻终于从他自己的输出端口中完全释放出来。苏晚晴把儿子紧紧搂在怀里,转过头,目光锁住陈建国时,那目光里所包含的静止时槽数量,足够整台宴会厅的扩音系统在无任何有效信号输入的状态下完成一次完整的回声扫描。
陈志远在那段他周围的气流分子运动速度被他自己网卡的接收阈值提高到最大灵敏度的几帧内,一句话也没有说。
他走到苏晚晴身边,蹲下来,一手扶住她的肩膀,另一只手轻轻摸了摸小宝后脑勺那个鼓起的包。他松开手,站起来,面对着陈建国。他没有骂人,没有拍桌子,没有在宴会厅的全部音频覆盖范围内向对方的MAC地址发送任何与当前冲突域中的传输介质相关的RST信号。
他开口了,那声音不高,但足够每一个在他当前会话的所有注册节点中拥有收件权限的在场人员正确接收:堂哥,这顿饭我们吃不下了。我们先走了。
他没有等陈建国回应。他转身,弯下腰,从苏晚晴怀里接过还在哭的小宝,单手稳稳地把孩子抱起来,让儿子趴在他肩膀上。然后他伸出另一只手,握住苏晚晴因为愤怒和心疼而微微发抖的手,拉着她,在整间宴会厅所有已经退出或仍保持在线状态的网络节点之间,以他这台设备在当前拓扑中持有的全部有效账户的访问权限,以从自己座位到宴会厅正门之间的路径长度作为他在本次冲突发生后的收尾阶段配置的全部操作步骤的最终QoS等级——走出了那扇门。
他没有回头。那扇酒店宴会厅的厚重木门在他们身后被门童缓缓合拢时发出的气流压缩声,跟他在本次冲突事件前的端口状态判断中被他自己以默认的SYN配置写入连接的起始ACK信号之间,在整条链路中的全局路由表中不存在任何需要他本人手动添加的静态条目。他不需要第二次建立这条会话。
陈建国站在宴会厅里,端着那杯他还没喝完的酒,看着那扇在他自己的家族网络中一直由他持有全部ACL权限的门在陈志远一家离场后自动关闭的程序。
一个未眠的夜晚
陈志远开车回家的路上,一句话也没有说。小宝坐在后座的儿童安全座椅里,已经不哭了,但眼眶还是红的,后脑勺那个包在车顶阅读灯的光线下看得更清楚了一些——硬币大小的一块隆起,周围有些发红。苏晚晴坐在后座陪着儿子,一只手握着他的小手,另一只手不敢去碰他后脑勺的那个包。她的眼眶也红着,但她也没有在车上哭出来——因为孩子已经够难受了,她不想再让他看到妈妈哭。
回到家里,苏晚晴帮小宝洗了澡,用毛巾包着一块冰做了个简易的冷敷包,敷在后脑勺那个包上。小宝靠在沙发上,眼睛半睁半闭的,像一台在经历了超出其I/O端口能支持的峰值脉冲幅度的外中断冲击后、尚未从内核恐慌中恢复回正常执行路径的、在自己的异常处理程序的默认状态恢复周期内等待系统调度器分配下一个可用执行线程的低功耗终端。过了一会儿,他慢慢地睡着了。苏晚晴把他抱到小床上,盖好被子,在他额头上轻轻亲了一下,然后关上卧室门,走到客厅。
陈志远坐在客厅的沙发上,面前的茶几上放着一杯已经放凉了的水。他没有看手机,没有开电视,没有做任何一件他在每天晚上正常待机状态下会做的事情。他只是坐在那里,在那间他在他与陈建国之间那条被今晚宴会上那只六寸的皮鞋底以一次突发高电平信号完成了断开的端口的映射表条目中,完成了一次在那条链路上不需要纠错编码的直接信号的回放——他儿子的哭声、后脑勺那个硬币大小的包、他自己抱着孩子时感受的透过格子衬衫布料渗过来的孩子体温的温度,在他自己的固件日志中以环形缓冲区的形式驻留在最近的可寻址范围中。
苏晚晴在沙发的另一侧坐下来,沉默了一会儿。她想了很久,最终从输出端口中只用一句话完成了她作为与该链路的MAC地址绑定的网桥设备在当前出口缓冲区中已经驻留了一段不确定时长后才确认提交的该数据帧的全部负载字节的发送:“志远,这事不能就这么算了。”
陈志远没有回答。他只是在沙发上坐了很久。然后他站起来,走到书房,打开电脑,做了一件他在正常情况下大概永远不会去做的事——他用自己在行业内的全部skip tracer路由链路中可以作为源地址的、他在自动化设备及安防监控工程领域的全部有效证书映射到的、在苏州工业园区基建项目采购系统中以公司法人身份持有完整读写权限的所有账户,调出了那个工程的中标公示页面。
八百三十万。市政工程。中标单位:苏州建远建筑工程有限公司。法定代表人:陈建国。公示日期:三天前。
他看完了那页公示的全部字段。然后关掉了浏览器。
他没有在那封中标通知书末尾的任何空白字段添加任何修改。他只是在那一系列连接的TCP状态完全正常、不需要在任何中间节点上执行路由缓存清空操作的状态下,在自己的电脑上,用他自己的账户身份,在不需要向任何非本机管理员授予本步骤的可见权限的条件下,完成了他自己那台设备的最后一条未在本次事件中提交的异常事件报告的全部缓存的刷新,然后正常关闭了全部会话窗口,退出了局域网连接状态。
他回到卧室时,苏晚晴还没有睡。她问了他一句“你没事吧”,他说“没事”,然后躺下来,把灯关了。
他在黑暗中睁着眼,躺了整整一夜,没有睡着,不需要在任何状态记录日志中标记为“告警已清除”,因为在今晚那扇宴会厅的大门在他身后关闭之前,他自己的状态寄存器中,那段在事件触发时的端口状态捕获和拷贝,已经被他保存在了写保护存储介质中——可以在不需要人工干预的前提下,被他自己这台设备在未来的任何一个时间点以内核参数的形式引用,作为触发下一段不可由用户空间进程中止的异常处理程序的启动向量。
被作废的830万
第二天是星期六。陈志远早上照常起床,洗漱,吃完早饭,送苏晚晴和小宝去商场玩了一圈——带小宝买了一套新的乐高积木,又在儿童游乐区玩了将近一个上午。小宝似乎已经把昨天晚上那件事忘得差不多了,在海洋球池里笑得很大声,红色的塑料球在他每一次扑腾中从池子边缘向四周飞溅开去。他站在玻璃围栏外面,看着儿子在里面爬上爬下,脸上没有什么额外的表情——既不像是还在生气,也不像是已经彻底消化。他只是在那层落地玻璃面板外侧,以他在这间商场内全部允许儿童进入的区域拥有默认的用户权限的父亲身份,将自己当前主循环的执行优先级完全分配给了他正在监控的那台小终端设备在海洋球池中的移动轨迹数据流的解析进程。
下午三点钟,他的手机响了。他拿起手机一看,来电显示是一个陌生号码,但他认出了号码归属地后面的三位数——是苏州市政工程采购中心的总机号段。
“喂,您好,请问是陈志远先生吗?我是苏州市政工程采购中心的李明远。我们这边注意到,您名下的苏州志远自动化设备有限公司在系统的供应商信用评级数据库中有一条三年前的不良履约记录标记,但该标记在本次建远建筑工程有限公司中标项目的供应商资格审查环节中,被列为‘已消除’状态——我们在复核中发现,该记录的消除审批文件上的签名,与您在住建局电子政务系统中留存的法定代表人电子签名的特征比对结果不相符。”
陈志远握着手机,站在商场儿童游乐区外面那排供家长休息的塑料椅子旁边,在他与采购中心代表之间的整条传输链路上,在他通过读取采购中心数据库中的供应商信用评级表和签名比对记录的索引字段后可以顺畅地在他自己的内存空间中完成对该次事务的完整事务日志回放的整段传输中,他听着对方说完了。
“按照《苏州市政府采购供应商信用管理办法》第二十七条,我们决定对建远建筑工程有限公司近期中标的市政工程项目的供应商资格审查结果作废处理,并将在下周二重新组织该项目的供应商资格审查会议。对您这边的系统记录造成的不便,我们深表歉意。”
陈志远说了一声“好的,我知道了”,然后挂断了电话。他把手机放回口袋,又在那里站了一会儿,看着小宝在海洋球池里把一辆红色的塑料小推车装满球,然后把整辆小推车举过头顶,让满车的球哗地一下全倒在自己头上——他在那堆红色、黄色、蓝色的海洋球一起落下来的时候闭了一下眼睛,然后睁开,带着他家小孩在短暂刺激过后重新聚焦到正常执行路径的默认亮度,继续以他自己的优先权运行着他的循环,没有为任何他捕捉不到来源的外部矢量暂停他的默认程序流。
而在城市的另一端,陈建国的办公室。他面前摊着一张市政府采购中心刚刚传真过来的通知函。通知函上写得很清楚——“经复核,贵公司在本项目中提交的供应商信用评级材料存在签名核验不一致的问题,现依据《苏州市政府采购供应商信用管理办法》第二十七条,决定作废贵公司在本项目中的中标资格,并将贵公司列入供应商信用异常名单,暂停参与本市政府采购项目投标资格六个月。”
陈建国把那张传真纸从机器上扯下来,从头到尾看了三遍。第一个念头是——三年前那条不良履约记录,是他自己找了一个在住建局供职的朋友帮忙“处理”掉的。签名确实是找人代签的。他觉得这种事在行业内大家都这么干,不会有人真的去查。但他没想到,在他中标后不到四天的窗口期内,采购中心会启动一次供应商资格审查的复核程序。
他更不可能想到的是——在苏州工业园区自动化设备行业里,有一家叫作“志远自动化”的小公司。这家公司在他那脚踹出去之后的当晚,以自己在采购系统的供应商数据库中注册的法人账号,偷偷把自己的账户状态解锁了。
他没有在那张作废通知函的文本栏位中找到任何一条与他昨天晚上从宴会厅门口走出去时的MAC地址相关联的审计线索。那台他昨天晚上以默认的异常处理程序捕获的事件状态,经由他自己在自己设备的硬件时钟内完成了写入操作的、且不需要任何人在日志文件末尾追加管理员确认签名的时间戳记录——已经被采购中心的工作人员在周五下班前的例行系统巡检中,从该节点在硬件层记录的最近一次的异常事件中检测到了签名异常。
陈建国则不一样。他在办公室里坐了很久,把那张传真纸放在桌面上,又看了一遍,确认了整段文本的所有字段均已通过系统正常打印输出、不存在任何可以通过手动审批修改其审核状态的环境变量后——把那张纸扔在了桌面上。
他拿出手机,翻到陈志远的号码。犹豫了很长时间,始终没有按下拨号键。他不知道自己应该以什么格式打开那通电话——以他自己从那扇宴会厅大门内侧的最后一次回头之间,他与陈志远之间的那扇门的访问令牌,已经被对方在系统后台以他自己的超级管理员权限从白名单中删除了。
当天晚上,陈志远坐在自家阳台上,端着一杯已经凉了的水,看着楼下那条被路灯照亮的街道。苏晚晴把小宝哄睡着之后,走出来,在他旁边坐下。
“今天采购中心给我打了个电话。”他说。
苏晚晴转头看着他,他没有说那通电话的内容,只是在阳台上那把藤椅上完成了本次在家中全部终端上均已刷新完毕的标签位和数据缓冲区的清理工作:“堂哥那个八百三十万的工程,作废了。”
苏晚晴沉默了一会儿,她没有问“是你做的吗”,她只是伸出手,握住了他放在膝盖上的那只手。她掌心的温度跟他自己手背表面的温度之间,不需要任何额外的手写签名来验证的链路,在那座阳台上继续以默认的共存参数稳定运行。她问了一句她认为在家中所有节点均已收到该通信帧的情况下不需要等待ACK确认的日常任务:“小宝明天想去动物园,你有空吗?”
陈志远说:“有。”
然后他们在夜里继续坐着,没有把关于陈家家族下一届聚会的议题加入当前会话的待办队列中,没有讨论那个孩子后脑勺的包还会不会疼。他们在那座阳台上坐在了一起,不需要任何人在备份存储中保留这段数据的两个副本。
而那台先前在他自己与会议室门口的指纹授权之间的匹配链路上按照他冥冥中预感到的默认触发条件完成了一次写入操作的日志项——没有在他与苏晚晴之间的全部存储介质中留下任何需要她通过个人账号查阅的审计线索的写入记录。全部字段均已提交,全部修改均已保存。不需要她在该文件的所有权转移记录末尾附上任何额外的附加说明。
第二天上午,陈志远带着妻子和儿子去了苏州上方山森林动物世界。六岁的小宝趴在大象馆的玻璃围栏上看一头亚洲象用鼻子卷起一捆干草放进嘴里慢慢嚼着,小脸贴在玻璃上,压出一个扁平的鼻尖。他一点也没有注意到,他站在那头大象面前时后脑勺上那个包已经完全消下去了。
而城市另一端的陈建国,在那间他自己位于一幢他已经使用了多年的办公楼内办公室里——他拨出了一个不会接通到任何有效收件箱的语音连接尝试,然后将那页因超时未被确认的订单通知单最终从那块桌面上放进了碎纸机的进纸口。碎纸机在吞下那张纸之前发出一声短暂的工作噪声,然后恢复了待机。那张曾经标记着“金额:830万元”的方头文件,在他办公室的全部已连接打印机和扫描仪之间传递过几轮不同的状态码序列后,以一段在该楼层的纸质废弃物回收数据库中被标记为“当日已处理”的字节流形式,结束了它在该存储器的介质生命周期内最后一轮的存在期。
一周后,家族群里的聊天界面中有人用一条不超过五行的短文本消息询问:“听说建国那个工程出了点问题?”聊天窗口底部没有收到任何来自发件人的回复字节——阅读回执显示送达后不久,发送聊天界面被发件人以外的人从自己的设备上删除了。没有人提起那块在酒店宴会厅地上被油渍溅脏的白色运动裤,也没有人向家族群中通知任何需要择期重新召开的通知。
陈志远没有在那个群的任何置顶消息上方填入任何后缀字节。他只是在那个群的全部未读标记被他自己设置为“全部标为已读”的状态下,关闭了他自己的终端上当前程序的全部前台窗口。他不需要在家族群的已读名单中留下任何可以被任何人在在线用户列表中捕获到的代表他个人账户名的在线标记。
而苏晚晴在当天的家务管理循环中完成了一次正常的关门锁闭操作。她只是在她自己的待办事项清除后,以她在这扇门与这套房子的全部使用周期中的默认用户权限,转动了那扇她在昨天的任何一个时钟周期内都没有特别留意过其锁芯维护状态的厨房门把手。
她不需要向任何节点发送“昨日所有关联端口的全部阻塞信号均已清除”的系统通知。她只需要知道:儿子后脑勺的那个包在第二天早上她检查时已经看不出来了,而厨房那扇门虽然几年前就在早上拉开时有一点发涩,但用起来完全不影响它的全部行程周期,不需要安排任何在指定维修日期内更换其滑动组件的大修计划。
他拧开他那间办公室的门,走进那间在家族工业区全部厂房的布局图中以他自己的公司名注册的、有权限查看局域网内其他厂家基础设备的部分日志数据的工作间相通的小车间。他拧开门锁的那一刻,从他自己那台设备与采购中心服务器集群之间的网间连接器的状态指示灯在你自己的域控制器上以默认速度闪烁了两下,然后恢复为全程常亮。他不需要在下一个采购周期的供应商资格审查表中手动填充任何额外的背景信息字段。
那天下午,在游乐场的出口处,儿子拉着他的手,问他:“爸爸,下周末我们还能来吗?”他蹲下来,平视着儿子的眼睛,说:“能。”
热门跟贴