详细介绍从输入一个URL网址到展示出页面中间发生了什么

 

 我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似 简单的用户行为背后,到底隐藏了些什么呢?

1.概述

    输入一段URL之后,比如输入www.google.com后浏览器首先通过DNS服务会对这个域名进行解析,也就是转换为IP地址的形式,然后向该IP对应的web服务器发送请求,建立tcp连接等浏览器发送完HTTP Request包后,服务器接收到请求包之后开始处理请求,服务器调用自身服务,返回HTTP Response包,客户端收到来自服务器的相应后开始渲染这个Response包里面的主体,等收到全部的内容后断开与该服务器的TCP连接。

2.URL介绍

    那么URL到底是怎么样的呢?
    什么是URL,URL是“统一资源定位符”的英文缩写,用于描述一个网络上的资源,基本格式如下:
    schema://host[:port#]/path/.../[?query-string][#anchor]
    schema        指定低层使用的协议(如:HTTP,HTTPS,ftp)
    host              HTTP服务器的IP地址或者域名
    port#            HTTP服务器的默认端口是80,这种情况可以省略,但是其他端口必须指明
    path             访问资源的路径
    query-string    发送给HTTP服务器的数据
    anchor          锚


3.DNS解析域名过程
    DNS是域名系统的缩写,它主要作用就是将域名转换为IP地址:
    1.请求一旦发起,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的host文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用host文件里面的IP地址;
    2.如果本地host没有查询到该域名对应的IP,那么浏览器会发出一个DNS请求到DNS服务器。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动;
    3.查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存记录中有此记录,就可以直接返回结果,此过程是递归方式进行查询,如果没有,本地DNS服务器还要向DNS根服务器进行查询;
    4.根DNS服务器没有记录具体的域名和IP地址的关系,而是告诉本地DNS服务器,你可以到域服务器上继续查询,并给出域服务器的地址。这种过程是迭代的;
    5.本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器,.com域服务器收到请求后,也不会直接返回域名和IP地址对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址;
    6.最后本地DNS服务器向域名的解析服务器发出请求,这是就能收到一个域名和IP地址的对应关系,本地DNS服务器不仅要把IP地址返回给电脑,还要把这个对应的关系保存在缓存中,以备下次访问。


4.浏览器向web服务器发送HTTP请求

    拿到域名对应的IP地址之后,浏览器会以一个随机端口(1024<端口<65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求这个连接请求到达服务器端后(这中间通过各种路由设备,局域网内除外),进入到网卡,然后是进入到内核的TCP/IP协议栈(用于识别该连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终到达WEB程序,最终建立了TCP/IP的连接。


  5.HTTP请求信息

  建立了TCP连接之后,发起一个http请求。一个典型的 http request header 一般需要包括请求的方法,例如 GET 或者 POST 等,不常用的还有 PUT 和 DELETE 、HEAD、OPTION以及 TRACE 方法,一般的浏览器只能发起 GET 或者 POST 请求。

  客户端向服务器发起http请求的时候,会有一些请求信息,请求信息包含三个部分:

  | 请求方法URI协议/版本

      | 请求头(Request Header)

  | 请求正文:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值