关于HTTP协议

1、HTTP 的长连接和短连接

1.长连接(HTTP persistent connection):
持久连接,数据传输完成了,保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据。
2.短连接
浏览器的每次请求都需要与服务器建立一个 TCP 连接,服务器完成请求处理后立即断开 TCP 连接,服务器不跟踪每个客户也不记录过去的请求。

由于大多数网页的流量都比较小,一次 TCP 连接很少能通过 slow-start 区,不利于提高带宽利用率。

2、HTTP/1.1 与 HTTP/1.0 的区别

HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。

1.可扩展性:

HTTP/1.1
①在消息中增加版本号用于兼容性判断
②增加了 OPTIONS 方法,它允许客户端获取一个服务器支持的方法列表
③为了与未来的协议规范兼容,HTTP/1.1 在请求消息中包含了 Upgrade 头域,通过该头域,客户端可以让服务器知道它能够支持的其它备用通信协议,服务器可以据此进行协议切换,使用备用协议与客户端进行通信。

2.缓存:

①在 HTTP/1.0 中,使用 Expire 头域来判断资源的 fresh 或 stale,并使用条件请求来判断资源是否仍有效。
②HTTP/1.1 在 1.0 的基础上加入一些 cache 的新特性,当缓存对象的 Age 超过 Expire 时变为stale 对象,cache 不需要直接抛弃 stale 对象,而是与源服务器进行重新激活。

3 带宽优化:

①HTTP/1.0 中,存在一些浪费带宽的现象。
②HTTP/1.1 中在请求消息中引入了 range 头域,它允许只请求资源的某个部分。在响应消息中 Content-Range 头域声明了返回的这部分对象的偏移值和长度。

4.连接方式:

①HTTP/1.0 规定浏览器与服务器只保持短连接。
②HTTP 1.1 支持长连接和请求的流水线处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。
③HTTP 1.1 还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。

5.消息传递:

①HTTP 消息中可以包含任意长度的实体,通常它们使用 Content-Length 来给出消息结束标志。但是,对于很多动态产生的响应,只能通过缓冲完整的消息来判断消息的大小,但这样做会加大延迟。如果不使用长连接,还可以通过连接关闭的信号来判定一个消息的结束。
②HTTP/1.1 中引入了 Chunkedtransfer-coding 来解决上面这个问题,发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度,最后用一个零长度的块作为消息结束的标志。这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载。
③在 HTTP/1.0 中,有一个 Content-MD5 的头域,要计算这个头域需要发送方缓冲完整个消息后才能进行。而HTTP/1.1 中,采用 chunked 分块传递的消息在最后一个块(零长度)结束之后会再传递一个拖尾(trailer),它包含一个或多个头域,这些头域是发送方在传递完所有块之后再计算出值的。发送方会在消息中包含一个 Trailer 头域告诉接收方这个拖尾的存在。

6.Host 头域:

①在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址。因此,请求消息中的URL并没有传递主机名。

但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个 IP 地址。

HTTP1.1 的请求消息和响应消息都应支持 Host 头域,且请求消息中如果没有 Host 头域会报告一个错误(400 Bad Request)。

7.错误提示:

HTTP/1.0 中只定义了 16 个状态响应码,对错误或警告的提示不够具体。②HTTP/1.1 引入了一个 Warning 头域,增加对错误或警告信息的描述。此外,在 HTTP/1.1 中新增了 24 个状态响应码。

3、http 常见的状态码有哪些?

1XX——信息提示,服务器收到请求,需要请求者继续执行操作;
2XX——成功,操作被成功接收并处理;
3XX——重定位,需要进一步的操作以完成请求;
4XX——客户端错误,请求包含语法错误或无法完成请求;
5XX——服务器错误,服务器在处理请求的过程中发生了错误。 常见状态码:
100:继续,客户端应继请求;
200:请求成功;
301:资源(网页等)被永久转移到其他URL;
302:暂时重定向;
403:禁止访问;
404:请求的资源(网页等)不存在;
500:内部服务器错误。

