PHP面试常考之网络协议

栏目: PHP · 发布时间: 7年前

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

你好,是我琉忆,欢迎您来到 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层,由下至上接收数据,如右图所示。

PHP面试常考之网络协议

TCP/IP

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

PHP面试常考之网络协议

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

PHP面试常考之网络协议

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

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

二、HTTP

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

PHP面试常考之网络协议

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

(1)持久连接

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

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

(2)管道化

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

PHP面试常考之网络协议

(3)状态管理

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

PHP面试常考之网络协议

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

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

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

PHP面试常考之网络协议

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

PHP面试常考之网络协议

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Dream Machine

The Dream Machine

M. Mitchell Waldrop / Penguin Books / 2002-8 / USD 16.00

While most people may not be familiar with the name J. C. R. Licklider, he was the guiding spirit behind the greatest revolution of the modern era. At a time when most computers were big, ponderous ma......一起来看看 《The Dream Machine》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具