我们需要对 “ 毒品 “(Drug of Abuse)进行一个科学的定义。根据《中华人民共和国禁毒法》以及国际公约(如联合国 1961 年《麻醉品单一公约》),毒品是指因具有依赖性潜力、能使人形成瘾癖的,受到国家专门法律管制的麻醉药品和精神药品。

其核心特征包括:

  • 精神活性 (Psychoactivity): 能够影响人的中枢神经系统,改变情绪、认知、意识或行为。
  • 依赖性潜力 (Dependence Potential): 能够导致使用者产生强烈的、持续的用药渴求,形成心理依赖和/或生理依赖。
  • 社会危害性 (Social Harm): 滥用行为会对个人健康、家庭功能及社会秩序与安全构成威胁。
Read more »

西方哲学史

一:前苏格拉底哲学

1.米利都学派

  • 米利都学派 是前苏格拉底哲学的一个学派,被誉为是西方哲学的开创者,由古希腊学者泰勒斯创建。米利都学派开创了理性思维,试图用观测到的事实而不是用古代的希腊神话来解释世界。
  • 希腊哲学之父泰勒斯
    • 万物的本原是水
  • 著名的学生 阿那克西曼德
    • 万物的本原是无限
  • 著名的学生 阿那克西美尼
    • 万物的本原是气体
Read more »

朝鲜半岛的历史,就像一个才华横溢但身不由己的大家族,住在一个强邻环伺的 “ 巷子口 “。

这个家族(朝鲜民族)内部有自己的传统、发明和骄傲(如韩文、高丽青瓷),但它的命运总是不由自主地被巷子里的壮汉邻居(中国、日本、蒙古等)和后来搬来的世界警察(美国、苏联)深刻影响。它时而学习邻居,时而抵抗邻居,但内心深处始终想走出一条属于自己的路。

当我们在谈论 1945 年以前的历史时,” 朝鲜 “(或其旧称,如高丽、新罗)指的是整个半岛。谈论 1945 年以后时,必须明确指的是 “ 朝鲜 “ 还是 “ 韩国 “。

Read more »

整个演变史就是一部皇帝(皇权)与宰相(相权)之间长达两千年的“权力拔河赛”。理解了这条主线,你就能看懂很多历史事件背后的真正动因。

学习时,始终抓住“皇权 vs 相权”这条核心斗争线。所有制度改革,几乎都围绕这个展开。

三省六部有分权制衡的影子,但其根本目的是为了提高皇权统治的效率和安全,而不是限制皇权。所有权力最终都源于皇帝,也服务于皇帝。

Read more »

这个划分最早起源于 18 世纪末的法国大革命。在当时的法国国民议会上:激进的、支持革命、希望彻底改变旧制度(推翻君主制和贵族特权)、主张建立一个更平等、更世俗化共和国的议员们,习惯性地坐在议会场的左边。保守的、希望保留传统、维护君主和教会权威、主张温和改革或维持现状的议员们,则坐在右边 。

  • 左派更关心“大家过得好不好,公不公平”,右派更关心“我有没有权利做我想做的事,市场自不自由”。
  • 左的尽头是共产主义,右的尽头是彻底的自由放任资本主义。
Read more »

繁衍,是刻在动物身体基因里最原始的一个欲望。

萨特曾言,人类是自由的,却常常通过“自欺”来逃避责任——我们说服自己“不想”结婚生子,只是因为恐惧生活的不确定性、经济负担和社会期望的枷锁。这种麻醉是暂时的自我保护,却可能在生命的后期酿成深刻的空虚。

年轻时做出的选择,逻辑上或可自圆其说,然人生的悲剧在于,我们常在信息不完整下做出不可逆转的决定。尤其对女性而言,生育机能的不可逆转,使得她们在“醒悟”时往往已无从补救。

费孝通先生说过生育是一个 “ 损己利人 “ 的事情,我们为什么要延续生命、做一个低回报的投资?答案在于:在亲密关系中寻觅意义,将“小我”融入“大我”的体验,本身就是一种对抗虚无、赋予生命以纵深感的强大力量。

人生永远不存在完美的准备时刻,正如李安在电影饮食男女里所说 “ 人生不能像做菜,把所有的料都准备好了才下锅 “。选择结婚并非盲动,只是在不完美的烹饪过程中,才能被赋予最真实、最热烈的味道。

我们在社交媒体和生活中看到了太多的婆媳关系的矛盾,却鲜少听闻发自肺腑的和解与感恩。对儿子和丈夫的争夺,不足以解释现代婆媳矛盾的核心。真正的引爆点,往往出现在第三代——孩子的降生。

祖辈对孙辈的照看,是一种源于血脉之亲的、自愿的付出。它是一份恩情,而非一份责任。媳妇认为婆婆带孙子是理所应当,她便剥夺了这份行为的恩情属性,将其贬低为一种必须履行的服务。如果婆婆将带孙延伸为对新家庭的掌控权,她亦玷污了这份恩情的纯粹。

现代家庭悲剧的根源,恰恰在于将恩情误读为责任。每个人都宣称为了孩子好,却在这场恩责不分的混乱中,互相感到自己的付出被漠视。

丈夫永远不要去做一个裁判,而是要与妻子共同组成一个阵线。双方必须全部完成对各自原生家庭的背叛,才能真正做到婆媳关系的破局。

真正的家庭哲学,应当是一种“树状”结构 🎄:

  • 向下扎根,是责任:夫妻二人是树干,共同承担养育子女(树根向下生长)的绝对责任。这是家庭稳定的基石。
  • 向上生长,是感恩:对于父母(阳光雨露),应怀有赡养与反哺之心。当他们给予照看孙辈时,要视之为滋养,报以由衷的感激,而非理所当然地索取。

除了亚里士多德的第一性原理,我一直觉得世界上还些一个真理,使用上就像开了天眼生活。

