简单HTTP协议:
HTTP协议用于客户端和服务器端之间的通信。
告知服务器意图的各种HTTP方法:
GET:获取资源
POST:用来传输实体的主体,post的主要目的并不是获取响应的主体内容
PUT:传输文件,跟FTPyiyang ,但PUT方法自身不带验证机制,因此存在安全性问题而不被使用。
HEAD:获得报文首部,用于确认URI的有效性及资源更新的日期时间。
ELETE: 删除文件,跟put相反的方法,DELETE方法按请求URI删除指定的资源
OPTIONS:询问支持的方法
TRACE:追踪路径
OPTIONS:询问支持的方法
TRACE : 追踪路径,但容易受到跨站追踪的工资,因此很少使用。
CONNECT: 要求用隧道协议连接
- 持久连接:只要任意一方没有明确提出断开连接,则保持TCP连接状态。
优点:持久连接的好处在于减少了建立和断开所造成的额外开销,减轻了服务器端的负载。因此Web页面现在是速度也就相应提高了。只要任意一端没有明确提出断开连接,则保持TCP连接状态。这样的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减少了服务器端的负载。另外,减少开销的那部分时间,使HTTP请求和相应能更早的结束,这样Web页面显示的速度也相应提高了。HTTP1.1具有持久连接。
HTTP是不保存状态的协议,因此引出了Cookie。
- Cookie的状态连接:
HTTP是无状态协议,可以减少服务器的CPU以及内存资源的消耗,而缺点在于每次跳转新页面都要再次登录或者再请求报文中附加参数来管理登录状态。Cookie会根据从服务器端发送的相应报文内的一个Set-cookie的首部字段信息,通知客户端保存Cookie。当下午客户端再向该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
HTTP报文的HTTP信息:
HTTP报文:请求端(客户端)的HTTP报文称为请求报文,响应端(服务器端)的叫做响应报文。
报文主体和实体主体的差异:
- 报文是HTTP通信中的基本单位,由8位组字节流组,通过HTTP通信传输。
- 实体:作为请求或响应的有效负载数据(补充项)被传输,其内容由实体首部和实体主体组成。
- 返回结果的HTTP状态码:
1XX:信息性状态码,接受的请求正在处理
2XX:状态成功码,请求正常处理完毕
200 ok
204 No Content 代表服务器接受的请求已成功处理,但在返回的响应报文中不含实体的主体部分。
3XX:重定向状态码,需要进行附加操作以完成请求
301 Moved Permanently 永久性重定向,说明请求的资源已经被分配了新的URI。
302 Found 临时重定向。该状态码表示请求资源已经被分配了新的URI,希望用户(本次)使用新的URI访问。
303 See Other 表示由于请求对应的资源存在另外一个URI,应使用GET方法定向获取请求的资源。
304 Not Modified 表示客户端发送附带条件的请求,服务器允许请求访问资源,但未满足条件的情况,304状态码返回。
307 Temporary Redirect 临时重定向。与302有相同的含义。
4XX:客户端错误状态码,服务器无法处理请求
400 Bad Request 表示报文中存在语法错误
401 Unauthorized 该状态码表示发送的请求需要通过有HTTP认证(BASIC认证,DIGEST认证)的认证信息
403 Forbidden 表明请求资源的访问被服务器拒绝了。
404 Not Found 表明服务器上无法找到请求的资源。
5XX:服务器错误状态码,服务器处理请求出错
500 Internal Server Error 表明服务器端在执行请求时发生了错误,也可能是Web应用存在的bug或某些临时的故障。
503 Server Unavailable 表明服务器处于超负载或者正在进行停机维护。
与HTTP协作的Web服务器
- 在互联网中,域名听过DNS服务映射到IP地址(域名解析)之后访问目标网站,可见,当请求发送到服务器时已经是以IP地址形式的访问了。
通信数据转发程序:代理,网关,隧道
- 代理——扮演者客户端和服务器的中间人角色,接受客户端发送的请求并转发给服务器,同时也接受服务器返回的响应并转发给客户端。
- 网关是转发其他服务器通信数据的服务器,接受从客户端发送过来的请求,它就会像自由拥有资源的源服务器一样对请求进行处理。
- 缓存服务器:优势在于利用缓存可避免对此从源服务器转发资源。