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

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

(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.jianshu.com/p/cb6e0bbde4a7
解析过程文章:https://www.cnblogs.com/jesse131/p/6215961.html
七层协议文章:https://www.cnblogs.com/wxgblogs/p/5641643.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值