第一美好原理:(开了天眼👀 生活 )

就是按照你期待的美好去生活,将其从一种“愿望”深化为一套“主动创造现实”的行动哲学。
我命名为:第一美好原理。

  • 主动校准自己的频率,去和那个美好的现实同频。

第一能量原理:(减少能量消耗,臣服接纳)

不要因为懊悔消耗自己的能力,而是要把能量转化为解决问题的行动。火箭启动前永远在蓄力,不是在消耗。
我命名为:第一能量原理。

  • 臣服不是放弃,是智慧中的大智慧,是在聚集流失的能量。

第一行动原理 (先完成,后完美)

错误决策是一个老师,它的任务是“教会”你,而不是“惩罚”你。错误是老师,行动是解药。
我命名为:第一行动原理。

  • 人拥有的信息永远是有限的、过时的。行动带来了思考的素材,让路径变得清晰。

 Wireshark网络分析就这么简单|200

关于作者

  • 📌 每年临近加薪的日子,他也会组织一些技术培训来提醒上司。本书的部分内容就来自这些培训资料。
    • ⏱ 2025-07-09 00:32:23

前言

  • 📌 比如你之前可能没有意识到,DNS 查询在基于 TCP 时效率有多低

    • ⏱ 2025-07-09 00:34:39
  • 📌 我们也许可以在几个小时里学会使用Wireshark软件,在几天里学会一个协议,但是思路的养成却需要经年累月的锻炼。

    • ⏱ 2025-07-09 00:35:03
  • 📌 Wireshark 是最流行的网络嗅探器之一,能在多种平台上抓取和分析网络包,比如Windows、Linux和Mac等。它的图形界面非常友好,但如果你觉得鼠标操作不够有腔调,也可以使用它的命令行形式——TShark。

    • ⏱ 2025-07-09 00:35:25
  • 📌 很显然,Wireshark 并不能帮我们变成网络新贵,但它对技术上有所追求的工程师来说,有着金钱难以衡量的价值。用它来辅助学习,可以更深入地理解网络协议;用它来排查故障,可以更快地发现问题。假如你是团队中唯一掌握 Wireshark的网络工程师,这个看家本领非常有助于你保持大牛地位。在同事们手足无措时,你可以用最快的速度摆平,然后平静地说一句:“问题解决了,我先去泡杯咖啡。”

    • ⏱ 2025-07-09 00:35:42
  • 📌 技术类知识就是这样,如果你从最简单的地方开始动手操作,接下来就如鱼得水;如果从一开始只依靠冥想,到后面就会走火入魔。

    • ⏱ 2025-07-09 00:38:53
  • 📌 容易理解是最难做到的一点。传说白居易写完一首诗,必定先请不识字的老太婆品鉴,一直要修改到老太婆听懂为止

    • ⏱ 2025-07-09 00:39:43

初试锋芒

  • 📌 服务器B通过ARP广播查询默认网关192.168.26.2的MAC地址。为什么我ping的是服务器A的IP,B却去查询默认网关的MAC地址呢?这是因为B根据自己的子网掩码,计算出A属于不同子网,跨子网通信需要默认网关的转发。而要和默认网关通信,就需要获得其MAC地址。

    • ⏱ 2025-07-09 00:45:46
  • 📌 为什么这些MAC地址的开头明明是“00:50:56”或者“00:0c:29”,Wireshark上显示出来却都是“Vmware”?这是因为 MAC 地址的前 3 个字节表示厂商。而 00:50:56 和 00:0c:29 都被分配给Vmware公司。这是全球统一的标准,所以Wireshark干脆显示出厂商名了。

    • ⏱ 2025-07-09 00:47:05
  • 📌 B回复了A的ARP请求,把自己的MAC地址告诉A。这说明 B在执行ARP回复时并不考虑子网。虽然ARP请求来自其他子网的IP,但也照样回复。

    • ⏱ 2025-07-09 00:51:27
  • 📌 B先把ping请求交给默认网关,默认网关再转发给A。而A收到请求后直接把ping回复给B,

    • ⏱ 2025-07-09 00:55:17

小试牛刀:一个简单的应用实例

  • 📌 A的3个IP显然都与B属于不同子网,那就应该走默认网关了。会不会是 A 和默认网关的通信出问题了呢?我从 A 上 ping了一下网关,结果却是通的。难道是因为网关没有把包转发出去?或者是ping请求已经被转发到B了,但ping回复在路上丢失?我感觉自己已经走进死胡同。每当到了这个时候,我就会想到最值得信赖的队友——Wireshark
    • ⏱ 2025-07-09 01:10:20

你一定会喜欢的技巧

  • 📌 在 Wireshark 上可以这样抓到包头:单击菜单栏上的 Capture–>Options,然后在弹出的窗口上定义“Limit each packet to”的值。我一般设个偏大的数字:80字节,也就是说每个包只抓前80字节。这样TCP层、网络层和数据链路层的信息都可以包括在内

    • ⏱ 2025-07-09 10:02:52
  • 📌 如果问题涉及应用层,就应该再加上应用层协议头的长度。如果你像我一样经常忘记不同协议头的长度,可以输入一个大点的值。即便设成200字节,也比1514字节小多了。

    • ⏱ 2025-07-09 10:03:10
  • 📌 用tcpdump命令抓包时可以用“-s”参数达到相同效果。比如以下命令只抓eth0上每个包的前80字节,并把结果存到/tmp/tcpdump.cap文件中。[root@server_1 /]# tcpdump -i eth0 -s 80 -w /tmp/tcpdump.cap

    • ⏱ 2025-07-09 10:03:36
  • 📌 设置Capture Filter之前务必三思,以免把有用的包也过滤掉,尤其是容易被忽略的广播包。当然有时候再怎么考虑也会失算,比如我有一次把对方的IP地址设为filter,结果一个包都没抓到。最后只能去掉filter再抓,才发现是NAT(网络地址转换)设备把对方的IP地址改掉了。

    • ⏱ 2025-07-09 10:04:32
  • 📌 一篇文章不可能涵盖所有技巧,本文就到此为止。最后要分享的,是我认为最“笨”但也是最重要的一个技巧——勤加练习。只要练到这些技巧都变成习惯,就可以算登堂入室了。

    • ⏱ 2025-07-09 10:11:22

