web与HTTP
web:world wide web
就是我们所说的万维网:是一个大规模的联机式的信息储藏室。
万维网是一个分布式的超媒体系统,是超文本系统的扩充。
网页包含多个对象:可能是HTML文件,JPEG图片,视频文件,动态脚本等。万维网以C/S结构工作:客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
对象的寻址:URL(Uniform Resoure Locator):统一资源定位器。
基本格式:Scheme://host:port/path
遵循什么协议?
万维网应用遵守超文本传送协议——-HTTP协议
HTTP协议是一个应用层协议,它使用TCP连接进行可靠的传送。
万维网应用遵守超文本标记语言——-HTML
HTML使得万维网页面的设计者可以很方便地用链接从本页面地某粗链接到因特网上的任何一个万维网页面,并且能够显示再自己地主机屏幕上。
URL
URL是用来表示从因特网上得到的资源位置和访问这些资源的方法。
资源是指:在因特网上可以被访问的任何对象。
一般形式:<协议>://<主机>:<端口>/<路径>
使用最多的一种URL:
对于万维网的网点访问要使用HTTP协议。
一般格式:
http://<主机>:<端口>/<路径>
http的默认端口号是80,通常可省略。
若在省略掉路径,URL就会指到因特网上的某个主页。
HTTP连接
首先要了解HTTP协议是无状态的。这个也很好理解。
比如你访问某个服务器的一个页面,在你第二次访问时还是可以访问,响应与第一次的相同(假定没有更新页面)。也就是说这个服务器并不会记得你来过,也不记得你来过多少次。
HTTP连接的两种类型:
- 非持久性连接:每个TCP连接最多允许传输一个对象
- 持久性连接:每个TCP连接允许传输多个对象
非持久性连接
- 浏览器分析链接指向页面的URL
- 浏览器向DNS请求解析IP地址
- 域名系统DNS解析出该服务器的IP地址。
- 浏览器与该服务器建立TCP连接
- 浏览器发出取文件命令
- 服务器做出响应,将文件传送给浏览器。
- 释放TCP连接
- 显示html文本
如果在解析文件之后,发现还有超链接,那么就为每个超链接再重复以上步骤。
非持久性连接主要缺点:
每请求一个文档就要有两倍的开销。
操作系统为每个TCP连接开销资源。
持久性连接
发送响应后,服务器保持TCP连接的打开。
后序的HTTP消息可以通过这个连接发送。
持久性连接又分为两种方式:
- 无流水的持久性连接:客户端只有收到前一个响应后采发送新得请求。
- 流水的持久性连接:客户端只要遇到一个引用对象就尽快发出请求。客户访问所有对象只需要花费一个RTT时间。
HTTP消息
HTTP有两类报文:
请求消息—-从客户向服务器发送请求报文
响应消息—-从服务器到客户的回答
由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCii码串。
请求消息
下面是一个典型的HTTP请求消息的的例子:
HTTP请求消息的通用格式:
响应消息
下面是一个响应消息的例子:
响应报文消息格式:
对状态行解释:
Cookie
首先,为什么要有cookie技术?
HTTP协议是无状态的。
但在实际工作中,有时需要能够识别用户。
比如:购物网站,一个顾客需要购买多种物品。因此服务器需要记住用户的身份,使他接下来选购的一些物品也能放入同一个购物车内。
cookie技术:某些网站为了辨别用户身份,进行session跟踪而存储在用户本地终端上的数据
cookie组件:
- HTTP响应消息的cookie头部行
- HTTP请求消息的cookie头部行
- 保存在客户端主机上的cookie文件,由浏览器管理
- web服务器端的后台数据库
工作原理:
cookie能够用于:
- 身份认证
- 购物车
- 智能推荐
- web email
- …..
- 也会带来隐私问题
代理服务器
代理服务器是一种网络实体,又称为万维网高速缓存。
代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。