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

3

我正在尝试以散乱的方式学习ARP/TCP/HTTP的基础知识。

举个例子,在我去google.com并搜索时,会发生什么?

目前我了解到的是:

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

  • 然后,它需要解析google.com的IP地址。它通过联系DNS服务器来完成此操作。(我不完全确定它如何知道DNS服务器在哪里?或者是网关知道吗?)

  • 由于HTTP建立在TCP协议上(TCP握手:SYN、SYN/ACK、ACK,然后请求内容,然后RST、RST/ACK、ACK),因此这涉及通过TCP协议进行通信。

  • 要加载网页,浏览器获取index.html、解析它,然后根据它需要的内容发送更多请求?(图片等)

  • 最后,在进行实际的Google搜索时,我不知道浏览器如何知道要通信“我在搜索框中输入了一些内容并按下回车键”。

这个理解是否正确? / 我有什么错误或遗漏了什么重要的内容吗?


谢谢提供链接。看起来是一个有用的网站。 - Andrei
我晚了9年才来到这个领域,但是这个是我找到的最好的答案。 - Rob L
1个回答

8
首先要明白,你的家用路由器是两个设备:交换机和路由器。 enter image description here 重点关注以下事实:
  • 交换机将您LAN中的所有设备连接在一起(包括路由器)。
  • 路由器仅将您的交换机(LAN)与ISP(WAN)连接起来。
  • 您的LAN本质上是一个以MAC地址工作的以太网网络。

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

正确。
当您想要从桌面电脑发送文件到笔记本电脑时,您不希望通过路由器。您希望通过交换机,因为它更快(较低层)。但是,您只知道网络中笔记本电脑的IP地址。因此,您需要获取其MAC地址。这就是ARP发挥作用的地方。
在这种情况下,您将在LAN中广播ARP请求,直到有人回复您。这可以是路由器或连接到交换机的任何其他设备。
它需要解析google.com的IP地址。它通过联系DNS服务器来完成这个过程。(我不完全确定它是如何知道DNS服务器在哪里的?或者是网关知道吗?)
如果您使用DHCP,则已经提供了DNS服务器的IP地址。否则,这意味着您手动提供了DNS的IP。因此,DNS服务器的IP存储在本地计算机上。
进行DNS请求只需要将其IP放入请求数据包中,并将数据包转发到网络中。
附注:DHCP还提供路由器的IP地址。
这涉及通过TCP协议进行通信,因为HTTP建立在其上(TCP握手:SYN,SYN/ACK,ACK,然后请求内容,然后RST,RST/ACK,ACK)。
是的。为了澄清事情:当您的计算机发送请求时,
FRAME[IP[TCP[GET www.google.com]]]

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

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

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

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

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

当您键入单个字符时,它会被发送到服务器。服务器然后用它的建议做出回应。就这么简单。

参考资料(好读物):


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接