http和https的区别与联系(转)

本文介绍了HTTP与HTTPS的基本概念,对比了两者的区别,并详细解释了HTTPS的工作原理。HTTPS通过加入SSL层来加密数据传输,保障了数据的安全性。

感谢原作者,本文转载自http://www.mahaixiang.cn/internet/1233.html
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

一、HTTP和HTTPS的基本概念

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

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

三、HTTPS的工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

1、客户端发起HTTPS请求

这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

2、服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。

这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3、传送证书

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

4、客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5、传送加密信息

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

6、服务段解密信息

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

7、传输加密后的信息

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

8、客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

六、HTTPS的优点

正是由于HTTPS非常的安全,攻击者无法从中找到下手的地方,从站长的角度来说,HTTPS的优点有以下2点:

1、SEO方面

谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

2、安全性

尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

(1)、使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

(2)、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

(3)、HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

七、HTTPS的缺点

虽然说HTTPS有很大的优势,但其相对来说,还是有些不足之处的,具体来说,有以下2点:

1、SEO方面

据ACM CoNEXT数据显示,使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电,此外,HTTPS协议还会影响缓存,增加数据开销和功耗,甚至已有安全措施也会受到影响也会因此而受到影响。

而且HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。

最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

2、经济方面

(1)、SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

(2)、SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗(SSL有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持,Windows XP就不支持这个扩展,考虑到XP的装机量,这个特性几乎没用)。

(3)、HTTPS连接缓存不如HTTP高效,大流量网站如非必要也不会采用,流量成本太高。

(4)、HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本,如果全部采用HTTPS,基于大部分计算资源闲置的假设的VPS的平均成本会上去。

(5)、HTTPS协议握手阶段比较费时,对网站的相应速度有负面影响,如非必要,没有理由牺牲用户体验。

### 三、发表路由表的区别联系 在网络设备中,发表(Forwarding Information Base, FIB)路由表(Routing Information Base, RIB)是两个关键的数据结构,它们在功能定位、存储方式、更新机制等方面存在显著差异,同时又保持着紧密的联系。 #### 3.1 功能定位差异 路由表是控制平面的核心数据结构,由路由协议(如OSPF、BGP)生成,负责路径决策,其作用是回答“数据包应该走哪条路?”的问题。它包含所有可能的路径信息,如目的网络、下一跳IP、度量值、路由来源(静态/动态)等字段。路由表用于路由协议的计算、策略路由以及负载均衡等场景。 发表则是数据平面的关键组成部分,基于路由表生成,用于实际的数据包发,其作用是回答“数据包从哪个接口发出去?”的问题。它仅保留最优路径条目,并且通常包含目的网络、出接口、下一跳MAC地址(或标签,如MPLS)等信息。发表用于高速数据发,如在核心路由器或MPLS标签交换中使用[^2]。 #### 3.2 存储性能差异 路由表通常存储在主CPU内存中,由软件实现,更新速度较慢,查找方式依赖于软件算法(如最长前缀匹配)。它可能包含冗余或备份路径,用于路由协议的收敛策略调整。 发表则通常存储在硬件芯片中(如TCAM),由硬件实现,支持微秒级甚至纳秒级的发操作。其查找方式为硬件并行查询,能够实现高速发。由于发表仅保留当前生效的路径,因此在数据发过程中具有更高的效率更低的延迟[^2]。 #### 3.3 更新机制差异 路由表的更新频率通常为秒级,依赖于路由协议的收敛时间。例如,当OSPF或BGP检测到网络拓扑变化时,会动态更新路由表中的条目。 发表的更新则更为频繁,通常采用FIB Push机制,从路由表同步最优路径。这种更新方式要求发表能够实时响应路由表的变化,以确保发决策的准确性。在某些设备中,发表还会结合高速缓存机制,以提升查找效率[^2]。 #### 3.4 内容结构差异 路由表的内容结构较为丰富,通常包含多个等价路由条目,以及路由来源、度量值等信息。例如,路由表中可能会包含多个通往同一目的网络的路径,供路由协议选择最优路径。 发表的内容结构则更为精简,仅保留最优路径条目。例如,发表中可能会记录某条路由对应的出接口下一跳的MAC地址,以便在数据包到达时快速完成发操作[^2]。 #### 3.5 实际应用场景 路由表主要用于路由协议的计算、策略路由负载均衡等场景。例如,在BGP选路过程中,设备会参考路由表中的条目进行路径选择。 发表则主要用于高速数据发,如在核心路由器、交换机或MPLS网络中,设备根据发表直接发数据帧,而无需调用路由引擎进行复杂的路径计算。这种方式可以显著提升发效率,减少发延迟。 #### 3.6 类比解释 可以将路由表比作是一张地图,标记了所有可能的路线(包括绕路备选路径),用于规划决策;而发表则像是一份导航指令,只告诉你当前最快的出口在哪,直接执行即可。这种类比有助于理解两者在功能上的差异互补关系[^2]。 --- ### 示例代码:发表路由表的交互逻辑(简化版) 以下是一个简化的示例,展示路由表发表之间的交互逻辑: ```python class RouteEntry: def __init__(self, destination, next_hop_ip, metric, source): self.destination = destination self.next_hop_ip = next_hop_ip self.metric = metric self.source = source class ForwardingEntry: def __init__(self, destination, out_interface, next_hop_mac): self.destination = destination self.out_interface = out_interface self.next_hop_mac = next_hop_mac class RoutingTable: def __init__(self): self.entries = [] def add_route(self, route_entry): self.entries.append(route_entry) def select_best_route(self): # 模拟选择最优路由 return min(self.entries, key=lambda x: x.metric) class ForwardingTable: def __init__(self): self.entries = {} def update_from_route(self, route_entry): # 假设下一跳MAC地址已知 next_hop_mac = "00:11:22:33:44:55" out_interface = "eth0" self.entries[route_entry.destination] = ForwardingEntry( route_entry.destination, out_interface, next_hop_mac ) # 模拟路由表发表的交互 routing_table = RoutingTable() routing_table.add_route(RouteEntry("10.0.0.0/24", "192.168.1.1", 10, "OSPF")) routing_table.add_route(RouteEntry("10.0.0.0/24", "192.168.2.1", 20, "Static")) best_route = routing_table.select_best_route() forwarding_table = ForwardingTable() forwarding_table.update_from_route(best_route) print(forwarding_table.entries["10.0.0.0/24"].out_interface) ``` 该示例模拟了路由表选择最优路径,并将该路径同步到发表中的过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值