魔法兔子官网

时间:2024-02-12 03:39:00 编辑:大鹏 来源:长期打折网

关于HTTP 你不能不知道的,HTTP是...?...

关于HTTP 你不能不知道的
关于HTTP 你不能不知道的
提示:

关于HTTP 你不能不知道的

HTTP:Hyper Text Transfer Protocol(超文本传输协议),是用于服务器向浏览器传输超文本的协议,其建立在TCP/IP之上,由于其简单、快速的特点,得到广泛应用。小采风同学,自作主张选取部分方面,粗略的聊一聊我们不能不知道的常识。

    HTTP协议定义web客户端(通常为浏览器,以下统称为浏览器)向服务器发送请求报文,服务器读取请求报文内容,定位URL中相应资源,以响应报文的方式传送给浏览器,浏览器解析响应报文中的实体数据,呈现出静态和动态页面。其工作原理如下所示:

1)浏览器建立连接

浏览器根据DNS返回的域名的IP地址和服务器端口号(默认为80),建立基于TCP的套接字连接,具体参考 TCP之连接的建立与终止


2)发送HTTP请求

以请求报文的形式,包括请求行、请求头部、空行和实体数据部分

3)服务器解析请求并发送HTTP响应

服务器解析请求报文,定位请求资源位置,以响应报文的方式返回,包括响应行、响应头部、空行和实体数据,具体分析见下文

4)浏览器解析实体数据

将静态页面和动态页面显示在浏览器窗口

    在HTTP/1.0版本中,其连接建立一次,断开一次。为解决此问题,HTTP/1.1中提出持久化连接方式,只要任意一端没有提出断开连接,则保持TCP连接状态。在持久连接基础上,管线化发送成为可能。管线化方式,无需等待上次请求响应,直接发送下一次请求,如图一所示:

    双方在传送数据时,在不同的业务场景下,可选择不同方式来提高效率。常见的有压缩传输、分割传输的分块传输、多部分对象结合传输和部分内容的范围请求传输。

    需要注意的是,HTTP只被用来发布客户端和服务端的应用层命令。当进行数据传输时,除了在数据流的开始和结束部分,是看不到应用层的控制信息的,如图2所示:

HTTP报文分为请求报文和响应报文,其组成包括请求首部(响应首部)、空白行和实体数据组成。空白行,即使没有数据也不能省略。而请求首部由请求行(响应首部由响应行)、请求头部(响应头部)、通用首部、实体首部和其他项组成,如图3所示:

上图中请求行和状态行,是需要特别注意的。而首部的类型和种类之多,需要参考《HTTP权威指南》查阅学习。


1)请求行:方法名、路径名和版本号组成

HTTP/1.1中有八种方法,下面一一介绍方法的使用情况:

GET:用来请求访问已被标示的资源,资源是文本,直接返回;资源是程序,返回执行的结果

POST : 用来传输实体主体,与GET类似,但是主要目的并不是为获取响应的主体内容

PUT : 用来传输文件,因自身不具备验证机制,存在安全问题,通常不使用

DELETE : 用来删除文件,与PUT方法相反,同样因自身不具备验证机制,通常不使用

HEADER: 与GET方法相同,只是不返回报文实体数据,主要用于确认URL的有效性及资源的 日期时间等

OPTIONS: 用来查询针对请求URI指定的资源支持的方法

TRACE: 用来确认连接过程中发生的一系列操作,因容易产生跨站追踪攻击,通常不使用

CONNECT:基于SSL和TLS实现通信内容加密传输,主要在HTTPS中使用,下文介绍

而上面的八种方法中,通常是GET和POST方法,介绍一下二者的不同,如图4和图5所示:


a)GET参数包含在URL中,以?与路径区分,多个参数用&连接;POST参数包含在请求报文的实体数据中

b)URL的数据有长度限制,所以GET方式有限制;通常POST方式没有长度限制

c)GET的数据在URL中,使用明文传送,容易被获取;POST数据也是基于明文传送,安全性比GET好一些

2)响应行:版本号、状态码

状态码由表示状态的数字和原因短语组成,状态码分类如下图6:

状态码种类繁多,有60多种,具体参考 状态码查询 ,常见的有12种,介绍如下:

200 OK : 表示浏览器发来的请求在服务器端被正常处理了

204 No Content : 表示浏览器发来的请求被服务器正常处理了,但是返回的响应报文中不包含实体数据,及浏览器的页面不更新

