对于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. bsgs(Baby Steps Giant Steps)算法

    BSGS算法(Baby Steps Giant Steps算法,大步小步算法,北上广深算法,拔山盖世算法) 适用问题 对于式子: $$x^y=z(mod_p)$$ 已知x,z,p,p为质数: 求解一个 ...

  2. COGS2217 papertask

    传送门 以前看到这题的时候觉得是道好题啊……然而今天没多久就做出来了= =(装B 表示并没有看懂其他人写的是什么做法,感觉我的做法好奇怪…… 我的做法是这样的: 首先给括号配对,不难发现所有括号串要么 ...

  3. background-position为什么会出现负值?

    上篇文章讲到了雪碧图,其中小机器人抖腿的动作设置了图片的background-position:-640px 循环到-1200px,那么这个数值是如何得出来的?下面具体分析一下如何计算backgrou ...

  4. C++学习笔记(2)----类模板和友元

    当一个类包含一个友元声明时,类与友元各自是否是模板是相互无关的.如果一个类模板包含一个非模板友元,则友元被授权可以访问所有模板实例.如果友元自身是模板,类可以授权给所有友元模板实例,也可以只授权给特定 ...

  5. 02_Netty实现的Echo服务器和客户端

    [Echo服务端] [EchoServer] public class EchoServer { private final int port; public EchoServer(int port) ...

  6. C/C++标准有哪些?

                        1. C 时间 名称 标准制定组织 事件 1978 K&R标准 K&R <The C Programming Language>   ...

  7. [转]Apache的CRT格式SSL证书转换成IIS用的PFX格式

    转自:http://www.getvm.net/apache-crt-ssl-convert-to-iis-pfx/ Apache使用的SSL证书是.crt格式,如果你的网站从Apache换到了win ...

  8. 使用自定义视图的AlertDialog

    使用自定义视图的AlertDialog主要分为以下几个步骤: 1)利用XML文件构建自己的的视图 2)将视图添加到AlertDialog中 * 在进行第二步之前,有时需要对对话框窗口进行额外的设置 下 ...

  9. 【Oracle】Update方法

    1.单表更新 update customers set city_name='山西省太原市' where city_name='山西太原' 2.两表(多表)关联update -- 被修改值由另一个表运 ...

  10. Oracle11g服务详细介绍及哪些服务是必须开启的

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/DaisyLoveZly/article/details/79463713 七个服务的含义分别为:1. ...