在地址栏中输入URL地址或域名,到返回页面做了哪些事?

在地址栏中输入URL地址或域名,到返回页面做了哪些事?

声明:转载于微信公众号:程序员王不错

以打开浏览器在地址栏输入www.baidu.com为例,整个过程如下:

(1)解析URL。

解析URL的目的是将域名和需要请求的资源分离开来,从而了解需要请求的是哪个服务器,请求的是服务器上什么资源。

(2)应用层进行DNS域名解析获取IP地址

通过DNS将域名解析成IP地址。解析过程按照浏览器缓存、系统缓存、路由器缓存、本地域名服务器缓存、ISP(运营商)缓存、根域名服务器、顶级域名服务器、主域名服务器的顺序,逐步读取缓存,直到拿到IP地址。

(3)应用层封装HTTP请求报文

拿到IP地址,就知道了目标服务器在哪里。应用层生成针对目标服务器的HTTP请求报文,请求报文包括起始行、请求头和请求体三部分。

起始行包括请求方法,一般浏览器地址栏发送的是get方法。如果是get方法,则请求体为空。请求头包括cookie、user-agent等信息。get请求在请求行上传参,post请求在请求体中传参。

起始行除了方法,还有URI,协议版本。

(4)建立TCP连接

通过TCP三次握手建立可靠的连接,保证双方具有可靠的接收和发送能力

(5)浏览器发送请求

TCP三次握手完成之后,浏览器与目标服务器之间就建立了连接,浏览器可以发送HTTP请求。

在TCP连接通道上进行传输时,由于报文比较大,为了更容易和准确地传输,TCP会将HTTP报文按序号分割成若干报文段并加上TCP首部,分别进行传输。接收方按照序号重组这些http报文。

TCP首部:

(6)网络层通过IP协议来选择路线

接收到来自传输层的数据段之后添加IP首部封装成数据包,加入源IP地址和目的IP地址。

IP协议所处的网络层规定:数据报通过怎样的路径才能到达对方计算机,并传送给对方。

(7)数据链路层借助ARP协议凭借MAC地址通信

数据包还要封装成帧,加入CRC校验位,源Mac地址和目的Mac地址

(8)物理层传输比特流

(9)服务器响应请求

服务器接收到比特流之后,将比特流转换成帧,比对目的Mac地址,拆包,上传到网络层,网络层比对IP地址,拆包上传到传输层,传输层对数据段进行确认,按照TCP首部的序号以原来的顺序重组HTTP请求报文,保证数据传输的可靠性。最后传给应用层。生成一个对应请求的响应报文,报文的主体就是一个HTML页面

(10)服务器将其按照上述流程传回浏览器

通过传输层、网络层、数据链路层的层层封装,最终将响应报文封装成二进制比特流,并转换成其他信号,如电信号到网络中传输 , 反向传输的过程与正向传输的过程类似,就不再赘述 。

(11)断开TCP连接

通过四次挥手机制断开TCP连接

(12)浏览器显示界面

浏览器拿到资源后,对页面进行加载、解析、渲染,最后呈现给用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值