1、Web的一些概念
1.1、对象
- 对象可以是HTML文件、JPG文件、Java小程序、音频、视频等;
1.2、Web页
- Web页由一些对象组成,包含一个基本的HTML文件,这个HTML文件又包含一些对象的链接(引用);
Web应用程序
- Web应用程序,只需浏览器就可以访问的应用程序;
1.3、URL通用资源定位符
通过URL对对象进行引用,格式:协议、用户口令、主机名、路径名、端口等;
2、HTTP(超文本传输协议)的概念
- 属于Web的应用层协议;
- 客户端请求、接收、显示Web对象的浏览器;
- 服务器响应、发送Web对象;
3、HTTP使用TCP连接
- 客户端发起与服务器的TCP连接,端口号为80;
- 服务器接受客户端的TCP连接;
- 在HTTP客户端(浏览器)与Web服务器之间交换HTTP报文;
- TCP连接断开;
4、HTTP非持久/持久连接
4.1、非持久连接(HTTP1.0)
一次TCP连接只能传输一个对象;
响应时间:RTT(TCP建立)+RTT(HTTP请求/响应)+ 对象传输时间
4.2、持久连接(HTTP1.1)
一次TCP连接可以传输多个对象;
- 非流水线方式:请求对象,得到响应,下一个请求.....
- 流水线方式:不必等待响应结束,客户端遇到引用对象就立即请求;(默认方式)
5、HTTP请求报文
5.1、HTTP请求报文格式
5.2、HTTP方法
HTTP 1.0命令 | HTTP 1.1命令 |
GET:获取web服务器数据 | GET |
POST:向web服务器提交数据 | POST |
HEAD:只请求头部信息 | HEAD |
PUT:将对象上载到URL字段 | |
DELETE:删除URL字段的对象 |
6、HTTP响应报文
6.1、HTTP响应报文格式
6.2、常见状态码
- 200 OK:客户端请求成功
- 301 Moved Permanently:请求的对象已被永久移除
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
- 403 Forbidden:服务器收到请求,但是拒绝提供服务
- 404 Not Found:服务器无法根据客户端的请求找到资源
- 500 Internal Server Error:服务器发生不可预期的错误
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
7、Cookie
HTTP协议本身是一种无状态的协议,服务器并不能知道多次的客户端请求是否是同一个浏览器或用户发出来。
所以作为web服务器必须能够采用某种方式来唯一识别同一个用户,并记录该用户的状态。
- 服务器向客户端发送cookie
- 浏览器将cookie保存
- 之后每次http请求浏览器都会将cookie发送给服务器
8、Web缓存
Web缓存器(Web cache)也叫代理服务器(proxy server),它能够代表初始Web服务器来满足HTTP请求的网络实体。它有自己的ROM,并在ROM中保存最近请求过的对象的副本。可以配置用户浏览器以有限指向代理服务器,这样可以分散来自于客户的请求,使得服务器有更好的响应能力;同时还可以大大减少网络上的流量。用户向代理服务器请求对象过程如下:
- 浏览器创建一个到代理服务器的连接,并发送HTTP请求报文请求一个对象。
- 代理服务器进行检查,若在本地存储了对象副本则直接发送响应报文返回该对象。
- 若在代理服务器中没有缓存该对象,它就向该对象初始服务器请求该对象。
- 在原服务器中获取到对象后,代理服务器会在本地存储一个副本,然后向客户发送该副本。
如何检查缓存内容是否最新:在HTTP请求中说明缓存的日期 If-modified-since:<data>
- 如果缓存过期,HTTP报文返回服务器数据;HTTP/1.0 200 OK <data>
- 如果缓存有效,直接从缓存中获取数据;HTTP/1.0 304 Not Modified
9、利用网络调试助手向百度发出HTTP请求
GET https://www.baidu.com/?tn=request_28_pg HTTP/1.1
Host:www.baidu.com
Connetion:close(空行)
(空行)
close后面有两个回车换行,所以有两个空行,看上面的HTTP请求报文格式即知晓;