HTTP学习笔记———— 1
1.URL的格式
URL( Uniform resource locator)是统一资源定位符的简写,用以表示资源所在位置以及访问资源的方法。URL的一般形式如下所示:
<协议>://<主机>:<端口>/<路径>
2.HTTP的大致响应过程
- 浏览器分析链接指向资源的URL
- 若采用域名访问,则先通过DNS服务器解析出相应服务器的IP地址
- 浏览器申请与该服务器建立TCP连接
- 浏览器发出获取资源命令:GET/<路径>
- 服务器对请求报文做出响应,将指定资源或错误信息返回给客户端
- 释放TCP连接
3.一些HTTP的历史与细节
-
对于HTTP/1.0,由于HTTP是无状态的(服务器并不得曾经访问过的这个用户,也并不记得为该客户服务过多少次),而且HTTP是基于TCP连接的,所以每次进行传输时都至少需要2个RTT(HTTP请求报文作为三次握手的第三个报文的数据发送给服务器)。虽然大部分浏览器都支持并行TCP连接,缓解了一次传输大量文件所带来的拥塞,但是这种非持续连接方式依然会给服务器带来很大的负担。
-
为解决HTTP/1.0的弊端,HTTP/1.1应运而生,通过持续连接——服务器在响应客户端请求之后依然在一段时间保持这段TCP连接——不仅降低了服务器的响应时间,也在一定程度上减小了服务器的网络负担. 其中持续连接又可分为两种方式:
1)非流水线方式:当客户端收到了上一个响应才能发出下一个请求
2)流水线方式:客户端在收到响应报文之前就可以发送新的请求报文在互联网早期带宽普遍较低的情况下,HTTP1.1/的出现提高了网络资源的利用率,但随着用户数的提升, 链路通信量的过大反而又导致了时延. servlet中的session对象是对持续连接方式的实现, 通过调用HttpServletRequest实例的getSession()方法来获得session对象, session对象的生存期内将HTTP的无状态模式在一定程度上变成了有状态的
-
代理服务器(proxy server)是一种网络实体, 通过将客户端的请求与服务端的响应保存到本地磁盘中来减轻服务端的负担以及访问时延. 工作原理类似DNS服务器, 不同的是代理服务器代理的是协议, 而DNS服务器代理的是域名. 每次客户端发出请求报文的时候, 先访问代理服务器, 代理服务器中有该请求所对应的对象, 则直接将其返回. 这样就避免了因为访问远端的互联网服务器所带来的延迟和网络拥塞了. 代理服务器既是服务器, 也是客户端(当请求没有命中时, 要将请求报文和相应的响应报文保存到本地)