目录
5.1 WWW的概念与组成结构
5.2 超文本传输协议(HTTP)
5.2.1 HTTP的操作过程
5.2.2 HTTP的特点
5.2.3 HTTP的报文结构
5.1 WWW的概念与组成结构
万维WWW(World Wide Web)简称web并非某种特殊的计算机网络。它是一个大规模分布式、联机式的信息存储空间。
万维网利用网页之间的超链接(也称链接,就是鼠标箭头变为一只手的地方)将不同网站的网页链接成一张逻辑上的信息网。
在这个空间中:一个有用的事物可称为一个“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而使用者通过单击链接来获取资源。
浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。同一网页在不同内核的浏览器的显示效果可能不同。
万维网的内核部分由以下三个标准构成:
- 统一资源定位符(URL)。负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。
- 超文本传输协议(HTTP)。一个应用层协议,它使用TCP连接,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
- 超文本标记语言(HTML)。一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。
URL相当于一个文件名在网络范围的扩展
- “:端口”通常已省略。
- 若将URL中的路径省略,则URL就指明互联网上的某个主页。
- 协议和主机名部分的字母不区分大小写,但路径一般区分。
万维网的文档
- 超文本标记语言HTML。使用多种“标签”来描述网页的结构和内容。
- 层叠样式表CSS。从审美的角度来描述网页的样式。
- JavaScript。一种脚本语言,控制网页的行为。
Web是一个分布式的超媒体系统,是超文本系统的扩充。
5.2 超文本传输协议(HTTP)
HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
从层次的角度看,HTTP是面向事务应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等多媒体文件)的重要基础。
5.2.1 HTTP的操作过程
在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。因此HTTP有两类报文:请求报文(从Web客户端向Web服务器发送服务请求)和响应报文(从Web服务器堆Web客户端请求的回答)
用户鼠标单击链接后发送的事件按顺序如下(以访问清华大学的网站为例):
- 浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/news.htm)
- 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。
- DNS解析出清华大学服务器的IP地址。
- 浏览器与该服务器建立TCP连接(默认端口号为80)。
- 浏览器发出HTTP请求:GET/news.htm。
- 服务器通过HTTP响应把文件news.htm发送给浏览器。
- 释放TCP连接。
- 浏览器解释文件news.htm,并将Web页显示给用户。
注:
- 在请求行使用了相对URL(即省略了主机的域名);
- 后缀htm(html)表示这是一个用超文本标记语言HTML写出的文件。
- 可以看出若DNS缓冲中没有存储相应域名的IP地址,访问Web网站就要用到UDP。
5.2.2 HTTP的特点
HTTP在传输层使用了TCP协议,保证了数据的可靠传输。但在应用层HTTP本身是无连接的。换句话说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
HTTP/1.0采用非持续连接方式
在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。
- 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
- 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务大量客户的请求,这会使其负担很重。
HTTP/1.0读取一个包含100个图片对象的Web页面,需要打开和关闭101次TCP连接(1个基本的html文件和100个图片对象) 。
HTTP/1.1采用持续连接方式
在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。
为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的速度。
HTTP是无状态的
同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。
在实际应用中,通常使用Cookie加数据库的方式来跟踪用户的活动(如记录用户最近浏览的商品等)。
Cookie是一种对无状态的HTTP进行状态化的技术。
Cookie的工作原理:当用户浏览某个使用Cookie的网站时,该万维网服务器就为用户产生一个唯一的识别码,如“12345678”,接着在给用户的响应报文中添加一个Set-cookie的首部行“Set-cookie:12345678”。用户收到响应后,就在它管理的特定Cookie文件中添加这个服务器的主机名和Cookie识别码,当用户继续浏览这个网站时,会取出这个网站的识别码,并放入请求报文的Cookie首部行“Cookie:12345678”。服务器根据请求报文中的Cookie识别码就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户的历史浏览记录向其推荐新产品等。
5.2.3 HTTP的报文结构
HTTP是面向文本的,因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
开始行:这两种报文格式的区别就是开始行不同。在请求报文中为请求行,在响应报文中为状态行。开始行的三个字段之间都以空格分隔,最后的“CR”和“LF”分别代表“回车”和“换行”。
首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有数行,但也可以不使用。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。
常见应用层协议小节
应用程序 | FTP控制连接 | FTP数据连接 | SMPT (推) | POP3(拉) | HTTP | TELNET 远程终端协议 | DNS | TFTP 简单文件传输 | SNMP 简单网络管理 |
---|---|---|---|---|---|---|---|---|---|
使用协议 | TCP | TCP | TCP | TCP | TCP | TCP | UDP | UDP | UDP |
熟知端口号 | 21 | 20 | 25 | 110 | 80 | 23 | 53 | 69 | 161 |
我要控制爱你,非要说一个数据的话是20年,有个250推了我,我拉着他打了110,最长的这个233。
后面的三个都是UDP,可联想记忆为:Uzi,我369依恋你。(53,69,161)