“在浏览器中input链接”到“寻find主机的path”它是如何工作的?

有没有维基或书籍,解释了当用户在浏览器中input链接时会发生什么,以及如何解决DNS,路由器如何find主机的路由等。我主要感兴趣的是路由数据包。

谢谢

这绝对是一个广泛的话题。 我最熟悉的书是TCP / IP Illustrated,Vol。 1:协议 。 另外,这里有一些关于路由器 如何 工作的链接。

这是一个有点详细的过程的概述。 我在路由上略去了一些细节。 实际的路由决策并不是那么有趣,它只是归结为find最具体的路由(255.255.255.0是一个比255.0.0.0更具体的networking掩码)。 在路由方面,有趣的是如何通过networking传播路由信息。

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