2010-07-16 63 views
0

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

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

这有什么不同,如果我在不同类的网络?

+2

所以,你希望有人来解释TCP/IP,DNS,HTTP,以太网,浏览器和您的操作系统的网络系统都在一旦? – JAL 2010-07-20 02:56:33

回答

4

你一次问所有的事情,这是一个大的概念。 还是总之。

  • 当你输入www.google.com(或任何其他网站名称),然后将请求转到它转换的URL转换为IP地址的DNS服务器。

这里了解更多: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

点来帮助你:

  • 属于网络 - 包括你有一个IP地址的每台计算机。
  • 每个网络都有它下面的主机。该网络可以分为子网
  • IP寻址是hierarchial.This有助于路由
  • 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等)。然后由浏览器解析并处理,以获取我们看到的网页。

为了测试这一点:在终端

ON LINUX, 型

telnet stackoverflow.com 80 

。 只要它被连接,键入以下(它断开连接之前快速):

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

查看响应

ON WINDOWS

下载腻子客户端并填写主机作为stackoverflow.com,端口为80,并选择连接类型为Telnet。

只要连接起来,重复上述相同的步骤来查看响应。

0

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

注意事项: - 请务必先启动wireshark/tcpdump,然后再启动web浏览器/客户端,以便捕获数据包。 - 启动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 
[email protected]@... 
...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..([email protected]{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..*[email protected]@... 
...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..([email protected]}.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 
[email protected]}.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..([email protected]}.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..([email protected]@... 
...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..([email protected]@... 
...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..(.[[email protected]}.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. 
相关问题