HTTP

来源:互联网 发布:单片机程序烧入不进去 编辑:程序博客网 时间:2024/06/05 12:00

HTTP小结


一.web及网络基础

1.TCP/IP协议族

(1)指互联网相关联的协议集合,包含HTTP、TCP、FTP、IP、DNS、UDP等

(2)分为以下四层:应用层、传输层、网络层、数据链路层。分层好处:当某个地方改变设计,只需替换变动的层。

(3)通信传输流

71

2.常见协议

(1)ip:位于网络层的协议,作用是将数据包传递给对对方。为了满足确实传送到对方那里,需指明IP地址和MAC地址。

(2)ARP:IP->MAC

(3)TCP:位于传输层,提供可靠的字节流服务(i>将大块数据分割成数据包 ii>确保数据准确传达—TCP采用三次握手协议,将数据包送出去后,一定会向对方确认。握手过程中采用TCP的标志syn和ack。若在握手过程中某个阶段中断,TCP协议会再次以相同顺序发送相同数据包)。

(4)DNS:域名解析,域名->IP。

3.URI:统一资源标识符,标识某一互联网资源。它包含了url。

URL:表示资源的地点。

4.RFC(Request for comments,征求意见修订书),基本上客户端和服务器都会以RFC的标准来实现HTTP协议,但也存在某些应用程序按照他自己的“标准”来扩展。

二.简单的HTTP响应

1.客户端:请求资源的一方,服务端:提供资源相应的一方。

2.请求报文组成:请求方法、请求URI、协议版本、可选的请求首部字段和内容实体。

响应报文有协议版本、状态码、状态码的原因短语、响应首部字段(可选)、主体构成。

3.HTTP是不保存状态的协议。解决:引入cookie。

(1)cookie通过在请求和响应报文中写入cookie信息来控制客户端的状态。

(2)步骤

i>客户端发送请求ii>服务器生成对应cookie,记住待会向谁发送响应。并利用响应报文中的set-cookie字段,通知客户端保存cookie。iii>客户端再次发送请求,会自动在请求报文中加入cookie值后(如id=1)再发送出去V>当服务器收到客户端发送的cookie后,会检查是哪一个客户端发送的连接请求。然后对比服务器记录,得到该客户端之前的状态信息。

4.HTTP通过URI来定位互联网上的资源。

5.http方法

(1)get:获取资源,发送主体内容(一般不用)。

(2)post:发送实体主体(一般等同于报文主体,只有当传输过程中进行编码操作,实体主体发生了变化,将和报文主体产生差异)。

(3)put:自身不带验证机制,任何人都可以上传文件

(4)head:获取报文首部,但不获取报文主体。用于确认URI的有效性以及资源的更新日期等。

(5)delete(自身不带验证机制):使用请求提供的URI来删除资源。

6.持久连接

在http初始协议版本中,每进行一次http通信就要断开一次TCP连接。为了解决上述问题,提出了持久连接(只要任意一端没有提出断开连接,则保持TCP连接状态)。好处:减轻服务器负担,提高web页面的显示速度。—-服务器、客户端,都需要支持持久连接

持久化连接可实现管线化,即能够同时发送多个请求。

三.HTTP报文

1.HTTP报文:HTTP协议交互的信息,包含请求报文和响应报文。组成:报文首部+报文主体(可选)。

(1)报文首部:需处理的请求或响应的内容及属性。

(2)报文主体:应被发送的数据。

2.报文

(1)请求报文

72

在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等构成。

(2)响应报文

73

在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段等构成。

请求行:包含方法,URI,HTTP版本状态行:状态短语,原因短语,HTTP版本首部字段:请求或响应的条件、属性,一般包含通用、请求、响应、实体首部。

3.编码提升传输速率

服务器发送内容编码后的实体,客户端接收后并负责解码。

(1)内容编码:应用在实体内容上的编码格式,并保持原样信息的压缩。

(2)常见内容编码

gzipcompressdeflateidentify

(3)分块传输编码:在传输大容量数据时,通过把数据分割成块,以便浏览器逐步显示页面。

4.范围请求–利用首部字段range来指定资源的比特范围

例子:从1开始到3000字节和5000-7000的多重范围

Range:bytes=-3000,5000-70000

5.内容协商