Patrick的故事

  • 📌 我收到了他的回信。信中提到两点建议。
    · TCP 超时重传的间隔时间太长,设置一个较小的时间可以减少重传对性能的影响。
    · 该网络频繁拥塞,拥塞点大多在32KB以上。如果把发送窗口限制在32KB,就可以避免触碰拥塞点。
    • ⏱ 2025-07-09 10:12:51

从Wireshark看网络分层

  • 📌 传输层:这一层用到了TCP协议。应用层所产生的数据就是由TCP来控制传输的。点开TCP层前的“+”号,我们可以看到Seq号和Ack号等一系列信息,它们用于网络包的排序、重传、流量控制等。虽然名曰“传输层”,但它并不是把网络包从一个设备传到另一个,而只是对传输行为进行控制。真正负责设备间传输的是下面两层。TCP是非常有用的协议,也是本书的重点。

    • ⏱ 2025-07-09 22:31:30
  • 📌 现在回想起来,如果当时老师能打开Wireshark,让我们看到这些实实在在的分层,我也不会困惑那么久了(假如那天我没有逃课的话)。

    • ⏱ 2025-07-09 22:32:15
  • 📌 历史上还真存在过这种情况—TCP和IP刚发明的时候就是合在一层的,后来才拆成两层

    • ⏱ 2025-07-09 22:33:03
  • 📌 因为网络对包的大小是有限制的,其最大值称为MTU,即“最大传输单元”。大多数网络的MTU是1500字节,但也有些网络启用了巨帧(Jumbo Frame),能达到9000字节。一个8192字节的包进入巨帧网络不会有问题,但到了1500字节的网络中就会被丢弃或者切分。被丢弃意味着传输彻底失败,因为重传的包还会再一次被丢弃。而被切分则意味着传输效率降低。

    • ⏱ 2025-07-09 22:34:12
  • 📌 由于这个原因,TCP不想简单地把8192 字节的数据一口气传给网络互连层,而是根据双方的MTU决定每次传多少。知道自己的MTU容易,但对方的MTU如何获得呢?如图5所示,在TCP连接建立(三次握手)时,双方都会把自己的MSS(Maximum Segment Size)告诉对方。MSS加上TCP头和IP头的长度,就得到MTU了。

    • ⏱ 2025-07-09 22:34:34
  • 📌 假如把客户端和服务器的 MTU 互换一下,这时客户端最大能发出多少字节的包呢?答案还是1500。因为无论接受方的MTU有多大,发送方都不能发出超过自己MTU的包。我们可以得到这样的结论:发包的大小是由MTU较小的一方决定的。

    • ⏱ 2025-07-09 22:36:18

TCP的连接启蒙

  • 📌 在使用UDP的情况下,的确只用这两个包就完成了DNS查询。但在使用TCP时,要先用3个包(包号1、2、3)来建立连接。查询结束后,又用了4个包(包号7、8、9、10)来断开连接。Wireshark把这两种情况的差别完全显示出来了。我们可以从中看到连接的成本远远超过DNS查询本身,这对繁忙的DNS服务器来说无疑是巨大的压力。如果你的DNS还在使用TCP,该考虑更改了。

    • ⏱ 2025-07-09 22:39:10
  • 📌 发出的两个包Len=0,但其实是有TCP头的。头部本身携带的信息很多,所以不要以为Len=0就没意义。

    • ⏱ 2025-07-09 22:42:40
  • 📌 52号包的Seq=5129, Len=1448,所以来自接收方的53号包的Ack=5129+1448=6577,表示收到了6577之前的所有字节。理论上,接收方回复的Ack号恰好就等于发送方的下一个Seq号,

    • ⏱ 2025-07-09 22:49:55
  • 📌 · SYN:携带这个标志的包表示正在发起连接请求。因为连接是双向的,所以建立连接时,双方都要发一个SYN。

    • ⏱ 2025-07-09 22:44:57
  • 📌 · FIN:携带这个标志的包表示正在请求终止连接。因为连接是双向的,所以彻底关闭一个连接时,双方都要发一个FIN。

    • ⏱ 2025-07-09 22:45:00
  • 📌 实际环境中的 RST 往往意味着大问题。如果你在Wireshark中看到一个RST包,务必睁大眼睛好好检查。

    • ⏱ 2025-07-09 22:45:33
  • 📌 为什么要用三个包来建立连接呢,用两个不可以吗?其实也是可以的,但两个不够可靠。我们可以设想一个情况来说明这个问题:某个网络有多条路径,客户端请求建立连接的第一个包跑到一条延迟严重的路径上了,所以迟迟没有到达服务器。因此,客户端只能当作这个请求丢失了,不得不再请求一次。由于第二个请求走了正确的路径,所以很快完成工作并关闭了连接。对于客户端来说,事情似乎已经结束了。没想到它的第一个请求经过跋山涉水,还是到达了服务器。如图10所示,服务器并不知道这是一个旧的无效请求,所以按照惯例回复了

    • ⏱ 2025-07-09 22:46:46
  • 📌 假如TCP只要求两次握手,服务器上就这样建立了一个无效的连接。而在三次握手的机制下,客户端收到服务器的回复时,知道这个连接不是它想要的,所以就发一个拒绝包。服务器收到这个包后,也放弃这个连接。

    • ⏱ 2025-07-09 22:47:10

