当我的浏览器进行搜索时会发生什么? (ARP,DNS,TCP细节)

时间:2013-09-24 16:28:06

标签: http tcp arp

我正在尝试学习ARP / TCP / HTTP的基础知识(以散射方式)。 举个例子,当我去google.com并进行搜索时会发生什么?

到目前为止我的理解:

  • 为了让我的机器与他人通信(在这种情况下是网关), 它可能需要进行ARP广播(如果它还没有 ARP缓存中的MAC地址)

  • 然后需要解析google.com的IP地址。它通过这样做 联系DNS服务器。 (我不完全确定它是怎么知道的 DNS服务器在哪里?或者它是知道的网关?)

  • 这涉及通过TCP协议进行通信,因为HTTP是 建立在它上面(TCP握手:SYN,SYN / ACK,ACK,然后请求 内容,然后是RST,RST / ACK,ACK)

  • 要实际加载网页,浏览器会获取index.html,解析 它,然后根据需要发送更多请求? (图像等)

  • 最后,要做实际的谷歌搜索,我不明白怎么做 浏览器知道通信“我在搜索框中输入了一些内容 然后按Enter键。

这看起来是对的吗? /我有什么不妥或遗漏任何关键的东西吗?

1 个答案:

答案 0 :(得分:7)

首先尝试了解您的家庭路由器是两个设备:交换机和路由器。 enter image description here

关注这些事实:

  • 交换机将LAN中的所有设备连接在一起(包括路由器)。
  • 路由器仅将您的交换机(LAN)与ISP(WAN)连接。
  • 您的LAN本质上是一个与MAC地址配合使用的以太网网络。
  

我的机器与他人通信(在这种情况下是网关),   它可能需要进行ARP广播(如果它还没有MAC   ARP缓存中的地址)

正确。

如果要将dekstop中的文件发送到笔记本电脑,则不希望通过路由器。你想要通过开关,因为它更快(下层)。但是,您只知道网络中笔记本电脑的IP。因此,您需要获取其MAC地址。这就是ARP开始的地方。

在这种情况下,您将在LAN中广播ARP请求,直到有人响应您。这可能是路由器或连接到交换机的任何其他设备。

  

然后需要解析google.com的IP地址。它通过这样做   联系DNS服务器。 (我不完全确定它是怎么知道的   DNS服务器是?或者它是知道的网关?)

如果您使用DHCP,那么它已经为您提供了DNS服务器的IP。如果没有,则表示您手动提供了DNS的IP。因此,DNS服务器的IP存储在您的计算机本地。

发出DNS请求只是将其IP包含在带有请求的数据包中,并将数据包转发到网络。

Sidenote :DHCP还提供路由器的IP地址。

  

这涉及通过TCP协议进行通信,因为HTTP是   建立在它上面(TCP握手:SYN,SYN / ACK,ACK,然后请求   内容,然后是RST,RST / ACK,ACK)

是。澄清事情:当您的计算机发送请求时

FRAME[IP[TCP[GET www.google.com]]]

正在将帧发送到LAN的交换机,该交换机将其转发到路由器的MAC。您的路由器将打开帧以检查目标IP并相应地路由它(在本例中为WAN)。最后,当帧到达服务器时,服务器将打开TCP段并读取有效负载,即HTTP消息。 ACK / SYN等消息仅由您的计算机和服务器处理,而不是任何路由器或交换机。

  

要实际加载网页,浏览器会获取index.html,解析   它,然后根据需要发送更多请求? (图像等)

是。 HTML文件本质上是一种树结构,可以嵌入资源,如图像,javafiles,CSS等。对于每个这样的资源,都必须发送新的请求。

一旦您的浏览器获得所有这些资源,它将呈现网页。

  

最后,要进行实际的谷歌搜索,我不明白如何   浏览器知道通信“我在搜索框中输入了一些内容   然后按Enter键。

当您键入单个字符时,它将被发送到服务器。然后服务器响应其建议。很简单。

参考文献(好读):