一、http协议(超文本传输协议)
http协议是一个简单的请求-响应协议。它是基于TCP协议的一个超文本传输协议,详细规定了浏览器和万维网(www)服务器之间互相通信的规则 。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
二、http协议的特点
1、支持B/S开发模式
B/S:类似于淘宝、京东、百度金融等这些大型应用。
特点:1.维护成本相对略低
2.需要本地安装,如果需要更新,直接更新服务器端的内容,客户端使用浏览器进行访问
3.可以支持广域网
2、允许传输任意数据类型
3、简单快速
4、无连接:服务器处理完客户端请求后,会即可断开连接。在http协议1.1版本的时候使用长连接,当服务器处理完客户端请求后不会立即断开连接,而是过一段时间后再断开连接,以最小的资源浪费来节省传输时间。
5、无状态:即指协议对于事务处理没有记忆能力。如果后续处理需要前面的信息,则它必须重传,这样就会导致每次连接传送的数据量增大。所以后续就会出现cookie和session技术来解决http的无状态特性。
三、http的组成(URL和URI)
1、协议部分:URL的协议部分为“http:”,代表这网页使用的是http协议;
2、域名部分:wwww.xxxxx.com ,URL中也可以使用IP地址作为域名;
3、端口部分:跟在域名后面的就是端口,以“:”作为分隔符,URL的默认端口为80;
4、虚拟目录部分:从第一个“/”到最后一个“/”,就是虚拟目录部分;
5、文件名部分:从最后一个“/”开始到“?”结束,是文件名部分;
6、锚部分:从#开始到最后,就是锚部分;
7、参数部分:从“?”开始到“#”结束的部分都是参数部分。
四、http协议的工作原理
主要分为客户端的请求过程和服务端的响应过程
1.客户端的请求过程:
1.1.解析协议和域名;
1.2.使用http协议并创建请求报文向服务端发送请求;
1.3.接收服务器返回的内容并展示给客户。
2.服务器响应过程:
2.1.与客户端建立连接;
2.2.从网络连接中读取数据,并将请求报文中的内容解析出来;
2.3.根据请求报文进行处理;
2.4.访问这些存储在服务器上的物理文件;
2.5.构造响应报文,响应报文包括:状态码,响应头,响应主体等内容;
2.6.将响应的数据发送给客户端;
2.7.请求结束后,在日志文件中记录一条请求日志。
五、请求【响应报文】
报文:客户端与服务器之间的信息传递使用的载体。主要分为请求和响应两个部分。
组成:
请求首行:包含请求方法,要访问的资源以及所用的http版本;
请求头部:说明服务器要使用的附加信息;
空行:请求报文头部后的空行是必须的;
请求主体(数据):get方式不存在请求主体,post方式请求主体包含请求参数。
http的请求方式:
get(获取):请求获取Request-URI所标识的资源;
post(更新或新增):在Request-URI所标识的资源后附加新的数据;
head:请求获取Request-URI所标识的资源的响应消息报头;
put(新增):请求服务器存储一个资源,并用 Request-URI作为其标识;
delete(删除):请求服务器删除Request-URI所标识的资源;
trabe:请求服务器回显收到的请求信息,主要用于测试或诊断;
connect:http/1.1协议中预留给能够将连接改为管道方式的代理服务器;
options:允许客户端查看服务器的性能。
get与post区别
1、get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间&相连;post方式是把提交的数据放在http包的body中;
2、get提交的数据大小有限制,而post方法提交的数据就没有限制;(主要是浏览器对URL的长度有限制)
3、get和post方式都是TCP连接,没有本质的区别,但由于http/浏览器的限制,会导致它们在应用过程中展现出不一样的效果。get只会产生一个数据包,而post会产生两个数据包。对于get请求,浏览器会把http的header和data一并发出去,服务器响应200(返回数据)。对于post,浏览器会先发送header数据,服务器响应100continue,浏览器再发送data,服务响应200;
4、由于get的数据都是明文显示在URL上,所以,get的安全和私密性不如post。
六、http的状态码
1、10x:消息,指连接状态,也是数据准备阶段;
2、20x:成功--表示请求已被成功接收、理解、接受;
3、30x:重定向--要完成请求必须进行更进一步的操作;
4、40x:客户端错误;
5、50x:服务器端错误。