一,如何实现非对称加密传输对称加密密钥,简略回答ca的作用
**对称加密:**即采用对称的密码编码技术,他的特点是,加密和解密使用相同的秘钥。 非对称加密:需要两个秘钥,公钥和私钥。公钥和私钥成对出现。 对称+非对称: 发送方: 1、报文原文使用对称加密技术。对称加密的秘钥(避免混淆,这里称对称密码)。根据随机数生成。每次发起请求时,会重新产生一个随机数,进一步降低被破解的风险。 2、对称密码通过非对称加密方式进行加密。公钥由后台产生,匹配的私钥由后台保管。这样产生一个加密后的对称密码。前端在发送给后端之后,后端需要用匹配的私钥才能解开。 接收方: 1、会使用匹配的私钥解密加密的对称密码,获取到真实的对称密码。 2、使用对称密码,解密加密报文,获取原报文内容。 好处:(1)因为我们的对称密码是使用非对称加密的,因此,想要破解,需要找到相应的公钥才行。 (2)每次请求会重新生成一个对称密码,这就加大了破解的难度。 CA证书的作用:(1)验证你打开的HTTPS网站是不是可信(2)验证你所安装的文件是不是遭到篡改
二,https通讯过程
1、客户端发起HTTPS请求 用户在浏览器里输入一个https网址,然后连接到服务器的443端口 2、服务端的配置 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥 3、传送服务器的证书给客户端 证书里其实就是公钥,并且还包含了很多信息,如证书的颁发机构,过期时间等等 4、客户端解析验证服务器证书 这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如:颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书中公钥对该随机值进行非对称加密 5、客户端将加密信息传送服务器 这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了 6、服务端解密信息 服务端将客户端发送过来的加密信息用服务器私钥解密后,得到了客户端传过来的随机值 7、服务器加密信息并发送信息 服务器将数据利用随机值进行对称加密,再发送给客户端 8、客户端接收并解密信息 客户端用之前生成的随机值解密服务段传过来的数据,于是获取了解密后的内容
三,状态码
2开头:(请求成功)表示成功处理了请求的状态代码 200(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页 3开头:(请求被重定向)表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向 301(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。 304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 307(临时重定向)服务器目前从不同位置的网页响应请求,但请求者继续使用原有位置来进行以后的请求 308 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一,并且不应该修改请求方法。 4开头:(错误请求)服务器不理解请求的语法 400 (错误请求) 服务器不理解请求的语法。(解决办法传参格式不正确) 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。 403 (禁止) 服务器拒绝请求。 404 (未找到) 服务器找不到请求的网页。 5开头:(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。 500(服务器内部错误)服务器遇到错误,无法完成请求。 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。 503(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
四,从输入网址到页面显示的详细过程
大概过程
1 在客户端浏览器中输入网址URL。 2 发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址。 3 客户端浏览器与WEB服务器建立TCP(传输控制协议)连接。 4 客户端浏览器向对应IP地址的WEB服务器发送相应的HTTP或HTTPS请求。 5 WEB服务器响应请求,返回指定的URL数据或错误信息;如果设定重定向,则重定向到新的URL地址。 6 客户端浏览器下载数据,解析HTML源文件,解析的过程中实现对页面的排版,解析完成后,在浏览器中显示基础的页面。 7 分析页面中的超链接,显示在当前页面,重复以上过程直至没有超链接需要发送,完成页面的全部显示。 8 web服务器关闭TCP连接
1、输入网址 当在浏览器中输入网址时,浏览器其实就已在智能匹配 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。 对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,还没有按下 enter,页面就出来了。 2、DNS解析获取域名对应的IP地址 请求一旦发起,浏览器首先要做的事情就是解析这个域名。 (1)一般来说,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。 (2)如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS服务器 。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。 (3)查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果没有,本地DNS服务器还要向DNS根服务器进行查询。 (4)根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。这种过程是迭代的过程。 (5)本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。 (6)最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。 3、建立TCP连接 在HTTP工作开始之前,web浏览器首先要通过网络与web服务器建立连接,该连接是通过TCP来完成的。 为什么要先建立TCP呢? 因为HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层次协议的连接,因此要先建立TCP连接,一般TCP连接的端口号是80 4、浏览器向 web 服务器发送一个 HTTP 请求 拿到域名对应的IP地址之后,浏览器会以一个随机端口(1024<端口<65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。这个连接请求到达服务器端后(这中间通过各种路由设备,局域网内除外),进入到网卡,然后是进入到内核的TCP/IP协议栈(用于识别该连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终到达WEB程序,最终建立了TCP/IP的连接。 建立了TCP连接之后,发起一个http请求。一个典型的 http request header 一般需要包括请求的方法,例如 GET 或者 POST 等,不常用的还有 PUT 和 DELETE 、HEAD、OPTION以及 TRACE 方法,一般的浏览器只能发起 GET 或者 POST 请求。 5、WEB服务器响应请求,返回指定的URL数据或错误信息;如果设定重定向,则重定向到新的URL地址。 服务器端收到请求后的由web服务器(准确说应该是http服务器)处理请求,诸如Apache、Ngnix、IIS等。web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,最后将结果通过web服务器返回给浏览器客户端。 服务端响应http请求,返回响应报文 HTTP响应报文由四部分组成:响应行、响应头、空行、响应体 响应正文包含着我们需要的一些具体信息,比如cookie,html,image,后端返回的请求数据等等。这里需要注意,响应正文和响应头之间有一行空格,表示响应头的信息到空格为止。 6,7, 客户端浏览器下载数据,解析HTML源文件,解析的过程中实现对页面的排版,解析完成后,在浏览器中显示基础的页面。 webkit的渲染过程解析html以构建dom树 -> 构建render树 -> 布局render树 -> 绘制render树.浏览器在解析html文件时,会”自上而下“加载,并在加载过程中进行解析渲染。在解析过程中,如果遇到请求外部资源时,如图片、外链的CSS、iconfont等,请求过程是异步的,并不会影响html文档进行加载。 8,web服务器关闭TCP连接 为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。与创建TCP连接的3次握手类似,关闭TCP连接,需要4次挥手。 第一次挥手:客户端想分手,发送消息(FIN)给服务器 2. 第二次挥手:服务器通知客户端已经接受的挥手请求,返回确认消息(ACK),但还没做好分手准备 3. 第三次挥手:服务器已经做好分手准备,通知客户端(FIN) 4. 第四次挥手:客户端发送消息给服务器(ACK),确认分手,服务器关闭连接。
五,知识点
递归解析
当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。
迭代解析
当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,如图所示。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。
HTTP协议与HTTPS协议的区别
HTTP是明文传输的,如果黑客在传输过程中进行网络嗅探,中间人攻击来修改客户端与服务端之间的数据或者是在传输数据中恶意插入代码给其植入木马等,极度不安全。 HTTPS 协议是由 HTTP 加上 TLS/SSL协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。通过传输加密和身份认证保证了传输过程的安全性。
常用端口号
21 端口:FTP 文件传输协议(控制) 22 端口:SSH 远程登录协议 23 端口:telnet(终端仿真协议),木马 Tiny Telnet Server 开放此端口 24 端口:预留给个人用邮件系统 25 端口:SMTP 服务器所开放的端口,用于发送邮件 53 端口:dns 域名服务器 67 端口:DHCP服务端 68 端口:DHCP客户端 80 端口:http,用于网页浏览,木马 Executor 开放此端口 110 端口:POP3 服务器开放此端口,用于接收邮件 443 端口:基于 TLS/SSL 的网页浏览端口,能提供加密和通过安全端口传输的另一种 HTTP 445 端口:Microsoft-DS,SMB 为共享开放,震荡波病毒利用,一般应关闭 1433 端口:Microsoft 的 SQL 服务开放端口 1521端口:oracle数据库 3306 端口:MySQL 开放此端口 3389 端口:远程登录端口 6379端口:redis 7001端口:weblogic
|