目录
1.HTTP协议
1)GET和POST请求的区别
POST
和GET
是HTTP请求
的两种方法,其区别如下:
-
应用场景
:GET请求是一个幂等的请求
(HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用),一般情况下GET请求用于对服务器资源不会产生影响的场景,比如说请求一个网页的资源。而POST不是一个幂等请求,一般用于对服务器资源会产生影响的情景,比如注册用户这一类的操作。 -
是否缓存
:因为两者的应用场景不同,浏览器一般对GET请求缓存,但很少对POST请求缓存。 -
发送的报文格式
:GET请求的报文中实体部分为空,POST请求的报文中实体部分一般为向服务器发送的数据。 -
安全性
: GET请求可以将请求的参数放入到url中向服务器发送,这样的做法相对于POST请求来说是不太安全的,因为请求的url会被保留在历史记录中。 -
请求长度
:浏览器由于对url长度的限制,所以会影响get请求发送数据时的长度。这个限制是浏览器的,并不是RFC规定的。 -
参数类型
:POST请求的参数有更多的数据类型。
2)POST和PUT请求的区别
-
PUT请求
是向服务器端发送数据,从而修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT请求,其结果并没有不同。(可以理解为更新数据) -
POST请求
是向服务器端发送数据,该请求会改变数据的种类等资源,它会创建新的内容。(可以理解为提交数据)
3)常见的HTTP请求头和响应头
(1)HTTP Request Header常见的请求头:
-
Accept
:浏览器能够处理的内容类型 -
Accept-Charset
:浏览器能够显示的字符集 -
Accept-Encoding
:浏览器能够处理的压缩编码 -
Accept-Language
:浏览器当前设置的语言 -
Connection
:浏览器与服务器之间理解的类型 -
Cookie
:当前页面设置的任何Cookie -
Host
:发送请求的页面所在的域 -
Referer
:发出请求的页面的url -
User-Agent
: 浏览器的用户代理字符串
(2)HTTP Response Header常见的响应头:
-
Date
:表示消息发送的时间,时间的描述格式由rfc822定义 -
Server
:服务器名称 -
Connection
:浏览器与服务器之间连接的类型 -
Cache-Control
:控制HTTP缓存 -
content-type
:表示后面的文档属于什么MIME类型
常见的Conent-Type
属性值有以下四种:
-
application/x-www-form-urlencoded
:浏览器的原生form表单
,如果不设置enctype属性
,那么最终会以application/x-www-form-urlencoded
方式提交数据。这种方式提交数据放在body里面,数据按照key1=val1&key2=val2
的方式进行编码,key和val都进行了URL转码
。 -
multipart/form-data
:该种方式也是一种常见的POST提交方式,通常表单上传文件时,使用这种方式。 -
application/json
:服务器消息主体时序列化后的JSON字符串。 -
text/xml
:该种方式主要用于提交xml格式的数据。
4)常见的HTTP请求方式
-
GET
:向服务器获取数据 -
POST
:将实体提交到指定的资源,通常会造成服务器资源的修改 -
PUT
:上传文件,更新数据 -
DELETE
: 删除服务器上的对象 -
HEAD
:获取报文首部,与GET相比,不返回报文主体部分 -
OPTIONS
:询问支持的请求方法,用来跨域请求 -
CONNECT
:要求在代理服务器通信时建立隧道,使用隧道进行TCP通信 -
TRACE
:回显服务器收到的请求,主要用于测试或诊断
5)OPTIONS请求方法及使用场景
通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。该请求方法的响应不能缓存。
OPTIONS请求方法的主要用途
有两个:
- 获取服务器支持的使用HTTP请求方法
- 用来检查访问权限。例如:在进行CORS跨域资源共享时,对于复杂请求,就是使用OPTIONS方法发送嗅探请求,以判断是否有对指定资源的访问权限。
6)HTTP 1.0 (1996年)和 HTTP 1.1(1999年)之间有哪些区别
内容太多,暂时不想写
7)HTTP 1.1 (1999年)和 HTTP 2.0(2015年)之间有哪些区别
内容太多,暂时不想写
8)HTTP和HTTPS协议的区别
- HTTPS协议需要CA证书(Certification Authority),费用较高;而HTTP协议不需要;
- HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议;
- 端口号不同,HTTP协议端口是80,HTTPS协议端口是443;
- HTTP协议连接简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输,身份认证的网络协议,比HTTP更加安全。
9)HTTP请求报文是什么样的?
10)HTTP响应报文是什么样的?
11)HTTP协议的优点和缺点
HTTP是超文本传输协议,它定义了客户端和服务器之间交换报文的格式和方式,默认使用80端口。它使用TCP作为传输层协议,保证了数据传输的可靠性。
HTTP协议具有以下优点:
- 支持客户端/服务器模式
- 简单快速:客户向服务器请求服务时,只需传达请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 无连接:无连接就是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议,这里的状态是指通信过程的上下文信息。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能会导致每次连接传送的数据量增大。另一方面,在服务器不需要先签信息时它的应答就比较快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
HTTP协议具有以下缺点:
- 无状态:HTTP协议是一个无状态协议,HTTP服务器不会保存关于客户的任何信息
- 明文传输:协议中的报文使用的是文字的形式,这就直接暴露给外界,不安全。
- 不安全
(1)通信使用明文(不加密),内容可能会被窃听
(2)不验证通信方的身份,因此有可能遭遇伪装
(3)无法证明报文的完整性,所有有可能已遭篡改
11)URL有哪些组成成分
以下面的URL为例:
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618page=1#name
-
协议部分
:该url的协议部分为http:
,这代表网页使用的是HTTP
协议。在http:
后面的的//
为分隔符; -
域名部分
:该url的协议部分为www.aspxfans.com
。一个url
中,也可以使用ip地址
作为域名使用 -
虚拟目录部分
:从域名后的第一个/
开始到最后一个/
为止,是虚拟目录部分。虚拟目录也不是一个url必须的部分。本例中的虚拟目录是/news/
; -
文件名部分
:从域名后的第一个/
开始到?
为止,是文件部分,如果没有?
,则是从域名后到最后一个/
开始到#
为止,是文件部分,如果没有?
和#
,那么域名后到最后一个/
开始到结束,都是文件部分。本例中的文件名是index.asp
,文件名部分也不是一个url必须的部分,如果省略该部分,则使用默认的文件名 -
锚部分
:从#
开始到最后,都是锚部分。本例中的锚部分是name
。锚部分也不是一个url
必须的部分 - 参数部分:从
?
开始到#
为止之间的部分为参数部分,又称搜索部分,查询部分。本例中的参数部分为boardID=5&ID=24618&page=1
。参数可以允许有多个参数,参数与参数之间用&
作为分隔符。
2.HTTPS协议
1)什么是HTTPS协议?
超文本传输安全协议(Hypertext Transfer Protocol Secure, HTTPS
)是一种通过计算机网络进行安全通信的传输协议。HTTPS
进由HTTP
进行通信,利用SSL/TLS
(SSL/TLS位于应用层和传输层之间
)来加密数据包。HTTPS的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。
通常,HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简而言之,所谓的HTTPS,其实就是身披SSL协议这层外壳的HTTP。
在采用SSL后,HTTP就拥有了HTTPS协议,其他运行在应用层的SMTP和Telnet等协议使用。可以说SSL是当今世界上应用最为广泛的网络安全技术。
2)TLS/SSL的工作原理
TLS/SSL
全称安全传输层协议(Transport Layer Security)
,是介于TCP和HTTP
之间的一层安全协议,不影响原有的TCP协议和HTTP协议,所以使用HTTPS基本不需要对HTTP页面进行太多的改造。
TLS/SSL的功能实现主要依赖三类基本算法:非对称加密
,对称加密
,散列函数hash
- 基于非对称加密
验证身份
和密钥协商
- 对称加密算法采用
协商的密钥
对数据加密 - 基于散列函数验证
信息的完整性
3)数字证书
由于只使用非对称加密的方式,无法证明公开密钥本身就是货真价实的公开密钥(可能遭遇中间人攻击),为了解决这个问题,可以使用由数字认证机构(CA,Certificate Authority)
和其相关机关颁发的公开密钥证书。
4)HTTPS通信(握手)过程
- 客户端向服务器端发送请求,请求中包含使用的协议版本号,生成的一个随机数,以及客户端支持的加密方法。
- 服务器端接收到请求后,确认双方使用的加密方法,并给出服务器的证书,以及一个服务器生成的随机数。
- 客户端去人服务器证书有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,然后发给服务器。并且还会提供一个前面所有内容的hash的值,用来提供服务器检验。
- 服务器使用自己的密钥,来解密客户端发送过来的随机数。并提供前面所有内容的hash值来供客户端检验。
- 客户端和服务器端根据约定的加密方式使用前面的三个随机数,生成对话密钥,以后的对话过程都是用这个密钥来加密信息。
5)HTTPS的特点
HTTPS的优点如下:
- 使用HTTPS协议可以认证用户和服务器,确保数据发送到正确的客户端和服务器。
- 使用HTTPS协议可以进行加密传输,身份认证,通信更加安全,防止数据在传输过程中被窃取,修改,确保数据安全性。
- HTTPS是现行机构下最安全的解决方案,虽然不是绝对的安全,但是大幅增加了中间人攻击的成本
HTTPS的缺点如下:
- HTTPS需要做服务器和客户端双方的加密解密处理,耗费更多服务器资源,过程复杂;
- HTTPS协议握手阶段比较费时,增加页面的加载时间
- SSL证书是收费的,功能越强大的证书费用越高
- HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本