HTTPweb服务器——HTTP基本知识
Posted 聚成网络
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPweb服务器——HTTP基本知识相关的知识,希望对你有一定的参考价值。
对于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基本知识的主要内容,如果未能解决你的问题,请参考以下文章
对于非 RESTful 的 HTTP Web 服务或对此类 Web 服务的调用是不是有标准术语?