做网站的时候宽度都怎么弄,程序员做电商网站的公司好吗,茶叶响应式网站,网站推广的方式有哪些?本来想说说 tcp fastopen(tfo)#xff0c;但没什么意义#xff0c;看 rfc7413 好了#xff0c;还是 tcp 的惯常套路#xff0c;引入一个新特性#xff0c;解决了某个问题#xff0c;带来一些新问题#xff0c;然后就是各种 tradeoff#xff0c;哪里适用哪里不适用。久而…本来想说说 tcp fastopen(tfo)但没什么意义看 rfc7413 好了还是 tcp 的惯常套路引入一个新特性解决了某个问题带来一些新问题然后就是各种 tradeoff哪里适用哪里不适用。久而久之tcp 就成了一个极其拧巴的协议都烦但谁也逃不过但凡 tcp 问题都不是容易解决的都是仁者见仁的形而上。
昨天刷到一个搞云原生项目管理的经理 up 主竟然单独出一期视频讲 tcp 超时我就拧巴了说明 tcp 真就是一团乱麻得好好理一下。
tcp 是 internet(首字母 i 应该大写) 开山协议后来从中分出了 ip就是 tcp/ip 第四版可见前面至少折腾了三个版本其实远远不止。事后来看这就是 tcp 拧巴的核心原因如果 tcp/ip 是设计出来而不是进化出来的应该是个反过来的过程先有一个尽力而为的 ip 奠定瘦网胖端的细腰基础然后在其上铺设其它协议。
果真如此的话分层协议就没了传输层协议会更加平坦不会有 tcp 协议更不会有 udp而是 app 自决由 app 自行规定传输控制语义标准化的过程会更自然哪个 app 比较流行哪个 app 规定的传输控制语义就是标准就像 quic 后来做的那样其底色就是流行的 http但 quic 却不为路由器交换机所知这才是真正的端到端。
但事实和理想是相反的tcp/ip 不是设计出来的而是进化出来的所以 iso/osi 说好的分层协议层间隔离就成了瞎话它们本质是不同的东西。tcp 既没有隔离上层也没有隔离下层我就说几个例子。
对上层程序员完全在 tcp 之上编程(inet steam socket)如果 tcp 发生异常比如断了程序员必须显式处理一大堆恶心缠绕的代码在处理异常这种习惯慢慢成了范式以至于 quic 已经有了连接迁移能力时程序员依然害怕五元组变化。当谈到 google 家的 plb 时人们首先想到的不是它的作用而是它的问题“它是如何更换五元祖不导致连接挂掉的” 连接挂就挂了呗为什么 app 和 tcp 之间没有一个 lib 解决这个问题呢。程序员害怕 tcp 断但其实 tcp 本不该被程序员感知。
对下层tso/gsolro/gro 依赖顺序 stream但传输优化却要乱序这两者相悖但网卡还是害怕 tcp socket 在 cpu 间迁移不然它那些个 offloadingrss 就不起作用空耗复杂性当我提到这两者相悖时程序员怼我拼命维护 offloading 和 rss大意是 “我靠你怎么连优秀的 rss 都喷”我就说有了 rss你怎么玩乱序。
网络和 cpu 完全不同带宽的发展是无关比特并行度的提高而 cpu 则被串行流约束两者如不解耦性能根本上不去然而程序员思维大大偏向 cpu他们根本无法理解如果取消了流的串行约束还能剩下什么。
核心交换容量都 100Tbps 了还在玩 lro/gro你们难道不知道它们受限于 cpu 吗这还没考虑内存墙你们懂交换容量吗你们拼命节省 cpu但你们忍心浪费核心交换机的背板能耗吗。懂网络的程序员很少无论 xdpdpdkoffloading用户态在他们没看懂近乎无限的交换容量前他们完全不懂如何浪费这种容量将精力集中在 cpu 没错但错在他们忽略了带宽。
tcp 已经运行 40 年虽然大家都在谈 tcp/ip 分层但它和分层思想是相悖的tcp 贯穿了从 socket 到网卡在路由器交换机都有 tcptcp 无处不在侵染了系统思想。
一个 web 前端程序员懂 tcp一个网卡驱动程序员也懂 tcp看起来都很精通但其实并不懂不怪人只怪 tcp 太拧巴。当然说的都是经理。
吃饭了。
浙江温州皮鞋湿下雨进水不会胖。