应用层-2、web和http
参考哈工大网络公开课。
网页包含多个对象:
1、 对象:HTML文件,图片,视频文件,动态脚本
2、 基本HTML文件:包含对其他对象引用的链接
对象的寻址:
http协议使用URL对资源进行定位:URL是资源统一定位器,其格式为:Scheme://host:port/path
下面是一个例子。在一般的网络申请中,端口(port)默认为80,所以省略不写。在网络申请中,一般默认为HTTP协议,所以https:也可以省略。
图一:URL示例
HTTP协议:超文本传输协议
https协议采用C/S结构:
客户——Browser:请求、接受、展示Web对象;
服务器——WebServer:响应用户的请求,发送对象。现在主流的服务器是采用Apache作为web服务器软件。
图二: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
图三:非持久性访问过程
从上图的过程中可以看出,网络传输的主要耗时在于数据的传输,为了便于表述:把从客户端发送一个很小的数据包并返回所经历的时间叫做RTT。那么就可以得出一次传输的时间图,根据图中可以得出总时间=2*RTT+文件发送时间。
图四:一次非持久性连接传输的时间图
对于持久性链接,服务器发送文件完,不会马上断开连接,而是持续发送,这里也分两种:非流水方式和流水方式。
对于非流水方式,客户机只有在收到前一个响应后才会发送新的连接。
图五:非流水持续性连接
对于流水方式,客户机只要遇到一个引用对象就会尽快发送新的连接,从而可以提高数据传输效率。
HTTP消息格式:请求消息和响应消息
HTTP的请求消息是用ASCII码写的,它的格式如下:
图六:请求消息实例
、
图七:请求消息格式
对于响应消息,其基本格式如下图所示:
图八:响应消息格式
对于返回的状态码,有如下几种:
1、200 OK 访问成功
2、301 MovedPermanently 访问资源已经永久移除
3、400 BadResquest 错误的请求
4、404 NotFound 请求的资源没有找到
5、505 HTTPVersion Not Supported HTTP版本不支持