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面试题(值得收藏)的主要内容,如果未能解决你的问题,请参考以下文章