目录

HTTP简介

计算机互相之间的通信

IP:计算机之间的通信

TCP:应用程序之间的通信

HTTP所在的协议层

HTTP请求响应模型

HTTP工作流程

HTTPS

实现原理

工作流程

优点

HTTP和HTTPS的区别


【面试题】

  1. HTTP的工作流程
  2. HTTPS的工作流程
  3. HTTP与HTTPS的区别

——————————————————————————————————————

HTTP简介

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

计算机互相之间的通信

互联网的关键技术是TCP/IP协议,它用来实现两台计算机之间的通信。

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

IP:计算机之间的通信

IP是计算机用来相互识别的一种机制,每台计算机都有一个ip用来在internet上识别这台计算机。IP负责在因特网上发送和接收数据包。通过IP,消息被分割成小的独立的包,并通过因特网在计算机之间传送。IP负责将每个包路由至它的目的地。

IP协议仅仅是允许计算机相互发消息,但它并不检查消息是否以发送的次序到达以及是否损坏(它只检查关键的头数据)。为了提供消息检验的功能,直接在IP协议上设计了传输控制协议TCP。

TCP:应用程序之间的通信

TCP用来检查消息是否以发送的次序到达以及是否损坏。TCP在IP地址之上引入了端口port,它允许计算机通过网络提供各种服务。不同的端口号为不同的服务保留,而且这些端口号是众所周知的。

当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方握手之后,TCP将在两个程序之间建立全双工通信。TCP用于从应用程序到网络的传输控制。TCP负责在数据传输之前将他们分割为IP包,然后在到达时将它们重组。

 

TCP负责应用软件和网络软件之间的通信。IP负责计算机之间的通信。TCP负责将数据分割并装入IP包,IP负责将包发送至接受者,传输过程要经IP路由器寻址,然后在他们到达时重新组合它们。

HTTP所在的协议层

HTTP是基于TCP协议之上的,HTTP是应用层的协议。


HTTP请求响应模型

HTTP由请求和响应构成,是一个标准的客户端/服务器模型(B/S). HTTP协议永远都是客户端发起请求,服务器回送响应

HTTP是无状态协议。无状态是指客户端客户机和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器发出请求,然后服务器返回响应,连接就被关闭了,在服务器端不保留连接的有关信息。HTTP遵循请求/应答模型。客户机向服务器发送请求,服务器处理请求并返回相应的应答。所有的HTTP连接都被构造成一套请求和应答。

 

HTTP工作流程

1)地址解析  

 如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm

     从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
     协议名:http
     主机名:localhost.com
     端口:8080
     对象路径:/index.htm

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

 

2)封装HTTP请求数据包

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

 

3)封装成TCP包,建立TCP连接

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

4)客户机发送请求命令

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

 

5)服务器响应

        服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

        实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

 

6)服务器关闭TCP连接

 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

    Connection:keep-alive

   TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
 

 

HTTPS

实现原理

HTTPS是HTTP的安全版本,它在HTTP下加入了SSL层,HTTPS的安全基础是SSL。其所用的端口号为443.

SSL:安全套接层,用于web的安全传输。这种协议在web上获得了广泛的应用。通过证书认证来确保客户端和网站服务器之间的通信数据是加密安全的。

工作流程

1)客户端发送一个请求连接给服务器,这个请求连接里面包含了自己可实现的算法列表和其他一些需要的信息,SSL的服务器端会回应一个数据包,这里面确定了这次通信所需要的算法,然后服务器向客户端返回证书。(证书里面包含服务器的信息:域名,申请证书的公司,公共秘钥)

2)client在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公共秘钥确认签名是否有效,客户端还会确保证书中列出的域名就是它正在连接的域名。

3)如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密,然后发送给服务器,服务器使用它的私钥对它进行解密,这样两台计算机可以开始进行通信。

 

优点

1)客户端产生的秘钥只有客户端和服务器能够得到

2)加密的数据只有客户端和服务器才能得到明文

3)客户端带服务端的通信是安全的

 

HTTP和HTTPS的区别

  1. HTTPS要到ca申请证书,贵
  2. http:超文本传输协议,信息明文传输;https是具有安全性的ssl加密传输协议
  3. http端口为80,https端口为443
  4. http连接简单无状态,https由ssl+http组成,比http安全