1.超文本传输协议(HyperTextTransferProtocol,HTTP):
一种无状态的,以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动1.HTTP报文格式HTTP协议的请求报文和响应报文的结构基本相同,由三大部分组成:起始行(startline):描述请求或响应的基本信息头部字段集合(header):使用key-value形式更详细地说明报文消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据
2.请求行报文格式
3.响应行报文格式
4.HTTP头字段
头部字段是key-value的形式,key和value之间用“:”分隔,最后用CRLF换行表示字段结束。比如前后分离时经常遇到的要与后端协商传输数据的类型“Content-type:application/json”,这里key就是“Content-type”,value就是“application/json”。HTTP头字段非常灵活,不仅可以使用标准里的Host、Connection等已有头,也可以任意添加自定义头,这就给HTTP协议带来了无限的扩展可能。头字段注意事项字段名不区分大小写,字段名里不允许出现空格,可以使用连字符“-”,但不能使用下划线“”(有的服务器不会解析带“”的头字段)。字段名后面必须紧接着“:”,不能有空格,而“:”后的字段值前可以有多个空格;字段的顺序是没有意义的,可以任意排列不影响语义;字段原则上不能重复,除非这个字段本身的语义允许,例如Set-Cookie。
5.常用头字段
HTTP协议中有非常多的头字段,但基本上可以分为四大类:请求字段:请求头中的头字段;如Host,Referer。响应字段:响应头中的头字段,如:Server;通用字段:在请求头和响应头里都可以出现,如Content-type,Connection;
6.当用户在浏览器输入网址回车之后,网络协议都做了哪些工作呢?
1.首先干活的是浏览器应用程序,他要解析出URL中的域名
2.根据域名获取对应的ip地址,首先从浏览器缓存中查看,如下可以查看浏览器中域名对应ip的解析
chrome://net‐internals/#events如果没有则从本机域名解析文件hosts(/etc/hosts)中查看,还没有则从LDNS(Localdnsserver)、Rootserver域名服务器、国际顶级域名服务商的DNS的层层解析
3.拿到IP地址后,浏览器就可以发起与服务器的三次握手
4.握手建立之后,就开始组装http请求报文,发送报文
5.服务器收到请求报文之后开始,请求报文解析,生成响应数据,发送响应数据
6.浏览器收到响应之后,开始渲染页面
7.https
由于HTTP天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求/响应报文,数据不具有可信性。因此就诞生了为安全而生的HTTPS协议。使用HTTPS时,所有的HTTP请求和响应在发送到网络之前,都要进行加密。
8.SSL/TLSSSL即安全套接层(SecureSocketsLayer)
由网景公司于1994年发明,IETF在1999年把它改名为TLS(传输层安全,TransportLayerSecurity),正式标准化,到今天TLS已经发展出了主流的三个版本,分别是2006年的1.1、2008年的1.2,2018的1.3,每个新版本都紧跟密码学的发展和互联网的现状,持续强化安全和性能,已经成为了信息安全领域中的权威标准。摘要算法摘要算法能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。任意微小的数据差异,都可以生成完全不同的摘要。所以可以通过把明文信息的摘要和明文一起加密进行传输,数据传输到对方之后再进行解密,重新对数据进行摘要,再比对就能发现数据有没有被篡改。这样就保证了数据的完整性。
加密算法对称密钥加密算法:编、解码使用相同密钥的算法,如(AES,RC4,ChaCha20)。
非对称密钥加密算法:它有两个密钥,一个叫“公钥”,一个叫“私钥”。两个密钥是不同的,公钥可以公开给任何人使用,而私钥必须严格保密。
非对称加密可以解决“密钥交换”的问题。网站秘密保管私钥,在网上任意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。
而黑客因为没有私钥,所以就无法破解密文。非对称密钥加密系统通常需要大量的数学运算,比较慢。如(DH、DSA、RSA、ECC)
TLS里使用的混合加密方式,即把对称加密和非对称加密结合起来呢,两者互相取长补短,即能高效地加密解密,又能安全地密钥交换。大致流程如下:
1.通信开始的时候使用非对称算法如RSA,ECDHE先解决密钥交换的问题
2.用随机数产生对称算法使用的”会话密钥”,再用公钥加密。会话密钥很短,所以即便使用非对称加密算法也可以很快完成加解密。
3.对方拿到密文后用私钥解密,取出会话密钥。完成对称密钥的安全交换,后续就使用对称算法发完成数据交换
身份验证数字证书组成:CA信息,公钥用户信息,公钥,权威机构的签名,有效期数字证书作用:
1.通过数字证书向浏览器证明身份
2.数字证书里面包含了公钥数字证书的申请和验证如何申请:
1.生成自己的公钥和私钥,服务器自己保留私钥
2.向CA机构提交公钥,公司,域名信息等待认证
3.CA机构通过线上,线下多种途径验证你提交信息的真实性,合法性
4.信息审核通过,CA机构则会向你签发认证的数字证书,包含了公钥,组织信息,CA信息,有效时间,证书序列号,同时生成一个签名;签名步骤:hash(你用于申请证书所提交的明文信息)=信息摘要;CA再使用私钥对信息摘要进行加密,密文就是证书的数字签名浏览器如何验证呢?有了CA签名过的数字证书,当浏览器访问服务器时,服务器会返回数字证书给浏览器。浏览器收到证书后会对数字证书进行验证。首先浏览器读取证书中相关的明文信息,采用CA签名时相同的hash函数计算得到信息摘要A,再利用对应的CA公钥解密数字签名数据得到信息摘要B,如果摘要A和摘要B一致,则可以确认证书时合法的
知名的CA全世界就那么几家,比如DigiCert、VeriSign、Entrust、Let’sEncrypt等,它们签发的证书分域名验证(domainvalidated,DV)证书、组织验证(organizationvalidated,OV)证书、扩展验证(extendedvalidation,EV)证书三种,区别在于可信程度。DV可信级别是最低的,只是域名级别的可信,背后是谁不知道。OV证书可信级别比DV高,会验证申请证书时填写的组织,企业信息是否是正确的,申请往往需要几天时间,EV是最高的,经过了法律和审计的严格核查,可以证明网站拥有者的身份。