最近在学计算机网络,一直搞不懂
我对流的理解就是一个可以不用一个搬完,可以搬很多次的东西,例如我读文件,可以让我一点一点读的东西就是流吧,不知道有没有理解错。
再说 UDP 和 TCP
UDP 的本质还是一个可以发到端口 IP 包,跟 IP 包一样,一个包一个包搞的,继承了 IP 包的属性。
TCP "流" 这个概念,一直没弄懂。TCP 建立连接之后,client 跟 server 交互,两者数据发来发起,怎么 IP 包就变成 "流" ,"流" 这个概念是从哪里体现的,跟 udp 的数据报有什么区别呢?
1
zhujinliang 2017-07-13 16:35:22 +08:00 via iPhone 1
都是抽象概念,计算机不可能有真正的流,流背后是一个一个包+缓冲区
缓冲区里还有未读的数据就可以接着读,读出若干内容后,移动缓冲区,下次读从上次断点的地方接着读,新来一个包就追加到缓冲区的尾部,缓冲区满了就通知发送端暂停发送,直到缓冲区有空余 流是一个很常用的概念,打开一个文件就是一个流(或两个,读一个写一个),打开一个设备就有对应的流,建立 tcp 连接也是流,流可以用管道连接起来,通过这样的方式描述计算机中数据的处理过程。 |
2
superhack 2017-07-13 16:35:46 +08:00 1
流就是水管里的水流,udp 是抛出去的纸飞机
|
3
lusheldon 2017-07-13 16:42:41 +08:00 via Android 1
同一个连接里面传的数据通常被认为是一个流,你用 wireshark 抓包看看就明白了,里面有个 stream 跟踪的功能,用那个过滤出来的数据就属于同一个流,其实就是同一个连接的数据。一个流的范围应该是从 tcp 握手到连接关闭之间的所有数据。当然同时可以存在多个流。
|
4
julyclyde 2017-07-13 23:05:04 +08:00
搞不懂那说明你搞反了
首先要相信它是流,然后把和流的认知冲突的认知都找理由批判一下就可以了 |
5
ts8zs 2017-07-14 10:44:39 +08:00
TCP 通过滑动窗口控制流的速度。
UDP 就是发,发完就不管了。 |