HTTP协议原理

一、基本概念

1. HTTP介绍

HTTP协议(Hyper Text Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

2. HTTPS介绍

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,简称HTTPS。

3. SSL

SSL(Server socket layer)是一种网络两个节点进行安全通信的协议。SSL和TLS建立在TCP/IP协议基础上。SSL使用加密技术实现会话双方信息的安全传递。

3. URI、URL

URI(Uniform Resource Identifier)统一资源标志符;
URL(Universal Resource Locator)统一资源定位符;

4. TCP/IP

TCP(Transmission Control Protocol)传输控制协议
IP(Internet Protocol)网际协议

二、协议所在的协议层

HTTP协议属于应用层协议。HTTP经典五层模型:

  1. 应用层:应用层是最高层,它提供了应用程序之间的通信服务。HTTP协议就是在这一层实现的。
  2. 传输层:传输层主要负责数据的传输,包括TCP和UDP协议。HTTP协议使用TCP协议来传输数据。
  3. 网络层:网络层主要负责数据的路由和转发,包括IP协议。HTTP协议使用IP协议来传输数据。
  4. 数据链路层:数据链路层主要负责数据的传输和错误检测,包括以太网协议。HTTP协议使用以太网协议来传输数据。
  5. 物理层:物理层主要负责数据的传输和接收,包括电缆、光纤等物理介质。
    TCP/IP协议参考模型

三、TCP/IP 计算机之间相互通信

1. IP:计算机之间的通信

  • IP协议是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP用来在Internet上标识这台计算机。IP负责在因特网上发送和接收数据包。通过IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP负责将每个包路由至它的目的地。
  • IP协议仅仅是允许计算机相互发消息,但它并不检查消息是否以发送的次序到达而且没有损坏(只检查关键的头数据)。为了提供消息检验功能,直接在IP协议上设计了传输控制协议TCP.

2. TCP:应用程序之间的通信

  • TCP确保数据包以正确的次序到达,并且尝试确认数据包的内容没有改变。TCP在IP地址之上引端口(port),它允许计算机通过网络提供各种服务。一些端口号为不同的服务保留,而且这些端口号是众所周知。
  • 服务或者守护进程:在提供服务的机器上,有程序监听特定端口上的通信流。例如大多数电子邮件通信流出现在端口25上,用于www的HTTP通信流出现在80端口上。
  • 当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信,占用两个计算机之间整个的通信线路。TCP 用于从应用程序到网络的数据传输控制。TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。
  • TCP/IP 就是TCP 和 IP 两个协议在一起协同工作,有上下层次的关系。
    TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,IP 负责将包发送至接受者,传输过程要经IP路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址,然后在它们到达的时候重新组合它们。

四、HTTP工作原理

一次HTTP操作称为一个事务

1. 地址解析

  • 如用浏览器请求这个页面:https://github.com/gxlieying
  • 从中分解出洗衣名、主机名、端口、对象路径等部分。当前地址解析结果

协议名:https
主机名:github.com
端口:
对象路径:/gxlieying

在这一步,需要域名系统DNS解析域名github.com,得主机的IP地址。

2. 分装HTTP请求数据包

把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

3. 封装成TCP包,建立TCP连接(TCP的三次握手)

在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。
HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后,才能进行高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

4. 客户机发送请求命令

建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、洗衣版本号,后边是MIME信息包括请求修饰符、客户机信息和内容。

5. 服务器响应

  • 服务器接到请求后,给予相应的响应信息,服务器格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  • 实体信息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

6. 服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这个请求头Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。
保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

五、HTTPS实现原理

HTTPS即HTTP下加入SSL层,HTTPS的安全基础是SSL。HTTPS所用端口号是443.

1. SSL加密算法类型

(1) 对称加密

  • 密匙只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES、RC5、3DES等;
  • 对称加密主要问题是共享秘钥,除你的客户端知道服务器的私钥秘钥,否则无法对通信流进行加密解密。

(2)非对称加密

  • 使用两个秘钥:公共秘钥和私有秘钥。私有秘钥有服务器保存,另一方任何人都可以获得公共秘钥。
  • 这种秘钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同秘钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA,DSA等。

2. 获取证书(经过CA认证的公钥)的方式

(1) 从权威机构购买证书

安全证书由国际权威的证书机构(CA),如VeriSign和Thawte颁发,它们保证了证书的可信性。一个安全证书只对一个IP有效,多个IP必须购买多个证书。

(2)创建自我签名的证书

如果通信双方只关心数据在网络上的可以安全传输,并不需要对方进行身份验证,这种情况下,可以创建自我签名证书。这证书达不到身份认证的目的,但可以用于加密通信。

3. HTTPS通信过程:

  1. SSL客户端通过TCP和服务器建立连接之后(443),并且在一般的TCP连接协议(三次握手)过程中请求证书。
    即客户端发出一个消息给服务器,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个数据包,这里面确定了这次通信所需要的算法,然后服务器向客户端返回证书。(证书里面包含了服务器信息:域名。申请证书的公司,公共秘钥)。
  2. Client在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公共秘钥确认签名是否有效,客户端还会确保证书中列出的域名就是它正在连接的域名。
  3. 如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务器,服务器使用它的私钥对它进行解密,这样两台计算机可以开始进行对称加密进行通信。

4. HTTPS通信的优点:

  1. 客户端产生的秘钥只有客户端和服务端能得到;
  2. 加密的数据只有客户端和服务端才能得到明文;
  3. 客户端到服务端的通信是安全的

六、HTTP请求 状态码

HTTP协议定义了多种状态码,用于表示服务器对客户端请求的响应情况。
以下是所有常见的HTTP状态码列表:

1xx(信息性状态码)

100 Continue
101 Switching Protocols
102 Processing

2xx(成功状态码)

200 OK
201 Created
202 Accepted
204 No Content
207 Multi-Status

3xx(重定向状态码)

301 Moved Permanently
302 Found
303 See Other
304 Not Modified
307 Temporary Redirect

4xx(客户端错误状态码)

400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method Not Allowable
408 Request Time-Out

5xx(服务器错误状态码)

500 Internal Server Error
501 NotImplemented
502 Bad Gateway
503 Service Unavailable

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值