计算机网络基础——WWW万维网
万维网
万维网(World Wide Web, WWW
)是一个大规模的、联机式的信息储藏所,英文简称Web
,万维网是一个分布式的超媒体(hypermedia
),是超文本(hypertext
)系统的扩充。万维网以B/S方式(浏览器/服务器)工作,用户主机中的浏览器是万维网客户机程序,万维网文档所驻留的主机运行服务器程序,浏览器向服务器发送请求,服务器向浏览器返回请求的万维网文档。
-
万维网使用统一资源定位符来表示万维网上的各种文档,每个文档在整个互联网范围内有唯一的标识符。
-
万维网客户程序与万维网服务器程序之间的交互遵循严格的协议,即超文本传输协议
-
万维网使用超文本标记语言,使得万维网页面的设计者可以很方便地使用链接从本页面的某处链接到互联网上的任何一个万维网网页,并且能够在自己的主机屏幕上将这些页面显示出来
超文本
超文本(hypertext
)即为包含指向其他文档链接的文本,由多个信息源链接成,这些信息源可以分布在世界各地且数目不限
,超文本是万维网的基础
超媒体
超媒体(hypermedia
)与超文本的区别是文档内容不同,超文本仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画及视频图像等。
工作流程
- Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求
- Web服务器将URL转换为文件路径,并返回信息给Web浏览器
- 通信完成,关闭连接
统一资源定位符
统一资源定位符(Uniform Resource Locator, URL
)是用来表示从互联网上得到的资源位置和访问这些资源的方法,URL相当于一个文件名在网络范围的扩展,URL为资源的位置提供一种抽象的识别方法,并用这种方法给资源定位,使得系统可以对资源进行各种操作。互联网上的所有资源都有一个唯一确定的URL。
资源
资源指的是互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音以及与互联网相连的任何形式数据
URL格式
<protocol>://<hostname>:<port>/<path>
<protocol>
: 使用的协议,如HTTP, FTP
等<hostname>
: 存放资源的主机在互联网中的域名或IP地址<port>
: 服务端进程端口号<path>
: 资源在主机中的路径
超文本传输协议
超文本传输协议(HyperText Transfer Protocol, HTTP
)是一个简单的请求-响应协议,基于TCP定义了浏览器如何向万维网服务器请求万维网文档以及万维网服务器如何将文档传送给浏览器,HTTP是面向事务(transcation-oriented
)的,是万维网能够可靠传输文件的重要基础。
万维网的服务器进程监听80端口,若有浏览器向其发出连接建立请求,会与其建立TCP连接,TCP连接建立成功后,浏览器向服务器发送浏览某个页面的请求,服务器返回所请求的页面作为响应,结束后释放TCP连接。
HTTP规定HTTP客户与HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求和一个类似的通用互联网扩充(即类MIME(MIME-like)
)的相应组成,HTTP报文采用TCP连接传送。
无连接
HTTP
虽然使用面向连接的TCP
作为传输层协议,但HTTP
本身是无连接的,即通信双方在交换HTTP
报文之前不需要先建立HTTP
连接
无状态
HTTP是无状态(stateless
)的,同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时是相同的,该特性使得服务器更容易支持大量并发的HTTP请求
HTTP/1.0
HTTP/1.0采用非持续连接
的方式,在建立TCP连接的前两部分完成后,万维网用户把HTTP请求报文作为TCP连接的三报文握手中的第三次报文的数据,发给万维网服务器,服务器收到HTTP请求报文后,将所请求的文档作为响应报文返回给客户。
请求一个万维网文档所需的时间是该文档的传输时间和两倍往返时间(RTT
)之和,其中一个RTT
用于连接TCP连接,另一个RTT
用于请求和接收万维网文档。
HTTP/1.0使得每请求一个文档就需要有两倍RTT开销,而万维网客户和服务器每次建立新的TCP请求都要分配缓存和变量。
HTTP/1.1
HTTP/1.1采用持续连接
的方式,持续连接指的是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个浏览器和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文
非流水线方式
非流水线(without pipelining
)方式,浏览器收到前一个响应后才能发出下一个请求,在TCP连接已经建立后,客户每访问一次对象都要花费一个RTT延迟,相比非持续连接节省了建立TCP连接所需的一个RTT时间。
流水线方式
流水线(with pipelining
)方式,浏览器在收到一个HTTP响应请求之前就能够接着发送新的请求报文,一个接一个的请求报文到达服务器之后,服务器就可以连续发回响应报文。流水线工作方式使浏览器访问所有对象只需花费一个RTT延迟
,使TCP的空闲时间减少,提高了下载文档的效率
代理服务器
代理服务器(Proxy Server
)是一种网络实体,也称万维网高速缓存(Web Cache)
,它将最近的一些请求和响应暂存在本地磁盘中,若代理服务器发现请求与其暂存的请求相同,就直接返回暂存响应而不需要按URL地址去互联网访问该资源;否则,代理服务器代表发送请求的浏览器,向互联网中的源点浏览器(origin server
)建立TCP连接并发送HTTP请求报文,源点服务器把所请求的对象放在HTTP响应报文中返回给代理服务器,代理服务器收到该对象后,先复制到本地存储器中再将放到HTTP响应报文中发送给浏览器。代理服务器减少了访问互联网的时延。
HTTP报文结构
HTTP报文是面向文本(text-oriented
)的,报文中的每个字段都是一些ASCII码串,各个字段长度不确定,分为请求报文和响应报文,两种报文都由开始行、首部行和实体主体组成
报文结构
开始行
开始行用于区分请求报文和响应报文,请求报文中的开始行称为请求行,响应报文中的开始行则称为状态行,开始行的三个字段以空格分科,最后以CR
和LF
代表回车和换行
首部行
首部行用来说明浏览器、服务器或报文主体的一些信息,首部行可以有多行,每个首部行都有首部字段名和值,每行以回车换行CRLF
结束,整个首部行结束后以一个空行(CRLF
)与实体主体分隔
实体主体
实体主体在请求报文和响应报文中一般不用
请求报文
请求报文由浏览器发送给服务器,请求报文的请求行包含方法、请求资源URL和HTTP版本三个内容
方法 | 操作意义 |
---|---|
OPTION | 请求一些选项信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息 |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
响应报文
响应报文由服务器发给浏览器,响应报文的状态行包含HTTP版本、状态码和解释状态码的简单短语三部分组成
状态码(Status-Code
)都是三位数字,分为5类,5类状态码均已不同数字开头
状态码前缀 | 意义 |
---|---|
1xx | 通知信息,收到或正在处理 |
2xx | 接受 |
3xx | 重定向,完成请求并进行下一步行动 |
4xx | 差错,语法错误或不能完成 |
5xx | 服务器差错,服务器失效或无法完成请求 |
Cookie
Cookie是一个文本文件,用来表示在HTTP服务器和梁礼文之间传递的状态信息,万维网站点可以Cookie来跟踪用户。
万维网文档
超文本标记语言
超文本标记语言(HyperText Markup Language
)是一种制作万维网页面的标准,用于消除不同计算机之间信息交流的障碍,HTML并不是应用层协议,而是万维网浏览器使用的一种语言。
HTML文档是ASCII码文件,定义了许多用于排版的命令,浏览器对HTML文档中的各种标签进行解释且仅当HTML文档以htm
和html
为文件后缀名时。浏览器对不支持的标签会忽略但仍显示其中的文本。
可扩展标记语言
可扩展标记语言(eXtensible Markup Language, XML
)是允许用户对自己的标记语言信息定义的源语言,用于传输数据,而HTML用于显示数据,XML可以用来标记数据、定义数据类型,XML将用户界面与结构化数据分离,是一种简单的、平台无关并广泛采用的标准,XML是对HTML的补充。
层叠样式表
层叠样式表(Cascading Style Sheets, CSS
)是一种样式表语言,用于为HTML文档定义布局,HTTML用于结构化内容,CSS用于格式化结构化的内容。
动态文档
动态文档(Dynamic document
)是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建的,浏览器氢气到达时,有万维网服务器运行的另一个应用程序处理并将应用程序的输出作为对浏览器的响应。
动态文档和静态文档的主要区别在于服务器一端,文档内容的生成方法不同。
万维网增加了通用网关接口(Common Gateway Interface, CGI
)机制来定义动态文档应如何创建,输入数据应如何提供给应用程序及如何使用输出结果。通用表示CGI标准所定义的规则对其他任何语言通用,网关表示CGI程序还可能访问其他的服务器资源(数据库、图形软件包等),接口表示CGI有些已定义好的变量和调用可供其他CGI程序调用。
万维网服务器增加的应用程序称为CGI程序,正式名字为CGI脚本(脚本被另一个程序(解释程序)而不是计算机处理机来解释或执行)
活动万维网文档
动态文档一旦建立所包含的信息无法及时更新,活动文档将提供屏幕连续更新的工作交给浏览器端,每当浏览器请求一个活动文档时,服务器返回一段活动文档程序副本,使该程序副本在浏览器运行并直接与用户进行交互,连续改变屏幕的显式。由于活动文档不需要服务器的连续更新传送,对网络带宽的要求也不会太高。
参考
谢希仁. 计算机网络(第7版). 电子工业出版社, 2017.
王道考研计算机网络
最后
- 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!