1.1Web与HTTP协议

Web与HTTP协议

Web的应用层协议是超文本传输协议(HTTP。HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。
HTTP使用TCP作为它的支撑运输协议TCP为HTTP提供可靠数据传输服务。  由于HTTP服务器不保存关于客户的任何信息所以说HTTP是一个无状态协议

HTTP连接类型:

非持续连接:每个请求/响应对是经一个单独的TCP连接发送
持续连接:所有请求及其响应经相通的TCP连接发送

非持续连接HTTP步骤:

假设传送一个web页面内容包含1个基本HTML页面和10个JPEG图片

  • 1.HTTP客户进程在端口号80发起一个到服务器www.someSchool.edu的TCP连接
  • 2.HTTP客户经它的套接字向该服务器发送一个HTTP请求报文
  • 3.HTTP服务器进程经它的套接字接收该请求报文,从其存储器中检索出对象,在响应报文中封装对象,并通过套接字向客户发送响应报文
  • 4.HTTP服务器进程通知TCP断开该TCP连接。(但是知道TCP确认客户已经完整地接收到响应报文为止,他才会实际中断连接)
  • 5.HTTP客户接收响应报文,TCP连接关闭。(客户端接收到一个HTML文件,检查得到10个JPEG图形引用)
  • 6.对每个引用的JPEG图形对象重复前4个步骤

注意对于非持续连接,每个TCP连接只传输一个请求报文和一个响应报文,因此在本例中一共产生11个TCP连接

浏览器和服务器建立TCP连接涉及TCP三次握手。即客户向服务器发送一小段TCP报文,服务器用一小段TCP报文做出相应和确认,最后客户向服务器返回确认并发送 请求。往返时间(RTT时间),即一个短分组从客户到服务器然后在返回客户的时间。从下图中可以看到请求并接收到一个HTML所有时间为2个RTT时间加上文件传输时间。

非持续连接缺点:

  • 1.必须为每一个请求对象建立和维护一个全新的连接,同时为每个连接分配TCP缓冲区和保持TCP变量,加重了服务器负担
  • 2.每一个对象经手两倍RTT交付时延

持续连接则会在发送响应后保持该TCP连接打开,特别是一个完整的Web页面可以使用单个持续TCP连接进行传输。并且一般来说,如果一条连接经过一定时间间隔(可配置的超时间隔)仍未被使用,HTTP服务器就关闭该连接。所以HTTP默认使用持续连接。

HTTP报文格式

HTTP请求报文

 第一行为请求行(request line),之后的行为首部行(header line)

请求行包含方法字段、URL字段HTTP版本字段。方法字段可以取GET、POST、HEAD、PUT和DELETE。绝大部分请求使用GET方法。URL字段带有请求对象标识,本例中为/somedir/page.html。版本字段是自解释的,本例中浏览器实现的是HTTP/1.1版本

Host行                      指明了对象所在的主机。是Web代理高速缓存所要求的
Connection行           close表明了浏览器告诉服务器不希望麻烦地使用持续连接,要求服务器发送完对象后就关闭这条连接
User-agent行            指明了用户代理,即向服务器发送请求的浏览器类型。这里是Mozilla/5.0即firefox浏览器
Accept-language行  表示用户想得到该对象法语版本

一个HTTP请求报文的通用格式如下图所示

 HTTP响应报文

响应报文包含三个部分:状态行、首部行、实体体

状态行指示服务器正在使用HTTP/1.1版本,并且服务器已经找到并正在发送请求对象
Connection行    close告诉客户,发送完报文后将关闭该TCP连接
Date行                 指示服务器产生并发送该响应报文的日期和时间
Server行              指示该报文是由一台Apache服务器产生的,类似于HTTP请求报文中的User-agent
Last-Modified       指示对象创建或者最后修改的日期和时间
Content-Length    指示被发送对象中的字节数
Content-Type        指示实体体中的对象类型。这里是HTML文本

一个HTTP响应报文通用格式如下图所示

一些常见的状态码和相应短语

 用户与服务器的交互:cookie

作用:cookie可以用于标识一个用户。用户首次访问一个站点时,可能需要提供一个用户标识。在后继会话中,浏览器向服务器传递一个cookie首部,从而向该服务器标识了用户。因此cookie可以在无状态HTTP之上建立一个用户会话层。

cookie技术有四个组件:

  • 1.在HTTP响应报文中的一个cookie首部行
  • 2.在HTTP请求报文中的一个cookie首部行
  • 3.用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
  • 4.位于web站点的一个后端数据库

下图为使用cookie追踪用户状态示意图:ebay:8734表示之前访问过ebay并且cookie文件中已经有了用于ebay的表项。

Web缓存

web缓存器也称为代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体

下图为客户端经过Web缓存器请求对象过程:

优点:

  • 可以大大减少对客户请求的响应时间,特别是当客户与初始服务器之间的瓶颈带宽远低于客户与Web服务器之间的瓶颈带宽
  • 大大减少一个机构的接入链路到因特网的通信量,从而可以不必急于增加带宽

注意代理服务器安装在机构局域网中,可能存在保存在服务器中的对象自该副本缓存在客户端上以后可能已经被更改的问题,幸运的是HTTP有一种机制,允许缓存器证实它的对象是最新的,这个机制就是条件GET方法

条件GET方法条件:

  • 1.请求报文使用GET方法
  • 2.请求报文中包含一个"If-Modified-Since:"首部行

猜你喜欢

转载自blog.csdn.net/weixin_39722922/article/details/88339005