第二章、简单的HTTP协议
HTTP协议:
HTTP协议用于客户端(请求资源的一端)和服务器端(响应回复提供资源的一端)的通信,是一种无状态协议
HTTP1.1默认TCP持久连接,管线化发送(并行发送多个请求)
=======================客户端发送请求报文===========================
GET /index.html /HTTP/1.1 ----表示请求访问某台HTTP服务器上的/index.html页面资源,1.1是版本号
Host : hackr.jp -----指明了请求访问的资源对象/请求URI(request-URI)
<请求报文一般是由请求方法、请求URI、协议版本、可选的请求首部字段和请求内容组成>
POST + /form/entry + HTTP/1.1 ---方法+URI+协议版本
Host: hackr:jp ---请求首部字段
Connection: keep-alive ---请求首部字段
Content-Type: applocation/x-www-form-urlencoded ---请求首部字段
Content-Length: 16 ---请求首部字段
name=ueno&age =37 ---内容实体
========================服务器发送响应报文===============================
HTTP /1.1 + 200 + OK ---协议版本+状态码+状态码的原因短语
Date: Tue, 10 Jul 2012 06:50:15 GMT ---响应首部字段---显示了创建响应的日期
Content-Length: 362 ---响应首部字段
Content-Type: text/html ---响应首部字段
<空行>
<html> ---主体
… ---主体
==========================HTTP方法==================================
GET:请求访问已被URL识别的资源呢
POST:传输实体的主体
PUT:传输文件
DELETE:删除文件
HEAD:获取报文首部
OPTIONS:询问支持的方法
TRACE:追踪路径---Max-Forwards=x,每经过一个服务器端就减一,x=0是停止
CONNECT:要求用隧道协议连接代理【CONNECT 代理服务器名:端口号 HTTP版本】
LINK:建立与资源之间的联系(1.1废弃)
UNLINK:断开连接关系(1.1废弃)
=====================================================================
cookie技术:解决HTTP的无状态协议
根据服务器发送的响应报文中的Set-Cookie的首部字段信息停止客户端保存cookie,当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值再发送出去,服务器接收后检查是哪个客户端的连接请求,对比服务器上的记录可以得到之前的状态信息。
第三章、HTTP报文内的HTTP信息
HTTP报文:
用于HTTP协议交互的信息叫做HTTP报文(请求报文+响应报文),它是由多行数据构成的字符串文本,大致分为报文首部和报文主体两个部分,两者由一行空行(回车/CR+换行/LF)分隔,通常并不一定要有报文主体。
HTTP报文结构:
---请求报文:请求行+请求首部字段+通用首部字段+实体首部字段+其他+空行+报文主体
---响应报文:状态行+响应首部字段+通用首部字段+实体首部字段+其他+空行+报文主体
请求行:用于请求的方法:GET /HTTP/1.1
状态行:相应结果的HTTP版本,状态码和原因短语:HTTP/1.1 200 OK
首部字段:表示请求和响应的各种条件和属性的各类首部。分类:请求/响应/通用/实体首部字段
其他:包含HTTP的RFC例未定义的首部字段,如cookie
报文主体和实体主体:(报文实体是箱子,实体主体是货物)
通常报文主体==实体主体,只有当实体主体在传输过程中进行编码操作,实体的内容发生变化时两者才不相等