万维网 WWW
1 万维网概述
万维网WWW(World Wide Web)并非某种特殊的计算机网络。
万维网是一个大规模的、联机式的信息储藏所,英文简称Web。
万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。所谓超文本是指包含指向其他文档的链接的文本(text)。
万维网以客户服务器方式工作。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所需的万维网文档。在一个客户端主窗口上显示出的万维网文档称为页面(page)。
2 统一资源定位符 URL
为了解决此问题:万维网怎样标志分布在整个互联网上的万维网文档?
万维网使用统一资源定位符 URL(Uniform Resource Locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一标识符URL。
统一资源定位符 URL是用来表示从互联网上得到的资源位置和访问这些资源的方法。
互联网上的所有资源,都有一个唯一确定的URL。
这里所说的
‘资源’
,是指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像。声音等,以及与互联网相连的任何形式数据。‘资源’ 还包括电子邮件的地址和USENET新闻组,或USENET新闻组中的报文。
由于访问不同对象所使用的协议不同,故URL还指出读取某个对象时所使用的协议。
URL一般形式为:<协议>://<主机>:<端口>/<路径>
<协议>
指用什么协议
来获取该万维网文档,如http(超文本传输协议)、ftp(文件传输协议)等<主机>
指该主机在互联网上的域名
<端口>和<路径>
,有时可省略- HTTP的默认端口号是
80
,通常可省略
若忽略文件的 <路径> 项,则URL就指到互联网上的某个主页(home page)。
主页是个很重要的概念,可以是以下几种情况之一:
(1)一个WWW服务器的最高级别的页面
(2)某一个组织或部门的一个定制的页面或目录
(3)有某个人自己设计的描述他本人情况的WWW页面
URL的<协议>和<主机>部分,字母不分大小写。但<路径>有时要区分。
3 超文本传输协议 HTTP
为了解决此问题:用什么样的协议来实现万维网上的各种链接?
万维网使客户端与服务端之间交互遵守超文本传输协议HTTP(HyperText Transfer Protocol)。
HTTP是一个应用层协议,它使用TCP进行可靠的传输。
3.1 HTTP的操作过程
HTTP协议定义了浏览器(客户端)怎样向服务器请求万维网文档,以及怎样把文档传输给浏览器。
从层次的角度看,HTTP是面向事务的应用层协议。
HTTP使用了面向连接的TCP作为传输层协议,保证了数据的可靠传输。
但是,HTTP协议本身是无连接的。
HTTP协议是无状态的,简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。
3.2 HTTP的报文结构
HTTP有两类报文:
(1)请求报文——从客户端向服务端发送请求
(2)响应报文——从服务端到客户端的回答
HTTP报文由三部分组成:开始行、首部行、实体主体
(1)开始行
请求报文的开始行称请求行,格式:Method URL HTTP-Version CRLF
响应报文的开始行称响应行,格式:HTTP-Version Status-Code Reason-Phrase CRLF
- Method:方法
- URL:地址
- HTTP-Version:版本,如HTTP/1.0、HTTP/1.1、HTTP/2.0等
- CRLF:‘CR’ 和 ‘LF’ 分别代表 ‘回车’ 和 ‘换行’
- Status-Code:状态码
- Reason-Phrase:短语,即响应的状态描述
这里的方法(Method)是对所请求的对象进行的操作,实际上也就是一些命令。
方法(操作) | 意义 |
---|---|
OPTION | 请求一些选项的信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息(资源) |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
其中状态码都是三位数组成,分为五大类:
- 1xx——表示通知信息,如请求收到了或正在进行处理
- 2xx——表示成功,如接受或知道了
- 3xx——表示重定向,如要完成请求还要采取进一步的行动
- 4xx——表示客户端错误,如请求中有错误的语法或不能完成
- 5xx——表示服务端错误,如服务器失效或无法完成合理的请求
(2)首部行
用来说明浏览器、服务器或报文主体的一些信息。
在每一个首部行中都有首部字段名和它的值,每一行在结束时都有 ‘回车’ 和 ’换行‘。
整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
(3)实体主体
在请求报文中一般不用这个字段,在响应报文中也可能没有这个字段。