“在浏览器中输入链接”到“寻找到主机的路线”如何工作的?

“在浏览器中输入链接”到“寻找到主机的路线”如何工作的?

是否有一个 wiki 或书籍,解释当用户在浏览器中输入链接时会发生什么,以及如何解析 DNS、路由器如何找到到主机的路由等。我主要对路由数据包感兴趣。

谢谢

答案1

这绝对是一个广泛的话题。我最熟悉的书是TCP/IP 图解,第 1 卷:协议。此外,以下是如何 路由器 工作

答案2

这是对这个过程的一个比较详细的概述。我省略了一些关于路由的细节。实际的路由决策并不那么有趣,它“只是”归结为找到最具体的路由(255.255.255.0 是一个比 255.0.0.0 更具体的网络掩码)。在路由方面,有趣的是路由信息是如何通过网络传播的。

  1. 用户http://www.example.com/在浏览器中输入。
  2. 浏览器使用自己的解析器库或 libresolv
  3. 解析器库查询主机定义的名称服务器
  4. 名称服务器要么知道答案,要么代表主机查找答案,要么说“询问根名称服务器”。
    1. 名称服务器可能会向根服务器请求为 com. 域提供服务的名称服务器
    2. 然后询问谁是 example.com. 域名的服务器
    3. 然后询问 www.example.com 的 IP 地址
  5. 浏览器向 www.example.com 的 IP 地址发起 TCP 连接(发送 TCP SYN)。
  6. 主机在其路由表中查找该 IP 地址的下一跳,然后发送一个 IP 帧,其中嵌入了 TCP SYN,其自身 IP 为源,www.example.com 的地址为目标。该 IP 帧嵌入以太网帧中,其源 MAC 为主机出站接口,目标 MAC 为下一跳网关。
  7. 默认网关接收帧,增加 TTL,重新计算校验和并将其发送到下一跳。
  8. 此过程持续进行,直到 IP 数据包到达距离 www.example.com 最近的路由器
  9. 此时,路由器发现其目的地是本地网络。它会查询其 ARP 表,查看是否有目的地的 IP 到 MAC 映射。
    1. 如果没有,它会发送 ARP 请求,以将 MAC 地址解析为 IP 地址。
  10. www.example.com 主机接收 TCP SYN,发送 TCP SYNACK 作为响应。
  11. 网络遍历如上所述,只是“反向”进行。
  12. 用户主机以 TCP ACK 进行响应。
  13. 当 TCP ACK 到达 www.example.com 时,主机操作系统通知 Web 服务器 14. 有一个等待连接。
  14. 用户主机发送 HTTP GET 请求
  15. 服务器主机将 HTTP GET 传递给 Web 服务器进程。
  16. Web 服务器进程使用一个或多个带有网页的数据包进行响应。
  17. 用户主机将此流量传递到浏览器。
  18. 浏览器解析 HTML 并将页面显示给用户(如果引用了 CSS 文档、引用了图像或可能需要其他链接文档才能完成渲染,则可能会发起更多请求)

相关内容