【教程】HTTP协议快速学习

备注

2021/4/1 星期四
以前已经学过一点简单的http协议了,但是一知半解,在这个网络时代http协议太重要了,准备再重新学习一下。

一、HTTP协议概述

http(Hypertext Transfoer Protocol)协议,叫做超文本传输协议,是tcp/ip协议中的应用层协议, 是一种无状态的协议(每次请求都是独立的与之前的请求没有任何相关性),默认端口为80。

  • 一个完整的网页访问过程:浏览器根据域名解析IP地址->浏览器与WEB服务器建立一个TCP连接->浏览器给WEB服务器发送一个HTTP请求->服务器端响应HTTP请求,浏览器得到HTML代码->浏览器解析HTML代码,并请求HTML代码中的资源->关闭TCP连接,浏览器对页面进行渲染呈现给用户

二、http报文格式

用于http交互的信息叫做http报文,请求端发出的http报文叫做请求报文,响应端答复的叫做响应报文。
一个http报文由报文首部、空行、报文主体三部分组成

1.请求报文(Request Message)

请求报文的首部由请求行和首部字段组成
request
例如
message

2.响应报文(Response Message)

响应报文的首部由状态行和首部字段组成
response
例如
message

三、 协议版本

目前常见的http协议一共有四个版本

  • http/0.9
    最初版本,功能简陋,仅支持GET方法,仅能请求访问HTML格式的资源。
  • http/1.0
    在0.9的版本上做了修改,新增POST和HEAD方法,同时也开始支持更多种数据格式新增状态码、多字符集支持、多部分发送、权限、cache访问、内容编码等。
  • http/1.1
    目前被广泛使用的版本,引入了持久连接、管道机制,新增六种请求方式
  • http/2.0
    最新提出的版本,主要为解决1.1版本效率较低的问题,目前还没有被广泛使用

四、请求行(Request Line)

http请求报文的第一行称为请求行,请求行由请求方法、URL、协议版本和换行符组成

1. 请求方法

在http1.0中只定义了三种方法GET、POST和HEAD,http1.1中 新增了六种

方法详情
GET用于获取资源,请求指定的页面信息,并返回实体主体。
POST用于传输实体主题,向指定资源提交数据进行处理请求,如提交表单或者上传文件
HEAD与GET类似,不过返回具体的内容,只用于获取报头确认URL的有效性及资源更新的日期时间
OPTIONS用来查询请求URL指定的资源支持的方法。
PUT类似FTP协议的文件上传,将请求报文主体中包含的文件内容保存到请求URL指定的位置
DELETE与PUT相反,用来将指定URL位置的文件删除
PATCH对某个资源做部分修改
TRACE追踪一个资源请求中间所经过的代理
CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

2. URL

URL(Uniform Resource Locator)叫统一资源定位器,是网络每一信息资源都有的在网上唯一的地址。

五、状态行(Statuse Line)

http响应报文的第一行称为状态和行,状态行由协议版本、状态码、状态信息和换行符组成

1.状态码类别

代码类别详情
1XXInformational(信息性状态码)请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXSever Error(服务器错误状态码)服务器处理请求出错

2.常见状态码

状态码状态信息详情
200OK请求被正常处理了
204No Content请求成功处理,但响应报文不含实体主体
206Partial Content响应客户端的范围响应,并成功返回指定范围的实体内容
301Moved Permanently永久重定向,资源已被分配新的URI,希望以后使用新的URI访问
302Found临时重定向,希望本次使用新的URI访问
303See Other与302Found相似,但要求客户端使用GET方式访问资源
304NotModified请求不满足条件,返回结果不包含主体,这一代码实际也和重定向没有关系
307Temporary Redirect临时重定向,与302Found相似
400BadRequest报文中有语法错误,需要修改后重发
401Unauthorized请求需要认证或认证失败
403Forbidden请求的资源被拒绝,服务器没必要做出解释,但也可以在主体中给出解释
404Not Found没有找到请求的资源,也可以当作403Forbidden使用
500Internal Server Error服务器发生错误
503Service Unavailable服务器超载或停机维护

六、首部字段总结

首部字段是http报文中的重要内容,首部字段可以提供报文主体大小、所使用的语言、认证信息等内容。首部字段分为四种。

1.通用首部字段(General Header Fields)

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

2.请求首部字段(Request Header Fields)

字段名说明
Accept用户代理可处理的媒体类型
Accept-Charset优先的字符集
Accept-Encoding优先的内容编码
Accept-Language优先的语言(自然语言)
AuthorizationWeb认证信息
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客户端程序的信息

3.响应首部字段(Response Header Fields)

字段名说明
Accept-Ranges是否接受字节范围请求
Age推算资源创建经过时间
ETag资源的匹配信息
Location令客户端重定向至指定URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After对再次发起请求的时机要求
ServerHTTP服务器的安装信息
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息

4.实体首部字段(Entity Header Fields)

字段名说明
Allow资源可支持的HTTP方法
Content-Encoding实体主体适用的编码方式
Content-Language实体主体的自然语言
Content-Length实体主体的大小(单位:字节)
Content-Location替代对应资源的URI
Content-MD5实体主体的报文摘要
Content-Range实体主体的位置范围
Content-Type实体主体的媒体类型
Expires实体主体过期的日期时间
Last-Modified资源的最后修改日期时间
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值