206 Partial Content : 服务器仅返回指定范文中的数据,即上文中的部分内容范围传输方式

301 Moved Peramanently : 永久性重定向,即该请求资源被重新分配了URI

302 Found : 暂时性重定向,即该请求的资源被被分配新的URI,希望本次使用新的URI

304 Not Found : 浏览器发送带有附带条件的请求,但因发生条件不满足的情况,服务器端不返回

400 Bad Request : 表示请求报文中存在语法错误

401 Unauthorized : 第一次请求,表示需要通过HTTP认证;若经过第一次请求,仍然出现表示认证失败

403 Forbidden : 表示请求的资源被服务器拒绝了

404 Not Found : 表示服务器无法找到相应的资源,也可以表示服务端拒绝请求且不想说明原因

500 Internal Server Error : 表示服务器在执行请求时发生错误

503 Service Unavailable : 表示服务器暂时处于超负载或正在进行停机维护

事务具有两面性,HTTP的简单也带来了相应的问题,其是一种无状态的不安全的协议,针对这两种劣势,小采风和大家一起继续往下看:

HTTP是一种无状态协议,不能管理之前的请求和响应间的状态。为解决此问题,引入Cookie机制,通过在请求和响应报文中增加Cookie信息来管理状态,cookie字段就是上文报文结构中的其他项里,如下图7所示:

Session是服务器为浏览器请求建立的程序。服务器根据请求报文中sid来标示该访问的Session,如果没有,则重新生成,并在响应报文中重新添加sid,cookie与session的区别如下:

a)cookie在浏览器端,session在服务器端

b)cookie不安全,容易被利用进行cookie欺骗

c)session可以设置超时时间,一旦超时,重新建立

关于其具体的工作机制,参考 cookie和session的区别详解  


HTTP存在的不足有:

a)浏览器和服务器互相不认证,可能遭遇伪装

b)通信的传输数据使用明文传输,容易被截获修改

c)数据的完整性无法保证,中途被人篡改也不知道

    HTTPS是如何弥补HTTP在安全方面的不足呢?HTTPS不是应用层新的协议,而是通过SSL和TSL代替HTTP的通信协议接口。通常,HTTP直接与TCP进行通信,而HTTPS中,HTTP先与SSL进行通信,后与TCP进行通信。SSL是目前应用最广泛的网络安全技术。

    在介绍SSL解决HTTP安全性问题之前,我们先来了解一下加密方法。

    通常,加密算法是大家都知道的,但是加密和解密的密钥是不知道的。一旦加密和解密密钥泄露,存在安全性问题。共享密钥加密方式,也称为对称密钥加密方式,浏览器和服务器加密和解密使用相同的密钥。可是,密钥该如何传输呢?传输中间被攻击,则安全性没有保证。

    人类似乎天生就是来解决问题的。公开密钥加密方式,也称为非对称加密方式。服务器,拥有一对存在一定关系的公开密钥和私有密钥。服务器将公开密钥传送给浏览器,浏览器使用收到的公开密钥进行加密,即使中间收到攻击,也因为没有解密密钥,即私有密钥,无法解密。服务器收到加密数据后,使用私有密钥成功解密。

    公开密钥加密方式,处理速度相比于共享密钥加密方式比较慢。

    HTTPS中,SSL充分结合两者优势,利用公开密钥加密方式传输后面使用的共享密钥加密解密的密钥,然后浏览器和服务器使用共享密钥进行加密解密处理,如图8所示:

        HTTPS相比于HTTP,处理速度要慢2到200倍。主要速度影响在,

a)通信处理:HTTP与TCP之间加上SSL之后,通信量会增加很多

b)加密解密:消耗服务器和浏览器端硬件资源,造成较大负载

    所以,并不是所有的均使用HTTPS,敏感信息使用HTTPS,非敏感信息使用HTTP。

近日来,小采风沉迷在协议的迷乱中不能自拔,未来,会近一步推出协议类系列文章,欢迎各位看官关注哦!

HTTP是...?
提示:

HTTP是...?

更新1: Benny Tse : 是什么?? 1) HTTP是HyperText Trfer Protocol 是网际网路上应用最为广泛的一种网路传输协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 2) COM是Commerical的简写 即商用 是一个Top Level Domain 顶级域(TLD)是域名的最后一个部份,即是域名最后一点之后的字母。例如在 *** 这和域名中,顶级域是(或ORG),大小写视为相同。

上一篇:黄雪鹰
下一篇:没有了
相关文章
最新资讯
热门资讯