【C-S体系结构的应用程序及应用层协议】Web和HTTP

1. HTTP概况

1.1 HTTP的实现

超文本传输协议HTTP由两个程序实现:一个客户程序和一个服务器程序,两个程序运行在不同端系统中,通过交换HTTP报文进行会话。
HTTP使用TCP作为自己的运输层协议。HTTP是一个无状态协议(服务器并不会保存关于客户的任何信息)。

1.2 Web术语
  1. Web页面:也叫文档,由对象组成
  2. 对象(object):一个文件,例如HTML文件、JPEG图形、Java小程序或是一个视频片段,这些文件1可以通过URL地址寻址
  3. URL(统一资源定位符):由存放对象的服务器主机名和对象的路径名组成,用于唯一标识一个文档。
  4. Web浏览器和服务器:Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务器端,用于存储Web对象,每个对象由URL寻址。
  5. 超文本标记语言HTML:用于创建网页的标准标记语言,使用HTML描述的文件需要通过web浏览器显示出效果。
1.3 统一资源定位符URL
  1. 格式:
    <协议>://<主机>:<端口>/<路径>,端口和路径有时可以省略。
  2. 使用HTTP的URL
    HTTP的默认端口号为80,通常可以省略,若路径也省略,URL就指到因特网上的某个主页。
    例如http://www.tsinghua.edu.cn是清华大学的主页,而https://www.tsinghua.edu.cn/chn/yxsz/index.html就指向了主页的从属页面

2. 非持续连接和持续连接

非持续连接:每个请求-响应对经过一个单独的TCP连接发送。
持续连接:所有的请求及其响应经过相同的TCP连接发送。

2.1 采用非持续连接的HTTP(HTTP1.0)

每个TCP连接只传输一个请求报文和一个响应报文。每个TCP连接在服务器发送一个对象后关闭。
TCP建立连接的三次握手的第三个报文段中捎带了客户对HTML文件的请求。
在这里插入图片描述
总的响应时间=两个RTT(短分组从客户到服务器再返回客户所需的时间)+ 服务器传输HTML文件的时间

缺点

  1. 每请求一个文档就要有两倍的RTT开销,时延较大。
  2. 必须为每一个请求建立一个新的连接,每个TCP连接都需要分配缓存和变量,有大量客户请求时服务器的负担很重。
2.2 采用持续连接的HTTP(HTTP1.1)

服务器在发送响应后保持该TCP连接打开,在相同的客户与服务器之间,后续的请求和响应报文能通过相同的连接进行传送。
若一条连接经过一定时间间隔(一个可配置的超时间隔)仍未被使用,HTTP服务器就关闭该连接。

持续连接有两种工作方式——非流水线方式和流水线方式。
非流水线方式:客户收到前一个响应后才能发出下一个请求。客户每访问一次对象都要消耗一个RTT,服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
流水线方式:客户只要遇到一个引用对象就尽快发出请求,于是一个接一个的请求报文到达服务器后,服务器就可以持续发回响应报文。因此,客户访问所有的对象只需花费一个RTT时间。

3. HTTP的报文结构

HTTP的报文类型:请求报文和响应报文
两种报文都是由3部分组成:开始行(区分是请求报文还是响应报文)+首部行+实体主体

3.1 请求报文

在这里插入图片描述

  1. 请求方法。指的是对所请求的对象进行的操作,实际上就是一些命令,故请求报文的类型由它采用的方法决定。
方法意义
OPTION请求一些选项的信息
GET请求读取由URL所标志的信息
HEAD请求读取由URL所标志的信息的首部
POST给服务器添加信息(例如注释)
PUT在指明的URL下存储一个文档
DELETE删除指明的URL所标志的资源
TRACE用来进行环回测试的请求报文
CONNECT用于代理服务器
  1. 首部行:首部名:(空格)首部值(回车换行)
    User-Agent:表明用户代理
    Accept:客户端可识别的响应内容类型列表
    Accept-Language:客户端可接受的自然语言
    Accept-Encoding:客户端可接受的编码压缩格式
    Accept-Charset:可接受的应答的字符集
    Host:请求的主机名(允许多个域名同处于一个IP地址,即虚拟主机)
    connection:连接方式(close或keepalive)
    Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie
3.2 响应报文

在这里插入图片描述
状态码都是3位数字的,分为5大类共33种。

类型含义
1xx通知信息,如请求收到了或正在进行处理
2xx成功,如接受或知道了
3xx表示服务器要求客户端重定向
4xx客户的差错,如请求中有错误的语法或不能完成
5xx服务器的差错,如服务器失效无法完成请求

常用状态码:

  1. 200 OK:请求成功,信息在返回的响应报文中
  2. 301 Moved Permanently:请求的对象已被永久转移了,新的URL定义在响应报文的首部行中,客户软件会自动获取新的URL
  3. 400 Bad Request:一个通用差错代码,指示该请求不能被服务器理解。
  4. 404 Not Found:被请求的文档不在服务器上
  5. 505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本

4. cookie

HTTP是无状态的,但实际使用中Web站点希望能够识别用户,为此HTTP使用了cookie,cookie是HTTP服务器和用户之间传递的状态信息。
在这里插入图片描述
简单来说,cookie的工作过程是,用户初次访问某网站时,该网站的服务器就会为该用户产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个表项,接下来该服务器就会用一个包含set-cookie的HTTP响应报文对浏览器进行响应。浏览器收到了该响应报文后,就会在它管理的特定cookie文件中添加一行(包括服务器的主机名和set-cookie后给出的识别码)。之后该用户再浏览该网站时,每发送一个HTTP请求报文,浏览器就会从cookie文件中取出该网站的识别码放到请求报文的cookie首部行中去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值