深入了解gRPC:协议
HTTP/1.
HTTP 协议可以算是现阶段 Web 上面最通用的协议了,在之前很长一段时间,很多应用都是基于 HTTP/1.x 协议,HTTP/1.x 协议是一个文本协议,可读性非常好,但其实并不高效,笔者主要碰到过几个问题parse
如果要解析一个完整的 HTTP 请求,首先我们需要能正确的读出 HTTP header。HTTP header 各个 fields 使用\r\n
分隔,然后跟 body 之间使用\r\n\r\n
分隔。解析完 header 之后,我们才能从 header 里面的content-length
拿到 body 的 size,从而读取 body。这套流程其实并不高效,因为我们需要读取多次,才能将一个完整的 HTTP 请求给解析出来,虽然在代码实现上面,有很多优化方式,譬如- 一次将一大块数据读取到 buffer 里面避免多次 IO rea
- 读取的时候直接匹配 \r\n 的方式流式解析