首页   注册   登录
 ChristopherWu 最近的时间轴更新

ChristopherWu

  •   阿里月饼公司
    V2EX 第 164255 号会员,加入于 2016-03-21 16:10:43 +08:00
    今日活跃度排名 6675
    三次握手的误解与错误类比 (RFC 解读)
    程序员  •  ChristopherWu  •  12 天前  •  最后回复来自 lhx2008
    46
    洗澡时,我终于跑出来喊出了我的 Eureka
    程序员  •  ChristopherWu  •  35 天前  •  最后回复来自 msg7086
    64
    ChristopherWu 最近回复了
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @kaneg 总结得很好
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @letianqiu 恩,是的。复用就是谢希仁举的例子,但是他的例子只是说了缺点是:连接被多开,而没有用到。但是 SYN FLOOD 一样会有这样的问题,所以核心不是旧的连接信息来到,开了一条没有用的连接。
    核心是,旧的 seq 过来,tcp 要识别到此 seq 是否有效。
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @linKnowEasy 那你对比一下我举出来的类比,以及文中列出的两个类比,看看区别?
    >序号不是关键信息, 互相通知准备完成才是关键信息
    恰恰相反,我想说明标注的就是:序号才是关键信息。

    准备不准备好,只是影响连接是否建立完成。
    序列号是否同步到,才影响连接上的数据是否完备,可靠。
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @lhx2008 @zarte @PureWhiteWu

    刚好 @linKnowEasy 你提醒我了,我原来在想这篇文章时,是想举一个更加准确的类比来说明那个类比是不对的。
    我就此举一下:

    TCP 传递信息可以理解为美国与中国用货船来传货物,但因为一首轮船穿放不下,货物要分开一只只轮船来发货。

    所以需要一个序列号来识别该货物是第几个,以便到达后将其拼接回原来的货物。

    因为同一条航道(也就是 tcp 连接)上,可能会有多批货物发送(复用 tcp 连接)。发货时,双方需要通知对方这个序列号是从哪里开始( init seq )的,这样才能辨识过来的是不是一个对的货物,以及能拼接成完整的货物。

    货物运输拼接( tcp )最重要的是可靠性,如果没有用三次握手来确认双方都可以获得对方的 序列号( seq )的话,就无法知道当前航班(连接)中,对的货物序号是怎么样的了。

    ***粗略的写了写,这个类比可以说明为什么我文中两个类比是错误的。***
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @lhx2008 三次握手是建立可靠信道的必要条件。

    还有一点我说得不清楚,不是你说的『 TCP 同时建立多条连接的意义』,而是 TCP 可以复用链接。在这种情况下,旧的包也许还在途,但是复用的新连接又有一个新包来了,因此需要 seq 来识别此情况。
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @hx2008
    >所以三次握手本质上还是为了建立多个连接而需要传递初始 SEQ 造成的?

    对,你的理解是对的。
    我的文中也说道了: 『 TCP 需要 seq 序列号来做可靠重传或接收,而避免连接复用时无法分辨出 seq 是延迟或者是旧链接的 seq,因此需要三次握手来约定确定双方的 ISN (初始 seq 序列号)。』

    但现实没有这么理想,因为 seq 是递增的话,要考虑到被人攻击(所以现代 seq 的选择也是比较复杂的,比我说的用计时器递增还要复杂些,如可能用加密,随机选择等方式。)
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @radiolover 我说得长是因为还要说明 :为什么需要 seq,如何以及为什么需要构造一个独特的 seq 等。
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @swulling 对概念的 『正确性』苛求一点,是很有好处的,所谓差之毫厘谬以千里。
    就如常见的例子:
    md5 是加密算法,你也可以说是『不够详细』或者说『不完备』的,但就是错的。md5 勉强可以做加密,但本质上就是不可逆的哈希算法。
    再如之前 v 站批判过的『粘包』 的这个国内特有概念,你也不能说这个是『错误的』,但苛求来说,就不应该存在这样的概念。
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @mrgblues 不算手误,看着舒服就用了- -。具体排版规则我不清楚,没有学过 - -
    12 天前
    回复了 ChristopherWu 创建的主题 程序员 三次握手的误解与错误类比 (RFC 解读)
    @m3dull 谢谢评论~觉得写的还行,可以关注公众号🙊
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2285 人在线   最高记录 4236   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 05:52 · PVG 13:52 · LAX 21:52 · JFK 00:52
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1