5.万维网和http协议 - wolai 笔记

1.万维网

1.1概述

万维网WWW(World Wide Web)是一个大规模的、联机式的信息存储所/资料空间,是无数个网络站点和网页的集合。在这个空间中: 一样有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,通过单击链接来获取资源。
万维网使用超文本标记语言HTML,使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。

1.2 万维网的组成

万维网的内核部分是由三个标准构成的:
  1. 统一资源定位符(URL)。 负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。
  2. 超文本传输协议(HTTP)。 一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
  3. 超文本标记语言(HTML)。 一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。

1.3 URL—统一资源定位符

统一资源定位符URL(唯一标识) → 资源(文字、视频、音频……)
URL的一般形式:<协议>://<主机>:<端口>/<路径>
  • 协议:http、ftp
  • 主机:域名、IP地址
URL不区分大小写
用户通过点击超链接(http://www.baidu.com)获取资源,这些资源通过超文本传输协议(HTTP)传送给使用者。
万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序

1.4 万维网工作流程

万维网以客户/服务器方式工作。
浏览器是在用户计算机上的万维网客户程序,而万维网文档所驻留的计算机则运行服务器程序,这台计算机称万维网服务器。
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档。工作流程如下:
  1. Web 用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求。
  2. Web服务器把URL转换为文件路径,并返回信息给Web浏览器。
  3. 通信完成,关闭连接。

2.超文本传输协议HTTP

HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
从层次的角度看,HTTP是面向事务的(Transaction-oriented) 应用层 协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

2.1 HTTP协议的过程

HTTP协议定义浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
从协议执行过程来说,浏览器要访问WWW服务器时,首先要完成对www服务器的域名解析
一旦获得了服务器的IP地址,浏览器就通过TCP向服务器发送连接建立请求。万维网的大致工作过程如图所示

(1)用户浏览页面方法:

  1. 输入URL
  2. 点击超链接

(2)服务器

一个服务器进程监听TCP的端口80

(3)具体过程

  1. 浏览器分析URL
  2. 浏览器向DNS请求解析IP地址
  3. DNS解析出IP地址,
  4. 浏览器与服务器建立TCP连接
  5. 浏览器发出取文件命令
  6. 服务器响应
  7. 释放TCP连接
  8. 浏览器显示:浏览器可以只下载文本部分

2.2 HTTP协议的特点

HTTP协议是无状态的。
但是在实际工作中,一些万维网站点常常希望能够识别用户。→ Cookie
Cookie是存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码识别)的访问记录。
HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)。

2.3 HTTP的连接方式

(1)非持久连接Close

非持久连接在TCP三次握手的第三次握手时发生,将HTTP请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将HTTP相应报文传输给客户。
耗时就是RTT*2+文档传输时间。缺点就是这样如果再想传输,那么就需要重新建立TCP连接从头开始

(2)持久连接 Keep-alive

持久连接和非持久连接类似,都是在第三次握手时发生,将HTTP请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将HTTP相应报文传输给客户。
但是持久连接再需要请资源的时候就不需要建立新的TCP连接了
非流水线就是发一个,确认一个,才能再发下一个
流水线就是一个个连着发,然后多个确认

2.4 HTTP的报文结构

HTTP报文是面向文本的,因此在报文中的每一个字段都是一些ASCII。
请求报文: 从客户向服务器发送的请求报文
响应报文: 从服务器到客户的回答

(1)请求报文

第一行为开始行
  • 首部行:说明浏览器、服务器和报文主体的一些信息

(2)响应报文

第一行为状态行
状态码:
  • 1xx表示通知信息的,如请求收到了或正在处理。
  • 2xx表示成功,如接受或知道了。202 Accepted
  • 3xx表示重定向,如要完成请求还必须采取进一步的行动。301 Moved Permanently
  • 4xx表示客户的差错,如请求中有错误的语法或不能完成。404 Not Found
  • 5xx表示服务器的差错,如服务器失效无法完成请求。

(3)某浏览器发出的请求报文

GET/index.html HTTP/1.1
Host:www.test.edu/cn
Connection:Close
Cookie:123456

3.常用应用程序的协议及端口号


Comment