1. 200 OK

客户端请求成功。

2. 301 Moved Permanently

永久移除,请求的 URL 已移走。

Response 中应该包含一个 Location URL, 说明资源现在所处的位置。

3. 302 found

重定向。

4. 400 Bad Request

客户端请求有语法错误,不能被服务器所理解。

5. 401 Unauthorized

请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用。

6. 403 Forbidden

服务器收到请求,但是拒绝提供服务。

7. 404 Not Found

请求资源不存在。

8. 500 Internal Server Error

服务器发生不可预期的错误。

9. 503 Server Unavailable

服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

4、 HTTP中重定向和请求转发的区别

1.本质区别:

转发是服务器行为,重定向是客户端行为。

2.重定向特点:

两次请求,浏览器地址发生变化,可以访问自己 web 之外的资源,传输的数据会丢失。

3.请求转发特点:

一次强求,浏览器地址不变,访问的是自己本身的 web 资源,传输的数据不会丢失。

5、Http和Https的区别

1.http是超文本传输协议,信息是明文传输。https是具有安全性的SSL加密传输协议。

SSL:安全套接层

2.http和https使用的完全不同的连接方式,用的端口也不一样,前者80,后者443。

https缺点:
加载时间变长,增加功耗等;SSL证书收费,流量成本变高等。

https的加密机制是一种共享密钥加密和公开加密并用的混合加密机制。(对称和非对称加密)

6、https的具体实现,怎么确保安全性?

使用的是对称加密和非对称加密结合的方式进行的,步骤如下:

(1)首先是SSL握手阶段,客户端发送一个携带SSL版本等消息的数据到服务端。
(2)服务端收到信息,根据相应的SSL版本,发送非对称加密的公钥给客户端,自己保留私钥。
(3)客户端拿到公钥后,首先进行公钥的验证,通过CA证书。
(4)验证通过后,客户端就会使用该公钥加密对称加密的密钥,发送数据。
(5)服务端收到数据,首先用私钥解密,获得对称加密的密钥,后续所有数据都有获得的对称密钥进行加密传输。

HTTPS网站服务器和浏览器通信的消息是用对称加密算法进行加密的,为了让不同的浏览器用不同的对称加密算法,因此浏览器需要和服务器进行协商,其协商过程是用非对称加密算法进行的加密。

非对称的私钥存在在网站服务器,公钥送给浏览器,为了防止在传输过程中黑客篡改公钥信息,使用数字证书的方式来传输公钥,浏览器最后对公钥进行解密,核对证书是否被修改,确保其安全性。

8、对称加密与非对称加密

1.对称加密:

指加密和解密使用同一个密钥的方式,这种方式存在的最大的问题就是密钥发送问题,即如何安全的将密钥发给对方。

2.非对称加密

指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息,使用自己的私钥进行解密。

9、http中浏览器一个URL的流程,这个过程中浏览器做了什么,URL(统一资源定位符)包括哪三个部分?

(1)浏览器向DNS服务器查找输入URL对应的IP地址。
(2)DNS服务器返回网站的IP地址。
(3)浏览器根据IP地址与目标web服务器在80端口上建立TCP连接
(4)浏览器获取请求页面的html代码。
(5)浏览器在显示窗口内渲染HTML。
(6)窗口关闭时,浏览器终止与服务器的连接。

10、HTTP协议中的GET和POST方式的区别

1)参数位置:

GET方法参数位置包含在URL,POST方法参数包含在请求主体

2)参数长度:

GET方法的URL长度有限度,POST长度没有限制

3)参数编码:

GET方法参数编码是ASCII码,POST没有限制

4)TCP数据包:

GET方法产生一个TCP数据包,把首部和数据一起发送,POST方法产生两个TCP数据包,先发首部,服务器响应后再发数据

11、HTTP攻击有哪些

1)跨站脚本攻击(XSS)

2)Dos攻击

3)SQL注入攻击

4)OS命令注入攻击

5)HTTP头部攻击

6)目录攻击

7)开放重定向攻击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值