参考文献
net 目录
概述
网络堆栈是一个主要用于资源获取的单线程跨平台库。它的主要接口是URLRequest和URLRequestContext。 URLRequest,如其名称所示,表示对URL的请求。 URLRequestContext包含完成 URL 请求所需的所有关联上下文,例如cookie、主机解析器、代理解析器、缓存等。许多 URLRequest 对象可能共享相同的 URLRequestContext。最多net对象不是线程安全的,尽管磁盘缓存可以使用专用线程,并且多个组件(主机解析、证书验证等)可能会使用未加入的工作线程。由于它主要运行在单个网络线程上,因此不允许阻塞网络线程上的任何操作。因此,我们使用带有异步回调的非阻塞操作(通常为CompletionCallback)。网络堆栈代码还将大多数操作记录到 中NetLog,这允许使用者将所述操作记录在内存中,并以用户友好的格式呈现以供调试之用。
Chromium 开发人员编写网络堆栈是为了:
- 允许对跨平台抽象进行编码
- 提供比使用更高级别的系统网络库(例如 WinHTTP 或 WinINET)更好的控制
- 避免系统库中可能存在的错误
- 为性能优化提供更多机会
代码布局
- net/base - 获取net实用程序包,例如主机解析、cookie、网络更改检测、SSL。
- net/disk_cache - 缓存 Web 资源。
- net/ftp - FTP实现。代码主要基于旧的 HTTP 实现。
- /http - HTTP实现。
- net/ OCSP - OCSP时不使用实现系统库或者如果系统不提供OCSP实现。当前仅包含基于 NSS 的实现。
- net/proxy - 代理(SOCKS和 HTTP)配置、解析、脚本获取等。
- net/quic - QUIC 实现。
- net/socket - TCP套接字、“SSL 套接字”和套接字池的跨平台实现。
- net/socket_stream - WebSockets 的套接字流。
- net/spdy - HTTP2(及其前身) SPDY 实现。
- net/ url_request - URLRequest,URLRequestContext和URLRequestJob实现。
- net/websockets - WebSockets实现。