HTTP协议学习笔记

时间:2023-02-26 11:45:13

一、web及网络基础

TCP/IP分层管理

应用层——传输层——网络层——链路层

TCP/IP通信传输流

想浏览http://www.xxx.com/aaa/页面,客户端(浏览器)请求DNS服务,得到与域名对应的IP地址,生成HTTP请求报文,TCP将请求报文分割为若干段,依靠IP协议,搜索对方的地址,一边跳转一边传送,TCP将收到的报文段重组为原来的顺序,WEB服务器依靠HTTP协议,对请求的内容进行处理,请求的处理结果同样也用TCP/IP协议向用户回传。

URL格式

协议方案名://登录信息@服务器地址:服务器端口号/带层次的文件路径?查询字符串#片段标识符

http://user:password@www.example.com:80/dir/index.htm?uid=1#ch1

二、HTTP协议

HTTP协议用于客户端和服务器之间的通信,是无状态协议。

客户端发出请求,服务器端响应该请求并返回。

HTTP方法:

GET 获取资源
POST 传输实体主体
PUT 传输文件
HEAD 获得报文首部
DELETE 删除文件
OPTIONS 询问支持的方法
TRACE 追踪路径
CONNECT 要求用隧道协议连接代理

 

 

 

 

 

 

 

 

持久连接

只要任意一端没有提出断开连接,则保持TCP连接状态。

管线化

不必等待响应亦可直接发送下一个请求。

COOKIE

cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态。

三、HTTP报文内的HTTP信息

HTTP报文

HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的报文叫做请求报文,响应端(服务器端)的报文叫做响应报文。

HTTP报文大致分为报文首部和报文主体两部分,由空行划分(CR+LF)。通常,并不一定要有报文主体。

请求报文首部分为请求行、请求首部字段 、通用首部字段和实体首部字段;

响应报文首部分为状态行、响应首部字段、通用首部字段和实体首部字段。

请求报文和响应报文的首部内容由以下内容组成:

  1. 请求行
  2. 状态行
  3. 首部字段
  4. 其他(cookie等)

HTTP协议学习笔记

 HTTP协议学习笔记

编码提升传输效率

报文主体和实体主体的差异

报文(message)是HTTP通信中的基本单位,由8位组字节流(octet sequence,其中octet为8个比特)组成,通过HTTP通信传输。

实体(entity)作为请求请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

HTTP报文的主体用于传输请求或响应的实体主体。

通常,报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

内容编码是指应用在实体内容上的编码格式,并保持实体信息原样压缩,由客户端接收并解码。

常用内容编码有:

  1. gzip(GNU zip)
  2. compress(UNIX系统的标准压缩)
  3. deflate(zlib)
  4. identity(不进行编码)

分块传输编码(chunked transfer coding),把实体主体分块的功能,将实体主体分成多个块,第一块都会用十六进制来标记块的大小,最后一块会用"0(CP+LF)"来标记。客户端负责解码,恢复被压缩前的实体主体。

四、返回结果的HTTP状态码

状态码描述返回的请求结果,类别有:

  类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

 

 

 

 

 

主要使用的有14种:

  1. 200 OK
  2. 204 No Content
  3. 206 Partial Content
  4. 301 Moved Permanently
  5. 302 Found
  6. 303 See Other
  7. 304 Not Modified
  8. 307 Temporary Redirect
  9. 400 Bad Request
  10. 401 Unauthorized
  11. 403 Forbidden
  12. 404 Not Found
  13. 500 Internal Server Error
  14. 503 Service Unavailable

五、与HTTP协作的WEB服务器

用虚拟主机可实现同台服务器多个域名。

六、HTTP首部

 HTTP首部字段结构

首部字段名:字段值

分类:

  1. 通用首部字段
  2. 请求首部字段
  3. 响应首部字段
  4. 实体首部字段

通用首部字段(9个)

首部字段名

说明

Cache-Control

控制缓存的行为

Connection 逐跳首部、连接的管理
Date 创建报文的日期时间
Program 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知

请求首部字段(19个)

首部字段名
说明
Accept
用户代理可处理的媒体类型
Accept-Charset
优先的字符集
Accept-Encoding
优先的内容编码
Accept-Language
优先的语言(自然语言)
Authorization
Web认证信息
Expect
期待服务器的特定行为
From
用户的电子邮箱地址
Host
请求资源所在的服务器
If-Match
比较实体标记(ETag)
If-Modified-Since
比较资源的更新时间
If-None-Match
比较实体标记(与If-Match相反)
If-Range
资源未更新时发送实体Byte的范围请求
If-Unmodified-Since
比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards
最大传输逐跳数
Proxy-Authorization
代理服务器要求客户端的认证信息
Range
实体的字节范围请求
Referer
对请求中的URI的原始获取方
TE
传输编码的优先级
User-Agent
HTTP客户端程序的信息  

  

响应首部字段(9个)

首部字段名
说明
Accept-Ranges
是否接受字节范围请求
Age
推算资源创建经过时间
Content-Disposition
可以控制返回的资源是下载还是预览(图片)
ETag
资源的匹配信息
Location
令客户端重定向至指定URI
Proxy-Authenticate
代理服务器对客户端的认证信息
Retry-After
对再次发起请求的时机要求
Server
HTTP服务器的安装信息
Vary
代理服务器缓存的管理信息
WWW-Authenticate
服务器对客户端的认证信息

   

实体首部字段(10个)

首部字段名
说明
Allow
资源可支持的HTTP方法
Content-Encoding
实体主体试用的编码方式
Content-Language
实体主体的自然语言
Content-Length
实体主体的大小(单位:字节)
Content-Location
替换对应资源的URI
Content-MD5
实体主体的报文摘要
Content-Range
实体主体的位置范围
Content-Type
实体主体的媒体类型
Expires
实体主体过期的日期时间
Last-Modified
资源的最后修改日期时间