大家好,我是刘义,欢迎来到PHP面试专栏。本周(2019.2-25至3-1)135更新文章如下:周一:PHP面试常考SessionControl周三:PHP面试常考网络协议周五:PHP面试常考SessionControl和网络协议送2本书:《PHP程序员面试笔试真题解析》我整理了一篇喜欢的面试题《从输入网址到看到内容是怎样的过程?后文内容来自《PHP程序员面试笔试宝典》书籍,如需转载,请保留出处:1.协议与TCP/IP20世纪80年代,计算机网络诞生,可以将独立的计算机相互连接起来,从而使位于不同地理位置的计算机能够相互通信,实现信息传递和资源共享,形成一组规模庞大、功能强大的计算机系统。但是,一台计算机要想在网络中正常通信,它必须是de由相关网络协议的规则。常用的网络协议包括TCP、UDP、IP和HTTP。ProtocolProtocol可以简单理解为计算机之间的协议,就像人与人之间进行对话所使用的语言一样。在中国,不同地区的人讲不同的方言。如果要交流,就必须约定一种大家都能听懂的语言,比如全国通行的普通话。普通话相当于约定,交流相当于交流,讲话内容相当于数据信息。.协议需要有共同的特性,但是在早期,各个电脑厂商都按照自己的标准生产网络产品,这就导致不同厂商生产的电脑之间很难相互通信,严重影响了用户的日常使用。针对这些问题,ISO(国际标准化组织)制定了一套国际标准OSI(OpenSystemsInterconnectionCommunicationReferenceModel),对通信系统进行标准化。所谓标准化,是指建立技术标准,企业按照这个标准生产产品,大大提高了产品的兼容性、互操作性和易用性。OSI参考模型将复杂的协议分为7层(见下表),每一层各司其职,可以独立使用。这相当于软件中的模块化开发,具有很强的扩展性和灵活性。分层是一种管理理念,将具有相同功能的网络协议划分为一层,使协议灵活可控。在7层OSI模型中,发送端从第7层的应用层到第1层的物理层,从上到下依次传输数据,而接收端从第1层到第7层,从下到上接收数据,如右图所示。TCP/IPTCP/IP是服务于Internet的协议族。它是网络通信协议的总称,由IP、TCP、HTTP、FTP等协议组成。TCP/IP将通信过程抽象为4层,可以看作是一个简化的OSI参考模型(如右图,左边是OSI参考模型,右边是TCP/IP模型),但是它不负责维护这套协议。ISO但IETF(互联网工程任务组)。TCP/IP在标准化过程中注重开放性和实用性。需要标准化的协议将放入RFC(RequestForComment)文档中。RFC文档详细记录了协议的实现、应用和实验,这些文档可以在线获取。发送的数据会以分层模型传输,每一层都会附加本层的包头,包头包含本层协议的相关信息,如MAC地址、IP地址、端口号等。下图描述了从传输层到互联网层分别附加的TCP包头和IP包头。互联网这个词现在已经广为人知,它是由许多相互连接的网络组成的巨型网络。早期的互联网只连接电脑,但现代互联网连接了全世界的人。互联网不再单纯以数据为中心,而是以人为中心,渗透到生活的方方面面,颠覆了购物、社交、足不出户等诸多传统模式。整理了一篇最喜欢的面试题“从输入网址到看到内容是什么过程?”,关注公众号:《六一编程库》,回复:“http”,我发给你。2、HTTPHTTP(HyperTextTransferProtocol)即超文本传输??协议,是一种获取网络资源(如图像、HTML文档)的应用层协议。它是互联网数据通信的基础,由请求和响应组成(如右图所示)。通常,客户端发起HTTP请求(资源的URL会在请求报文中指定),然后在传输层使用TCP协议建立连接。最后服务器响应请求,做出响应,返回数据消息。HTTP自问世以来,经历了数个版本迭代。目前的主流版本是HTTP/1.1。新一代HTTP/2.0是HTTP/1.1的升级版。它在各方面都超越了前者,但新技术必须是软件和硬件。兼容性也需要时间。HTTP协议具有三个特点,即持久连接、管道和无状态。(1)持久连接在HTTP的早期版本中,一次HTTP通信完成后会断开连接,下次重新连接,如右图所示。在当时请求的资源不多的情况下,不会造成太大的问题。但是随着HTTP的普及,请求的资源越来越大。例如,一个HTML文档可能包含多个CSS文件、JavaScript文件、图像甚至视频。如果仍然这样做,会造成巨大的通信开销。为了解决上述问题,持久连接被提出。只要通信的两端任何一方没有明确提出断开连接,就会保持连接状态,以便在下一次通信中可以重用该连接,从而避免了重复建立和断开连接带来的开销。页面渲染加速,如下图所示。(2)PipelinePipeline是在持久连接的基础上进一步的性能优化。以前的请求是按照先进先出的顺序排队的,即发送一个请求后,必须等待收到响应,才能进行下一个请求。开启流水线后,将队列顺序迁移到服务端,这样可以同时发送多个请求,服务端依次响应,如下图所示。(3)状态管理HTTP是无状态协议,请求和响应是一一对应的,不会出现两个请求复用一个响应的情况(如下图)。也就是说,每个请求都是独立的,即使在同一个连接中,请求之间也没有连接。在一些业务场景中,需要有状态的请求,比如后台登录。登录成功后,一定要保存登录状态,否则每次跳转到其他页面都需要重新登录。为了管理状态,引入了Cookie技术。Cookie技术可以在请求和响应消息中添加Cookie信息。客户端发送Cookie值,服务端接收并处理这个值,最终可以得到客户端的状态信息。通知:PHP面试常见问题的session控制和网络协议将于本周五更新,敬请期待。以上内容节选自《》一书,已在天猫、京东、当当网等电商平台销售。更多PHP相关面试知识和试题,请关注公众号获取:六一编程库,对本文有任何问题或建议可以留言。我会不断改进,追求极致,谢谢大家的支持。
