起源
简要谈谈两种最常用的协议,一种是http协议,一种是https协议。
http协议是一种无状态的协议,是一种传输文本的协议,是一种明文传输的协议,而随着时间的发展,安全越来越重要,那么就慢慢的产生了https协议,这种安全的http协议,使用的是加密后的数据传输。
https和http协议,在传输层都是使用tcp协议,从而都有一个监听的端口,http监听的端口为80,而https监听的端口为443.
https的表示为secure http协议,而http则表示为hypertext transfer protocol,超级文件传输协议。https则为二进制传输协议。
数据传输对比
http和https最大的不同在于一个是不安全的,一个是安全的,从而也就主要是在建立会话的时候有所不同。
当我们在浏览器中属于URL之后,会经历一系列的步骤,首先是进行DNS解析得到主机的IP地址和端口,然后浏览器和服务器建立连接,连接之后发送请求报文,然后客户端接受响应报文,最后断开连接。
http和https的主要区别如下所示:
在使用http协议的时候,可以使用tcpdump程序看到所有的传输信息,因为这是明文发送的http请求。
而在使用https协议的时候,在进行tcp三次握手连接之后,是需要建立ssl会话的,也就是这个时候,会发送相关的证书信息,例如使用的协议版本,是使用tls协议,还是ssl协议;会协商双方使用的加密算法,会将服务端的证书发送到客户端,客户端进行验证,验证正确之后,那么就建立了https的会话,从而在每次数据传输的时候,都会使用对称加密的方式将数据进行加密,从而,也就是一种安全的协议了。
在客户端进行验证服务端的证书的时候,主要验证的方面有:证书的有效期,是否还在有效期内;证书的颁发结构是否是可信的;验证主机的FQDN和属于的url中server进行对比,是否一致;验证证书公钥信息正确,当这一切OK的时候,那么就会显示这是一个安全的连接。
https协议,到底是secure http还是slow http呢?你猜,哈哈。。。。
其他方面的说明
在使用web服务器的时候,我们可以选择使用httpd或者是nginx,在这些里面都是可以配置虚拟主机的,也就是根据ServerName来找到不同的虚拟主机,根据主机名来进行查找。
使用虚拟主机的目的主要是为了,当物理主机的资源很充足的时候,从而在一个主机上部署多个站点,从而让用户来进行访问,主要使用的原理就是http协议的首部信息中的Host字段,根据这个字段来判断是访问哪个站点。
那么,是否https可以根据这个首部字段,来部署多个https的站点呢 ?
答案是,不可以。。。为啥呢 ?因为在建立https会话的时候,是先建立ssl连接的,在建立ssl连接的时候,会验证ServerName,从而并不能根据ServerName来建立http连接,所以这个是不可以使用虚拟主机的,一个物理服务器只能监听一个https连接。
为啥https能进行加密呢 ?
主要就是因为,在http和tcp/ip之间加入一层加密层,也就是tls或者是ssl,主要的作用就是用来加密,从而在进行数据传输的时候,进行加密传输,另外,http本来是一种文本传输的协议,而在进行加密的时候,会加密成二进制进行传输,就像。。。。在web中传输图片的时候,需要将图片进行base64编码,将图片编码成字符串,然后在http中使用字符串进行传输。。。在客户端浏览器,根据MIME指定的格式进行解码,然后浏览器调用外部应用程序,打开图片,显示在浏览器之中。。。。
唱儿歌?
不探索新功能,那么唱十年的儿歌,你还只是会唱儿歌,大师的境界并不能达到。。。
有人说。。。。我今天学会了apache,我明天学了nginx,那么,就放在那里放着了,随着时间慢慢的流逝,你的水平是提高了还是上升了?如果你不探索新功能,水平是越来越退步。。。。
有人说。。。。我懂得了http协议,我学会了https协议,然后放在那里,不去尝试用各种方法发送请求,不去尝试使用tcpdump进行抓包,不碰到各种问题,那么是越来越精通?还是越来越退步。。。。
最后。。。来一杯毒鸡汤。。。。有人说,努力有什么用,到头来依然逃不过命运的安排,成长又如何,始终面对生死还是无奈!是的,人的这一辈子不过是由生到死,一头一尾匆匆几十年,但与其消极的等待死亡,彷徨度日,为什么不勇敢的向死而生,把每一分每一秒都过得更加精彩,把每一天都当成末日来相爱!首先。。。你需要一个对象。。。。哈哈哈,单身狗的暴击。。。
创造你的生活,然后。。。不是用现在作为代价。。。。现在未来哪个更重要。。。都重要,只是不要浪费在一些无意义的事情上面。。。