http基础
名词解释
URI :统一资源标识符(Uniform Resource Identifier,URI)
唯一标识并定位信息资源,URI有两种形式,分别称为URL和URN。
URL :统一资源定位符(URL)
指定一个精确、固定的位置的资源
URN :统一资源名(URN)
作为特定内容的唯一名称使用,与资源所在地无关。(目前仍然处在试验阶段,还未大范围使用)
URL常用标准格式
百度首页图片URL为例
第一部份称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是 HTTP 协议(http://和https://等)
第二部分给出了服务器的因特网地址(如:www.baidu.com)也就是服务器ip地址
windows可以在cmd当中ping www.baidu.com查看ip
Linux可以在Terminal当中ping www.baidu.com查看ip
其余部份指定Web服务器上的某个资源(如:img/bd_logo1.png)
常见HTTP方法
- GET:从服务器向客户端发送命名资源
- PUT:将来自客户端的数据存储到一个命名的服务器资源中去
- DELETE:从服务器中删除命名资源
- POST:将客户端数据发送到一个服务器网关应用程序
- HEAD:仅发送命名资源响应中的 HTTP 首部
常见的HTTP状态码
- 200:OK。文档正确返回
- 302:Redirect(重定向)。到其他地方去获取资源
- 404:Not Found(没找到)。无法找到这个资源
HTTP报文
起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说
明出现了什么情况。首部字段
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为
了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首
部字段和添加新行一样简单。主体
空行之后就是可选的报文主体了,其中包含了所有类型的数据。
网页浏览步骤
- 浏览器从 URL 中解析出服务器的主机名;
- 浏览器将服务器的主机名转换成服务器的 IP 地址;
- 浏览器将端口号(如果有的话)从 URL 中解析出来;
- 浏览器建立一条与 Web 服务器的 TCP 连接;
- 浏览器向服务器发送一条 HTTP 请求报文;
- 服务器向浏览器回送一条 HTTP 响应报文;
- 关闭连接,浏览器显示文档。
协议版本
HTTP/0.9
HTTP 的 1991 原型版本称为 HTTP/0.9。这个协议有很多严重的设计缺陷,只应
该用于与老客户端的交互。HTTP/0.9 只支持 GET 方法,不支持多媒体内容的
MIME 类型、各种 HTTP 首部,或者版本号。HTTP/0.9 定义的初衷是为了获取
简单的 HTML 对象,它很快就被 HTTP/1.0 取代了。HTTP/1.0
1.0 是第一个得到广泛使用的 HTTP 版本。HTTP/1.0 添加了版本号、各种 HTTP
首部、一些额外的方法,以及对多媒体对象的处理。HTTP/1.0 使得包含生动图
片的 Web 页面和交互式表格成为可能,而这些页面和表格促使万维网为人们广
泛地接受。这个规范从未得到良好地说明。在这个 HTTP 协议的商业演进和学术
研究都在快速进行的时代,它集合了一系列的最佳实践。HTTP/1.0+
在 20 世纪 90 年代中叶,很多流行的 Web 客户端和服务器都在飞快地向 HTTP
中添加各种特性,以满足快速扩张且在商业上十分成功的万维网的需要。其中很
多特性,包括持久的 keep-alive 连接、虚拟主机支持,以及代理连接支持都被加
入到 HTTP 之中,并成为非官方的事实标准。这种非正式的 HTTP 扩展版本通常
称为 HTTP/1.0+。HTTP/1.1
HTTP/1.1 重点关注的是校正 HTTP 设计中的结构性缺陷,明确语义,引入重要
的性能优化措施,并删除一些不好的特性。HTTP/1.1 还包含了对 20 世纪 90 年
代末正在发展中的更复杂的 Web 应用程序和部署方式的支持。HTTP/1.1 是当前
使用的 HTTP 版本。HTTP-NG(又名 HTTP/2.0)
HTTP-NG 是 HTTP/1.1 后继结构的原型建议,它重点关注的是性能的大幅优化,
以及更强大的服务逻辑远程执行框架。HTTP-NG 的研究工作终止于 1998 年,
Web的结构组件
代理
位于客户端的服务器之间的HTTP中间实体。
企业网络集中化管理,企业里所有电脑通过代理服务器上网,企业网络管理人员只要做好代理服务器的安全防护信息过滤就可以了。
缓存
HTTP 的仓库,使常用页面的副本可以保存在离客户端更近的地方。
页面或文档缓存,第一次从远程Web服务器请求的网页或文档会被存放在本地缓存,当有下一个请求是同一文档或客户端时,这不去访问远程Web服务器直接使用本地代理服务器资源提高访问速度并减少网络占用。
网关
连接其他应用程序的特殊 Web 服务器。
隧道
对 HTTP 通信报文进行盲转发的特殊代理。
Agent代理
发起自动 HTTP 请求的半智能 Web 客户端。