TCP协议在http1.1版本中有两个重要的特点, 持久化和管线化。
在1.0版本中, 在发送请求时会断开TCP协议,随着互联网的发展,网页需要请求的越来越来,比如一个页面需要请求多张图片, 如果每次请求都要断开TCP协议,无疑会给服务器造成性能上面的影响,同时也影响了数据的响应时间。
持久化就不必每次请求时断开TCP协议, 可以等待所有请求都完成后再断开协议。
在http1.1的版本中http默认就是持久化连接,也称为keep-alive
管线化就是基于持久化之上的,以往的请求是需要等待上一个请求响应完成后,才能发送下一个请求,这样极大的影响了数据的返回时间, 管线化就是同时可以发送多个请求。不需要等待上一个请求响应完成。
Cookie 状态管理。
服务器端发送响应的时候在首部的报文中的设置set-cookie,告知客户端保存cookie,并且下次发送请求自动带上cookie.
cookie 是用于状态管理, 可以在服务器设置,然后浏览器每次发送请求时,会自动带上cookie。
HTTP报文
请求报文和响应报文都是由两个部分组成
报文首部 报文首部一般是对资源的描述 例如请求的资源类型等等
报文主体 : 需要传输的数据
报文首部又可以称为请求头部 或者响应头部
状态码
200 表示请求正常被处理了
204 代表服务器已经处理了请求,但是响应的报文中不返回响应体,也不允许返回响应体。
206 是请求部分资源
301 永久重定向
302 临时重定向
303 该资源存在另外一个uri路径,应该使用get方式获取资源
304 未满足条件,使用缓存资源
4XX 客户端问题
400 请求报文的语法错误
401 认证信息未通过
403 请求被服务器拒绝了,可以给出理由也可以不给出
404 在服务器上找不到资源
500 服务器出现问题, 例如bug
503 服务器繁忙
与http协议通信的web服务器
在web服务器中有一个 通信数据转发的应用程序:主要依靠三种方式完成: 代理 网关 隧道
代理就是把客户端的请求发送至服务器,把服务器的响应发送给客户端。是客户端与服务器的一种转发程序.
1.代理可以限制某个请求,
2.代理可以实现缓存, 缓存可以是在代理服务器上缓存, 浏览器也可以实现缓存,
网关与代理的区别在于
网关可以将http协议转换成其他协议, 以及在通信的过程中进行加密处理,更安全些
隧道与网关的区别:
隧道不会更改http协议的内容, 只会在客户端与服务器端建立安全通信路线,然后原封不动的将http协议发送过去。