对于HTTP来说,我们不需要说太多,HTTP又叫做超文本传输协议,现如今利用最多的版本是1.1版本。

HTTP的特点:C/S模式,B/S模式 
简单快速:基于请求和响应,请求只需要传送请求方法和路径。 
灵活:HTTP允许传输任意类型的数据对象。 
无连接:这个无连接说的是应用层的,应用层无连接,下层使用TCP依然是面向连接的,无连接的含义是限制每一次连接只进行处理一个请求,服务器处理完客户的请求以后,收到客户应答,就断开连接。 
无状态:HTTP是无状态协议。无状态说的是协议对于事务处理没有记忆能力。这次的请求和上次请求之间是无关系的。缺少状态意味着如果后续处理需要前面额信息,那么必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP方法

1.0版本最重要的两个方法,GET(请求)和POST(响应)。

工作流程

一个HTTP操作叫做一个事务: 
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。 
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:请求方法| 统一资源标识符(URL) |协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号 |一个成功或错误的代码 |后边是MIME信息包括服务器信息、实体信息和可能的内容。 
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。 
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

长连接和短连接

在HTTP1.1版本加入了长连接,接下来我们来说一说。 
HTTP长连接和短连接实质上是TCP的长连接和短连接。

HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。简单的说,你打开的服务器上的网页之间是没有任何的联系的。

长连接:HTTP/1.1开始使用长连接,用来保持连接的特性。使用长连接的HTTP协议,会在响应头加入一行代码:Connection:keep-Alive,在使用长连接的情况下,当网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端去再次进行访问,这个时候再次去访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它会有一个保持时间,可以在不同的服务器软件上去设定这个时间。实现长连接需要客户端和服务器都来支持长连接。

短连接:HTTP/1.0默认使用短连接,浏览器和服务器每次进行一次HTTP操作,就建立一次连接,任务结束以后中断连接。当客户端浏览器去访问资源的时候,这个时候就需要建立一次HTTP会话。

HTTP的长连接和短连接是对应TCP的长连接和短连接

TCP的短连接,client/server之间传递一次读写操作,然后由client断开连接,特点是管理起来比较简单,存在的链接都是有用的连接(主要此时的连接都会进行数据传输),不需要额外的控制手段。

TCP的长连接,C/S进行一次读写操作以后不进行关闭连接,后续读写操作还回去使用这个连接。

此时使用的是TCP的保活功能,保活功能主要是为服务器应用提供的,服务器应用希望知道客户主机是否崩溃。

长短连接的操作步骤:

长连接: 
建立连接——数据传输。。。(保持连接)。。。数据传输——关闭连接 
短连接: 
建立连接——数据传输——关闭连接。。。建立连接——数据传输。。。

长短连接优缺点

长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,适用长连接。长连接需要进行TCP的保活探测,还有就是它只是探测TCP的存活,如果遇到恶意的链接,保活功能就不应该使用。 
在长连接下,client不会主动去关闭连接,这样随着客户端连接越来越多,server就会出现问题,太多连接要去分配数据结构来操作。 
这个时候就需要采取一些措施,例如关闭一部分长时间没有使用的连接,防止出现服务器崩溃,如果条件允许,就可以限制客户端的最大长连接数目,防止一台客户端机器去占有太多对服务器产生损害。

短连接的管理就是存在的连接都是有用的连接,不需要额外的控制手段。唯一的缺陷就是如果有频繁的请求,这个时候将会在TCP的建立和关闭上浪费时间和带宽。

长连接的应用:数据库的连接使用长连接,因为数据库是经常要进行写入写出的操作的。

短连接的应用:WEB网站的HTTP服务一般来说都会使用短连接,长连接会耗费一定的资源,造成高并发的问题。

