如何在浏览器中加载网站

时间:2010-07-16 09:16:06

标签: networking

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

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

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

3 个答案:

答案 0 :(得分:4)

你一下子询问所有事情,这是一个很大的概念。 仍然很简单。

  • 当您输入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

答案 1 :(得分:1)

帮助你的要点:

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

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

您会注意到以下内容

  1. 浏览器首先将带有主机名的DNS请求发送到您的ISP(或您的网络,如果有的话)的DNS服务器 - DNS从主机名中找出IP地址。
  2. DNS服务器回复服务器的IP地址
  3. 然后,浏览器发送HTTP请求 这是例如的形式 GET /index.html HTTP / 1.1
  4. 服务器以格式
  5. 响应
  6. 将数据发送给用户
  7. 通常如果要求网页,则为HTML格式(使用javascript,css等)。然后,浏览器会对其进行解析和处理,以获取我们看到的网页。
  8. 测试一下:

    ON LINUX , 型

    telnet stackoverflow.com 80
    

    在终端。 一旦连接,输入以下内容(在断开连接之前很快):

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

    查看回复

    ON WINDOWS

    下载putty客户端并将主机填充为stackoverflow.com,端口为80,然后选择连接类型为Telnet。

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

答案 2 :(得分:0)

上面显示的示例说明了第7层的工作原理,但从设备的角度来看不是第3层。如果你有兴趣获得那些低级别的细节,我会看看使用tcpdump / wireshark尝试转储所有的网络数据包。下面提供了一个示例(在FreeBSD上运行)。

备注的: - 确保首先在Web浏览器/客户端之前启动wireshark / tcpdump,以便捕获数据包。 - 启动wireshark / tcpdump时指定正确的端口;如果远程Web服务器具有负载平衡/故障转移设置,则可能无法在所有情况下通过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.