【计算机网络】HTTP协议简述

HTTP协议是什么

Web应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP),HTTP是Web的核心。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在两个不同的端系统上,通过交换HTTP报文进行会话。
这个两个程序需要会话,要做到统一规范才能实现彼此进行信息传达的目的,这正是HTTP发挥的作用。

HTTP定义了客户程序和服务器程序会话交换的报文的借后以及彼此之间交换报文的方式。就应用层更浅显的说,就是定义了Web客户向Web服务器请求Web页面的方式,以及Web服务器向Web客户传送Web页面的方式。

值得一提的是:HTTP使用TCP作为它的支撑运输协议,进而TCP为HTTP提供可靠的数据传输服务;还有就是HTTP服务器不保存关于客户的任何信息,HTTP是一个无状态协议,即服务器向客户发送被请求的对象而不存储关系该客户的状态信息,例如客户几秒内对同一个对象发出多次请求时服务器并不会为一秒前提供过同一对象就不再作出反应。

非持续连接和持续连接

HTTP/1.0使用非持续连接,而HTTP/1.1默认使用持续连接。这个无论是非持续还是持续的连接指的是TCP连接。
来简述一下这个非持续连接请求 http://www.school.cn/somepage/index.html 的过程:

  1. HTTP客户进程通过80号端口创建一个到服务器www.school.cn的TCP连接(三次握手),其中端口号80是HTTP默认端口号。在HTTP客户进程和HTTP服务器进程上有一个套接字与TCP连接相关联。
  2. HTTP客户进程经它的套接字接口向HTTP服务器进程发送HTTP请求报文,其中HTTP请求报文的请求行包含somepage/index.html路径名。
  3. HTTP服务器进程经他的套接字接口接收到该HTTP请求报文后,从它的存储器进行检索请求对象,将检索出的对象封装在HTTP响应报文里并经套接字接口向HTTP客户进行发送HTTP相应报文。
  4. HTTP服务器进程通知TCP断开TCP连接,此时并没有真正断开,而是等客户进程确认收到相应报文才断开连接(四次挥手)。
  5. HTTP客户进程接收到相应报文,TCP断开连接。假设该报文封装了的对象是一个HTML文档文件,提取该对象文件得到十个JPEG图片的引用。
  6. 对每个引用的JPEG对象重复前面4个步骤,因为TCP连接已断开。

值得注意的是,每个TCP连接只传输一个请求报文和一个响应报文。

持续连接情况下,HTTP服务器进程发送响应报文后保持TCP连接打开,相同客户与服务器之间,后序的请求和响应报文能后通过相同的TCP连接进行传输。特别的是,HTTP客户进程发送的前一个请求报文还未收到相应的响应报文时可以发送下一个请求报文,HTTP默认模式是使用带流水线的持续连接。

报文格式

请求报文
这是一则HTTP请求报文。

GET /somedir/page.html HTTP/1.1 ----请求行,
Host: www.someschool.edu ----以下是首部行
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr

结合上述非持续连接时交换报文。
请求行由三个字段组成:方法字段、URL字段和HTTP版本字段。
首部行见名知义了。
Host指明了对象所在的主机;
Connection指明了HTTP客户进程使用非持续连接;
User-agent指明了浏览器类型;
Accept-language指明用户想要得到对象的法语版本。

这是请求报文的通用格式。
在这里插入图片描述

其中,请求行的方法字段除了GET还有POST、HEAD、PUT和DELETE。
POST:需要提交表单时使用POST方法,而且使用POST方法时实体体不为空。
HEAD:HTTP服务器收到HEAD请求时返回没有请求的报文,常被开发者用于测试跟踪。
PUT:向Web服务器上传对象。
DELETE:允许用户或应用程序删除Web服务器上的对象。

响应报文
这是一则相应报文。

HTTP/1.1 200 OK
Connection: close
Date: Tue,18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3(CentoS)
Last-Modified: Tue,18 Aug 2015 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(data data data data data …)

首部行都是见名知义,不赘述。
但有必要提一下的是,Date和Last-Modified都表示时间,虽都是时间,于对象而言他俩不一样。Date指示服务器进程发送响应报文的时间,而Last-Modified指示这个对象创建或最后修改的时间。

响应报文一样有通用格式。
在这里插入图片描述
以下是常见的状态码和短语;

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

cookie

前面提到,HTTP协议是一个无状态协议,即HTTP服务器并不保存关于客户的任何信息。但是,像某某购物网站经常根据我们的浏览记录推送相似的商品给我们…cookie发挥着重要作用。

cookie是什么
cookie是Web站点能够识别用户并对用户进行跟踪的一种标识。

cookie是如何一回事

  1. 假设我首次访问京东 Web站点,此时该Web站点产生一个唯一的识别码,并作为索引我账号在站点后端数据库的产生的数据表,同时将该识别码封装到相应报文发送到我的浏览器。
  2. 我的浏览器获得报文并分析后,在它管理的特定cookie文件添加一行,这一行包括服务器主机名和cookie识别码。
  3. 当我第二天访问京东Web站点时,我的浏览器从它管理的特定cookie文件抽取京东Web站点的识别码,并放入到HTTP请求报文中。

所以,这个唯一的识别码就标识了一个用户了。不难发现,有些时候这个cookie还是很重要的,就比如你的身份证号一样。
如果有写过爬虫程序,这个cookie不难理解,因为常常需要弄个cookie“伪装”一下。

Web缓存器(代理服务器)

Web缓存器是什么
Web缓存器也叫代理服务器,能够代替初始Web服务器满足HTTP请求的网络实体。其中,Web缓存器有自己的磁盘存储空间,存储着最近请求过的对象的副本。

只要配置浏览器的所有HTTP请求首先指向代理服务器,浏览器发出的HTTP请求报文就指向代理服务器了。
简述一下其过程:
在这里插入图片描述

  1. 浏览器创建一个到代理服务器的TCP连接,然后向代理服务器发送一个HTTP请求报文。
  2. 代理服务器收到HTTP请求报文,进行对本地存储检查是否有该对象的副本,如果有就向浏览器用HTTP响应报文发送对象副本。
  3. 如果代理服务器没有副本,创建一个代理服务器到该对象初始化服务器TCP连接,并通过这个代理服务器到初始服务器的TCP连接发送HTTP请求报文。
  4. 初始服务器收到报文后进行检索并向代理服务器用HTTP响应报文返回该请求对象。
  5. 代理服务器收到初始服务器发送HTTP相应报文后,在本地存储该对象的副本,并向浏览器用HTTP响应报文发送请求对象(一开与代理服务器建立的TCP连接并没有断开)

为什么需要代理服务器
当客户与初始服务器之间的接入链路带宽远低于局域网带宽时,较大可能出现流量强度大于等于1的情况,这时就会出现时延在分钟量级上。通过升级接入链路带宽可以解决,但是成本将是巨额;另外可以通过代理服务器得以解决,能减少机构接入链路的通信量的同时可以降低时延。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值