今日心情美丽,复习下Http协议相关内容.
HTTP(超文本传输协议,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。是用于从WWW服务器传输超文本到本地浏览器的传输协议,默认使用80端口
1.1 组成
- Http请求
Http请求由以下三部分构成,即:
1.请求行
2.请求头
(空行)
3.请求数据

- Http响应
Http响应由以下三部分构成,即:
1.状态行(响应行)
2.消息报头
(空行)
3.响应正文

1.2 常见状态码
200:请求被正常处理
204:请求被受理但没有资源可以返回
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301:永久性重定向
302:临时重定向
303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304:该请求获取的响应和上次请求获取的响应一样(Not Modified)
307:临时重定向,与302类似,只是强制要求使用POST方法
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙
1.3 常见请求方式
GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
OPTIONS:查询相应URI支持的HTTP方法。
TIP:Get请求和Post请求的区别?
区别一:
get重点在从服务器上获取资源,post重点在向服务器发送数据;
区别二:
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?“连接,多个请求数据间用”&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别三:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
区别四:
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
区别五:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
1.3 请求过程
1.客户端打开与服务器端的TCP连接
2.客户端发送请求行
3.客户端发送请求头(若是Post请求,则接着发送请求体)
4.服务器端响应状态码
5.服务器端响应状态行和状态头
6.服务器端响应实际所需数据
7.关闭TCP连接(若为Http1.1的KeepAlive,则不关闭连接)

1.4 版本区别
Http 1.0使用的是每次请求都开启TCP连接,在请求结束后立即关闭TCP连接,连接无法复用;而Http 1.1使用的是长连接形式,在一个TCP连接上可以保持多个Http请求和响应,达到了连接的复用性,如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close;Http 2.0相比Http 1.0出现了多路复用,二进制分帧,首部压缩,服务端推送;
1.5 常见Header
Date:创建报文时间
Connection:连接的管理
Cache-Control:缓存的控制
Transfer-Encoding:报文主体的传输编码方式
Host:请求资源所在服务器
Accept:可处理的媒体类型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的内容编码
Accept-Language:可接受的自然语言
Accept-Ranges:可接受的字节范围
Location:令客户端重新定向到的URI
Server:HTTP服务器的安装信息
Allow:资源可支持的HTTP方法
Content-Type:实体主类的类型
Content-Encoding:实体主体适用的编码方式
Content-Language:实体主体的自然语言
Content-Length:实体主体的的字节数
Content-Range:实体主体的位置范围,一般用于发出部分请求时使用
1.6 Htttps原理
Https是Http协议+SSL或TLS的简称,并不是一个新的协议;由于Http本身是明文交换数据的,并且没有做安全限制,所以SSL或TLS的作用就是对请求和响应做做了一系列安全处理
-
Http + SSL 请求流程图

-
Http + SSL 请求校验过程
-
客户端发起HTTPS请求,连接到server的443端口
-
服务端证书配置
证书指的是一对公钥和私钥。公钥指的是服务器颁发给其他客户端的证书,而私钥只有服务器才有;当服务器校验客户端的公钥和自身的私钥不匹配,则说明这是一个不安全的请求;其实公钥就是一把把锁,而私钥就是唯一的一把钥匙,当锁能和钥匙匹配,则说明这个锁是正确的锁,这样思考可以很快地理解公钥和私钥的作用 -
传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等 -
客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容 -
传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了 -
服务段解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。 -
传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原 -
客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容
今天就总结到这吧,之后有什么内容需要整理总结的再继续~下班下班(゜-゜)つロ (干杯)
本文深入讲解HTTP协议的基础知识,包括其组成、常见状态码、请求方式、请求过程、版本区别及常见Header。同时,对比GET与POST请求的区别,介绍HTTP1.0与HTTP1.1的连接管理差异,以及HTTPS的安全机制。
1805

被折叠的 条评论
为什么被折叠?



