2021高频PHP面试题(值得收藏)

Posted 一个PHP程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021高频PHP面试题(值得收藏)相关的知识,希望对你有一定的参考价值。

一、详述一次完整的HTTP请求过程

这个问题的核心是域名解析和服务器(nginx)解析这两部分,基本上这两部分详细阐述就可以了。

关注微信公众号  “php大神”回复“面试题”即可免费获取更多你需要的面试题。

步骤一、解析URL

浏览器会解析当前的URL数据,判断此URL是否为合法的链接。如果是合法链接则正常的向下一步骤前进。如果不是合法的链接,则会执行搜索功能,例如执行百度、360、Google搜索等。

步骤二、解析域名

服务器是以ip的形式存在的。而域名需要解析到ip上,解析IP会有三个小的步骤:

1)、从浏览器自身的缓存中解析此域名数据

2)、从本地电脑的HOST文件中解析域名

3)、通过DNS服务器解析域名

步骤三、拿信息

这个步骤我们拿到了URL的信息,主要是IP和端口信息。

步骤四、封包并进行三次握手

浏览器将请求信息进行打包,通过TCP的三次握手将数据传递至服务器。

步骤五、服务器解析、处理、返回数据

服务器通过种种层级、方式拿到传递的数据,对数据进行分析、处理,最后返回响应类MIME类型数据。正常状态码为200,非正常的错误码有404、500、501等等

步骤六、浏览器获得、渲染、展现数据

浏览器从服务器拿到数据、通过加载资源、渲染页面等操作,将页面展现给用户。

二、三次握手,四次挥手,为什么是三次握手四次挥手

1.关注微信公众号  “PHP大神”回复“面试题”即可免费获取更多你需要的面试题。

 

 

2.四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手。客户端或服务器均可主动发起挥手动作。

由于TCP连接时全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成他的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

 

 

这是因为服务端的LISTEN状态下的socket当收到SYN报文连接的请求后,它可以把ACK和SYN放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,他仅仅表示对方没有数据发送给你了,但未必你的所有数据都全部发送给对方了,所以你可以不马上关闭socket,即你可能还会发送一些数据给对方之后,在发送FIN报文给对方来表示你同意现在可以关闭连接了,所以这里的ACK和FIN报文多情况下都是分开发送的。

关注微信公众号  “PHP大神”回复“面试题”即可免费获取更多你需要的面试题。

 

以上是关于2021高频PHP面试题(值得收藏)的主要内容,如果未能解决你的问题,请参考以下文章

2021最新Java高频精选面试题讲解,赶紧收藏起来!

这些高频PHP面试题,你能回答出来吗?

Redis高频面试题汇总(2021最新版)

PHP中高级面试题 一个高频面试题:怎么保证缓存与数据库的双写一致性?

Android 大厂高频面试题及答案,知识脉络整理

Android 大厂高频面试题及参考解答,知识脉络整理~~