快递员的工作策略—TCP窗口

  • 📌 快递送货的策略非常浅显,几乎人人可以理解,而TCP传输大块数据的策略却很少人懂。事实上这两者的原理是相似的。

    • ⏱ 2025-07-09 22:51:42
  • 📌 TCP显然不用电瓶车送包,但它也有“往返”的需要。因为发包之后并不知道对方能否收到,要一直等到确认包到达,这样就花费了一个往返时间。假如每发一个包就停下来等确认,一个往返时间里就只能传一个包,这样的传输效率太低了。最快的方式应该是一口气把所有包发出去,然后一起确认。但现实中也存在一些限制:接收方的缓存(接收窗口)可能一下子接受不了这么多数据;网络的带宽也不一定足够大,一口气发太多会导致丢包事故。所以,发送方要知道接收方的接收窗口和网络这两个限制因素中哪一个更严格,然后在其限制范围内尽可能多发包。这个一口气能发送的数据量就是传说中的TCP发送窗口。

    • ⏱ 2025-07-09 22:52:25
  • 📌 不知道出于何种原因,TCP发送窗口的概念被广泛误解,比如,很多人会把接收窗口误认为发送窗口。我经常想在论坛上回答相关提问,却不知道该从何答起,因为有些提问本身就基于错误的概念。下面是一些经常出现的问题。

    • ⏱ 2025-07-10 00:06:10
  • 📌 这不是发送窗口,而是在向对方声明自己的接收窗口。在此例子中, 10.32.106.103向10.32.106.73声明自己的接收窗口是64093字节。10.32.106.73收到之后,就会把自己的发送窗口限制在64093字节之内

    • ⏱ 2025-07-10 00:08:11
  • 📌 假如接收方处理数据的速度跟不上接收数据的速度,缓存就会被占满,从而导致接收窗口为0。如图5的Wireshark截屏所示,89.0.0.85持续向89.0.0.210声明自己的接收窗口是win=0,所以 89.0.0.210的发送窗口就被限制为0,意味着那段时间发不出数据。

    • ⏱ 2025-07-10 00:08:37
  • 📌 图52.我如何在包里看出发送窗口的大小呢?很遗憾,没有简单的方法,有时候甚至完全没有办法。因为,当发送窗口是由接收窗口决定的时候,我们还可以通过“window size:”的值来判断。而当它由网络因素决定的时候,事情就会变得非常复杂(下篇文章将会详细介绍)。大多数时候,我们甚至不确定哪个因素在起作用,只能大概推理。以

    • ⏱ 2025-07-10 00:09:10
  • 📌 发送窗口和MSS有什么关系?发送窗口决定了一口气能发多少字节,而MSS决定了这些字节要分多少个包发完。举个例子,在发送窗口为16000字节的情况下,如果MSS是1000字节,那就需要发送16000/1000=16个包;而如果MSS等于8000,那要发送的包数就是16000/8000=2了。

    • ⏱ 2025-07-10 00:09:59
  • 📌 4.发送方在一个窗口里发出n个包,是不是就能收到n个确认包?不一定,确认包一般会少一些。由于TCP可以累积起来确认,所以当收到多个包的时候,只需要确认最后一个就可

    • ⏱ 2025-07-10 00:10:19
  • 📌 5.经常听说“TCP Window Scale”这个概念,它究竟和接收窗口有何关系?在TCP刚被发明的时候,全世界的网络带宽都很小,所以最大接收窗口被定义成 65535 字节。随着硬件的革命性进步,65535 字节已经成为性能瓶颈了,怎么样才能扩展呢?TCP 头中只给接收窗口值留了 16 bit,肯定是无法突破 65535 (216−1)的。

    • ⏱ 2025-07-10 00:10:52
  • 📌 1992年的RFC 1323中提出了一个解决方案,就是在三次握手时,把自己的Window Scale信息告知对方。由于Window Scale放在TCP头之外的Options中,所以不需要修改 TCP 头的设计。Window Scale 的作用是向对方声明一个 Shift count,我们把它作为2的指数,再乘以TCP头中定义的接收窗口,就得到真正的TCP接收窗口了。

    • ⏱ 2025-07-10 00:11:13

