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

2017-07-13 16:17:27 +08:00
 jtsai

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

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

再说 UDP 和 TCP

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

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

1290 次点击
所在节点    问与答
5 条回复
zhujinliang
2017-07-13 16:35:22 +08:00
都是抽象概念,计算机不可能有真正的流,流背后是一个一个包+缓冲区
缓冲区里还有未读的数据就可以接着读,读出若干内容后,移动缓冲区,下次读从上次断点的地方接着读,新来一个包就追加到缓冲区的尾部,缓冲区满了就通知发送端暂停发送,直到缓冲区有空余
流是一个很常用的概念,打开一个文件就是一个流(或两个,读一个写一个),打开一个设备就有对应的流,建立 tcp 连接也是流,流可以用管道连接起来,通过这样的方式描述计算机中数据的处理过程。
superhack
2017-07-13 16:35:46 +08:00
流就是水管里的水流,udp 是抛出去的纸飞机
lusheldon
2017-07-13 16:42:41 +08:00
同一个连接里面传的数据通常被认为是一个流,你用 wireshark 抓包看看就明白了,里面有个 stream 跟踪的功能,用那个过滤出来的数据就属于同一个流,其实就是同一个连接的数据。一个流的范围应该是从 tcp 握手到连接关闭之间的所有数据。当然同时可以存在多个流。
julyclyde
2017-07-13 23:05:04 +08:00
搞不懂那说明你搞反了
首先要相信它是流,然后把和流的认知冲突的认知都找理由批判一下就可以了
ts8zs
2017-07-14 10:44:39 +08:00
TCP 通过滑动窗口控制流的速度。
UDP 就是发,发完就不管了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX