好奇的不是 stream 本身的实现原理。在 golang 中 http 返回体的 body 是一个 io.Reader 类型,这里是如何实现的?在 http1.1 的前提下讨论:

  1. 这里是整个返回体都返回完才开始接收数据的吗?

    1.1 如果是,缓冲区是在哪里?全部数据在网卡上还是内存里?

  2. 如果是 http 请求未完全返回就接收了数据,是如何实现的?

    2.1 基于 transfer-encoding:chunked ?

    2.2 基于 http 包底层的 tcp 包拆包?

还望不吝赐教