现在的位置: 首页 > 综合 > 正文

认识HTTP

2018年03月19日 ⁄ 综合 ⁄ 共 1854字 ⁄ 字号 评论关闭

今天去面试,面试官走来就抛出什么是HTTP?我脑子一蒙!什么是HTTP?我脑子里面只有超文本传输协议这个概念。

回来之后就百度查资料。让我们认识一下这个是什么东西。在iOS开发过程中我们需要和服务端打交道,了解一些HTTP知识是很有必要的。

基础知识:

HTTP是Hyper Text TransFer Protocol的缩写,中文全称超文本传输协议。它是客户端向服务器请求数据,以及服务器响应客户端一层协议。在网络层次角度来看HTTP是面向应用层协议。这是互联网进行可靠传输的基础。

简史:超文本传输协议的前身是世外桃源(Xanadu)项目,超文本的概念是由Ted Nelson在1960年代提出的,在他进入哈佛大学之后,Nelson一直致力于超文本协议和该项目的研究,但是一直没有向外不公开发表资料。时间很快到了1989年,Tim Berners Lee在CERN(欧洲原子核研究委员会)担任软件咨询师的时候,开发了一套程序,奠定了万维网的基础。1990年12月,超文本在CERN首次上线,来到1991年夏天,继Telnet等协议之后,超文本传输协议成为互联网诸多协议的一部分。

当时,Telnet协议解决了一台计算机与另一台计算机之间一对一的控制型通信的要求,邮件协议解决了一个发件人向少数收件人的通信要求,文件传输协议解决了一台计算机向另一台计算机批量获取文件的通信要求,新闻传输协议解决了新闻一对多的通信要求,但是它们都不具备一边获取文件一边显示文件或者对文件现时处理的能力。而超文本传输协议解决通信的要求是:在一台计算机上获取并且显示存放在多台计算机里面的文本、数据、图片以及其他类型的文件。它包含两个大部分:超文本转移协议和超文本标记语言(HTML)。

HTTP协议工作原理

客户端向服务器发送一个请求,然后显示返回的数据。这个过程具体是怎么样的?

当客户端通过一个URL(Uifrom Resource Locator)统一资源定位符向服务器请求资源时,该请求会传送到由URL指定的服务器端,服务器端接收到请求之后,进行相关文档的检索并且通过HTTP协议规定的格式返回所请求的文件或者其他的相关信息,最后客户端对请求来的信息进行处理。

HTTP运作过程的连接

连接过程说明:

采用HTTP/1.0时,WEB服务的过程:

1.客户端启用了对服务器的TCP连接,服务器的80端口监听来自网络的服务请求;

2.客户端通过第一步建立的链接套接字发送“请求报文”;

3.服务器通过第一步建立连接的套接字收到了请求报文,从磁盘或者内存中查找响应请求的文件,将文件封装在HTTP的“响应报文”中,并且通过之前建立起来的套接字将该报文发送到客户端;

4.服务器断开TCP连接(TCP在客户端完全收到响应报文之前是不会断开TCP连接);

5.当客户端完全接收了响应报文之后,本次TCP连接结束。

上述步骤使用的是非坚持连接的工作模式,由于服务器在对每个请求响应之后都会关闭TCP连接。这种工作模式效率比较低,每个请求的对象建立和维持一个崭新的连接,在客户端和服务器端都要为TCP分配缓存并保持TCP变量,这会对服务器带来压力。

提高HTTP服务效率的两种办法

1.从一个客户端同时发送多个TCP连接并列到一个服务器端上,即建立并行的TCP连接。

2.使用持续连接模式,服务器在完成一次HTTP请求之后继续保持连接,统一客户端和服务器之间后继的请求和响应报文,这些都可以在原来的连接中进行。

HTTP协议的主要特点:

1.支持客户/服务器模式,其实我上面都是用这种模式去解释的。支持基本认证和安全认证;

2.简单快捷:客户向服务器请求服务时,只需要传送请求方法和路径。请求方法常见的有GET、POST、HEAD。每种方法规定了客户和服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输人艺类型的数据对象,传输类型由Content-type加以标记;

4.HTTP0.9和1.0使用的是非持续连接:限制每次连接只处理一个请求,服务器处理完请求之后即断开连接,采用这种方式节省传输时间;

   HTTP1.1使用持续连接,不必为每个web对象创建一个新的连接,一个连接可以传送对个对象;

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理前面的信息,则它必须重传前面的信息,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前的信息时应答速度比较快。

抱歉!评论已关闭.