我正在实现一个 HTTP 解析器;作为 HTTP 数据的指示,我在流中搜索 'HTTP/1.? CRLF'。TCP 层可能会将应用程序提供的缓冲区分成适合在网络上传输的块。是否有可能出现 HTTP 数据(例如 GET http://www.google.com/index.html HTTP/1.1 CRLF),其不紧随于 TCP 标头之后?此外,例如 'GET ...' 查询是否可能跨越多个 TCP 段?
谢谢。
马克
谢谢。
马克
有没有可能在TCP头之后不立即跟随http数据(例如GET http://www.google.com/index.html HTTP/1.1 CRLF)?
有可能。HTTP Pipelining可以使多个请求在一个单独的段中。
另外,例如“GET...”查询是否可能分割成TCP段?
是的。请求大小可以大于段大小。此外,TCP段的分段可以发生在IP层。
这将是一种罕见的自然现象,但可能是有意回避的一部分。
唯一确定的方法是重新组装流,但这在处理和内存方面是昂贵的。如果您非常关心,最好使用透明的HTTP代理。