Http

103 阅读3分钟
Http1.1
1,HTTP 协议是基于应用层的协议,并且在传输层使用的 TCP 的可靠性通信协议。
2,MIME Type:是描述消息内容类型的因特网标准,常见的几种类型
    文本文件:text/html,text/plain,text/css,application/xhtml+xml,application/xml
    图片文件:image/jpeg,image/gif,image/png.
    视频文件:video/mpeg,video/quicktime
    通过两种方式来设置文件的渲染类型,第一种是 Accept,第二种是 Content-Type
    Accept: 表示客户端希望接受的数据类型,即告诉服务器我需要什么媒体类型的数据,此时服务器应该根据 Accept 请求头生产指定媒体类型的数据
    Content-Type: 表 示 发 送 端 发 送 的 实 体 数 据 类 型 , 比 如 我 们 应 该 写 过 类 似 的 :
    resposne.setContentType(“application/json;charset=utf-8”)的代码,表示服务端返回的数据格式是 json。
    如果 Accept 和 Content-Type 不一致,假如说 Accept 要接收的类型是 image/gif,但是服务端返回的数据是 text/html,那么浏览器将会无法解析。
3,每次请求都要建立连接吗
    最早的 http 协议中,每进行一次 http 通信,就需要做一次 tcp 的连接。而一次连接需要进行3 次握手,这种通信方式会增加通信量的开销
    HTTP/1.1 中改用了持久连接,就是在一次连接建立之后,只要客户端或者服务端没有明确提出断开连接,那么这个 tcp 连接会一直保持连接状态
    持久连接的一个最大的好处是:大大减少了连接的建立以及关闭时延。
    HTTP1.1 中有一个 Transport 段。会携带一个 Connection:Keep-Alive,表示希望将此条连接作为持久连接。
    HTTP/1.1 持久连接在默认情况下是激活的,除非特别指明,否则 HTTP/1.1 假定所有的连接都是持久的,要在事务处理结束之后将连接关闭,
    	HTTP/1.1 应用程序必须向报文中显示地添加一个 Connection:close 首部。
    管道化连接: http/1.1 允许在持久连接上使用请求管道。以前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。这样就能够做到同时并行发送多个请求,而不需要一个接一个地等待响应了。
4,Http 无状态协议
    无状态就是HTTP 协议本身不会对请求和响应之间的通信状态做保存。
    Http 协议中引入了 cookie 技术,用来解决 http 协议无状态的问题。
    服务端是基于 tomcat 这类的 jsp/servlet 容器中,会提供session 这样的机制来保存服务端的对象状态。
        如果存在 Session 的话则直接返回,如果不存在的话,则创建新的 Session,并且把 sessionId 添加到 Cookie 中
        (心得:其实最开始是由服务器session开始的,只有服务器把sessionId设置到Cookie里了,客户端才能开始携带cookie)