美文网首页架构算法设计模式和编程理论JavaJVM · Java虚拟机原理 · JVM上语言·框架· 生态系统
字节面试题:请详细说一下从输入网址到获得页面的网络请求的过程

字节面试题:请详细说一下从输入网址到获得页面的网络请求的过程

作者: 该用户已秃头 | 来源:发表于2020-04-22 19:05 被阅读0次

    前言

    这应该算是一个很经典的面试题了,前端工程师,后端工程师,包括网络工程师都有可能被问到。开放度很高,每个人都可以针对自己熟悉的部分,进行深入的讲解。

    从输入网址到获得页面的网络请求的过程

    (1)域名解析,其实就是根据用户输入的网址去寻找它对应的IP地址,比如输入www.baidu.com的网址就会经历以下过程

    1.先从浏览器缓存里找IP,因为浏览器会缓存DNS记录一段时间

    2.如没找到,再从Hosts文件查找是否有该域名和对应IP

    3.如没找到,再从路由器缓存找

    4.如没好到,再从DNS缓存查找

    5.如果都没找到,浏览器域名服务器向根域名服务器(baidu.com)查找域名对应IP,还没找到就把请求转发到下一级,直到找到IP

    这个是对应上面步骤的图:

    (2)建立TCP连接 (这里使用五层协议更详细的描述如何建立这个TCP链接的)

    先是客户端发起请求过程:

    1. 使用应用层发起HTTP请求(这个可以根据你本身输入的url访问时,用的什么协议就发起对应协议去进行请求)

    2. 然后是传输层的TCP协议为传输报文提供可靠的字节流服务,这里也就使用了TCP三次握手

    3. 网络层是把TCP分割好的各种数据包传送给接收方。而要保证确实能传到接收方还需要接收方的MAC地址,也就是物理地址

    4. 然后才是链路层将数据发送到数据链路层传输。至此请求报文已发出,客户端发送请求的阶段结束

    然后是服务端接受请求处理阶段:

    原路进行处理:链路层—>网络层—>传输层—>应用层然后响应客户端发送报文。

    (3)根据SpringMVC后台业务返回数据,并把数据填充到HTML页面上,然后返回给浏览器

    这里用到的TCP三次握手的图:

    这里是根据IP地址去映射对应的MAC地址:

    这个是服务端去接受客户端发送过来的请求并进行解析的过程图:

    (4)浏览器进行处理

    服务器通过后台语言程序处理,找到数据返回给浏览器,HTML字符串被浏览器接受后被一句句读取解析,解析到link标签后重新发送请求获取css,解析到sript标签后发送请求获取js,并执行代码

    (5)绘制网页

    然后浏览器会进行渲染,浏览器根据HTML和CSS计算得到渲染树,绘制到屏幕上,js会被执行

    七层协议图:

    相关文章

      网友评论

        本文标题:字节面试题:请详细说一下从输入网址到获得页面的网络请求的过程

        本文链接:https://www.haomeiwen.com/subject/vlwwihtx.html