java面试(二)---浏览器输入域名获取信息的过程

  1. 什么是HTTP协议:
    HTTP是一个无连接的超文本协议,它允许将HTML文本从服务器发送给浏览器。

输入域名得到资源的过程有以下步骤:

  1. 输入域名通过dns解析得到服务器的ip地址
  2. 通过返回的IP地址访问服务器
  3. 向服务器发出tcp连接请求
  4. 服务器把含资源的HTML返回给浏览器
  5. 浏览器通过解析HTML渲染得到资源页面
以下是步骤的详细解答:
  • 客户端得到域名,首先查找本机的域名高速缓存,如在自己本机则直接得到IP,否则访问本地的dns服务器,如果本地服务器也无法得到,则向根域名服务器发出访问,根域名服务器可以告诉本地服务器应该去那个顶级域名服务器访问,之后通过一层层的回复,最后得到ip地址或者返回一个查询不到。
    在这里插入图片描述现在常用的dns解析一般采用的都是迭代查询。可以减轻服务器的压力。
  • 浏览器向服务器发送tcp链接请求
    浏览器A向服务器B发送一个tcp链接请求,A请求中包含的数据有syn(同步序列编号)=j,并进入到SYN_SEND状态。
    服务器B接受请求后,向浏览器发送一个对A的SYN确认的一个ACK消息=j+1,并且发送一个自己的SYN=k的同步序列号,进入到SYN_RECV状态。
    浏览器A接受B的SYN_ACK消息后,发送一个自己的ACK=k+1,的确认信号,进入到TCP链接完成状态established。此时TCP链接建立完成。
    在这里插入图片描述
  • 服务器把资源发送给客户端后断开TCP链接。
    由于TCP链接是全双工的,使用链接双方都需要发送一个fin后才能结束,如果是服务器发送资源完毕后,发送一个fin之后,客户端依旧可以发送请求,只有当客户端也发送了一个fin之后请求才被拒绝。
    此处假设发送中断的是客户端
    客户端发送一个fin完成信号,和结束的序号seq=u给服务器。进入到FIN_Wait
    服务器接受到客户端得完成信号,但自己的资源发送还未完成,则发送一个ack=u+1,一自己的seq=v,并发一个ACk表示自己尚未完成,进入到close_wait.
    客户端接受到信息后进入fin_wait,等待服务器发送fin。
    服务器完成工作后,发送一个fin,ack=u+1,seq=w的信号,表示完成。
    客户端表示收到发送一个Ack=w+1,的确认,之后等待2秒,如果没有收到重传信号,则算是TCP链接断开。
    在这里插入图片描述
  • 客户端对收到的HTML页面进行渲染。
  1. 解析html页面如果遇到需要请求外部资源

  2. 加载过程中遇到外部css文件,浏览器另外发出一个请求,来获取css文件。遇到图片资源,浏览器也会另发出一个请求,来获取图片资源。这是异步请求,并不会影响html文档进行加载。

    但是当文档加载过程中遇到js文件,html文档会挂起渲染的线程,不仅要等待文档中的js文件加载完毕,还要等待解析执行完毕,才能恢复html文档的渲染线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值