HTTP

来源:互联网 发布:linux cp stat 编辑:程序博客网 时间:2024/06/05 18:16

万维网使用统一资源定位符URL来标志万维网上的各种文档,并是每一个文档在整个Internet的范围内具有唯一的标识符URL,HTTP(超文本传输协议),是一个应用层协议,它使用TCP连接进行可靠的传送,它的形式如下:

http://<主机>:<端口>/<路径>
主机:表示合法的internet主机域名和IP地址
端口:http的默认端口号是80,通常可以省略
路径:指定请求资源的URI

URI是统一资源标识符,URL是统一资源定位符,URL通过位置来确定一个资源,而URI则通过唯一的标识符来确定一个资源,URL是URI的子集

通信过程

HTTP只关心一个功能,那就是从Web服务器到Web客户端的超文本文件以及其他文件的传输,万维网大致工作过程如下:

首先说明一下每个万维网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向它发出连接建立请求,一旦监听到连接建立请求并建立TCP连接后,浏览器就会向服务器发出浏览某个页面的请求,服务器接着就会返回所请求的页面作为相应,最后TCP连接释放。

当用户输入域名并点击确认后

1.浏览器分析链接指向页面的URL

2.浏览器向DNS请求URL的IP地址

3.DNS解析出URL的IP地址并返回

4.浏览器与服务器建立tcp连接

5.浏览器发出GET命令

6.服务器做出响应,把指定文件发送给浏览器

7.释放tcp连接

8.浏览器显示页面中所有文本

http使用tcp来可靠传输,协议本身是无状态的,所以简化了服务器的设计

http报文结构

http请求报文

http请求报文由请求行,请求头部,空行和请求实体4个部分组成,如下图所示

这里写图片描述

下面对请求报文格式进行简单的分析:

请求行:请求行由方法字段,URL字段和http协议版本字段3个部分组成,它们之间使用空格隔开,常用的http方法有:GET,POST,HEAD,PUT,DELETE,OPTIONS,TRACE,
CONNECT等

GET:客户端从服务器读取某个资源
POST:客户端给服务器提供信息比较多的时候使用该方法,比如变淡数据的提交

请求头部:请求头部由关键字/值对组成,每行一对,关键字和值使用英文:分隔
请求头部通知服务器有关于客户端请求的信息,典型的请求头由:

  • USer-Agent:产生请求的浏览器类型
  • Accept:客户端可识别的响应内容类型
  • Accept-Language:客户端可接受的自然语言
  • Accept-Encoding:客户端可接受的编码压缩格式
  • Accept-Charset:可接受的应答的字符集
  • Host:请求的主机名,允许多个域名同一个IP地址,即虚拟主机
  • connection:连接方式
  • Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie

空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头

请求包体:请求包体不在GET方法中使用,而是在POST方法中使用,POST方法适用于客户端填写表单的场合,与请求包体相关的最常用的包体类型Content-Type和包体长度Content-Length

http响应报文

http响应报文由状态行,响应头部,空行和响应包体4个部分组成
如下图所示:

这里写图片描述

下面对响应报文格式进行简单的分析

状态行:状态行由http协议版本字段,状态码和状态码的描述文本3部分组成,它们之间使用空格隔开

状态码
状态码由三位数字组成,第一位表示响应类型,常用的状态码如下:

1xx:信息性状态码,接受的请求正在处理

2xx:成功状态码,请求正常处理完毕

3xx:重定向状态码,需要进行附加操作以完成的请求

4xx:客户端错误状态码,服务器无法处理请求

5xx:服务器错误状态码,服务器处理请求出错

状态码描述文本:

200 OK :客户端请求成功

404 Not Found : 请求的资源不存在

503 Service Unavilable:服务器当前不能处理客户端请求,在一段时间后,可能恢复正常。

响应头部
响应头部可能包含以下内容

Location:Location响应头部域用于重定向接受者到一个新的位置

Server:Server响应头部域包含了服务器用来处理请求的软件信息以及其版本,它和User-Agent请求头部域是相对应的,前者发送服务端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息

Vary:指示不可缓存的请求头列表

Connection:连接方式

WWW-Authenticate:WWW-Authenticate响应报头域必须包含在401响应消息中,这个报头域和Authorization请求报头域是相关的,客户端收到401响应消息,就要决定是否请求服务器对其进行验证,如果要求进行验证,就可以发送一个Authorization报头域的请求

空行:最后一个响应头部之后是一个空行,发送回车符和换行符,通知服务器不再有响应头部

响应包体:服务器返回客户端的文本信息

http1.0和http1.1的区别

http1.0使用的是非持久性连接,主要缺点每个TCP连接最多允许传输一个对象,即每请求一个文档就有两倍的RTT的开销

http1.1使用的是持久性连接,每个TCP连接允许传输多个对象