HTTP响应连接介绍

HTTP即超文本传输协议,web站点的实现就是基于HTTP协议得以实现。本文将详细讨论HTTP。

1. HTTP协议版本:

HTTP从诞生到现在一共有如下几个版本:

  • HTTP 0.9:是最早的版本,为HTTP的原型版本,其功能非常简陋;

  • HTTP 1.0:此版本增加了很多新特性,如cache,method,MIME等,MIME的出现让网页不再是单纯的纯文本界面,而是可以嵌入很多的多媒体资源;

  • HTTP 1.1:此版本增强了缓存功能;

  • HTTP 2.0:为最新版本,增加了很多新的特性,但目前并没有大范围使用;

目前使用最广泛的还是HTTP 1.0和1.1的版本。

2. HTTP的工作模式:

HTTP工作于tcp/ip协议之上,所以HTTP需要依托于tcp的三次握手和四次断开机制来确保通信的可靠性。

HTTP的工作主要分为两部分:

  • http请求报文(http request):客户端向服务器发送请求报文;

  • http响应报文(http response):服务器相应客户端报文请求;

一次完整的HTTP的请求处理过程分如下步骤:

  1. 建立或处理连接:接受请求或拒绝请求;

  2. 接收请求:接收来自于客户端的请求报文中对某一特定资源的请求;

  3. 处理请求:对请求报文进行解析,根据请求报文的内容获取相应的资源;

  4. 访问资源:获取请求中指定的资源;

  5. 构建响应报文;

  6. 发送响应报文:添加IP头,TCP头,数组帧头文件等;

  7. 记录日志;

3. HTTP接受请求的模型

目前HTTP的请求模型都是并发响应模型,并发响应模型分如下几种:

  1. 单进程I/O模型:启动一个进程处理所有的用户请求,意味着所有的请求按照顺序被串行处理,效率非常低;

  2. 多进程I/O模型:由父进程创建多个子进程,每个子进程响应一个请求;

  3. 复用的I/O模型:表示一个进程相应多个请求,其又分为如下模式:

    • 多线程模式:一个进程生成n个线程,每个线程处理一个请求;

    • 事件驱动(event-driven):一个进程直接处理n个请求;

  4. 复用的多线程I/O结构:启动m个进程,每个进程处理n个线程,即可以响应请求的数量为m*n个;

随着现在网站的访问量越来越大,所以目前单进程I/O模型已经很少被用到了。

4. HTTP请求处理中的连接模式

目前网站的访问已经越来越多,尤其是对于主要业务集中在web站点上的公司来说尤其如此。据亚马逊的统计,如果在打开一个网站的时候等待3秒以上,那么可能就会丢失75%的用户量,而如果再打开一个网站的时候等待了10秒以上,那么就会丢失95%的用户量。所以网站的响应速度已经和企业的发展息息相关了。

那么在此详细描述一下用户在访问一个网站的流程:

首先用户会在客户端通过网站地址打开网站。正常来说一个网页会由很多资源组成,比如:图片,视频,流媒体,文字等。所以在我们看来所有内容都位于一个页面加载,但是在浏览器的后台其实是有多个资源请求的:

HTTP响应连接介绍

如图打开的是www.sina.com的站点,右侧可以看到的是打开这一个站点所请求的资源列表。由此我们知道一个网页的打开是需要调用很多资源的。

下面我们来介绍HTTP在处理请求的连接模型:

其连接模式分为两种方式:

  • keep-alive长连接模式;

  • 非保持连接模式;

4.1 非保持连接模式

非保持连接模式表示web站点在响应了客户端的一个响应请求之后就会断开此请求而再重新建立一个新的请求去处理其他的响应信息。我们都知道HTTP是建立在TCP协议之上的,其每次通信都会有三次握手和四次断开的请求。这样的话就会造成一个问题:服务器和客户端大部分的时间会用在频繁的建立连接和断开上,通信效率会降低很多。由此就产生了长连接模式来解决此问题。

4.2 keep-alive长连接模式

