码迷,mamicode.com
首页 > Web开发 > 详细

HTTP协议原理

时间:2018-06-27 14:03:22      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:不能   空白   中间   问题   屏幕   curl   post   命令   后端服务   

HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。

尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。

通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

 

HTTP方法 作用描述

GET 客户端请求指定的资源信息,服务器返回指定资源
HEAD 只请求响应报文中的HTTP首部
POST 将客户端的数据提交到服务器,例如注册表单
PUT 用从客户端向服务器传送的数据取代指定的文档内容
DELETE 请求服务器删除Request-URI所标识的资源
MOVE 请求服务器将指定的页面移至另一个网络地址


HTTP不同状态码机器对应的作用(常用)

状态代码 详细描述说明
200-OK 服务器成功返回网页,这是成功的HTTP请求返回的标准状态码
301-Moved Permanently 永久跳转,所请求的网页将永久跳转到设定的新位置
403-Forbidden 禁止访问,请求合法,但是服务器端因为某些原因拒绝响应客户端的请求,此类问题一般为服务器或服务权限配置不当
404-Not Found 服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源所致
500-Internet Server Error 内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求,一般为服务器设置或内部程序问题导致
502-Bad Gateway 坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器,通常为反向代理服务器下面的节点出问题所致
503-Service Unavaliable 服务当前不可用,可能是服务器超载或停机维护所致,或是反向代理服务器后面没有可以提供服务的节点
504-Gateway Timeout 网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定时间内完成处理请求,多数是服务器过载导致没有在指定的时间内返回数据给前端代理服务器

 

#curl 取状态码

[root@localhost ~]# curl -I -s -w %{http_code} -o /dev/null www.baidu.com
200

-----------------------------------------------------------------------------------------------

HTTP请求报文格式:

报文格式             报文信息
请求行              请求方法 URL 协议版本

              字段名1:值1
              字段名2:值2
              ...
请求头              例如:
              Accept: image/gif image/jpeg
              Accept-Language: zh-cn
              ...

空行              空白无内容

请求报文主体 GET方法没有请求报文主体,post方法才有

-----------------------------------------------------------------------------------------------

请求行是请求报文的第一行,用来说明客户端想要做什么,内容由请求方法字段,URL字段和HTTP协议版本字段组成,他们之间用空格分隔

请求头部由关键字/值对组成,每行一对,关键字和值用英文:分隔。请求头部的作用是通过客户端把请求的相关信息告诉服务器

常见请求头部信息:

请求头部信息 说明
Accept: image/gif,image/jpeg 媒体类型
Accept-Language: zh-cn 语言类型
Accept-Encoding: gzip,deflate 支持压缩
User-Agent: Mozilla/4.0(compatible: MSIE 6.0: Windows NT: ...) 客户端类型
Host: www.example.com 主机名

最后一个请求头部信息之后是一个空行,通过发送回车符和换行符,通知Web服务器空行以下不会有请求头部的信息了

 

请求报文主体:

请求报文主体中包括了要发送给Web服务器的数据信息,请求报文主体不会应用于HTTP的GET命令方法,而是应用于POST方法,POST方法适用于需要客户填写表单的场合。


HTTP响应报文格式:

报文格式                 报文信息

                        协议及版本号、数字状态码、状态信息

 

              字段名1:值1
              字段名2:值2
              响应头部 ....
起始行              例如:
              Content-Type: text/html:
              Content-Length: 78
              ....


空行                  空白无内容

              <html>
              <head><title>Template‘s blog</title></head>
响应报文主体        <body>
              I am Template
              </body>
              </html>



响应报文阐述:

1、起始行

响应报文的起始行也叫状态行,用来说明服务器响应客户端请求的状态。一般为协议及版本号,数字状态码,状态情况,例如:HTTP/1.1 200-OK

2、响应头部

和请求报文类似,起始行的后面一般有若干个头部字段,每个头部字段都包含一个名字和一个值,两者之间用冒号分割,头部结尾也是一个空行结束

3、空行

最后一个响应头部是空行。通过发送回车符和换行符,通知客户端空行下文无头部信息了

4、响应报文主体

响应报文主体装载了要返回给客户端的数据,这些数据可以是文本,也可以是二进制的(如图片,视频)


HTTP协议原理:

HTTP协议属于OSI模型中的第七层应用层协议,HTTP协议的重要应用就是www服务应用,下面就以www服务应用为例介绍HTTP协议的通信原理。
以HTTP协议通信时,需要有客户端和服务端,在Web客户端向Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务器之间
建立一个TCP/IP连接,整个HTTP协议请求的工作流程如下:


1、客户端在Web浏览器地址栏输入访问地址www.example.com

2、Web浏览器请求DNS服务器把域名www.example.com转换成Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程,DNS原理可以参考DNS解析流程         

3、Web浏览器将端口号(默认是80)从访问地址(URL)中解析出来。

4、Web浏览器通过解析后的IP地址及端口号与Web服务器之间建立一条TCP连接

5、建立TCP连接之后,Web浏览器向服务器发送一条HTTP请求报文

6、Web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文

7、Web服务器关闭HTTP连接,关闭TCP连接,Web浏览器显示访问的网站内容到屏幕上

 




 

HTTP协议原理

标签:不能   空白   中间   问题   屏幕   curl   post   命令   后端服务   

原文地址:https://www.cnblogs.com/Template/p/9233339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!