zoukankan      html  css  js  c++  java
  • HTTP和HTTPS

    HTTP

    1.网站通信粗略过程

    我们知道HTTP是在应用层中的,显然,我们在Web通信的过程中,不仅仅是需要HTTP协议的,还会涉及到其他的协议的

    DNS:负责解析域名

    • 我们访问一个网页的时候,往往是通过域名来访问的www.zhongfucheng.site,而计算机通信只认的是我们的主机地址(192.168.xxx.xxx),因此,当我们输入域名的时候,需要DNS把域名解析成主机来进行访问。

    HTTP:产生请求报文数据

    • 当我们对Web页面进行操作的时候,就会产生HTTP报文数据,请求对应的服务端进行响应。

    DNS和HTTP都属于应用层

    TCP协议:分割HTTP数据,保证数据运输

    • TCP协议采用了三次握手的方式来保证数据的准确运输,在运输的数据的时候,发送标识过去给服务器,服务器也返回标识给客户端,而客户端收到消息后再次返回标识给服务器。这样一来就保证了数据运输是可靠的。

    TCP属于运输层

    IP协议:传输数据包,找到通信目的地地址。

    • IP协议把我们的产生的数据包发送给对方,IP地址指明了节点被分配的地址,但IP地址可能会变换,我们可以使用ARP协议来将IP地址反射为MAC地址。MAC地址是不会更改的,是网卡所属的固定地址。

    • 在找到通信目的地之前,我们是需要不断的中转的,这过程我们称作为:“路由中转”,我们并不知道路由中转了多少次的。因此是不能全面了解到互联网中的传输状况的。

    IP属于网际层

    PORT:确认两个电脑互相通信的进程

    • 两个电脑的网络通信实际上是两个电脑的进程之间的通信,端口用来标识一个进程

    PORT属于网络接口层

    2.HTTP是不保存状态的协议

    HTTP是无状态的,也就是说,它是不对通信状态进行保存的。它并不知道之前通信的对方是谁。这样设计的目的就是为了让HTTP简单化,能够快速处理大量的事务!

    但是,我们经常是需要知道访问的人是谁,于是就有了Cookie技术了。

    • 要是服务器端想要记住客户端是谁,那么就颁发一个cookie给客户端

    • 客户端把Cookie保存在硬盘中,当下次访问服务器的时候,浏览器会自动把客户端的cookie带过去。

    • 就这样,服务器就能够知道这家伙是谁了

    3.持久连接

    在HTTP1.0的时候,每一次进行HTTP通信就会断开一次连接。如果容量很少的文本传输是没有问题的。但是如果我们访问一个网页,该网页有非常多的图片。一个图片就算上一个HTTP请求了。那么在中途中就不断地建立TCP连接、获取图片、断开TCP连接。

    这样是非常浪费资源的,因此在HTTP1.1版本,就是持久连接了。一次HTTP连接能够处理多个请求

    持久连接为“管线化”方式发送成为了可能:在一次HTTP连接里面,不需要等待服务器响应请求,就能够继续发送第二次请求

    4.提升传输效率

    在说明之前,首先我们要知道什么是实体主体

    • 实体主体就是作为数据在HTTP中传输的数据

    一般地,实体主体可以等价为报文主体,报文主体是HTTP中的一部分

    我们如果不使用任何手段,服务器返回的数据实体主体是原样返回的。我们可以使用两种方式来提高传输效率

    • 使用压缩技术把实体主体压小,在客户端再把数据解析

    • 使用分块传输编码,将实体主体分块传输,当浏览器解析到实体主体就能够显示了。

    我们如果在下载东西的过程中断了,按照以前我们是需要重新下载的,但是现在可以在中断中继续下载。我们可以使用到获取范围数据,这种叫做范围请求

    这种请求只会下载资源的一部分。

    • 比如我的图片下载到一半了,我们只需要下载另一半就可以组成一张完整的图片了。那么请求的时候请求没有下载的一部分即可。

    HTTPS

    我们最好就是使用SSL建立安全的通信线路,就可以在这条线路上进行HTTP通信了。

    其实HTTPS就是披着SSL的HTTP

    HTTPS是基于TLS上实现的,在网络上,只要是客户端和服务端在交互,那就有可能被挟持。而客户端是需要确切地知道服务端是不是真实的,所以我们需要CA(公信机构)来帮客户端认定服务端是真实的

     

    流程如下:

    1、因为CA是工信机构,会内置到浏览器或操作系统中,所以客户端会持有CA机构的公钥

    2、服务器去认证的CA机构申请一份数字证书。数字证书会经过CA机构的私钥加密,里面包含有证书持有者、证书有效期、服务器公钥等信息

    3、客户端请求服务器,服务器返回一个证书给客户端,客户端用CA的公钥对证书解密,客户端会判断这个证书是否可信/有无被篡改(私钥加密,公钥解密我们一般用来做数字签名(看有无被篡改))

    4、如果证书是可信的,客户端解密出服务器的公钥。客户端生成一个对称加密的随机Key,并用证书内的服务器公钥进行加密,发送给服务端

    5、服务端收到消息,用自己的私钥解密,拿到客户端随机生成的Key,加密数据后返回给客户端;客户端收到消息,就可以用之前生成的Key来解密服务端返回的数据。后续就可以通过对称加密的key发送/接收消息了

    HTTP常见面试题

    1.HTTP与HTTPS的区别

    1. HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头

    2. HTTP 是不安全的,而 HTTPS 是安全的

    3. HTTP 标准端口是80 ,而 HTTPS 的标准端口是443

    4. 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层

    5. HTTP 无法加密,而HTTPS 对传输的数据进行加密

    6. HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

     

  • 相关阅读:
    转载 --ios 模型-setValuesForKeysWithDictionary
    转载 ----HTML5 ---js实现json方式提交数据到服务端
    转载 项目经理需要修炼的9件事
    转载 人生,没有那么简单
    HTML5 ---localStorage储存实例
    HTML5 ---localStorage
    HTML5 --照抄书里的代码但函数无法执行、求分析( Uncaught ReferenceError: xxx is not defined)
    html5 -js判断undefined类型
    python-打印简单公司员工信息表
    python练习程序_员工信息表_基本实例
  • 原文地址:https://www.cnblogs.com/yjh1995/p/13514543.html
Copyright © 2011-2022 走看看