keep-alive表示当客户端和服务器建立起连接之后并不会因为一个资源传输结束而断开连接,而是在此连接之上做多次资源的传输,这样就不会把过多的时间浪费在建立连接和断开连接的过程中。不过这样也会带来一个问题:如果有其他客户端此时发起响应请求,此次连接不断开的话其他客户端将无法接入服务器。此问题通过如下两种方式来解决:

  1. 定义传输资源数量上限:比如定义为200,当传输的资源数目达到200之后会服务器会自动断开此连接去相应其他客户端请求;

  2. 定义长连接时长:比如定义10秒,当连接达到10s之后服务器也会自动断开此连接。

以上两种方式哪一种先达到就会以哪一种为准,这样就避免了某一客户端长期占据服务器资源,同时也避免了非保持连接的弊端。

5. 总结

此文主要介绍了HTTP协议的版本,并发请求连接模型,客户端和web站点之间的数据相应方式和http的两种连接模式。后续会带来HTTPD服务的详细介绍。


原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/77258

(0)
王子豪王子豪
上一篇 2017-05-31 08:52
下一篇 2017-05-31 20:02

相关推荐

  • Nginx 基础 (IO模型、编译安装、几大块配置文件详解)

    Nginx基础 前言 apache在设计的时候已经考虑了并发访问模型,select()机制可以响应1024个访问,但是当数量再大,千万级别的时候http就响应不过来了。这个时候,nginx的出现解决了这一个问题。nginx是一个安装简单、配置文件简单、占用内存少、稳定性高、处理并发能力非常强、灵活好用等有点聚集于一身的轻量级服务器。在Linux操作系统中,N…

    Linux干货 2016-12-24
  • RAID详解

    1、什么是RAID RAID:独立硬盘冗余阵列,旧称廉价磁盘冗余阵列,简称磁盘阵列。其基本思想就是将多个相对便宜的硬盘结合起来,成为一个磁盘阵列,是性能达到甚至超过一个昂贵、容量巨大的硬盘,根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。目前应用较多的有RAID0,RAID1,RAID4,RA…

    Linux干货 2017-01-03
  • yum仓库配置

    yum仓库搭建 yum客户端在安装之前要在服务器下载相关的源数据缓存在 cachedir=/var/cache/yum/$basearch/$releasever中 gpgcheck=1检查数据包的签名完整性 导入钥匙或gpgcheck=0就不检查否侧安装不了yum 在/etc/yum.conf设置配置文件 在/etc/yum.repos.d中创建一个后缀是…

    2017-12-03
  • Linux高级文件系统管理之磁盘配额、RAID和LVM的使用

    磁盘配额Quota 磁盘配额(Quota)的作用:   在Linux系统中,由于是多用户、多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量占掉了硬盘空间的话,那肯定影响其他用户的使用权限。因此管理员应该适当限制硬盘的空间给用户,以妥善分配系统资源。 磁盘配额的一般用途    比较常使用的几种…

    Linux干货 2016-09-02
  • 第二周作业

    1 linux 常见的文件管理命令都有哪些?其常用的使用方法。 ls 文件列出命令   常见选项  -l 显示长文本信息          -d 显示当前目录信息          -a 显示所有文件信息     &nb…

    Linux干货 2016-09-26
  • 超级用户切换普通用户后如何重置root密码

    今天在使用su命令切换root用户和普通用户使用中不小心改了root密码,在普通用户条件下怎么也切换不到root用户,于是通过搜索和尝试终于改了root密码,现以centos7为例总结如下: 1、首先进入开启菜单,按下e键进入编辑模式,找到ro那一行,将ro改为rw,在语言后面加上init=/bin/sh 2、根据提示按下ctrl-x键(注意选中x) 3、尝…

    Linux干货 2017-03-27

评论列表(1条)

  • renjin
    renjin 2017-06-02 16:23

    一次完整的HTTP的请求处理过程分如下步骤:
    建立或处理连接、接收请求、处理请求、访问资源、构建响应报文、发送响应报文、记录日志。
    这是个重点,尽量达到没有参考的情况下能说得出来