资讯专栏INFORMATION COLUMN

PHP面试常考之网络协议

joywek / 1749人阅读

摘要:是为互联网服务的协议族,它是网络通信协议的统称,由和等协议组成。预告本周五更新面试常考题之会话控制和网络协议,敬请期待。以上内容摘自程序员面试笔试宝典书籍,该书已在天猫京东当当等电商平台销售。

你好,是我琉忆,欢迎您来到PHP面试专栏。
本周(2019.2-25至3-1)的一三五更新的文章如下:

周一:PHP面试常考之会话控制
周三:PHP面试常考之网络协议
周五:PHP面试常考题之会话控制和网络协议

送2本书:《PHP程序员面试笔试真题解析》

自己整理了一篇面试最爱问的一道题“从网址输入到看到内容背后的流程是什么样的?”的文章,关注公众号:“琉忆编程库”,回复:“http”,我发给你。

以下正文的内容来自《PHP程序员面试笔试宝典》书籍,如果转载请保留出处:

一、协议和TCP/IP

在20世纪80年代,计算机网络诞生,它能够将一台台独立的计算机互相连接,使得位于不同地理位置的计算机之间可以进行通信,实现信息传递和资源共享,形成一组规模大、功能强的计算机系统。不过,计算机要想在网络中正常通信,必须遵守相关网络协议的规则,常用的网络协议有TCP、UDP、IP和HTTP等。

协议

协议可简单理解为计算机之间的一种约定,好比人与人之间对话所使用的语言。在国内,不同地区的人讲的方言都不同,如果要沟通,就要约定一种大家都会的语言,例如全国通用的普通话,普通话就相当于协议,沟通相当于通信,说话内容相当于数据信息。协议需要具备通用的特征,但在早期,每家计算机厂商都根据自己的标准来生产网络产品,这使得不同厂商制造的计算机之间难以通信,严重影响了用户的日常使用。为了应对这些问题,ISO(国际标准化组织)制定了一套国际标准OSI(开放式系统互联通信参考模型),将通信系统标准化。所谓标准化是指建立技术标准,企业按照这个标准来制造产品,这大大提升了产品的兼容性、互操作性以及易用性。

OSI参考模型将复杂的协议分成了7层(见下表),每一层各司其职,并且能独立使用,这相当于软件中的模块化开发,有较强的扩展性和灵活性。分层是一种管理哲学,将同一类功能的网络协议分到一层中,使协议变得灵活可控。

在7层OSI模型中,发送方从第7层的应用层到第1层的物理层,由上至下按顺序传输数据,而接收方则从第1层到第7层,由下至上接收数据,如右图所示。

TCP/IP

TCP/IP是为互联网服务的协议族,它是网络通信协议的统称,由IP、TCP、HTTP和FTP等协议组成。TCP/IP将通信过程抽象为4层,被视为简化的OSI参考模型(如右图所示,左边是OSI参考模型,右边是TCP/IP的模型),但负责维护这套协议族的不是ISO而是IETF(互联网工程任务组)。TCP/IP在标准化过程中注重开放性和实用性,需要标准化的协议会被放进RFC(Request For Comment)文档中,RFC文档详细记录了协议的实现、运用和实验等各方面的内容,并且这些文档可在线浏览。

发送的数据会在分层模型内传递,并且每到一层,就会附加该层的包首部,包首部包含了该层协议的相关信息,例如MAC地址、IP地址和端口号。下图描绘了从传输层到互联网层,分别附加了TCP包首部和IP包首部。

互联网一词现在已经家喻户晓,它是由许多网络互联构成的一个巨型网络。早期的网络仅仅是连接计算机,而现代的互联网连接的却是全世界的人。互联网已经不再是单纯的以数据为核心,而是以人为中心,渗透到生活中的方方面面,颠覆了许多传统模式,例如足不出户就能购物、社交或娱乐。  


自己整理了一篇面试最爱问的一道题“从网址输入到看到内容背后的流程是什么样的?”的文章,关注公众号:“琉忆编程库”,回复:“http”,我发给你。

二、HTTP

HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种获取网络资源(例如图像、HTML文档)的应用层协议,它是互联网数据通信的基础,由请求和响应构成(如右图所示)。通常,客户端发起HTTP请求(在请求报文中会指定资源的URL),然后用传输层的TCP协议建立连接,最后服务器响应请求,做出应答,回传数据报文。HTTP自问世到现在,经历了几次版本迭代,目前主流的版本是HTTP/1.1,新一代HTTP/2.0是HTTP/1.1的升级版,各方面都超越了前者,但新技术要做到软硬件兼容还需要假以时日。


HTTP协议有三个特征,分别是持久连接、管道化以及无状态。

(1)持久连接
在HTTP的早期版本中,一次HTTP通信完成后就会断开连接,下一次再重新连接,如右图所示。在当时请求资源并不多的情况下,并不会造成大问题。但随着HTTP的普及,请求的资源越来越庞大,例如一个HTML文档中可能会包含多个CSS文件、JavaScript文件、图像甚至视频,如果还这么操作,会造成巨大的通信开销。

为了解决上述问题,提出了持久连接,只要通信两端的任意一端没有明确提出断开,就保持连接状态,以便下一次通信复用该连接,这避免了重复建立和断开连接所造成的开销,加速了页面呈现,如下图所示。

(2)管道化
管道化是建立在持久连接上的进一步性能优化。过去,请求必须按照先进先出的队列顺序,也就是发送请求后,要等待并接收到响应,才能再继续下一个请求。启用管道化后,就会将队列顺序迁移到服务器,这样就能同时发送多个请求,然后服务器再按顺序一个接一个地响应,如下图所示。 

(3)状态管理
HTTP是一种无状态协议,请求和响应一一对应,不会出现两个请求复用一个响应的情况(如下图所示)。也就是说,每个请求都是独立的,即使在同一条连接中,请求之间也没有联系。  

在有些业务场景中,需要请求有状态,例如后台登录。成功登录后就得保存登录状态,否则每次跳转进入其他页面都会要求重新登录。为了能管理状态,引入了Cookie技术,Cookie技术能让请求和响应的报文都附加Cookie信息,客户端将Cookie值发送出去,服务器接收并处理这个值,最终就能得到客户端的状态信息。


预告:本周五更新PHP面试常考题之会话控制和网络协议,敬请期待。

以上内容摘自《PHP程序员面试笔试宝典》书籍,该书已在天猫、京东、当当等电商平台销售。

更多PHP相关的面试知识、考题可以关注公众号获取:琉忆编程库

对本文有什么问题或建议都可以进行留言,我将不断完善追求极致,感谢你们的支持。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30173.html

相关文章

  • PHP面试考之会话控制

    摘要:一的会话也称为。如果启动会话成功,则函数返回,否则返回。会话启动后就可以载入该会话已经注册的会话变量以便使用。但数组创建的在会话结束后就会失效。预告本周三更新面试常考之网络协议,敬请期待。 你好,是我琉忆,欢迎您来到PHP面试专栏。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和...

    lsxiao 评论0 收藏0
  • PHP面试考之数据结构——链表的概念

    摘要:一链表链表是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针。指向整个列表的指针可以被称作访问指针。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.18至3.22)的一三五更新的文章如下: 周一:PHP面试常考之数据结构——链表的概念周三:PHP面试常考之数据结构——栈和队列周五:PHP面试常考之...

    dreamans 评论0 收藏0
  • PHP面试考之设计模式——工厂模式

    摘要:工厂模式其实可以划分为简单工厂模式工厂方法模式抽象工厂模式等。简单工厂模式介绍简单工厂模式又称为静态工厂方法模式,它属于类创建型模式。此模式是对工厂方法模式的进一步扩展。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工厂模式周三:PHP面试常考之设计模式——建造者模式周五:PHP...

    Jiavan 评论0 收藏0
  • PHP面试考之设计模式——建造者模式

    摘要:你好,是我琉忆,程序员面试笔试系列图书的作者。建造者模式介绍建造者模式又名生成器模式,是一种对象构建模式。表示被构造的复杂对象。创建该产品的内部表示并定义它的装配过程。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工厂模式周三:PHP面试常考之设计模式——建造者模式周五:PHP面...

    alexnevsky 评论0 收藏0
  • PHP面试考之设计模式——策略模式

    摘要:策略模式介绍策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。使用策略模式的好处策略模式提供了管理相关的算法族的办法。使用策略模式可以避免使用多重条件转移语句。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工...

    Drinkey 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<