1.什么是HTTP?
HTTP是面向事务的应用层协议,是万维网上能够可靠地交换文件(包括文本,声音,图像等各种多媒体文件)的重要基础;
2.HTTP报文种类以及结构
- 请求报文-------从客户向服务器发送请求报文
请求行包括方法,URL,协议版本,方法就是对所请求的对象进行的操作,实际上是一些命令,请求报文的类型是由它所 采用的方法决定的。
方法 eg:OPTION 请求一些选项的信息
GET 请求读取由URL所标志的信息
HEAD 请求读取由URL所标志的信息的首部
POST 给服务器添加信息
PUT 在指明的URL下存储一个文档
DELETE 删除指明的URL所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器
get post 的区别
1.get使用URL或cookie传参,而post将数据,放在body中。?name=Bob&age=18 |
2.get的URL会有长度上的限制,post可以传输很多数据(但是为了服务器安全考虑post的长度也有限制,但是依旧比get长很多) |
3.post比get安全 |
下面是一个HTTP请求报文
GET /http/http-tutorial.html HTTP/1.1 (请求行)
Host www.runoob.com (首部行,主机域名)
- 响应报文-------从服务器到客户的回答
状态行包括版本,状态码,解释状态码的简单短语
状态码都是三位数,分为5类,大致分为
1xx表示通知信息,如请求收到了或正在进行处理
2xx表示成功,如接受或知道。
3xx表示重定向,如要完成请求还必须采取进一步的行动
4xx表示客户的差错,如请求中错误的语法或不能完成
5xx表示服务器的错误,如服务器失效无法完成请求
下面是一个HTTP响应报文
HTTP/1.1 301 Moved Permanently
Location http://www.runoob.com//http/http-tutorial.html
3.HTTP操作过程
(1)万维网大致工作过程
HTTP使用面向连接的TCP作为传输层协议,保证数据的可靠传输,HTTP协议本身是无连接的
(2)浏览器请求一个万维网文档到收到整个文档所需的时间:
HTTP协议首先要和服务器建立TCP连接,这需要使用三报文握手,当建立TCP连接的三报文握手的前两部分完成后(即经过了一个RTT时间后),万维网客户就把HTTP请求报文,作为建立TCP连接的是三报文握手中的第三个报文的数据,发送给服务器。服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。因此可以看出一个万维网文档所需的时间是该文档的传输时间(与文档成正比)加上两倍往返时间RTT(一个用于连接TCP连接,一个用于请求和接收万维网文档)。
这也是HTTP/1.0的主要缺点,就是没请求一个文档就要有两倍RTT的开销,另一个就是万维网客户和服务器每一次建立新的TCP连接都要分配缓存和变量。
HTTP/1.1协议使用持续连接,持续连接是指万维网服务器在发送响应后仍然再一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文
HTTP/1.1协议的持续连接有两种方式以及特点,非流水线方式:客户在收到前一个响应后才能发出下一请求,因此,在TCP连接建立后,客户每访问一次对象都要用去一个往返RTT,因此服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源;流水线方式:客户在收到HTTP的响应报文之前就能接着发送新的请求报文,可以使TCP连接中空闲的时间减少,提高了下载文档效率