1、HTTP

HTTP协议【Hyper Text Transfer Protocal】超文本传输协议。

HTTP协议的发展是万维网协会(www协会)和Internet工作小组IETF合作的结果,目前已发展到HTTP1.1。

HTTP协议是基于请求--响应模式的协议,为无状态协议,处于应用层,建立在传输层(TCP)协议之上,现阶段基本采用RESTful架构,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。RESTful采用的就是HTTP协议,RESTful是一种风格,而不是一个标准。

2、TCP

2.1 TCP简介

TCP协议【Transmission Control Protocol】传输控制协议,是一种面向连接、可靠的、基于字节的传输层通信协议,相对于HTTP,在同等环境与条件下使用TCP协议传输数据更快(尤其使用TCP长连接)

2.2 TCP的三次握手

第一次握手:客户端发送SYN包(数据包,SYN=1)到服务器,并进入SYN_SEND状态,等待服务器确认(客户端发送等待阶段);

第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=X+1,ACK为确认字符),同时自己发送一个SYN包(SYN=1),即SYN+ACK包,此时服务器进入SYN_RECV状态(服务器确认接收状态);

第三次握手:客户端收到服务器的SYN_ACK包,向服务器发送确认包ACK(ACK=Y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手(客户端接收建立连接状态)。

 

 
 

2.3 常用的TCP端口

操作系统能使用的端口号从0-65545个(2^16),但是0-1023之间的TCP端口已经被标准化定义下来,这些端口为保留端口,就是我们的应用程序不会使用这些端口。

2.4 DNS

DNS【Domain Name System】,域名解析服务,就是将域名转换为IP地址,由网络服务运营商提供。全世界有13个根域名服务器(每个根服务器实则有N台服务器)10台在美国,2台在欧洲,1台在日本。服务器查找逐层向上查找。

DNS缓存:浏览器有DNS缓存,DNS服务本身也有DNS缓存。

常用的域名记录:A记录、MX记录、CNAME记录、TXT记录、AAAA记录、NS记录。

3、HTTPS

HTTPS其实就是HTTP的安全版本,S表示Secure。

HTTPS协议在HTTP协议和TCP协议之间添加一层安全层,对应用层完全透明。数据在经过网络传输之前,先进行加密,然后再进行传输。

安全层:SSL协议和TLS协议【虽然是一种协议,但不属于TCP/IP协议族】。SSL表示Secure Sockets Layer即安全嵌套层。TLS表示Transport Layer Security,即传输层安全协议,TLS是SSL的后续升级版本。SSL和TLS的优势就是和应用层无关,就是上层的HTTP,FTP,SSH等就能够透明地建立在SSL/TLS协议之上,完全不需要做任何改动。

需要使用数字证书

3.1 建立连接

1.当访问一个HTTPS的网站时,服务器就会把它的证书和公钥发回来。(此时服务器还没有正式响应数据)

2.浏览器检查证书是否为可信赖的机构颁发的,确认证书有效和证书属于此网站。如果证书非法,浏览器会给出提示。

3.生成随机密码,并使用公钥加密,将密码原文和加密后的密文发送至服务器。

4.服务器使用私钥,对加密后的密码解密,然后和密码原文进行对比,如果一致,将一串握手消息加密,和消息原文发回浏览器。

5.浏览器使用公钥解密消息密文和原文对比,如果一致,则成功建立连接。

3.2 传输数据

1.使用公钥随机生成一个对称密钥,用此对称密钥对请求数据进行加密后,对此对称密钥进行加密,然后一起发送给服务端。

2.服务器用自己的私钥,用此对称密钥对数据进行加密后,对此对称密钥进行加密,然后一起发送给服务端。

3.服务器用自己的私钥解密了客户端发送的加密后的对称密钥,然后使用这个对称密钥对客户端的请求数据进行解密。

4.服务器用客户端发的对称密钥对响应数据进行加密,客户端也有相同的密钥就可以解密发回来的网页了。

5.然后客户端和服务器之间的所有交互(请求和响应),都通过这一对对称密钥进行加密和解密。



作者:Adeno
链接:https://www.jianshu.com/p/a45440899726
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
posted on 2019-06-13 11:30  沉默的土豆  阅读(541)  评论(0编辑  收藏  举报