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

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

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

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

  3. DNS通过IP将网址发送到DNS服务器,IP先查询了路由,找到网关的MAC地址(ARP查询),然后再通过Internet找到DNS服务器。DNS服务器在接受到网址后,先查找本地缓存,如果没有的话再查询根域名服务器(全球一共13台),最后可以得到网址对应的IP地址,并将IP地址返回给DNS

    ARP(Address Resolution Protocol)全程是地址解析协议,即将IP地址通过广播目标地址IP得到MAC地址,注意广播只能在一个网段中广播

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

    • 在浏览器进程和操作系统提供的TCP服务程序之间,又涉及到套接字(Socket)的概念,TCP套接字是一个接口,由一个四元组(源IP地址、源端口号、目的IP地址和目的端口号)标识。
      • 如果把一台主机比作一座房子,把进程比作房子里面的房间,Socket相当于房间的门,套接字的作用是实现传输层的多路复用和多路分解
    • socket连接也被称为长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉,为了维持连接需要发送心跳消息。(与之对应http连接就是所谓的短连接,客户端向服务器端发送一次请求,服务器端响应后连接即会断掉)
  5. 服务器获取到请求,解析请求报文,然后处理并返回一个响应

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

  7. 浏览器发送AJAX请求,及时更新页面

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

参考资料
URL和域名的区别
socket连接和http连接的区别
TCP/IP的四元组、五元组、七元组
HTTP请求行、请求头、请求体详解

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值