重传的讲究

  • 📌 阅读本文之前,务必保证心情愉快,以免产生撕书的冲动;同时准备浓缩咖啡一杯,防止看到一半睡着了。因为这部分内容是TCP中最枯燥的,但也是最有价值的

    • ⏱ 2025-07-10 00:12:47
  • 📌 前文说到,发送方的发送窗口是受接收方的接收窗口和网络影响的,其中限制得更严的因素就起决定作用。接收窗口的影响方式非常简单,只要在包里用“Win=”告知发送方就可以了。而网络的影响方式非常复杂,所以留到本文专门介绍。

    • ⏱ 2025-07-10 00:12:57
  • 📌 难道就没有一个完美的方案吗?很遗憾,还真的没有。自网络诞生数十年以来,涌现过无数绝顶聪明的工程师,就是没有一个人能解决这个问题。幸好经过几代人的努力,总算有了一个最靠谱的策略。这个策略就是在发送方维护一个虚拟的拥塞窗口,并利用各种算法使它尽可能接近真实的拥塞点。网络对发送窗口的限制,就是通过拥塞窗口实现的。

    • ⏱ 2025-07-10 00:14:27
  • 📌 如果一口气发太多数据就可能遭遇拥塞,所以发送方把拥塞窗口的初始值定得很小。RFC 的建议是 2个、3个或者4个MSS,具体视MSS的大小而定。

    • ⏱ 2025-07-10 00:14:44
  • 📌 2.如果发出去的包都得到确认,表明还没有达到拥塞点,可以增大拥塞窗口。由于这个阶段发生拥塞的概率很低,所以增速应该快一些。RFC建议的算法是每收到n个确认,可以把拥塞窗口增加n个MSS。比如发了2个包之后收到2个确认,拥塞窗口就增大到2+2=4,接下来是4+4=8,8+8=16……这个过程的增速很快,但是由于基数低,传输速度还是比较慢的,所以被称为慢启动过程。

    • ⏱ 2025-07-10 00:15:47
  • 📌 3.慢启动过程持续一段时间后,拥塞窗口达到一个较大的值。这时候传输速度比较快,触碰拥塞点的概率也大了,所以不能继续采用翻倍的慢启动算法,而是要缓慢一点。RFC 建议的算法是在每个往返时间增加 1 个 MSS。比如发了 16 个MSS之后全部被确认了,拥塞窗口就增加到16+1=17个MSS,再接下去是17+1=18, 18+1=19……这个过程称为拥塞避免

    • ⏱ 2025-07-10 00:16:12
  • 📌 从慢启动过渡到拥塞避免的临界窗口值很有讲究。如果之前发生过拥塞,就把该拥塞点作为参考

    • ⏱ 2025-07-10 00:16:22
  • 📌 据。如果从来没有拥塞过就可以取相对较大的值,比如和最大接收窗口相等。

    • ⏱ 2025-07-10 00:16:34
  • 📌 无论是慢启动还是拥塞避免阶段,拥塞窗口都在逐渐增大,理论上一定时间之后总会碰到拥塞点的。那为什么我们平时感觉不到拥塞呢?原因有很多,如下所示。· 操作系统中对接收窗口的最大设定多年没有改动,比

    • ⏱ 2025-07-10 00:17:18
  • 📌 如 Windows 在不启用“TCP window scale option”的情况下,最大接收窗口只有64KB。而近年来网络有了长足进步,很多环境的拥塞点远在64KB以上。也就是说发送窗口已经被限制在64KB了,永远触碰不到拥塞点。

    • ⏱ 2025-07-10 00:17:23
  • 📌 很多应用场景是交互式的小数据,比如网络聊天,所以也不会有拥塞的可能。

    • ⏱ 2025-07-10 00:17:32
  • 📌 拥塞之后会发生什么情况呢?对发送方来说,就是发出去的包不像往常一样得到确认了。不过收不到确认也可能是网络延迟所致,所以发送方决定等待一小段时间后再判断。假如迟迟收不到,就认定包已经丢失,只能重传了。这个过程称为超时重传

    • ⏱ 2025-07-10 00:18:19
  • 📌 RTO。RTO的取值颇有讲究,理论上需要几个公式计算出来。根据多一道公式就会丢失一半读者的原理,本文将对此只字不提,我们只需要知道存在这么一段时间就可以了。有些操作系统上提供了调节RTO大小的参数。

    • ⏱ 2025-07-10 00:18:47
  • 📌 重传之后的拥塞窗口是否需要调整呢?非常有必要,为了不给刚发生拥塞的网络雪上加霜,RFC建议把拥塞窗口降到1个MSS,然后再次进入慢启动过程

    • ⏱ 2025-07-10 00:19:06
  • 📌 不难想象,超时重传对传输性能有严重影响。原因之一是在RTO阶段不能传数据,相当于浪费了一段时间;原因之二是拥塞窗口的急剧减小,相当于接下来传得慢多了。以我的个人经验,即便是万分之一的超时重传对性能的影响也非同小可

    • ⏱ 2025-07-10 00:20:51
  • 📌 当发送方收到3个或以上重复确认(Dup Ack)时,就意识到相应的包已经丢了,从而立即重传它。这个过程称为快速重传。之所以称为快速,是因为它不像超时重传一样需要等待一段时间

    • ⏱ 2025-07-10 00:21:57
  • 📌 为什么要规定凑满3个呢?这是因为网络包有时会乱序,乱序的包一样会触发重复的 Ack,但是为了乱序而重传没有必要

    • ⏱ 2025-07-10 00:23:17
  • 📌 没有拥塞时,发送窗口越大,性能越好。所以在带宽没有限制的条件下,应该尽量增大接收窗口,比如启用Scale Option(Windows上可参考KB 224829)。

    • ⏱ 2025-07-10 00:25:09
  • 📌 如果经常发生拥塞,那限制发送窗口反而能提高性能,因为即便万分之一的重传对性能的影响都很大

    • ⏱ 2025-07-10 00:25:18
  • 📌 很多操作系统上可以通过限制接收窗口的方法来减小发送窗口,Windows上同样可以参考KB224829。· 超时重传对性能影响最大,因为它有一段时间(RTO)没有传输任何数据,而且拥塞窗口会被设成1个MSS,所以要尽量避免超时重传。· 快速重传对性能影响小一些,因为它没有等待时间,而且拥塞窗口减小的幅度没那么大

    • ⏱ 2025-07-10 00:25:37
  • 📌 丢包对极小文件的影响比大文件严重。因为读写一个小文件需要的包数很少,所以丢包时往往凑不满3个Dup Ack,只能等待超时重传了。而大文件有较大可能触发快速重传。下面的实验显示了同样的丢包率对大小文件的不同影响:图11中的test是包含很多小文件的目录,而图12的hi是一个大文件。发生丢包时前者耗时增加了7倍多,而后者只增加了不到4倍

    • ⏱ 2025-07-10 00:28:29

