http请求报文&http响应报文
(1)http请求报文
请求行:get/post请求方式,url中的path地址,http版本
请求头:关键字/值组成,每行一对
空行
请求数据:body
(2)http响应报文
状态码:描述了响应的状态,可以用来检查是否成功完成了请求
响应头:包含了很多响应的信息
空行
响应体:包含响应的内容
http请求方式
八种:OPTIONS/HEAD/GET/POST/PUT/DELETE/TRACE/CONNECT
GET和POST的区别:
(1)GET:
• 采用路经传参
• 参数在传递过程中可见,安全性差
• 路经传参可以容纳的数据量有限,只能传递少量数据
• 是幂等性的
(2)POST:
• 采用实体内容传参
• 参数在传递的过程中不可见,安全性好
• 实体内容专门用来传递数据,大小没有限制
• 不是幂等性的
》从定义上看,HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用
http常见状态码
2xx:表示成功处理了请求的状态码
3xx表示要完成请求,需要进一步操作
302:重定向
4xx:表示请求出错
404:找不到网页
405:禁用请求中指定的方法
5xx:表示服务器在尝试处理请求的时候内部发生错误
500:服务器遇到错误,无法完成请求
http协议是无状态协议
http是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系
http是一个无状态的面向连接的协议,无状态不代表http不能保证TCP连接,更不能保证http使用是UDP连接http的长连接和短连接
(1)短链接:
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务端每进行一次HTTP连接操作,就建立一次连接,任务结束就中断连接。当客户端浏览某个html或者其他资源时,每遇到一个资源就建立一个http会话
(2)长连接:
从HTTP/1.1开始,默认使用长连接,用以保持连接特性,使用长连接的http协议,会在响应头加入一行:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务端之间用于传输http数据的tcp连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件上设定这个时间。实现长连接需要客户端和服务端都支持长连接
》http协议的长连接和短连接,实质上是tcp协议的长连接和短连接
Http1.1和http1.0的区别:
(1)http1.0需要keep-alive参数来告知服务器要建立一个长连接,而http1.1默认使用长连接
(2)http1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接收到100,才开始把请求body发送到服务器。这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽
(3)http1.0是没有host头的,http1.1才支持这个参数
什么是https
定义:https协议是由ssl+http协议构建的可进行加密传输、身份认证的
网络协议,要比http协议安全
https和http的区别:
(1)https协议需要到CA申请证书,一般免费证书少,需要交费
(2)http协议是超文本传输协议,信息是明文传输,https则是具有安
全性的ssl加密传输协议
(3)http和https使用的是完全不同的连接方式,端口使用也不一样,
http使用80端口,https使用443端口
(4)http连接简单,是无状态的;https协议是由ssl+http协议构建的
可进行加密传输身份认证的网络协议,比http协议安全
(5)http是HTTP协议运行在TCP之上,所有传输的内容都是明文,客
户端和服务端都无法验证对方的身份
(6)https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上,此外所
有的传输内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器的证书进行了非对称加密。
https的通信过程:
![https通信过程](https://img-blog.csdnimg.cn/20181120212223364.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzM2MDQy,size_16,color_FFFFFF,t_70)
(1)A与B通过TCP建立连接,初始化SSL层。
(2)进行SSL握手,A发送https请求,传送客户端SSL协议版本号、支持的加密算法、随机数等
(3)服务器B把CA证书(包含B的公钥),把自己支持的加密算法、随机数等回传给A
(4)A接收到CA证书,验证证书有效性
(5)校验通过,客户端随机产生一个字符串作为与B通信的对称密钥,通过CA证书解出服务器B的公钥,对其加密,发送给服务器
(6)B用私钥解开信息,得到随机的字符串(对称密钥),利用这个密钥作为之后的通信密钥
(7)客户端想服务器发出信息,指明后面的数据使用该对称密钥进行加密,同时通知服务器SSL握手结束
(8)服务器接收到信息,使用对称密钥通信,通知握手接收
(9)SSL握手结束,使用对称密钥加密数据