HTTP协议原理剖析

一、TCP 与HTTP的区别:

从领域上来说,TCP协议用于数据传输控制,而HTTP 协议主要用于应用层面的数据交互。本质上两者没有可比性。

HTTP协议属于应用层协议,建立在TCP之上,HTTP协议以客户端请求和服务端应答为标准,浏览器称为客户端,而web服务器称为服务器。客户端打开任意端口向服务器的80端口发起http请求,首先会发起TCP三次握手,是为了建立数据连接通道,通道建立成功后,进行HTTP数据交互。

当客户端请求的数据接收完毕后,HTTP服务器会断开TCP连接,整个HTTP连接的过程非常短,HTTP连接也被称为无状态的连接,无状态连接是指客户端每次向服务器发起HTTP请求时,每次请求都会建立一个新的HTTP连接,而不是在一个HTTP请求基础上进行所有的数据交互。

 

二、资源定位标识符

1.发起HTTP请求的内容资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识,关于资源定位和标识符有三种:URI 、URN、URL,三种资源定位解释如下:

£ 统一资源标识符(Uniform Resource  identifier,URI),用来唯一标识一个资源;

£ 统一资源定位符(uniform resource locator , URL),是一种具体的URI,URL可以用来标识一个资源,而且访问获取该资源;

£ 统一资源命名(uniform resource name,URN),通过名字来标识或识别资源;

2.完整的URL标识格式如下:

 

protocol//host [:port]/path/..../[?query-string][#anchor]

protocol                             //基于某种协议,常见协议:HTTPHTTPSFTPRSYNC等;

host                                    //服务器的IP地址或者域名;

port                                    //服务器的端口号,如果是HTTP,默认是80端口;

path                                    //访问资源在服务器的路径;

query-string                      //传递给服务器的参数及字符串

anchor                               //锚定结束;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
   

 

 

 

 

 

 

 

 

 

 

三、HTTP与端口通信

每个程序在运行时,会以进程的方式启动,程序就会启动并监听本地接口的端口。

端口是TCP/IP 协议中应用层进程与传输层协议实体间的通信接口,端口是操作系统分配的一种资源,应用程序通过系统调用与某个端口绑定后,传输层传给该端口的数据会被该进程接受,相应进程发给传输层的数据都通过端口输出。

TCP/IP 协议中引入了一种被称为套接字(Socket)的应用程序接口,基于Socket接口技术,一台计算机就可以与任何一台具有Socket 接口的计算机通信,而监听的端口在服务器端也成为Socket接口。

 

 

 

 

 

 

四、HTTP Request 与 Response 详解

  1.客户端浏览器向web服务器发起Request,web服务器接到Request后进行处理,会生成相应的Response信息返回给浏览器,,客户端根据服务器返回的Response信息,会对信息进行解析,最终用户看到浏览器显示的web内容。

   客户端发起Request,Request消息分为三个部分,分别包括:Request line、Request Header

、Body,如下图所示

 

 

 

     linux中执行 curl -v 命令可以打印访问的web 服务器的Request 及Reponse详细流程

     curl   -v  http://192.168.111.131/index.html

 

   2.Request 请求方法根据请求的资源不同,有如下请求方法

   GET 方法:向特定的资源发出请求,获取服务器端数据;

   POST方法:向WEB服务器上提交数据进行处理请求,常指提交新数据

   PUT方法:向web服务器提交上传最新内容,长治更新数据

   DELETE方法:请求删除Request-URL标识的服务器资源

   TRACE方法:回显服务器收到的请求,主要用于测试或诊断

CONNECT方法:HTTP/1.1协议中预留能够将连接改成管道方式的代理服务器

OPTIONS方法:返回服务器对特定资源所支持的HTTP请求方法

HEAD方法:HEAD方法根GET方法相同,只不过服务器响应时不会返回消息

 

 

五、HTTP 1.0/ 1.1 协议的区别

基于HTTP协议的客户端/服务器模式的信息交换过程,如图所示,分为四个过程:建立连接,发送请求信息,发送响应信息,关闭连接。

1.HTTP 1.0 :

(1)每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与web服务器都要建立一次单独的连接。

(2)浏览器到服务器之间的所有通讯都是完全独立分开的请求和响应。

2. HTTP 2.0:

(1)在一个tcp 连接上可以传送多个HTTP请求和响应

(2)多个请求和响应过程可以重叠

(3)增加了更多的请求头和响应头,比如Host、IF-Unmodified-Since请求头等。

 

3.HTTP协议Response 常用状态码详解:

HTTP状态码

状态码英文含义

状态码中文含义

100

continue

HTTP/1.1 新增状态码,客户端继续请求HTTP服务器

101

Switching Protocols

服务器根据客户端的请求切换协议,切换到http的新版本协议

200

ok

HTTP请求完成,常用于GET,POST请求中

301

Moved  Permanently

永久移动,请求的资源已被永久移动到新URI

302

Found

临时移动,资源临时移动,客户端继续使用原有URI

304

Not  Modified

文件未修改,请求的资源未修改,服务器返回此状态码,常用于缓存

400

Bad Request

客户端请求的语法错误,服务器无法解析或者访问

401

Unauthorized

请求要求用户的身份认证

402

Payment Required

此状态码保留,以后使用

403

Forbidden

服务器理解请求客户端的请求,但是拒绝此请求

404

Not  Found

服务器没有该资源,请求的文件找不到

405

Method Not  Allow

客户端请求中的方法被禁止

406

Not   Acceptable

服务器无法根据用户请求的内容特性完整请求

499

Client  has  closed   connection

服务器端处理的时间过长

500

Internal Server Error

服务器内部错误,无法完成请求

502

Bad  Gateway

服务器返回错误代码或者代理服务器错误的网关

503

Service Unavailable

服务器无法响应客户端请求,或者后端服务器异常

504

Gateway  Time-out

网格超时或者代理服务器超时

505

Http Vssersion  Not Supported

服务器不支持请求的HTTP协议的版本,无法完成处理

 

 

 

 

 

 

 

 

你可能感兴趣的:(centos)