1.基础概念
HTTP代表超文本传输协议,它运行在TCP/IP之上,是一个应用层协议,由请求和响应构成,是一个标准客户端服务器模型。HTTP是一个无状态的协议,即同一个客户端的这次请求和上次请求是没有对应关系的。默认HTTP的端口号为80。
2.工作流程
HTTP协议永远都是客户端发起请求,服务器回送响应。因此,HTTP无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
一次HTTP操作可以分为四步:
1)首先,客户机与服务器建立连接。只要单击某个超链接,HTTP的工作就开始了;
2)建立连接后,客户机发送一个请求给服务器。请求的格式为:统一资源表示服、协议版本号、MIME信息、客户机信息等,详见“报文剖析”部分;
3)服务器接收到请求后,基于相应的响应信息。响应的格式为:响应的状态行、MIME信息及试题信息等;
4)客户端接收服务器所返回的信息,通过浏览器显示给用户,然后客户机与服务器连接断开;
3.报文剖析
3.1 HTTP GET请求剖析
3.2 HTTP POST请求剖析
3.3 HTTP响应剖析
4.GET和POST方法的区别
GET中的总字符数是有限的(取决于服务器)。比如,用户在“搜索”输入框里输入了很长一段文字,GET方法可能无法正常工作。用GET发送的数据会追加到URL的后面,在浏览器地址栏中显示出来。
POST请求将表单数据包括在请求的体中,如果使用POST而不是GET,用户就不能对一个表单提交建立书签。
5.什么是MIME
MIME为HTTP响应报文中content-type首部的值,它告诉浏览器要接收的数据是什么类型,这样浏览器才能知道如何显示这些数据。MIME类型值与HTTP请求Accept首部所列的值相关。
6.HTTP/1.0和HTTP/1.1的比较
1)HTTP/1.0协议使用非持久连接,HTTP/1.1使用持久连接,在持久连接下,不必为每个web对象的传送简历一个新的连接,一个连接中可以传输多个对象。例如一个包含有许多图像的网页文件中并没有包含真正的图片数据,而是指向这些图像的URL地址,在HTTP/1.1协议下,使用一次连接就可以完成网页文件的多个请求和应答。
2)HTTP/1.1允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到的客户端的请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著减少了整个下载过程所需要的时间。
3)HTTP/1.1增加了更多的请求头和响应头来改进和扩充HTTP/1.0。例如,Host请求字段允许web浏览器使用主机名来访问服务器上同一个IP地址和端口号上配置的多个虚拟web站点。HTTP/1.1的持续连接,也是使用Connection请求头来完成的。如果Connection的值为Keep-Alive,客户端通知服务器返回本次请求结果后保持连接,Connection的值为Close时,客户端通知服务器返回本次请求结果后关闭连接。
4)增加了状态响应码。例如用来试探server是否接受request body的状态响应码100(Continue)。
5)HTTP/1.1增加了OPTIONS,PUT,DELETE,TRACE,CONNECT这些request方法。