用户从浏览器输入网址,按下回车后发生了什么?

        这是一个对于通信协议、网络访问链路过程的理解。

1、DNS解析(Domain Name System域名系统)

        DNS的解析过程就是寻找哪台机器上有你需要的资源的过程,寻找的过程遵循就近原则;输入一个网址并按回车的时候,浏览器会根据输入的URL去查找对应的IP,具体过程:

1)首先查找浏览器缓存,浏览器会保存一段时间内访问过的一些网址的DNS信息,不同的浏览器,保存的时长不同。

2)如果找到对应记录,浏览器会尝试调用操作系统缓存来继续查找这个网址对应的DNS信息。

3)如果没找到对应ip,那么接着会发送一个请求到路由上,路由器在自己的路由器缓存查找记录,路由器一般也会存有DNS信息。

4)如果路由器也没有,那么请求会被发送至ISP(Internet Service Provider,互联网服务提供商,即网络运营商,指中国电信、移动、联通等),ISP也会有ISP DNS服务器,就是本地DNS服务器,请求的域名基本上在这都能找到。

5)如果依旧没有,ISP的DNS服务器会将请求发送到根域名服务器上进行搜索。根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。

6)如果此时依旧没有域名对应信息,则说明域名不存在,或者域名过期了(大家往往会在这时候看到浏览器返回提示DNS解析失败之类,域名不存在之类)。

域名的结构为:三级域名.二级域名.一级域名,例如www.baidu.com,会先分析到.com域名,然后到.baidu域名,www不是域名是万维网协议.

2、进行TCP(传输控制协议Transmission Control Protocol)连接

        经过DNS解析后,浏览器得到所访问ip,向服务器发送TCP连接,TCP经过三次握手。

3、浏览器发送HTTP请求

        浏览器和服务器建立连接之后(通讯成功),浏览器给这个IP地址的服务器发送一个http请求,方式为GET。

        这个GET请求包含主机(host)、用户代理(user-agent),用户代理就是自己的浏览器,它是“你”的代理人,Connection(连接属性)中的keep-alive表示浏览器告诉对方服务器在传输完现在请求内容后不要断开连接,不断开的话下次继续连接速度就很快了。可能还会有cookie保存用户登录信息等,会在每次请求该服务器时发送给服务器。

4、服务器处理请求:

        服务器接收到请求的内容后,就会开始针对请求头进行解析,然后对应的返回响应头和响应内容;

        请求头进去之后就是具体的后端业务进行处理,例如会去服务器控制层端访问对应方法,决定是否需要执行业务层方法,Service层则可能会调用dao层方法,然后dao层会访问到数据库得到具体资源等。

        等到服务器响应之后,浏览器会就开始解析响应头和响应体。

5、浏览器解析渲染页面

        假如根据返回内容,响应的是一个页面,视图解析器就会对该页面进行渲染,浏览器读取这个页面的响应头并解析在这个页面上,它可能会从上而下一部分一部分的去展示出来。

6、关闭TCP连接   

        当数据完成请求返回的过程之后,根据connection的keep-alive属性可以选择是否断开TCP连接,HTTP/1.1一般支持同一个TCP多个请求,而不是1.0版本下的完成一次请求就发生断开,TCP的断开与连接不一样,断开可以分为主动关闭和被动关闭,需要经过4次握手。

        当浏览器需要的全部数据都已经加载完毕,一个页面就显示完成。

以上,就是用户访问URL的全过程,这个过程,对应的是通信连接方向,当进入到应用内部时的过程,又是另一回事了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值