HTTPweb服务器——HTTP基本知识的更多相关文章

  1. linux服务器安全小知识

    使用单用户模式进入系统 Linux启动后出现boot:提示时,使用一个特殊的命令,如linuxsingle或linux 1,就能进入单用户模式(Single-User mode).这个命令非常有 ...

  2. 基于python创建一个简单的HTTP-WEB服务器

    背景 大多数情况下主机资源只有开发和测试相关人员可以登录直接操作,且有些特定情况"答辩.演示.远程"等这些场景下是无法直接登录主机的.web是所有终端用户都可以访问了,解决了人员权 ...

  3. HTTP-web服务器接收到client请求后的处理过程(很详细)

    1. 客户发起情况到服务器网卡: 2. 服务器网卡接受到请求后转交给内核处理: 3. 内核根据请求对应的套接字,将请求交给工作在用户空间的Web服务器进程 4. Web服务器进程根据用户请求,向内核进 ...

  4. 用npm来部署快速一个httpweb服务器

    https://blog.csdn.net/u012182627/article/details/55060594 http-server的安装######注意事项 安装http-server的时候 ...

  5. IDC服务器的六大基础知识

    无论企业或个人来说,一个是否适合自己的IDC运营商对于业务发展是至关重要的.然而很多用户对IDC行业一知半解,不太了解服务器的种类,更不知道选择什么样的服务器更适合自己了.今天编辑汇总了一些IDC所需 ...

  6. Fedora14下首次搭建Samba服务器遇到的一些问题

    SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的通信协议.而Samba则是在Linux和Unix系统上实现SMB协议的一个免费软件,由服务器及客户端程 ...

  7. 用C写一个web服务器(一) 基础功能

    .container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...

  8. 通过express搭建自己的服务器

    前言 为了模拟项目上线,我们就需要一个服务器去提供API给我们调用数据.这次我采用express框架去写API接口.所有请求都是通过ajax请求去请求服务器来返回数据.第一次用node写后端,基本就是 ...

  9. 基于TCP的安卓服务器开发

    一.说明 前文介绍了基于安卓客户端的开发,在此基础上,进行少许改动即可开发出一款基于TCP的安卓服务器,理论知识请参见笔者上一篇博文,下面直接实践操作. 二.权限申明 <!--允许应用程序改变网 ...

随机推荐

  1. CI框架去除index.php

    打开apache的配置文件,conf/httpd.conf : LoadModule rewrite_module modules/mod_rewrite.so 把该行前的#去掉. 搜索 AllowO ...

  2. Linux工具-nmon

    1.nmon下载地址:https://sourceforge.net/projects/nmon/files/ 创建文件nmon:# mkdir nmon 解压文件夹:# tar -zxvf nmon ...

  3. 【Oracle】查看被锁的表和解锁

    --以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$proce ...

  4. SQL Server Mobile/Compact Edition 简单介绍

    除了SQL Server Express,SQL Server还有个更轻量级的版本:SQL Server Compact Edition,容易让人想起Windows Compact Edition ( ...

  5. 五、python小功能记录——打包程序

    使用pyinstaller打包Python程序 安装工具 :pip3 install pyinstaller 在Python程序文件夹上(不点进去)按住shift并且右键,在弹出的选项中点击" ...

  6. Linux入门-3 Linux磁盘及文件系统管理

    1. 磁盘基本概念 1.1 磁盘结构:盘片(单碟vs多碟).磁头(读写数据) 1.2 磁盘在Linux中的表示 1.3 分区概念 2 使用fdisk进行磁盘管理 3 Linux文件系统 mke2fs ...

  7. 为什么TCP协议终止链接要四次?

    为什么TCP协议终止链接要四次? 1.当主机A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FIN给主机B. 2.主机B收到A发送的FIN,表示收到了,就会发 ...

  8. MTK 官方 openwrt SDK 使用

    来源 1.https://github.com/unigent/openwrt-3.10.14 上面有个   问题:SDK 缺少 linux-3.10.14-p112871.tar.xz 在 http ...

  9. 1、Node.js 我的开始+安装

    内容:为什么开始学习node.js,需要安装哪些东西,及其安装过程 node.js的学习是按照菜鸟教程的node.js教程学习,学习这项技术主要是因为需要使用. 需要安装的东西:解释器,IDE(集成开 ...

  10. SVG中的元素属性

    SVG attributes by category Animation event attributes onbegin, onend, onload, onrepeat Animation att ...