首页 > 编程知识 正文

新手编程必刷50题(程序员必备知识)

时间:2023-05-04 07:35:04 阅读:82990 作者:3090

1 .基础知识

http协议:互联网上使用最广泛的网络协议,是客户端和服务器端请求和响应的标准,是从万维网(www )服务器向本地浏览器传输超文本的传输协议

https协议:以安全为目标的http通道,简单来说就是http的安全版本。 http与ssl加密协议结合使用,可以实现更安全的传输(https )。

http宏通信程序:1.客户端向服务器发送请求消息。 2 .服务器根据请求信息将对应的组合收集到响应信息中。 3 .客户机在收到响应消息后,进行分析渲染。

https宏通信过程: 1客户机向服务器端2发送请求,发送数字证书的3客户机使用证明机构的公钥从证书中取出服务器端的公钥,4客户机生成随机的对称密钥(随机数),使用公钥密码进行服务器端的加密6双方接收通过对称加密方式加密传输的http数据,接收后使用对称密钥进行解密,可以省去验证异常的过程,正常的连接大致如此。

2 .建立2. http连接的过程:

Web使用名为http (超文本传输协议)的协议作为规范,完成从客户端到服务器端的一系列操作流程。 协商是对规则的承诺。 可以说Web是在HTTP协议上建立了通信。

url请求 DNS解析 TCP连接发送http请求返回服务器处理请求返回http消息渲染页解析 TCP连接结束

3 .插座的插话

据说我们C/S使用的是插座连接和TCP,HTTP和插座的区别是什么?

HTTP是短连接,套接字(基于TCP协议) )是长连接。 HTTP1.1开始支持长时间连接,但不能保证始终连接。 套接字连接一旦建立TCP握手三次,就会维持连接状态,除非一方主动切断。

HTTP连接服务器端不能主动发送消息,套接字连接双方的请求的发送优先被限制。 HTTP采用“请求-响应”机制,在客户端向服务器端发送消息之前,服务器端不能向客户端发送消息。 在客户端发送消息之前,必须在服务器返回消息之后满足。 插座的关系就像peer2peer一样,一方随时可以向另一方搭话。

场景:

使用HTTP时:获取客户端资源、上传文件等,双方不需要始终保持在线连接。 使用插座时:大部分即时通讯APP (QQ、wechat )、聊天室、苹果APNs等

4.https建立连接的过程:

4.1为什么需要https?

由于通过http协议传输的数据不加密,而是以明文传输,因此使用http协议传输机密信息是不安全的。 为了实现机密数据的加密传输,网站公司设计了安全套接字层(SSL )协议来加密通过http协议传输的数据,从此诞生了https协议。 简单地说,https协议是结合了ssl http协议的加密数据传输协议,可以用于机密数据传输和网络认证,比http协议更安全。 https通过组合非对称加密和对称加密的方式工作。 主要在ssl上进行。 由于不对称加密的速度很慢,所以首先利用不对称加密传输对称加密的密钥,然后通过对称加密的方式传输。 一旦通过ssl建立了安全的通信线路,就可以通过该线路进行http通信。

4.2对称加密和不对称加密

对称加密:双方使用的同一密钥可以加密和解密。 这种加密方法称为对称加密,也称为单密钥加密。 优点:速度快,对称加密通常位于消息发送端

需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。

缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。 非对称加密:一对密钥由公钥和私钥组成(可以使用很多对密钥)。私钥解密公钥加密的数据,公钥解密私钥加密的数据(私钥公钥可以互相加密解密)。 私钥只能由一方保管,不能外泄。公钥可以交给任何请求方。

4.3数字证书

非对称加密无法证明公钥本身没有经过伪造,于是可以使用由数字证书认证机构等颁发的公钥证书。

数字证书是一个经证书授权中心数字签名的包含公钥拥有者信息以及公钥的文件。最简单的证书包含一个公钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。

数字证书的生成是这样的:服务端将自己的公钥及相关信息交给证书机构,机构使用其私钥加密服务端的公钥及相关信息,而客户端(浏览器)在安装的时候就自带了权威数字证书机构的公钥,可以利用证书机构的公钥从数字证书中提取出服务器端的公钥。

4.4详细过程描述

步骤1:客户端通过发送 Client Hello 报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。 步骤2:服务器可进行 SSL通信时,会以Server Hello 报文作为应 答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的 加密组件内容是从接收到的客户端加密组件内筛选出来的。 步骤3:之后服务器发送 Certificate 报文。报文中包含公开密钥证书。 步骤4:最后服务器发送 Server Hello Done 报文通知客户端,最初阶 段的 SSL握手协商部分结束。 步骤5:SSL第一次握手结束之后,客户端以 Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。 步骤6:接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。 步骤7:客户端发送 Finished 报文。该报文包含连接至今全部报文的 整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确 解密该报文作为判定标准。 步骤8:服务器同样发送 Change Cipher Spec 报文。 步骤9:服务器同样发送 Finished 报文。 步骤10:服务器和客户端的 Finished 报文交换完毕之后,SSL连接 就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。 步骤11:应用层协议通信,即发送 HTTP 响应。 步骤12:最后由客户端断开连接。断开连接时,发送close_notify 报文。上图做了一些省略,这步之后再发送TCP和FIN报文来关闭与 TCP 的通信

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。