在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤

参考知乎的回答https://www.zhihu.com/question/34873227/answer/518086565,以及简书https://www.jianshu.com/p/4fc2464db684和CSDN博客https://blog.csdn.net/wuhenliushui/article/details/20038819/

这是一个很经典的问题,通过查找资料进行了一点总结,大概过程如下:

  • 浏览器对网址进行初步格式化检查,默认https协议,比如输入url为baidu.com,浏览器会自动补全为https://www.baidu.com/

  • DNS对网址进行地址解析,首先查找DNS Cache(内存缓存)和host(硬盘中的)文件,如果有,解析完成返回IP;如果都没有,需要查找DNS服务器(8.8.8.8)

    • DNS通过IP将网址发送到DNS服务器,IP先查询了路由,找到网关的MAC地址(ARP查询),然后再通过Internet找到DNS服务器

    • DNS服务器在接受到网址后,先查找本地缓存,如果没有的话再查询根域名服务器(全球一共13台),最后可以得到网址对应的IP地址,并将IP地址返回给DNS

  • DNS得到IP地址后,将结果返回给浏览器,再通过TCP/IP三次握手建立连接通道。浏览器将http请求消息打包后发送给TCP,再通过IP送给服务器。

    • 在浏览器进程和操作系统提供的TCP服务程序之间,有一个很重要的东西叫做套接字(Socket),如果把一台主机比作一座房子,把进程比作房子里面的房间,Socket相当于房间的门。TCP套接字是由一个四元组(源IP地址、源端口号、目的IP地址和目的端口号)来标识的,套接字的作用是实现传输层的多路复用和多路分解

    • TCP连接创建成功的标志是:客户机和服务器都创建了一个由源IP地址、源端口号、目的IP地址和目的端口号标志的Socket

  • 服务器获取到请求,解析请求报文,然后处理并返回一个响应

    • web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理就是一个能够读懂请求并且能生成HTML来进行响应的程序(像ASP.NET,PHP,RUBY…)。
    • 请求处理阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并讲数据存储在服务器上。然后,需求处理会生成一个HTML响应。
  • 客户端解析HTTP响应报文,浏览器开始显示HTML

    扫描二维码关注公众号,回复: 8798852 查看本文章
  • 浏览器发送AJAX请求,即使更新页面

    • “AJAX”-- “异步JavaScript 和 XML”,Facebook聊天功能提供了关于AJAX一个有意思的问题案例:把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议,所以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。
发布了70 篇原创文章 · 获赞 28 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_24852439/article/details/104075677