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

And*_*rei 2 tcp http 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键".

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

Pit*_*kos 7

首先尝试了解您的家用路由器是两个设备:交换机和路由器. 在此输入图像描述

关注这些事实:

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

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

正确.

如果要将dekstop中的文件发送到笔记本电脑,则不希望通过路由器.你想要通过开关,因为它更快(下层).但是,您只知道网络中笔记本电脑的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]]]
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

最后,为了进行实际的谷歌搜索,我不明白浏览器是如何沟通的"我在搜索框中键入内容然后按Enter键".

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

参考文献(好读):