延迟确认与Nagle算法

  • 📌 假如把这个过程的包抓下来,会看到很多小包频繁来往于客户端和服务器之间。这种方式其实是很低效的,因为一个包的TCP头和IP头至少就40字节,而携带的数据却只有一个字符。这就像快递员开着大货车去送一个小包裹一样浪费。

    • ⏱ 2025-07-10 00:36:24
  • 📌 称为延迟确认。该策略的原理是这样的:如果收到一个包之后暂时没什么数据要发给对方,那就延迟一段时间(在Windows上默认为200毫秒)再确认。假如在这段时间里恰好有数据要发送,那确认信息和数据就可以在一个包里发出去了。第12号包就恰好符合这个策略,客户端收到11号包之后,等了41毫秒左右时我又输入一个字符。结果这个字符和对11号包的确认信息就一起装在12号包里了。延迟确认并没有直接提高性能,它只是减少了部分确认包,减轻了网络负担。有时候延迟确认反而会影响性能。微软的 KB 328890 提供了关闭延迟确认的步骤

    • ⏱ 2025-07-10 00:37:45
  • 📌 我一共输入了7个字符,但这些字符也被逐个打成小包了。能不能设计一个缓冲机制,把一个往返时间里生成的小数据收集起来,合并成一个大包呢?Nagle算法就实现了这个功能。这个算法的原理是:在发出去的数据还没有被确认之前,假如又有小数据生成,那就把小数据收集起来,凑满一个MSS或者等收到确认后再发送

    • ⏱ 2025-07-10 00:38:15
  • 📌 和延迟确认一样,Nagle 也没有直接提高性能,启用它的作用只是提高传输效率,减轻网络负担。在某些场合,比如和延迟确认一起使用时甚至会降低性能。微软也有篇KB指导如何关闭Nagle,但是一般没有这个必要,原因之一是很多软件已经默认关闭Nagle了。比如打开Putty,到“Connection”选项里可见“Disable Nagle’s algorithm”默认就是选中的

    • ⏱ 2025-07-10 00:39:01

百家争鸣

  • 📌 在过去几十年里,虽然TCP从来没有遇到过对手,不过它自己已经演化出无数分身,形成百家争鸣的局面。本文无法一一列举所有的算法,点到的也如蜻蜓点水,假如你想为自己的网络平台选取其中一种,还需要多多研究
    • ⏱ 2025-07-10 00:45:46

简单的代价—UDP

  • 📌 1.UDP不像TCP一样在乎双方MTU的大小。它拿到应用层的数据之后,直接打上UDP头就交给下一层了。那么超过MTU的时候怎么办?在这种情况下,发送方的网络层负责分片,接收方收到分片后再组装起来,这个过程会消耗资源,降低性能。图3是一个32KB的写操作,根据发送方的MTU被切成了23个分片。
    • ⏱ 2025-07-10 00:46:27

剖析CIFS协议

  • 📌 那Windows上一般使用什么共享协议呢?它就是微软维护的SMB协议,也叫Common Internet File System(CIFS)
    • ⏱ 2025-07-10 00:48:18

TCP/IP的故事

  • 📌 现在人们说到 TCP/IP 时,指的已经不止是 TCP 和 IP 两个协议,而是包括了Application Layer、Transport Layer、Internet Layer和Network AccessLayer的四层模型。TCP处于Transport Layer,而IP处于Internet Layer。鲜为人知的是,一开始这两个协议并没有分层,而是合在一起的。

    • ⏱ 2025-07-10 10:12:24
  • 📌 TCP/IP的设计非常成功。30年来,底层的带宽、延时,还有介质都发生了翻天覆地的变化,顶层也多了不少应用,但TCP/IP却安如泰山。它不但战胜了国际标准化组织的OSI七层模型,而且目前还看不到被其他方案取代的可能。第一代从事TCP/IP工作的工程师,到了退休年龄也在做着朝阳产业。

    • ⏱ 2025-07-10 10:23:05
  • 📌 最近有了一些惊人的发现:我们都知道这个七层模型是由一个小组(见图3)完成的,但大家不知道的是,这个小组有一天深夜在酒吧里谈论美国的娱乐八卦。他们把迪斯尼电影里7个小矮人的名字写在餐巾纸上,有个人开玩笑说7对于网络分层是个好数字。第二天上午在标准化委员会的会议上,他们传阅了那张餐巾纸,然后一致同意昨晚喝醉时的重大发现。那天结束时,他们又给七个层次重新起了听上去更科学的名字,于是模型就诞生了。

    • ⏱ 2025-07-10 10:24:11
  • 📌 而当时业界普遍对待OSI模型的抵触态度,更是一个有力的佐证。幸好到了今天, OSI模型几乎名存实亡了,它对我们的影响只停留在还没来得及更新的教科书上。

    • ⏱ 2025-07-10 10:24:31

一个技术男的自白

  • 📌 技术深度和广度的关系,就像登山时的高度和视野。假如你爬到半山腰就停下来眺望,就只能看到一半的视野;但如果埋头爬到山顶,一抬头便是无边的风景。
    • ⏱ 2025-07-10 10:40:13

读书笔记

本书评论

 真想让我爱的人读读这本书|200

前言

  • 📌 我们总是不知道自己真正想要和需要的是什么,所以,当我们达成心愿时又发现这不是自己想要的。我们可以及时纠正错误并从中吸取教训,然后做出新的决策。这个决策在一段时间内是正确的,但过一段时间,我们需要做一次调整,不到最后一刻,我们永远不能说现有决策是对的。

    • ⏱ 2025-06-09 18:57:59
  • 📌 从现在起,停止评判。其实大家都一样,都是脆弱的人,学会承认脆弱,要比戴上假装强大的面具更能表现出力量

    • ⏱ 2025-06-09 18:58:10

