一:http协议类
1.http协议的特点:无状态【没法区分两次连接者的身份】,无连接【连接一次就会断掉,不会保持连接】,灵活【通过HTTP完成不同资源的传输】,简单快速【统一资源符,URI是固定的,访问某一个资源的时候我只要输入对应的URI就可以找到对应的资源】
2.http报文的组成方式:
- 请求报文:请求行【http方法,url,http协议,版本】,请求头【一些key,value值】,空行,请求体
- 响应报文:状态行【协议,版本,状态码,响应状态】,响应头【一些key,value值】,空行,响应体
3.http方法
- get 获取资源
- post 传输资源
- put 更新资源
- delete 删除资源
- head 获得报文首部
4.post和get的区别
- get方法具有幂等性,post方法没有幂等性
- get方法在浏览器回退的时候是无害的,但是POST 方法会再次提交请求
- get方法会被浏览器主动缓存,post不会除非手动设置
- get请求只能是url编码,但是post支持多种多种编码方式
- get请求参数会完整的保存在浏览器历史记录里面,但是post中的参数不会被保留
- get请求在url中传送的参数是有长度限制的但是post没有限制
- 对于参数的数据类型,get只能接受ASCII字符,但是POST没有限制
- GET 比POST 更加安全,因为参数直接暴露在URL 上面所以GET 不能用来传递敏感信息
- GET参数通过url传递,post放在Request body中,并且对于火狐浏览器来说post方法会发送两次请求(一次用来发送请求头,一次用来发送请求体)
5.http状态码【这个太多了我在这里简单的赘述一下】
- 1xx:指示信息-表示请求已接收,继续处理
- 2xx:成功-表示请求已被成功接收
- 3xx:重定向-要完成请求必须进行更新一步的操作
- 4xx:客户端错误-请求有语法错误或者请求无法接受
- 5xx:服务器错误-服务器未能实现合法的请求
6.什么是持久连接 【 HTTP1.1版本支持】
keep-alive:让客户端的连接持续有效,当出现对服务器的后续请求时,keep-alive功能避免了建立或者重新连接
在说一下非持久连接:http采用的是"请求-应答"模式,就是普通模式,在非持久化连接的时候每个请求应答客户和服务器都要新建立一个连接,完成之后立即断开连接
7.什么是管线化【仅仅是HTTP1.1版本支持】
(1)在使用持久连接的时候:完成下一次的请求的前提是完成上一次的请求响应
(2)管线化:不用等待响应可以将所有的请求打包全部发给服务器,服务器将所有的响应打包发给客户端
(3)需要注意的点:
- 管线化通过持久化连接完成的
- 仅http1.1支持此技术
- 只有GET还有HEAD方法支持管线化, 但是对于POST有所限制
- 初次连接的时候不要启动管线机制,因为对方服务器不一定支持HTTP1.1版本的协议
- 管线化不会影响响应到来的顺序