HTTP协议之HTTP的结构

一.前言:

会使用电脑的人基本上都会使用IE/Firefox/Chrome等网页浏览器的地址栏输入url地址来访问一个网站,那么网站页面是怎么展现到用户面前的呢?当然web页面是不能凭空显示出来的,浏览器根据用户输入的url地址向指定的web服务器请求资源,然后将请求的资源解析显示到web页面。那么web浏览器又是怎样通过url请求到web页面的?web服务器又是怎么响应浏览器的请求的?web浏览器是通过HTTP(HyperText Transfer Protocl)超文本传输协议作为规范,来完成客户端到服务器端的一系列流程。

二.简介:

Http协议是一种广泛流行的网络应用层协议。设计HTTP最初的目的是为了提供发布和接收HTML页面的方法。用于客户端和服务器端通信的通信的规则的制定(所谓协议就是约定的规则,好比人与人之间的交流没有约定的规则是无法交流的).只要是遵守Http协议的浏览器,服务器之间就可以进行通信。

三.HTTP的特点:

  1. 支持客户端/服务器模式
  2. 简单快速
  3. 灵活
  4. 无连接 所谓无连接是指默认http协议限制每一次连接只处理一个请求。服务器处理完客户端的请求,并受到客户端的应答后即断开连接。
  5. 无状态 是指Http协议对事务处理没有记忆能力,服务器不知道客户端是什么状态,客户端的每一请求都是独立的,服务器根据请求,响应客户端的请求,但不会记录任何客户端信息

四.Http优缺点:

http的无连接,采取这种方式可以节约大量时间。但是随着互联网的发展,网页不在是简单的静态页面,需要处理大量的图片等,这样每一次访问都需要建立一次连接效率很低。Http 1.1Keep-Alive 被提出用来解决这效率低的问题。

HTTP的无状态这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。客户端与服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的。两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。

五.HTTP协议的结构:

请求报文:
  1. 请求首部: 
    • 请求行:包含请求的方法,请求的URL和请求的HTTP版本
    • 请求首部字段:从客户端向服务器端发送请求报文是使用的首部。补充说明了请求的附加内容、客户端信息、响应内容优先级等信息。
    • 通用首部字段:请求报文和响应报文都会用到的首部
    • 实体首部字段:针对请求报文和响应报文实体部分使用的字段。补充说明了资源内容、更新时间等与实体有关的信息。
    • 其他:如set-cookies等非Http协议的请求头
  2. 空行:[CR+LF]由它来划分
  3. 报文主体:应该被发送的数据(并不一定要有报文主体)
响应报文:
  1. 报文首部: 
    • 状态行:包含Http版本号,响应结果状态码和原因语句
    • 响应首部字段:从服务器向客户端返回响应豹纹是使用的首部。补充说明了响应的附加内容,也会要求客户端附加额外的内容信息 。
    • 通用首部字段:同上
    • 实体首部字段:同上
    • 其他:同上
  2. 空行:同上
  3. 报文主体:同上

Chrome请求www.baidu.com如图: 

请求和响应的内容:

请求行:
GET http://www.baidu.com/ HTTP/1.1

请求头:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:www.baidu.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36

响应行:
Http/1.1 200 ok

响应头:
BDPAGETYPE:1
BDQID:0xbabd68fc00007703
BDUSERID:0
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Cxy_all:baidu+be175779b859a62a7a28a9afd86882b0
Date:Sat, 19 Nov 2016 06:35:48 GMT
Expires:Sat, 19 Nov 2016 06:35:38 GMT
Server:bfe/1.0.8.18
Set-Cookie:BDSVRTM=15; path=/
Set-Cookie:BD_HOME=0; path=/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lqf19961017/article/details/53435991

猜你喜欢

转载自blog.csdn.net/lemontree1945/article/details/80566748
今日推荐