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

标签 http tcp arp

我正在尝试学习 ARP/TCP/HTTP 的基础知识(以一种分散的方式)。 例如,当我访问 google.com 并进行搜索时会发生什么情况?

目前我的理解:

  • 为了让我的机器与其他人(在本例中为网关)通信, 它可能需要做一个 ARP 广播(如果它还没有 ARP缓存中的MAC地址)

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

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

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

  • 最后,要进行实际的谷歌搜索,我不明白怎么做 浏览器知道交流“我在搜索框中输入了一些东西 然后按 Enter。

这看起来对吗?/我有没有做错什么或遗漏了什么重要的东西?

最佳答案

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

关注这些事实:

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

For my machine to communicate with others (the gateway in this case), it may need to do an ARP Broadcast (if it doesn't already have the MAC address in the ARP cache)

正确。

当您想将文件从台式机发送到笔记本电脑时,您不想通过路由器。你想通过交换机,因为它更快(下层)。但是,您只知道网络中笔记本电脑的 IP。因此,您需要获取其 MAC 地址。这就是 ARP 发挥作用的地方。

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

It then needs to resolve google.com's IP address. It does this by contacting the DNS server. (I'm not completely sure how it knows where the DNS server is? Or is it the gateway that knows?)

如果您使用 DHCP,那么已经为您提供了 DNS 服务器的 IP。如果不是,则说明您手动提供了 DNS 的 IP。所以 DNS 服务器的 IP 存储在您本地的计算机上。

发出 DNS 请求只是将其 IP 放入请求的数据包中,并将数据包转发到网络。

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

This involves communication through the TCP protocol since HTTP is built on it (TCP handshake: SYN, SYN/ACK, ACK, then requests for content, then RST, RST/ACK, ACK)

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

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

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

To actually load a webpage, the browser gets the index.html, parses it, then sends more requests based on what it needs? (images,etc)

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

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

And finally, to do the actual google search, I don't understand how the browser knows to communicate "I typed something in the search box and hit Enter".

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

引用文献(好的读物):

关于http - 当我的浏览器进行搜索时会发生什么? (ARP、DNS、TCP 细节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18987103/

相关文章:

php - 流膨胀包装器?

security - HTTP header 是什么 :host, :method, :path, :scheme, :version used for?

ios - 如何与 PLC 建立数据交换连接?输入/输出

c++ - 服务器/客户端 TCP 异步(winsock)//FD_WRITE 问题

ubuntu - 从局域网到广域网的arpspoof

php - 处理动态站点中图像的数据 URI

java - HttpsURLConnection 中的什么方法调用实际发送了 HTTP 请求?

objective-c - 套接字读取和部分数据——需要完整性检查

python - Scapy ARP 函数在运行时未给出正确的输出

linux - 如何从 arptables 发送 arp 数据包到队列