从浏览器地址栏输入url到显示页面的详细过程

从浏览器地址栏输入url到显示页面的步骤

​ SYN = 1 ,表示这是一个 请求连接报文 或者 连接接受报文

​ ACK1 确定收到了请求

​ FIN 终止 断开连接

​ seq 发送自己的数据

​ ack 发送接收到对方的数据

​ DNS寻址 ==>建立连接 ==>发送请求 ==>处理并回传 ==>接收并渲染 ==> 释放连接

  1. DNS寻址

    通常我们在浏览器当中输入的URL(统一资源定位符)是域名,而不是直接输入ip(基本上指向计算机)地址。从宏观角度来讲,当我们输入URL并且提交的时候,第一步就是根与域名寻找目的服务器的ip地址,这个过程就是DNS域名解析。

    首先,本地电脑会将一些经常使用的域名与相应的ip建立一个映射关系,并保存在系统hosts文件当中,进行DNS解析优先在hosts当中当中查找,找到就直接用,毕竟是最快的。

    其次,没有其对应映射的,那就求助于本地DNS服务器(ipv4 / ipv6下的dns),找到就返回,找不到就向上一级DNS服务器发送请求,直至根服务器。域名解析必须有一个结果,有或者没有。

    本地DNS简称 LDNS ISP是因特网服务提供商

    (补充CDN知识:)
    CDN即内容分发网络,比如你的

  2. 建立连接

    通过第一步拿到的ip地址,就能在茫茫人海当中找到目标服务器,但是 在此之前需要建立传输通道,这个就是建立连接。这个过程就是著名的TCP三次握手。

那么为什么是三次,两次不行吗?结果肯定毋庸置疑是 达咩。
解释如下:
我向你发送信息,我怎么知道你有没有收到我的信息呢?你回复一下不就代表收到了,是不是这个道理
你回复之后,你不知道我是否收到了你的信息,所以我要告诉你我收到了你的信息
我再发送一条告诉你,我收到你的信息了
这就是三次,但凡有一次没收到,那我就也要一直发,直到你回复

  1. 发送请求

    建立连接后,双方可以开始传输数据了,首先在请求报文中必须明确请求的端口是哪个,还要确认端口,http默认80,然后浏览器向服务器发送请求,这个过程就是 应用层 ==> 运输层 ==>网际层IP ==>网络接口层。从应用层开始,消息以HTTP请求报文的形式,在传输层,网络层,数据链路层逐层打上头部,进行传输。服务器接收到数据在逐层解套,最终收到HTTP协议的请求报文。

    总之四层模型的机制保证了请求报文正确完整地发送到服务器端。

  2. 处理并回传

    服务端受到请求报文,就会根据请求报文提供的要求,比如端口,参数等等,去执行相应的操作,并将执行结果以响应报文的形式回传给服务器。如果请求的是静态资源直接回传,如果需要动态生成那么web服务器就会调用不同的程序来调用数据库生成最终的HTML文件,在回传给浏览器。

  3. 接收并渲染

    同样经过层层添加头部和去除投出,浏览器最终得到服务器返回的HTML数据,这个时候浏览器就加载在数据,根据内容开始渲染页面,数据加载完成就会触发onload事件。

    浏览器会根据相应的内容来处理响应。如果响应可缓存,浏览器将把响应缓存。

    需要注意的时候,第一次浏览器获得的是HTML文件,但是HTML文件如果继续有新资源的请求,那么就会建立新的连接,跟刚刚的过程一样。比如外部的css,js,图片等文件。

  4. 释放连接

    TCP链接是无状态的,也就是一次性的,不会永久保存这个状态,所以双方完成一次数据的传输之后,如果没有持续的请求,那就要释放连接。

    四次挥手断开连接。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值