内容协商机制:访问相同的URI,则会显示对应的英文或中文网页。判断基准:语言、字符集、编码方式等。分为服务器驱动协商、客户端驱动协商、透明协商三类。

四。与HTTP协作的web服务器

1.利用单台虚拟主机实现多个域名

在相同IP下,由于虚拟主机可以寄存多个不同主机名和域名的网站。因此在发送HTTP请求时,须在HOST首部指定主机名和域名的URI。

2.通信数据转发程序

(1)代理

74

分类基准:i>是否会使用缓存(缓存代理) ii>是否会修改报文(透明代理)

缓存代理(缓存服务器)见下:

76

当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本。当客户端再次请求时,若请求资源已被缓存,则直接由代理返回给客户端。

资源的有效性:

  • 代理

    代理会向原服务器确认资源的有效性,若失效,则代理将会从源服务器获取新资源。

  • 客户端

    浏览器会判定资源的有效性,若有效,则直接从本地磁盘加载。若失效,则浏览器将发送请求来获取新资源。

优点:利用缓存减少服务器负担,使源服务器不必多次处理相同请求;实现对特定网站的访问控制;获取访问日志等。

(2)网关

75

作用:使通信线路上的服务器,提供非HTTP服务。

优点:安全

(3)隧道

隧道的目的是确保客户端和服务器之间,方便进行远距离、安全得传输。隧道本身透明,会在通信双方断开连接时结束。

五.HTTP首部

1.首部字段

i>作用:给浏览器和服务器提供报文主体大小、使用语言、认证信息等。ii>格式:  首部字段名:字段值,如content-Type:text/html

2.首部字段分类

(1)通用:请求报文和响应报文两方都会使用的首部。

cache-control:操作缓存机制connection:    i>控制不再转发给代理的首部字段(即让该条首部字段,变成逐跳首部)    ii>管理持久连接data:创建HTTP报文的日期和时间Pragma:用在客户端发送的请求中,它会要求所有的中间服务器不返回缓存的资源。

(2)请求:从客户端向服务器发送请求时所使用的首部。目的:补充请求的追加内容、客户端信息、响应内容相关优先级等信息。

Accept:通知服务器,用户代理能够处理的媒体类型以及媒体类型的相对优先级。From:告知服务器,使用用户代理的用户的电子邮箱HOST:虚拟主机运行在同一个IP中,因此使用首部字段host加以区分。if-match:服务器会对比if-match的字段值和资源的Etag值(实体标记),仅当两者一致时才会执行请求。if-modified-since:若在该字段指定的日期时间后,资源发生了更新,服务器会接受请求。use-agent:将提出请求的`浏览器`和`用户代理名称`等信息,传达给服务器

(3)响应:从服务器端向客户端返回响应时所使用的首部。目的:补充响应的附加内容,或要求客户端附加额外的内容信息。

accept-ranges:bytes||none 服务器告诉客户端,自己能否处理范围请求age:出现在缓存服务器(代理)中,即缓存服务器告知客户端,源服务器在多久前创建了响应。(单位:s)Etag:能告知客户端实体标识,属于一种可将字符串作为唯一标识的方式,服务器会为每份资源生成对应的Etag值。(分为强Etag值、弱Etag值)location:浏览器实现对重定向的资源的访问。

(4)实体:针对请求报文和响应报文实体使用的首部。目的:补充实体相关信息,如资源更新时间等。

alllow:服务器通知客户端,自己能够支持访问`请求URI所描述的资源`的所有HTTP方法。content-encoding:告知客户端和服务器,对实体主体所使用的内容编码方式。Expires:描述资源失效的绝对日期,并告知客户端。若客户端请求时间在Expires之前,则缓存服务器资源未过期,并返回给客户端;若客户端请求时间在Expires之后,相当资源已过期,缓存服务器会在请求发送来之前,向源服务器请求新资源。lat-modified:资源最终的修改时间

3.非HTTP1.1首部字段

还有在其他RFC定义的首部字段,如COOKIE、set-cookie等

4.(1)端到端首部:首部会转发请求/响应,给最终接受目标。

(2)逐跳首部:首部只对单次转发有效。常见首部字段如下:
Connection,keep-alive,proxy-authenticate,proxy-authorization,trailer,TE,transfer-Encoding,Upgrage.除此之外,独属于端到端首部。

原创粉丝点击