HTTP协议
Contents
源文 HTTP协议
http协议是超文本传输协议。它是基于TCP协议的应用层传输协议,即客户端和服务端进行数据传输的一种规则。该协议本身HTTP 是一种无状态的协议。
HTTP协议
简述http状态码和对应的信息
- 1XX:接收的信息正在处理
- 2XX:请求成功,请求被成功处理 200 OK
- 3XX:重定向
- 4XX:客户端错误
- 5XX:服务端错误
常见错误码:
-
200 (成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
-
201 (已创建) 请求成功并且服务器创建了新的资源。
-
202 (已接受) 服务器已接受请求,但尚未处理。
-
203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
-
204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
-
205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
-
206 (部分内容) 服务器成功处理了部分 GET 请求。
-
301 永久重定向
-
302 临时重定向
-
304 资源没修改,用之前缓存就行
-
400 客户端请求的报文有错误
-
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
-
403 (禁止) 服务器拒绝请求。
-
404 表示请求的资源在服务器上不存在或未找到
-
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
-
501 (尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
-
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
-
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
-
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
-
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
转发和重定向的区别
转发是服务器行为。服务器直接向目标地址访问 URL,将相应内容读取之后发给浏览器,用户浏览器地址栏 URL不变,转发页面和转发到的页面可以共享 request 里面的数据。
重定向是利用服务器返回的状态码来实现的,如果服务器返回 301 或者 302,浏览器收到新的消息后自动跳转到新的网址重新请求资源。用户的地址栏 URL 会发生改变,而且不能共享数据。
http中常见的header字段有哪些?
请求头:
Accept: text/html,image/*( 浏览器可以接收的类型)
Accept-Charset: ISO-8859-1(浏览器可以接收的编码类型)
Accept-Encoding: gzip,compress(浏览器可以接收压缩编码类型)
Accept-Language: en-us,zh-cn(浏览器可以接收的语言和国家类型)
Host: www.it315.org:80(浏览器请求的主机和端口)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(某个页面缓存时间)
Referer: http://www.it315.org/index. jsp(请求来自于哪个页面)
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)(浏览器相关信息)
Cookie:(浏览器暂存服务器发送的信息)
Connection: close(1.0)/Keep-Alive(1.1)(HTTP请求的版本的特点)
Date: Tue, 11 Jul 2000 18:23:51 GMT(请求网站的时间)
响应头:
Location: http://www.wekenw.com (控制浏览器显示哪个页面)
Server:apache tomcat(服务器的类型)
Content-Encoding: gzip(服务器发送的压缩编码方式)
Content-Length: 80(服务器发送显示的字节码长度)
Content-Language: zh-cn(服务器发送内容的语言和国家名)
Content-Type: image/jpeg; charset=UTF-8(服务器发送内容的类型和编码类型)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务器最后一次修改的时间)
Refresh: 1;url=http://www.it315.org(控制浏览器1秒钟后转发URL所指向的页面)
Content-Disposition: attachment; filename=aaa.jpg(服务器控制浏览器发下载方式打开文件)
Transfer-Encoding: chunked(服务器分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务器发送Cookie相关的信息)
Expires: -1(服务器控制浏览器不要缓存网页,默认是缓存)
Cache-Control: no-cache(服务器控制浏览器不要缓存网页)
Pragma: no-cache(服务器控制浏览器不要缓存网页)
Connection: close/Keep-Alive(HTTP请求的版本的特点)
Date: Tue, 11 Jul 2000 18:23:51 GMT(响应网站的时间)
简述http1.0
规定了请求头和请求尾,响应头和响应尾(get post)
每一个请求都是一个单独的连接,做不到连接的复用
简述http1.1的改进
HTTP1.1默认开启长连接,在一个TCP连接上可以传送多个HTTP请求和响应。使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
服务端无法主动push
简述HTTP短连接与长连接区别
HTTP中的长连接短连接指HTTP底层TCP的连接。
短连接:客户端与服务器进行一次HTTP连接操作,就进行一次TCP连接,连接结束TCP关闭连接。
长连接:如果HTTP头部带有参数keep-alive,即开启长连接网页完成打开后,底层用于传输数据的TCP连接不会直接关闭,会根据服务器设置的保持时间保持连接,保持时间过后连接关闭。
简述http2.0的改进
提出多路复用。多路复用前,文件是串行传输的,请求a文件,b文件只能等待,并且连接数过多。引入多路复用,a文件b文件可以同时传输。
引入了二进制数据帧。其中帧对数据进行顺序标识,有了序列id,服务器就可以进行并行传输数据。
http与https的区别
http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份。https具有安全性的ssl加密传输协议,加密采用对称加密, https协议需要到ca申请证书,一般免费证书很少,需要交费。
简述TLS/SSL, HTTP, HTTPS的关系
SSL全称为Secure Sockets Layer即安全套接层,其继任为TLSTransport Layer Security传输层安全协议,均用于在传输层为数据通讯提供安全支持。
可以将HTTPS协议简单理解为HTTP协议+TLS/SSL
https 的连接过程
浏览器将支持的加密算法信息发给服务器
服务器选择一套浏览器支持的加密算法,以证书的形式回发给浏览器
客户端(SSL/TLS)解析证书验证证书合法性,生成对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,用服务器的公钥对客户端密钥进行非对称加密。
客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端对称密钥发送给服务器
服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
服务器将加密后的密文发送给客户端
客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成
Get与Post区别
- Get:指定资源请求数据,刷新无害,Get请求的数据会附加到URL中,传输数据的大小受到url的限制。
- Post:向指定资源提交要被处理的数据。刷新会使数据会被重复提交。post在发送数据前会先将请求头发送给服务器进行确认,然后才真正发送数据。
- GET:请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。
- POST:的安全性要比 GET 的安全性高,因为 GET 请求提交的数据将明文出现在 URL 上,而 POST 请求参数则被包装到请求体中,相对更安全。
cookie和session区别?
- 实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID;
- 大小限制:Cookie有大小限制并且浏览器对每个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;
- 安全性:Cookie存在安全隐患,通过拦截或本地文件找得到cookie后可以进行攻击,而Session由于保存在服务器端,相对更加安全;
- 服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。
- 存放位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。
计算机网络常用性能指标有:
- 速率:连接在计算机网络上的主机在数字信道上传送数据的速率。
- 带宽:网络通信线路传送数据的能力。
- 吞吐量:单位时间内通过网络的数据量。
- 时延:数据从网络一端传到另一端所需的时间。
- 时延带宽积:传播时延带宽。
- 往返时间RTT:数据开始到结束所用时间。
- 利用率信道:数据通过信道时间。
网络安全
什么是 XSS 攻击?
XSS 即(Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行。
XSS的原理是:
恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。
XSS攻击最主要有如下分类:反射型、存储型、及 DOM-based型。反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。
什么是 CSRF?
CSRF(Cross Site Request Forgery,跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为『One Click Attack』或者 『Session Riding』,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。
XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
对称加密与非对称加密
- 对称密钥加密,又称私钥加密,即信息的发送方和接收方用同一个密钥去加密和解密数据。
- 最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难且较为不安全。
- 进行一对一的双向保密通信。
- 常见的对称加密算法:DES,AES等。
- 非对称密钥加密,又称公钥加密,它需要使用一对密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。
-
从功能角度而言非对称加密比对称加密功能强大且较为安全,但加密和解密速度却比对称密钥加密慢得多。
-
多对一的单向保密通信。
-
最常用的非对称加密算法:RSA
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
数字签名
数字签名必须保证实现以下三点功能:
- 报文鉴别。即接受者能够核实发送者对报文的签名。
- 报文的完整性。即接受者确信所收到的数据和发送者发送的完全一样而没有被篡改过。
- 不可否认。即发送者事后不能抵赖对报文的签名。
数字签名过程:A用私钥SKA对明文X进行D运算签名成为密文DSKA,B用A的公钥PKA对密文DSKA进行E运算还原出明文X。
那么这个过程是如何满足报文鉴别、报文的完整性、不可否认三个特点的呢?
- 只有A拥有私钥SKA,只有他能生成密文DSKA,所以只要B用A的公钥能成功还原出可读的明文X就说明密文DSKA一定是A发来的。这里体现出报文的鉴别的特点。
- 同理如果中途密文DSKA被篡改,那么篡改者没有A的私钥SKA来对篡改过后的报文进行加密,那么B对被篡改过的报文进行解密时就会得到不可读的明文,就知道收到的报文被修改过了。这里体现了报文的完整性的特点。
- 若A抵赖曾发过该报文给B,B可把X和密文DSKA出示给进行公证的第三者,第三者很容易用PKA去证实A确实发送了X给B。这里体现了不可否认的特点。