1、TCP 传输控制层协议,面向连接、可靠的、点到点的通信
UDP 用户数据包协议,非面向连接、不可靠,点到多点的通信
TCP侧重可靠传输、UDP侧重于快速
TCP可靠传输:三次握手(连接)、四次分手(断开),点到点
2、Socket 和 HTTP
HTTP超文本传输协议 基于TCP连接的 “应用层”协议 短连接 解决如何包装数据,服务器不能主动给客户的响应
Socket不是协议,只是一个对TCP/IP协议封装后的接口(API), 长连接, 默认连接超时为30S,数据包大小为8K
3、HTTP(超文本传输协议) 和 HTTPS(安全超文本传输协议)
HTTP协议以明文方式发送内容,不提供任何方式的数据加密
HTTPS在HTTP的基础上加入了SSL协议(SSL协议用于对HTTP协议传输的数据进行加密),建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性
连接方式不同
端口不同,前者是80,后者是443。
4、HTTPS的工作原理
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。
(1)、客户端发起HTTPS请求
这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。
(2)、服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。
这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
(3)、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
(4)、客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
(5)、传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
(6)、服务段解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
(7)、传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
(8)、客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策
5、HTTPS缺点
(1)、HTTPS连接缓存不如HTTP高效,大流量网站如非必要也不会采用,流量成本太高。
(2)、HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本,如果全部采用HTTPS,基于大部分计算资源闲置的假设的VPS的平均成本会上去。
(3)、HTTPS协议握手阶段比较费时,对网站的相应速度有负面影响,如非必要,没有理由牺牲用户体验