注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

Network Stack  

2010-01-10 22:28:00|  分类: Chrome |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
In Milestone 4 (Q4 of 2009) we finished the rewrite of the network stack to make it portable and eliminate its dependency on WinInet and WinHTTP. Our next goals will be
  • Polish and stablize
  • Finish the remaining features
  • Improve performance
  • Improve instrumentation and logging (for debugging in the field)
  • Implement SPDY
This document outlines our plan for Milestone 5 and the future.

Milestone 5

Detect network changes

We should be able to detect and respond to network changes, such as from wired to wireless networks, across wireless networks, and getting on or off a VPN. The network change detection code needs to be written for Linux, Mac, and Windows separately.

HTTP authentication

HTTP cache

  • Make the HTTP cache and disk cache fully asynchronous. Right now the HTTP cache is serving the metadata synchronously, which may block the IO thread.
  • Throttle the requests.
  • Support pre-parsed JavaScripts. The work on the HTTP cache side is mostly done. Need to define an API to expose the functionality and write the code for WebKit and V8 use the interface.

HTTP pipelining

We should implement an optional pipelining mode.

SSL

New unit tests and performance tests

Some parts of the network stack, such as SSL, need more unit tests. Good test coverage helps bring up the Mac and Linux ports. In addition, any bugs that get fixed should get unit tests to prevent regression.

We should add performance tests to measure the performance of the network stack and track it over time.

Instrumentation and logging

Define Chromium extensions API for networking

Define an API for Chromium extensions to access the network stack. We already defined an API that exposes proxy settings to extensions.

FTP

The new cross-platform FTP implementation is used by default in Dev channel release 4.0.203.2 or later on all platforms. In Milestone 5 we will finish rewriting the directory listing parser, which is already underway.

Error reporting

Improve our error reporting and error code mapping so that users won't get error pages with the net::ERR_FAILED, net::OK, or net::ERR_EMPTY_RESPONSE errors.

Future

HTTP authentication

We also need to review the interaction between HTTP authentication and disk cache. For example, cached pages that were downloaded with authentication should not be retrieved without authentication.

Late binding of sockets

Do not bind a new socket to an HTTP transaction until the socket is connected to the server, so we can use a keep-alive socket if it becomes available sooner.

We have implemented late binding of TCP sockets. The remaining work is:

Prioritizing HTTP transactions

  • Support loading resources in the background (for example, for updating the thumbnails in the New Tab Page) without impacting real-time performance if the user is doing something else.
  • Support dynamically adjusting priorities. If the user switches tabs, the newly focused tab should get a priority boost for its network requests.

Other HTTP performance optimizations

  • TCP connection pre-warming: Jim Roskind has an incomplete changelist that shows where the necessary hooks are for TCP connection pre-warming.
  • Reuse HTTP keep-alive connections under more conditions
  • Resume SSL sessions under more conditions

SSL

Help is wanted for:

Better histograms

We need better histograms for networking.

Integrate loader-specific parts of WebKit into the network stack

Parts of WebKit that throttle and prioritize resource load requests could be moved into the network stack. We can disable WebCore's queuing, and get more context about requests (flesh out the ResourceType enum).

FTP

  • reusing control connections
  • caching directory listings.
We need to be able to request FTP URLs through a proxy.

Preference service for network settings

We strive to use the system network settings so that users can control the network settings of all applications easily. However, there will be some configuration settings specific to our network stack, so we need to have our own preference service for those settings. See also issue 266, in which some Firefox users demand that we not use the WinInet proxy settings (the de facto system proxy settings) on Windows.

HTTP standards

Document our experience implementing HTTP, especially areas the HTTP 1.1 RFC 2616 failed to specify, and contribute it to HTTPbis.

Reusable stack

We should investigate what it takes to make our network stack reusable by other projects.

IPv6

We need to implement IPv6 extensions to FTP and proxy auto-configuration scripts.
  评论这张
 
阅读(1104)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017