什么是Web
Web是万维网(World Wide Web)的俗称,它是一个体系结构框架。该框架把分布在整个Internet数百万台机器上的内容链接起来供人们访问。
站在用户的角度看,Web由大量分布在全球范围的内容组成,这些内容以Web页面(Web Page)或简称为页面(Page)的形式表示。每个页面可以包含指向其他页面的链接(link),这些页面可以分布在全球任何地方。用户单击一个链接就可以跟随这个链接来到它所指向的页面。这个过程可以无限重复下去。让一个页面指向另一个页面的想法现在称为超文本(hypertext)。
浏览器
通常观看页面的程序称为浏览器(browser)。Firefox、Internet Explorer和Chrome是比较流行的浏览器。浏览器取回所请求的页面,对页面内容进行解释,并在屏幕上以恰当的格式显示出来。页面内容本身可能是文本、图像和格式化的命令混合体。表现的形式多种多样:可以表现成传统的文档形式,或者表现成其他内容的形式(比如视频),或者是一个能产生图形界面的程序,用户通过该界面实行与网页的交互方式。
客户端
当Web最初被建立时,为了让一个页面指向另一个Web页面,需要某些机制来命名和定位页面。尤其是,在显示一个被选中的页面之前,首先必须回答3个问题:
(1)这个页面叫什么?
(2)这个页面在哪里?
(3)如何访问这个页面?
Web的解决方案是给每个页面分配一个统一资源定位符(URL,Uniform Resource Locate),用来有效地充当该页面在全球范围内的名字。
URL由三部分组成:协议、主机的DNS域名、路径名。
URL设计是开放式的,在某种意义上它很简单,允许浏览器使用多种协议去获得各种不同的资源。事实上,已经定义了针对各种其他协议的URL。如下表所示。
名字 | 用途 | 实例 |
---|---|---|
http | 超文本(html) | http://www.ee.uwa.edu/~rob/ |
https | 安全的超文本 | https://www.bank.com/accounts/ |
ftp | FTP | ftp://ftp.cs.vu.nl/pub/minix/README |
file | 本地文件 | file:///usr/suzanne/prog.c |
mailto | 发送邮件 | mailto:JohnUser@acm.org |
rtsp | 流式媒体 | rtsp://youtube.com/montypython.mpg |
sip | 多媒体呼叫 | sip:eve@adversary.com |
about | 浏览器信息 | about:plugins |
服务器端
当用户键入一个URL或者单击一行超文本时,浏览器会解析URL,并且将http://和下一个斜线之间的那部分解释成待查找的DNS名字。有了服务器的IP地址后,浏览器与该服务器的80端口建立一个TCP连接,然后它发送一条命令,其中包含了URL的剩余部分,即该服务器上某个页面的路径;最后服务器返回该页面供浏览器显示。
Cookie
Cookie是一小段文本信息,伴随着用户请求页面在Web服务器和浏览器之间传递。
当客户请求一个Web页面时,服务器除了提供所请求的页面以外,还以Cookie的形式提供了一些附加的信息。Cookie是一个相当小的命名的串(最多4KB),服务器将它与浏览器关联。这种关联与用户关联不一样,但它非常接近而且比IP地址更有用。浏览器把服务器所提供的Cookie通常存储在客户机磁盘Cookie目录一段时间,这样在整个浏览器调用期间一直坚持Cookie,除非用户禁用Cookie。Cookie只是字符串,而不是可执行程序。原则上,一个Cookie可能包含病毒,但由于Cookie只被当作数据处理,因为不存在病毒得以实际运行从而造成损害的正式途径。然而,始终有可能存在一些黑客利用一个浏览器的漏洞,来激活病毒。
一个Cookie可能包含至多5个字段:域、路径、内容、过期、安全。
域 | 路径 | 内容 | 过期 | 安全 |
---|---|---|---|---|
sneaky.com | / | UserID=123456 | 31-12-19 23:59 | 不 |
域(Domain)指出Cookie来自何方。浏览器应该检查服务器没有谎报它们的域名。每个域为每个客户端应该存储不超过20个Cookie。
路径(Path)是服务器目录结构中的一个路径,它标识了服务器文件树的哪些部分可能使用该Cookie。通常是/,意味着整棵树。
内容(Content)字段采用“名字=值”的形式。这里名字和值都可以是服务器期望的任何内容。这个字段正是存放Cookie内容的地方。
过期时间(Expires)字段制定了该Cookie何时过期。如果这个字段不存在,则浏览器在退出时将丢弃Cookie,这样的Cookie称为非持续Cookie(nonpersistent cookie);如果针对某个Cookie提供了时间和日期,那么这样的Cookie称为持续Cookie(persistent cookie),它被一直保存到过期为止。过期时间采用了格林尼治标准时间。为了从客户的硬盘上删除一个Cookie,服务器只需将它再发送一次,但是将该Cookie的过期时间指定为一个已经过去的时间即可。
安全(Secure)字段指示浏览器只向使用安全传输连接的服务器返回Cookie,所谓的安全传输就是SSL/TLS。
在浏览器向某个Web站点发出一个页面请求之前,浏览器检查它的Cookie目录,确定这个请求前往的目标域是否在当前客户端放置了Cookie。如果存在相应的Cookie,则该域放置的所有Cookie都被包含到请求消息中。服务器得到了这些Cookie以后,就可以按它所期望的方式来解释它们。
——摘自《计算机网络》第5版