1 爱的本质是被看见

  • 📌 爱的本质是被看见

    我们之所以能和
    特定的人发展友谊
    甚至爱情,往往是
    因为被看见的
    强烈体验。

    • ⏱ 2025-06-10 09:31:28
  • 📌 对于“现代独立女性”的刻板印象也无处不在,但我认为,我们从来没有真正地独立:从收割粮食到物流运输,从自来水的供应到房屋的建造,我们生活的方方面面都要依赖他人。认为人生存于世可以完全独立,那是错误的观念。就像我们需要别人提供饮用水一样,我们也需要别人的陪伴——即使有些人总是试图通过训练来摆脱这种需求。

    • ⏱ 2025-06-10 09:32:51
  • 📌 从来没有婴儿这回事,只有婴儿和母亲。”也就是说,当你看到婴儿的时候,一定会同时看到照顾他的母亲。人类是一种需要连接的生物,连接让我们觉得自己是更广阔的世界的一部分。这种连接通常是与人的连接,也可以是与想法、环境、物品的连接。

    • ⏱ 2025-06-10 09:33:01
  • 📌 一个人在临终之前才会醒悟,他生命中最重要的东西就是他的关系,这种关系通常是指与他人的关系。

    • ⏱ 2025-06-10 09:33:47

真正的归属感不需要你改变自己

  • 📌 当你能轻易地连接所有事物时,你会发现最终你和任何事物都没有连接。我们在生活中都遇到过这样的人,他们精力分散,你很难跟上他们的节奏,也很难和他们好好相处,因为你总觉得他们没有把全部注意力放在你身上。这就是所谓的狂躁状态,有时狂躁是有益的,对有些人来说,它能激发创造力,但从长远来看,这是一种不可持续的状态

    • ⏱ 2025-06-10 09:34:32
  • 📌 在我看来,这位女士是可以处理好人际关系的,因为她已经拥有两段最好的关系——和她的孩子、丈夫。她的问题也是我们每个人经常会出现的问题:发现自己很难与人建立连接,就开始找借口。别人邀请她去家里聚餐,她感觉很自卑,于是把这种自然形成的子群体视为“小团体”或“圈子”,认为她们在刻意地互相竞争,想要一分高下。

    • ⏱ 2025-06-10 09:37:12
  • 📌 通过分析别人的行为而不是自己的行为,她为自己无法改善人际关系找到了借口。我们不能控制别人的行为,但我们可以控制自己的行为。

    • ⏱ 2025-06-10 09:37:12
  • 📌 她焦虑的点在于,她想为了孩子而不是自己去交朋友。并不是每个人都需要有一定数量的朋友,有些人只需要和少数几个人相处就够了,这位女士就是典型的例子。

    • ⏱ 2025-06-10 09:35:20

为什么有时候建立关系如此艰难

  • 📌 曾经我认为牢不可破的友谊,现在也让我非常失望。同事和朋友看到我现在失业,觉得我没什么价值了,都不再和我联系。我在生活中完全靠自己,人际关系对我来说毫无意义。

    • ⏱ 2025-06-10 09:36:00
  • 📌 有一种常见的认知陷阱是“非黑即白”。比如我们经常说:没有人会关心别人;每个人都只为自己着想;任何友谊都没有意义。这些说法的共同之处在于“两极分化”,认为人生不是1就是10,不存在2到9之间的任何可能。要辨别哪些说法是“非黑即白”,就看有没有诸如“每个人”“百分之百”“没有任何人”“从来不”这样的表达。这都是你基于过去的经历形成的一种偏执的看法,是一种假设和想象,你需要在了解事情全貌之后进行理性思考,而不能情绪用事。我在其他书里说过,现在再说一遍:不要把熟悉的事物当作真理

    • ⏱ 2025-06-10 09:36:27

不确定的情感状态反而令人上瘾

  • 📌 回避型依恋的人害怕承诺,一旦需要他做出承诺,他就会开始逃避这段关系。形成这种依恋类型的原因通常可以追溯到童年时期的体验和家庭环境。在婴儿与母亲建立依恋关系的重要时期,婴儿的正当需求被母亲忽视,之后他就会从主动提出需求到不再提出需求,进而疏远母亲。
    • ⏱ 2025-06-10 09:37:35

不期待,不假设,不强求

  • 📌 我本以为我们是一辈子的知己,没想到还是败给了时间和距离(或者其他原因)。三年前的一天,我像往常一样,在遇到烦心事的时候给她留言,我发了一长串的话,却没有收到回复,我想也许她正在忙,顾不上看手机,可是没过多久我看到她在社交媒体上发了动态。一周过去了,她还是没有回复我,我盯着自己发过去的那些文字,突然有种不真实感,对面的那个人,真的是我认识了十几年的好朋友吗?

    • ⏱ 2025-06-10 09:38:33
  • 📌 前几天我从大学同学那听说,她嫁给了跟她一起去美国的男朋友,生了一个孩子,后来又回到自己的祖国。发生了这么多的人生大事,她却没有跟我讲过,说明她早就不把我当作朋友了。那次的“不回复”是个转折点,而我还一直残留着希望,希望这一切都是个误会。

    • ⏱ 2025-06-10 09:38:48
  • 📌 尤其是随着年龄的增长,我们的社交欲望会逐渐减弱,不愿再勉强自己适应别人,每次外出聚会都要做心理建设,不像年轻的时候那样有着过盛的精力,渴望尝试新事物,认识新朋友。年龄大了之后,每个人都会有一些老关系、旧习惯,个性也很难再改变,人与人的心理状态完全不同,想要的东西也不一样,很容易就发生分歧,建立关系将是一个更复杂的过程。年轻人还能彼此适应,共同成长,维护友谊,而年龄大的人更注重自我,很难形成紧密的依恋(不过也并非不可能)。

    • ⏱ 2025-06-10 09:39:11

