应用层-2、web和http

参考哈工大网络公开课。

网页包含多个对象:

1、 对象:HTML文件,图片,视频文件,动态脚本

2、 基本HTML文件:包含对其他对象引用的链接

 

对象的寻址

http协议使用URL对资源进行定位:URL是资源统一定位器,其格式为:Scheme://host:port/path

下面是一个例子。在一般的网络申请中,端口(port)默认为80,所以省略不写。在网络申请中,一般默认为HTTP协议,所以https:也可以省略。


应用层-2、web和http

图一:URL示例

 

HTTP协议:超文本传输协议

https协议采用C/S结构:

客户——Browser:请求、接受、展示Web对象;

服务器——WebServer:响应用户的请求,发送对象。现在主流的服务器是采用Apache作为web服务器软件。

应用层-2、web和http

图二:HTTP请求过程

 

HTTP在运输层采用的是TCP协议进行传输服务,大致的传输过程如下:

1、 服务器在80端口等待客户的请求;、

2、 浏览器发起到服务器的TCP链接(创建套接字Socket);

3、 服务器接受来自浏览器的TCP链接;

4、 浏览器(Http客户端)与Web服务器(Http服务器)交换消息;

5、 关闭TCP链接;

TCP是一个无状态协议:就是服务器不维护任何有关客户端过去所发请求的信息。这么处理的原因主要是因为有状态的协议更加复杂:1、需要维护状态(历史消息)。2、如果客户或者服务器失效,会导致状态的不一致,解决这种不一致的代价高。

 

HTTP连接分两种类型:非持久性连接和持久性连接。

非持久性连接:每个TCP连接只允许传输一个对象;

持久性连接:每个TCP连接只允许传输多个对象;

下面是一个非持久性访问的过程:访问的网页包括了文字和指向10个jpg图片的链接。访问地址是:www.someSchool.edu/someDeparment/home.index

应用层-2、web和http

图三:非持久性访问过程

 

从上图的过程中可以看出,网络传输的主要耗时在于数据的传输,为了便于表述:把从客户端发送一个很小的数据包并返回所经历的时间叫做RTT。那么就可以得出一次传输的时间图,根据图中可以得出总时间=2*RTT+文件发送时间。

 应用层-2、web和http

图四:一次非持久性连接传输的时间图

 

 

对于持久性链接,服务器发送文件完,不会马上断开连接,而是持续发送,这里也分两种:非流水方式和流水方式。

对于非流水方式,客户机只有在收到前一个响应后才会发送新的连接。


应用层-2、web和http

图五:非流水持续性连接

对于流水方式,客户机只要遇到一个引用对象就会尽快发送新的连接,从而可以提高数据传输效率。

 

HTTP消息格式:请求消息和响应消息

HTTP的请求消息是用ASCII码写的,它的格式如下:

应用层-2、web和http

图六:请求消息实例

 

应用层-2、web和http

图七:请求消息格式


对于响应消息,其基本格式如下图所示:

应用层-2、web和http

图八:响应消息格式

对于返回的状态码,有如下几种:

1、200 OK  访问成功

2、301 MovedPermanently 访问资源已经永久移除

3、400 BadResquest  错误的请求

4、404 NotFound    请求的资源没有找到

5、505 HTTPVersion Not Supported HTTP版本不支持