HTTP协议简单理解
1、概念:
“超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
2、http协议和tcp协议的区别:
1),http对应于应用层
2),Tcp协议对应于传输层
3),http协议是在Tcp协议之上建立的,http在发起请求时通过tcp协议建立起连接服务器的通道,请求结束后,立即断开tcp连接
说明:从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,
如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接Keep-Alive不会永久保持连接,它有一个保持时间,
可以在不同的服务器软件(如Apache)中设定这个时间。
4),Http是无状态的短连接,而TCP是有状态的长连接
3、http特点:
简单快速 灵活 无连接 无状态
4、http报文组成部分:
请求报文:请求行(http方法 页面地址 http协议版本 ) + 请求头(key + value) +空行 + 请求体
响应报文: 状态行(http协议版本 状态码 状态描述)+ 响应头 + 空行 + 响应体
5、http方法:
GET ---- 获取资源
POST ---- 传输资源
PUT ---- 更新资源
DELETE ---- 删除资源
HEAD ---- 获得报文首部
GET 和 POST 区别是什么?
1)、get会把请求的参数放在url后面,例如www.xxx.xx?id=1 。也就是别人通过浏览器就可以看到。post请求会把参数放在request body。相对来说,post的安全性更高。
2)、长度限制。如果参数有很多,对get的长度也会有限制,不同浏览器的限制不一样。
3)、get请求的内容,浏览器会主动缓存,而post不会,除非手动设置。
4)、get仅仅支持url编码格式,post支持多种
5)、post对参数类型没有限制,get仅支持ASCII字符。
6)、后退页面时,get没有影响,post会再次提交请求。
6、http状态码:
1xx:指示信息-表示请求一接收,继续处理
2xx:成功-表示请求被成功接收(200请求成功,206客户发送带有Range头的GET请求,服务器完成了它)
3xx:重定向(301请求页面转移到新url,302请求页面临时转移到新url,304浏览器有缓存,可以继续使用)
4xx:客户端错误-请求有语法错误或请求无法实现(400语法错误,401请求未经授权,403请求页面被禁止,404请求资源不存在)
5xx:服务器错误-服务器未能实现合法请求(500服务器错误,503服务器过载或宕机)
7、http管线化:
HTTP管线化是将多个HTTP要求(request)整批提交的技术,而在传送过程中不需先等待服务端的回应。管线化机制须通过永久连接(persistent connection)完成,
仅HTTP/1.1支持此技术(HTTP/1.0不支持),并且只有GET和HEAD要求可以进行管线化,而POST则有所限制。此外,初次创建连接时也不应启动管线机制,
因为对方(服务器)不一定支持HTTP/1.1版本的协议。