帮酷LOGO
  • 显示原文与译文双语对照的内容
What-happens-when-zh_TW https://github.com/alex/what-happens-when

  • 源代码名称:what-happens-when-zh_CN
  • 源代码网址:http://www.github.com/skyline75489/what-happens-when-zh_CN
  • what-happens-when-zh_CN源代码文档
  • what-happens-when-zh_CN源代码下载
  • Git URL:
    git://www.github.com/skyline75489/what-happens-when-zh_CN.git
  • Git Clone代码到本地:
    git clone http://www.github.com/skyline75489/what-happens-when-zh_CN
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/skyline75489/what-happens-when-zh_CN
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • USB键盘:

    虚拟键盘(触屏设备):

    产生中断 [非USB键盘 ]

    SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, lParam)

    解析URL

      • Resource"/"请求的资源是主页( 索引)

    • 浏览器检查域名是否在缓存当中(要查看 Chrome 当中的缓存,打开 chrome://net-internals/#dns)。
    • gethostbyname 函数在试图进行DNS解析之前首先检查域名是否在本地主机里,Hosts的位置不同的操作系统有所不同

    • 首先查询ARP缓存,如果缓存命中,我们返回结果:目标 IP = MAC

    ARP Request:

    Sender MAC: interface:mac:address:here
    Sender IP: interface.ip.goes.here
    Target MAC: FF:FF:FF:FF:FF:FF (Broadcast)
    Target IP: target.ip.goes.here

    • 如果路由器也"连接"在其中,它会返回一个 ARP Reply

    ARP Reply:

    Sender MAC: target:mac:address:here
    Sender IP: target.ip.goes.here
    Target MAC: interface:mac:address:here
    Target IP: interface.ip.goes.here

    • 这个请求首先被交给传输层,在传输层请求被封装成TCPsegment。目标端口会被加入头部,源端口会在系统内核的动态端口范围内选取(Linux下是ip_local_port_range)

      • 自己的序列号+1
      • 接收端 ACK+1
      • 当一方发送了N个字节的数据之后,将自己的序列号也增加N
      • 要关闭的一方使用包来确认接收到了

    如果浏览器使用HTTP协议而不支持SPDY协议,它会向服务器发送这样的一个请求:

    GET/HTTP/1.1
    Host: google.com
    Connection: close
    [其他头部]

    Connection:close

    服务器端返回一个响应码,指示这次请求的状态,响应的形式是这样的:

    200 OK
    [响应头部]

    如果浏览器发送的HTTP头部包含了足够多的信息(例如包含了Etag头部),以至于服务器可以判断出,浏览器缓存的文件版本自从上次获取之后没有再更改过,服务器可能会返回这样的响应:

    304 Not Modified
    [响应头部]

    GET/$(相对www.google.com的URL) HTTP/1.1

      • 域名:google.com
      • 请求路径/页面:/(我们没有请求google.com下的指定的页面,因此/是默认的路径)
    • 服务器验证该用户可以使用获取方法( 根据IP地址,身份信息等)

    • 解析 -- HTML,CSS,JS

    浏览器高层架构

    解析算法

    HTML不能使用常见的自顶向下或自底向上方法来进行分析。主要原因有以下几点:

    解析结束之后

    • 在渲染过程中,图形处理层可能使用通用用途的CPU,也可能使用图形处理器 GPU

    窗口服务器




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语