V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jtsai
V2EX  ›  问与答

TCP "流" 谁能帮忙解锁一下

  •  
  •   jtsai · 2017-07-13 16:17:27 +08:00 · 1289 次点击
    这是一个创建于 2691 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学计算机网络,一直搞不懂

    我对流的理解就是一个可以不用一个搬完,可以搬很多次的东西,例如我读文件,可以让我一点一点读的东西就是流吧,不知道有没有理解错。

    再说 UDP 和 TCP

    UDP 的本质还是一个可以发到端口 IP 包,跟 IP 包一样,一个包一个包搞的,继承了 IP 包的属性。

    TCP "流" 这个概念,一直没弄懂。TCP 建立连接之后,client 跟 server 交互,两者数据发来发起,怎么 IP 包就变成 "流" ,"流" 这个概念是从哪里体现的,跟 udp 的数据报有什么区别呢?

    5 条回复    2017-07-14 10:44:40 +08:00
    zhujinliang
        1
    zhujinliang  
       2017-07-13 16:35:22 +08:00 via iPhone   ❤️ 1
    都是抽象概念,计算机不可能有真正的流,流背后是一个一个包+缓冲区
    缓冲区里还有未读的数据就可以接着读,读出若干内容后,移动缓冲区,下次读从上次断点的地方接着读,新来一个包就追加到缓冲区的尾部,缓冲区满了就通知发送端暂停发送,直到缓冲区有空余
    流是一个很常用的概念,打开一个文件就是一个流(或两个,读一个写一个),打开一个设备就有对应的流,建立 tcp 连接也是流,流可以用管道连接起来,通过这样的方式描述计算机中数据的处理过程。
    superhack
        2
    superhack  
       2017-07-13 16:35:46 +08:00   ❤️ 1
    流就是水管里的水流,udp 是抛出去的纸飞机
    lusheldon
        3
    lusheldon  
       2017-07-13 16:42:41 +08:00 via Android   ❤️ 1
    同一个连接里面传的数据通常被认为是一个流,你用 wireshark 抓包看看就明白了,里面有个 stream 跟踪的功能,用那个过滤出来的数据就属于同一个流,其实就是同一个连接的数据。一个流的范围应该是从 tcp 握手到连接关闭之间的所有数据。当然同时可以存在多个流。
    julyclyde
        4
    julyclyde  
       2017-07-13 23:05:04 +08:00
    搞不懂那说明你搞反了
    首先要相信它是流,然后把和流的认知冲突的认知都找理由批判一下就可以了
    ts8zs
        5
    ts8zs  
       2017-07-14 10:44:39 +08:00
    TCP 通过滑动窗口控制流的速度。
    UDP 就是发,发完就不管了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2859 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:02 · PVG 23:02 · LAX 07:02 · JFK 10:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.