【问题标题】:how a website is loaded in our browser如何在我们的浏览器中加载网站
【发布时间】:2014-04-24 10:53:19
【问题描述】:

当我在浏览器地址栏中键入 www.google.com 时,技术上究竟发生了什么以及整个内容是如何加载的。考虑到正在加载相同的 HTTP 页面...

在这种情况下,DNS 服务器的作用、IP 地址、MAC 地址、子网掩码、代理设置、默认网关是什么。

如果我在不同类别的网络中会有什么不同吗?

【问题讨论】:

  • 那么,您希望有人同时解释 TCP/IP、DNS、HTTP、以太网、浏览器和您操作系统的网络系统吗?

标签: networking


【解决方案1】:

您同时询问所有事情,这是一个很大的概念。 还是很短的。

  • 当您键入 www.google.com(或任何其他站点名称)时,请求会发送到 DNS 服务器,该服务器将 URL 转换为 IP 地址。

阅读更多:http://en.wikipedia.org/wiki/Domain_Name_System

  • 然后请求转到托管网站的服务器,为网站提供托管服务的服务器包含必须向全世界展示的网站内容。

了解 apache 服务器:http://en.wikipedia.org/wiki/Apache_HTTP_Server

子网:http://en.wikipedia.org/wiki/Subnetwork

如果我在不同类别的网络中会有什么不同吗?

不,如果您处于不同类别的网络中,这没有任何区别。

(关于路由器的研究:http://en.wikipedia.org/wiki/Routers

【讨论】:

    【解决方案2】:

    帮助你的要点:

    • 属于网络的每台计算机(包括您的计算机)都有一个 IP 地址。
    • 每个网络下都有主机。网络可以划分为子网
    • IP 寻址是分层的。这有助于路由
    • IP 地址可以手动分配或由 DHCP 服务器分配 手动-IP configuration DHCP-Dynamic Host Configuration Protocol
    • 发送到您的 IP 地址的所有数据包都来自您的 isp 网络 - 这包括交换机和路由器
    • 来自其他网络的数据包由该 IP 地址转发。一旦他们到达最近的开关。交换机使用您的 MAC 地址将数据包发送到您的计算机。 MAC地址通过ARP获取
    • 网关地址是数据包从您的网络或 ISP 发出的路径
    • 代理服务器是允许通过它们进行连接的服务器

    要了解有关其工作原理的更多信息,请下载 Wireshark: 启动嗅探器,然后在浏览器中加载 google.com。

    您会注意到以下内容

    1. 浏览器首先向您的 ISP(或您的网络,如果有)的 DNS 服务器发送一个带有主机名的 DNS 请求 - DNS 从主机名中找出 IP 地址。
    2. DNS 服务器回复服务器的 IP 地址
    3. 然后浏览器发送 HTTP 请求 这是形式,例如 GET /index.html HTTP/1.1
    4. 服务器以格式响应
    5. 数据发送给用户
    6. 通常如果请求一个网页,它是 HTML 格式(带有 javascript、css 等)。然后由浏览器解析和处理,得到我们看到的网页。

    对此进行测试:

    在 Linux 上, 输入

    telnet stackoverflow.com 80
    

    在终端中。 连接后,立即输入以下内容(在断开连接之前快速输入):

    GET /index.html HTTP/1.1 (enter)
    Host: stackoverflow.com  (enter)(enter)
    

    查看回复

    在 Windows 上

    下载putty客户端,host填写stackoverflow.com,port填写80,连接类型选择Telnet。

    连接后,重复上述相同步骤以查看响应。

    【讨论】:

      【解决方案3】:

      上面显示的示例说明了从第 7 层开始的工作方式,但从您的设备的角度来看,第 3 层以上的情况并非如此。如果您有兴趣获取这些低级详细信息,我会考虑使用 tcpdump/wireshark 尝试转储所有网络数据包。下面提供了一个示例(在 FreeBSD 上运行)。

      注意事项: - 确保首先在您的 Web 浏览器/客户端之前启动 wireshark/tcpdump,以便捕获数据包。 - 启动wireshark/tcpdump时指定正确的端口;如果远程网络服务器具有负载平衡/故障转移设置,则可能无法在所有情况下通过 DNS 地址过滤连接。

      带有 tcpdump 的窗口:

      # tcpdump -A tcp port 80
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on em0, link-type EN10MB (Ethernet), capture size 65535 bytes
      capability mode sandbox enabled
      01:48:17.917640 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [P.], seq 1631738201:1631738227, ack 30720002, win 65535, length 26
      E..BP.@.@...
      ...J}.t...PaBYY....P...F5..GET /index.html HTTP/1.1
      
      01:48:17.918119 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [.], ack 26, win 65535, length 0
      E..(.U..@..{J}.t
      ....P......aBYsP...'+........
      01:48:18.072501 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [P.], seq 26:28, ack 1, win 65535, length 2
      E..*P.@.@...
      ...J}.t...PaBYs....P...F...
      
      01:48:18.072662 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [.], ack 28, win 65535, length 0
      E..(.X..@..xJ}.t
      ....P......aBYuP...')........
      01:48:18.074353 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [P.], seq 1:687, ack 28, win 65535, length 686
      E....Y..@...J}.t
      ....P......aBYuP...Z...HTTP/1.0 400 Bad request: request header 'Host' missing
      Content-type: text/html; charset="iso-8859-1"
      
      <html>
      <body>
      <h3> Request denied by WatchGuard HTTP proxy. </h3>
      <b> Reason: </b> request header 'Host' missing <br>
      <hr size="1" noshade>
      <b> Method: </b> GET <br>
      <b> Host: </b> 74.125.239.116 <br>
      <b> Path: </b> /index.html <br>
      <hr size="1" noshade>
      </body>
                                                                                                                                                                                                                                                                                                    <!-- PAD --></html>
      
      01:48:18.074512 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [F.], seq 687, ack 28, win 65535, length 0
      E..(.Z..@..vJ}.t
      ....P......aBYuP...$z........
      01:48:18.074683 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [.], ack 688, win 65014, length 0
      E..(P.@.@...
      ...J}.t...PaBYu....P...F...
      01:48:18.077023 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [F.], seq 28, ack 688, win 65535, length 0
      E..(P.@.@...
      ...J}.t...PaBYu....P...F...
      01:48:18.077070 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [.], ack 29, win 65535, length 0
      E..(.[..@..uJ}.t
      ....P......aBYvP...$y........
      

      带有 telnet 的窗口:

      # telnet www.google.com 80
      Trying 74.125.239.116...
      Connected to www.google.com.
      Escape character is '^]'.
      GET /index.html HTTP/1.1
      
      HTTP/1.0 400 Bad request: request header 'Host' missing
      Content-type: text/html; charset="iso-8859-1"
      
      <html>
      <body>
      <h3> Request denied by WatchGuard HTTP proxy. </h3>
      <b> Reason: </b> request header 'Host' missing <br>
      <hr size="1" noshade>
      <b> Method: </b> GET <br>
      <b> Host: </b> 74.125.239.116 <br>
      <b> Path: </b> /index.html <br>
      <hr size="1" noshade>
      </body>
                                                                                                                                                                                                                                                                                                    <!-- PAD --></html>
      Connection closed by foreign host.
      

      【讨论】:

        猜你喜欢
        • 2017-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        • 2016-04-20
        相关资源
        最近更新 更多