本文已参与「新人创作礼」活动,一起开启掘金创作之路。
认证
通过使用 证书 来对通信方进行认证。
数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。
服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名(用CA的私钥对运营人员的公钥加密得到数字签名),然后分配这个已签名的运营人员的公开密钥,并将该公开密钥(数字签名)放入公开密钥证书后绑定在一起。
进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥(数字签名)之后,使用(内置的)CA的公钥解数字证书中服务器的真实公钥,就可以开始通信了。(客户端随机生成32位的私钥,用客户端公钥加密后传输给服务器端,然后使用该私钥对称加密进行通信)
进行 HTTPS 通信时,服务器会把证书和公钥发送给客户端。客户端取得其中的公开密钥(数字签名)之后,使用(内置的)CA的公钥解数字证书中服务器的真实公钥,如果该真实公钥是服务器的公钥则验证通过,就可以开始通信了。
GET与POST的区别?
- GET是幂等的(即读取同一个资源,总是得到相同的数据),POST不是幂等的;
- GET一般用于从服务器获取资源,而POST有可能改变服务器上的资源;
- 安全性:GET请求可被缓存、收藏,且是明文传输数据。POST的数据不会被保存,安全性相对较高;
- GET的长度有限制(操作系统或者浏览器),而POST数据大小无限制
- GET只允许ASCII字符,POST对数据类型没有要求,也允许二进制数据;
- 请求形式上:GET请求的数据附在URL之后,在HTTP请求头中;POST请求的数据在请求体中;
Session与Cookie的区别?
Session是服务器端保持状态的方案,Cookie是客户端保持状态的方案
Cookie保存在客户端本地,客户端请求服务器时会将Cookie一起提交;Session保存在服务端,通过检索Sessionid查看状态。保存Sessionid的方式可以采用Cookie,如果禁用了Cookie,可以使用URL重写机制(把会话ID保存在URL中)。
从输入网址到获得页面的过程 (越详细越好)?
-
URL解析:获得目标
Web服务器的域名。【www.server.com】 http表示请求协议,//后面就是服务器域名。 -
DNS域名解析:查询域名对应的IP地址,具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询,获得目标IP地址。
-
通过 DNS 获取到 IP 后,把 HTTP 的传输工作交给操作系统中的协议栈。协议栈包含传输层的TCP 和 UDP 协议和网络层的IP 协议。
ICMP用于告知网络包传送过程中产生的错误以及各种控制信息。ARP用于根据 IP 地址查询相应的 MAC 地址。
-
浏览器通过协议栈中的TCP协议向服务器请求建立链接,发起三次握手。(HTTP需要可靠连接)
- 三次握手:【syn=1 seq=x】 【syn=1 ack=x+1 seq=y】【ack=y+1 seq=x+1】防止已失效的连接请求报文段突然又传送到了服务端,而产生错误。
- 建立请求过程中会协商MSS值、接收窗口值、三次握手完毕之后进行HTTPS验证证书、传递对称加密的密钥。
- MSS:TCP的一个数据报受制于MTU,TCP单个数据报的最大消息长度,称为MSS。
MTU:最大数据传输单元,以太网帧的MTU是1500字节,最小长度是46字节流量控制使用滑动窗口协议,控制发送方的发送速率,保证接收方接收时不会溢出。拥塞控制使用慢开始、拥塞避免、快重传(丢失)、快恢复(超时),来降低整个网络的拥塞程度。
-
TCP/IP链接建立起来后,浏览器向服务器发送HTTPs请求;(服务器两小时没有收到客户端数据,则会每隔75秒发送一次发送探测报文段,若发送10个探测报文仍然没反应则关闭连接)
-
服务器接收到HTTP请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
-
浏览器解析并渲染视图,若遇到js文件、css文件、图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源,最终向用户呈现一个完整的页面;