http学习

来源:互联网 发布:阿里云电话人工服务 编辑:程序博客网 时间:2024/05/01 05:07

http://www.jianshu.com/p/211833051bf9

一,简单初步的Web和网络基础介绍当我们在网页浏览器的地址栏中输入URL时,或许会思考Web页面是如何诚呈现的呢?Web页面当然不能凭空显示出来,而是通过发送请求从Web服务器端获取文件资源并显示出来。另外,Web是建立在HTTP协议上通信的。

1

为了更好的理解HTTP,我们有必要在此之前了解一下TCP/IP协议族。TCP/IP协议族是把互联网想关联的协议集合起来后的总称。而其中最重要的概念就是分层,协议族按层次主要分为以下四类:应用层、传输层、网络层和数据链路层。

2

关于TCP/IP相关信息在此不做详述,这里就暂用一张图标来了解一下IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥的作用。

3

URL正是使用Web浏览器等访问Web页面时需要输入的网页地址。URI是Uniform Resource Identifier的缩写,是由某个协议方案表示的资源的定位标识符。表示指定的URI涵盖全部必要信息的绝对URI、绝对URL以及相对URL。相对URL是指从浏览器中基本URI处指定的URL。而绝对URL的格式则是

4

二,HTTP协议结构HTTP协议用于客户端和服务器端之间的通信,并通过请求和响应的交换而达成通信。请求由客户端发出,而服务器回复响应。请求报文的构成如下,其中POST表示请求访问服务器的类型,称之为方法。请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。

5

响应报文的构成如下,响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

6

另外,HTTP是不保存状态的协议,即无状态协议,自身不对请求和响应之间的通信状态进行保存。这样的设计对快速处理大量事务,确保协议的可伸缩性有一定的帮助,但是无状态也会导致业务处理变得有时棘手,例如跳转到同一购物网站的其他页面,当然能够继续保持登录状态是对用户更友好的。因此,在此引入了Cookie技术。Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。下图很形象地描述了Cookie的作用。

7

HTTP/1.1中可使用的方法有:1,GET:获取资源GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。如果请求的是文本,则保持原样返回;如果是类似CGI(通用网关接口)那样的程序,则返回经过执行后的输出结果。

8

2,POST:传输实体主体POST方法用来传输实体的主体。虽然用GET方法可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法。但是POST的主要目的不是获取响应的主体内容。

9

3,PUT:传输文件PUT用来传输文件。它要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。但是要注意的是PUT方法自身不带验证机制,任何人都可以上传文件,这里存在着安全性问题。若配合Web应用程序的验证机制,或架构设计采用REST(表征状态转移)标准的同类Web网站,就可能会开放使用PUT方法。

10

4,HEAD:获取报文首部HEAD方法与GET方法一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等。

11

5,DELETE:删除文件DELETE方法用来删除文件,是与PUT相反的方法。它按请求URI删除指定的资源。但是HTTP/1.1的DELETE方法本身和PUT方法一样不带验证机制,所以一般Web也不使用。当配合Web应用程序的验证机制,或遵守REST标准还是有可能会开放使用的。

12

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

13

7,TRACE:追踪路径TRACE方法让Web服务器端将之前的请求通信环回給客户端的方法。发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务器就将该数字减1,当数值刚好减为0时就停止继续传输,最后接收的请求的服务器则返回状态码200 OK的响应。客户端可以通过TRACE方法查询发送出去的请求是怎样呗加工修改/篡改的。

14

8,CONNECT:要求用隧道协议连接代理CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信,这其中主要使用SSL和TLS协议把通信内容加密后经网络隧道传输。

15

持续连接最后说下持续连接。由于HTTP协议的初始版本中,每次进行一次通信都要断开一次TCP连接。但是由于传输信息量的增大,每次请求都造成的无谓TCP连接建立和断开,增加了通信量的开销。因此,提出了持续连接HTTP keep-alive方法,它的特点是只要任意一端没有明确提出断开连接,则保持TCP连接状态。这样减轻了服务器的负载。在HTTP/1.1中,所有连接都是默认是持续连接。持续连接多数请求以管线化方式发送成为可能。这样就能做到同时并行发送多个请求,而不需要一个接一个地等待响应了。管线化技术比持续连续还要快,请求数越多,时间差越明显。

作者:_SecondLife链接:http://www.jianshu.com/p/211833051bf9來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。






http://blog.csdn.net/posonrick/article/details/77891954

今天我总结了什么是HTTP三次握手,还有HTTPS握手的过程以及为什么HTTPS是安全的。

前提

在讲述这两个握手时候,有一些东西需要提前说明。

HTTP与TCP/IP区别?

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI(Open System Interconnect)模型中的位置:

PS:表格来自网上资料

CA证书是什么?

CA(Certificate Authority)是负责管理和签发证书的第三方权威机构,是所有行业和公众都信任的、认可的。

CA证书,就是CA颁发的证书,可用于验证网站是否可信(针对HTTPS)、验证某文件是否可信(是否被篡改)等,也可以用一个证书来证明另一个证书是真实可信,最顶级的证书称为根证书。除了根证书(自己证明自己是可靠),其它证书都要依靠上一级的证书,来证明自己。

HTTP三次握手

HTTP(HyperText Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议。由于信息是明文传输,所以被认为是不安全的。而关于HTTP的三次握手,其实就是使用三次TCP握手确认建立一个HTTP连接。

如下图所示,SYN(synchronous)是TCP/IP建立连接时使用的握手信号、Sequence number(序列号)、Acknowledge number(确认号码),三个箭头指向就代表三次握手,完成三次握手,客户端与服务器开始传送数据。

PS:图片来自网上资料

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

HTTPS握手过程

HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。具体是如何进行加密,解密,验证的,且看下图,下面的称为一次握手。

PS:图片以下描述摘自:http://zhuqil.cnblogs.com

1. 客户端发起HTTPS请求

2. 服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以是自己制作或者CA证书。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用CA证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。

3. 传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等。

4. 客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值,然后用证书对该随机值进行加密。

5. 传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6. 服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7. 传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8. 客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。

PS: 整个握手过程第三方即使监听到了数据,也束手无策。

总结

为什么HTTPS是安全的?

在HTTPS握手的第四步中,如果站点的证书是不受信任的,会显示出现下面确认界面,确认了网站的真实性。另外第六和八步,使用客户端私钥加密解密,保证了数据传输的安全。

HTTPS和HTTP的区别

1. https协议需要到ca申请证书或自制证书。

2. http的信息是明文传输,https则是具有安全性的ssl加密。

3. http是直接与TCP进行数据传输,而https是经过一层SSL(OSI表示层),用的端口也不一样,前者是80(需要国内备案),后者是443。

4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

注意https加密是在传输层 

https报文在被包装成tcp报文的时候完成加密的过程,无论是https的header域也好,body域也罢都是会被加密的。

当使用tcpdump或者wireshark之类的tcp层工具抓包,获取是加密的内容,而如果用应用层抓包,使用Charels(Mac)、Fildder(Windows)抓包工具,那当然看到是明文的。

PS:HTTPS本身就是为了网络的传输安全。

例子,使用wireshark抓包:

http,可以看到抓到是明文的:

https,可以看到抓到是密文的:

附录

HTTPS一般使用的加密与HASH算法如下:

非对称加密算法:RSA,DSA/DSS

对称加密算法:AES,RC4,3DES

HASH算法:MD5,SHA1,SHA256



原创粉丝点击