你以为自己喜欢的类型未必就是你真正喜欢的

  • 📌 我发现人们常犯的一个错误是把网络交友当作购物,通过滚动鼠标和滑动屏幕来寻找完美的伴侣,就像在寻找一条心仪的牛仔裤。我很遗憾地告诉你,完美伴侣并不存在。建议写信的这位先生试着保持一个开放的心态,接纳更多的“未知”,而不是急于给别人下定义,然后断言自己是否能和她们相处。放下对他人的评判(隔着屏幕都能感受到信中浓浓的评判意味),不要把人放在条条框框里。还是我之前说的:你以为自己喜欢的类型未必就是你真正喜欢的。

    • ⏱ 2025-06-10 09:39:45
  • 📌 当人们有六种巧克力可供选择时,他们能很快做出决定,并对自己的选择感到满意。而当他们有一百种巧克力可供选择时,大多数人不会选择自己本来最喜欢的那一种,而是纠结于所有选择,无法做出决定。当他们最终选定其中一种时,满意度要远低于只有六种选择时。施瓦茨还发现,面对选择,有些人是“最大化者”,有些人是“满足者”(“满足”从字面来看就是“满意”加“足够”:一旦找到满意的对象,便觉得已经足够)。

    • ⏱ 2025-06-10 09:40:02

听人劝的后果

  • 📌 重要的是要记住,前途、外表,都不能定义一个人。人的核心是灵魂。我们更应该看重一个人创造幸福的能力,发展个人兴趣、结交朋友的能力,与他人建立连接的能力。一个人喜欢做的事比他的履历更能代表他这个人
    • ⏱ 2025-06-10 09:40:26

臣服的力量

  • 📌 臣服就是把你的某些方面展示给别人,不去想别人会如何看待。这意味着你要放松戒备,允许自己变得脆弱。

    • ⏱ 2025-06-12 10:28:54
  • 📌 臣服是让自己敞开心扉,允许别人影响你和改变你。当你臣服于一场对话时,你不知道它会走向何方,因为你对任何结果都持开放态度。这也意味着允许和接受别人做自己。

    • ⏱ 2025-06-12 10:29:16

争论模式1:思考,感受,行动

  • 📌 我感觉她丈夫那扇思考的门是开着的,而行动的门是关着的,感受的门是锁着的。另一方面,这位女士感受的门和行动的门都是开着的,但思考的门是关着的。她和丈夫之间的冲突,也就是她在信里描述的怒气,是他们打开了不同的门导致的。换句话说,是因为两个人有不同的应对方式。

    • ⏱ 2025-07-03 10:09:05
  • 📌 我们有三种主要的应对方式:
    思考、感受和行动。
    如果你爱的人正在经历一段困难时期,
    不要急着马上解决问题,而是先试着
    理解他的应对方式,共情他的感受。

    • ⏱ 2025-07-03 10:09:20

争论模式2:问题不在于我,而在于你

  • 📌 不要说“你真是不可理喻”或“你都不听我说话”,可以换成“我很生气”或“我觉得你没有在听我说话”——你是在讲述自己的感受,并意识到某人没有按照你的意愿去做并不意味着他有什么问题。
    • ⏱ 2025-07-03 10:09:34

争论模式4:事实vs感受

  • 📌 冲突更多的是关于每个人的感受,而不是事实。这也是我们争论的核心。
    • ⏱ 2025-07-03 10:10:50

争论模式5:卡普曼戏剧三角

  • 📌 卡普曼戏剧三角的重点是帮助我们找到冲突的根源,并意识到我们争论的往往不是实际问题,而是对方对待我们的方式。这就是为什么对那些看起来无关紧要的小事的争论最终会演变成激烈的争吵。

    • ⏱ 2025-07-03 10:11:15
  • 📌 从这封信可以看到,夫妻俩不停地在三种角色中转换,从拯救者到迫害者再到受害者。丈夫试图说服患抑郁症的妻子寻求专业帮助,从而进入了拯救者的角色。妻子觉得这是对她的逼迫,因此产生防御心理,视丈夫为迫害者,开始指责丈夫。这又让丈夫觉得自己是受害者。这是许多人(包括夫妻、家人、朋友等)在意见不合时容易陷入的怪圈。

    • ⏱ 2025-07-03 10:11:41
  • 📌 我们的说话方式和我们说的话同样重要

    • ⏱ 2025-07-03 10:12:23
  • 📌 此外,当我们过于努力地替别人做出正确决定时,我们就是在扮演拯救者的角色。当我们为别人做他们自己有能力做的事情时,我们就进入了拯救模式,这会让他们感觉自己被当成了孩子,因而产生抵触心理

    • ⏱ 2025-07-03 10:12:55

不要害怕结束关系

  • 📌 但当一段关系已经不值得挽救时,我们就没有必要去解决冲突,而是应该果断离开。结束关系并不像我们想象的那样具有破坏性,有可能这是你最好的前进方向(如果你还不习惯结束关系,请考虑一下这种做法)
    • ⏱ 2025-07-03 10:14:15

打破“应该思维”

  • 📌 当我们处于人生的十字路口时,可能会因为害怕做出错误的选择而止步不前,觉得如果不做选择,就能避免犯错。但不做选择也是一种选择,而且有可能是错误的选择。谁都不是预言大师,不可能提前知道一个选择是否正确。错误和失败都是成长所必需的,在心理治疗中,我们把错误和失败称为“惨烈的学习机会”。

    • ⏱ 2025-07-03 10:16:11
  • 📌 我们来看看成功的销售人员是怎样看待失败的——如果每五十通电话中能有一单成交,他们会这样想:失败电话越多,就越接近成交。于是,越到后面他们就会越兴奋,会表现出更多的热情,这就使得成功的可能性更大。

    • ⏱ 2025-07-03 10:16:57

4 满足感:回归内在本质,找回安心、平静的自己

  • 📌 获得更大满足感的秘诀
    不是拥有更多,
    而是减少渴望。
    • ⏱ 2025-07-03 10:17:42

谁是你的替罪羊

  • 📌 我们不必把侵入性思维当真。
    可以观察那些想法,
    但不要把它们当成事实,
    这样我们才能生活得更满足。
    • ⏱ 2025-07-03 10:18:54

任何时刻都会成为过去

  • 📌 任何时刻都会成为过去
    • ⏱ 2025-07-03 10:19:36

读书笔记

本书评论

0%