个人总结,请勿转载。
URL
HTTP
- 超文本传输协议。是一个基于TCP/IP通信协议来传递信息
HTTP原理
- HTTP协议工作与客户端-服务端架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。根据接收到的请求后,向客户端发送响应消息。HTTP默认端口是80,但是也可以进行更改。
HTTP注意事项
- HTTP是无连接的,含义是限制每次连接只处理一个请求。服务端处理完客户的请求之后,并且受到回复之后就断开连接。
- HTTP是媒体独立的。只要客户端和服务端知道如何处理数据内容,任何类型的数据都可以通过HTTP发送
- HTTP是无状态的,HTTP协议是无状态协议,指的是对事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的数据就必须重传。
请求结构
请求行,请求头部,空行,请求数据四个部分
Get和post的区别
- Get把请求的数据放在url上,即HTTP的请求行中、格式是以?分割URL和传输数据,参数之间以&相连。数据如果是英文或者数字远洋发送,如果是空格或者中文其他字符都转换
- POST是把数据放在HTTP的请求数据部分
- GET提交的数据是2K,原则上url长度无限制,那么提交的数据也是没有限制的,但是限制实际上取决与浏览器,大多数浏览器通常都会限制url长度在2k个字节。浏览器也最多处理64k大小的url
POST理论上没有限制,实际上IIS4中最大量为80K,IIS5最多为100KB - GET产生的是一个TCP数据包。
- POST产生的是两个TCP数据包,第一个是发送header,浏览器再发送Data(并不是所有的浏览器都会发送两次,比如firefox值发送一次)
- GET再浏览器回退时是无害的,POST会再次提交请求
- GET产生的URL地址可以被bookmark而POST不可以
- GET请求参数会被完整保留再浏览器中,但是POSt中的参数不会白保留。
- 对于参数类型。GET值接受ASCII字符,但是POST是没有限制的。
- POST比 GET安全,因为GET参数直接暴露再URL上。
常用请求头以及含义
- Content-Type:数据类型(test/html)
- Content-Length:Body的长度
- Host:客户端告知服务器,所请求的资源再那个主机的那个端口上
- User-Ahent:声明用户的操作系统和浏览器版本信息
- Referer:当前页面是从那个页面跳转过来的
- Location:搭配3XX状态码使用,告知客户端接下来要去哪里访问
- Cookie:用于再客户端存储少量信息,通常用于实现会话的功能。
响应
首行+响应头+空行+响应的内容
首行包括了[版本号]+[状态码]+[状态码解释]
HTTP状态码
- 1XX:接收的请求正在处理
- 2XX:请求正常处理完毕
- 3XX:需要进行附加的操作以完成请求
- 4XX:服务无法处理请求(客户端错误)
- 5XX:服务器处理请求出错(服务器端错误)
常见状态码
- 100:继续,客户端继续其请求
- 101:切换协议,服务端根据客户端的请求切换协议,只能切换更高级的协议
- 200:OK,请求成功,一般用于GET和POST
- 201:以创建,成功请求并创建了新的资源
- 202:已接受请求但是未处理完成
- 302:数据的转发
- 303:和301一样请求的资源被永久的移动到新的URL。返回的就是一个子女的URL
- 304:未修改,所请求的资源未修改,不返回任何资源,访问缓存资源
- 404:未找到资源
- 403:服务器理解客户端的请求,但是拒绝执行此请求
- 500:服务器内部错误
- 502:错误的网关
HTTP版本之间的区别:
HTTP1.0和HTTP1.1之间的区别:
- 长连接:HTTP1.0需要主动设置connection:keep-alive的连接方式才能开启厂里l连接,HTTP1.1默认支持长连接,再一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗。
- 带宽优化:HTTP1.1中header和body必须一起发送,有时会造成带宽浪费现象。有时只需要一部分,却将整个对象发送,HTTO1.1则再请求头中引入了range头部信息,允许值请求资源的某个部分。即返回码为206。
- 缓存处理:HTTP1.0主要使用header里的IF_MODIFIED_SINCE来做缓存。
- HOST头域:HTTP1.0中认为没太服务器都绑定一个唯一的iP地址,因此消息中URL没有传递主机名。HTTP1.1的请求消息和响应消息中都应支持HOST头域,没有头域的时候会报错400.
- 新增错误状态码24个,例如409和410
HTTP2.0
- 多路复用:可以再一个连接并行的处理多个请求
- Header压缩:使用encoder来压缩需要传输的header大小。
- 服务器推送:客户端对支持HTTP2.0的服务器请求某个资源时,服务器会顺便把一些客户端需要的别的资源一起推送过来,这样只需要一次HTTP通信就可以得到全部资源,提高了性能。
- 基于二进制传送
HTTP和HTTPS
HTTPS和HTTP的区别
- HTTPS协议需要到ca申请证书,一般免费证书少
- HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的ssl加密传输协议
- HTTP和HTTPS使用的连接方式不同,用的端口也是不一样的。HTTP默认是80,HTTPS是443
- HTTP连接简单是无状态的。HTTPS协议是有SSL+HTTP协议构架的可进行加密传输,身份认证的网络协议。比HTTP协议安全。
HTTPS的工作原理: - Client使用HTTPS的URL访问Web服务器,要求与web服务器建立SSL连接
- Web服务器受到客户端请求之后,会将网站的证书信息传送一份给客户端
- 客户的浏览器与web服务器开始协商ssl连接的安全等级
- 客户端的浏览器根据双方的同意的安全等级建立会话秘钥。加密后传输
- 服务端解开秘钥
- Web服务器利用会话的秘钥加密和客户端之间通信
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)