网络安全(持续更新)

前端基础-js

JavaScript 是一门跨平台、面向对象的脚本语言,它能使网页可交互(例如拥有复杂的动画,可点击的按钮,通俗的菜单等)。 另外还有高级的服务端Javascript 版本,例如Node.js,它可以让你在网页上添加更多功能,不仅仅是下载文件(例如在多台电脑之间的协同合作)

http和https

比较

https相对于http更加安全,它采用了对称加密和非对称加密的方式,因为http协议容易造成中间人攻击,所以在http协议前面加上tls(安全传输层协议)来增加其安全性。

https如何加密?为什么?

https通过非对称加密来传递对称加密的密钥,然后通过对称加密进行数据传输。前一步使用双重加密极大的增加了传输的安全性,而使用对称加密进行数据传输是因为传输的效率高,因为非对称加密的密钥前后不一样。

什么是加密什么是签名?

私钥加密 公钥解密 号称签名
公钥加密 私钥解密 号称加密

如何实现非对称密钥传输对称密钥?

对称密钥算法非常适合于快速并安全地加密数据。但缺点是,发件人和收件人必须在交换数据之前先交换密钥。非对称密钥的主要优势在于密钥能够公开,由于用作加密的密钥(也称公开密钥)不同于作解密的密钥(也称私人密钥)因而解密密钥不能根据加密密钥推算出来,所以公钥加密提供了一种有效的方法,可用来把大量数据执行对称加密时使用的机密密钥发送给某人。结合使用加密数据的对称密钥算法与交换机密钥的公钥算法可产生一种即快速又灵活的解决方案。

简述CA的作用

CA叫做“证书授权中心”。 它是负责管理和签发证书的第三方机构,作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。

https传输过程

1.客户端先从服务器获取到证书,证书中包含公钥
2.客户端将证书进行校验
3.客户端生成一个对称密钥,用证书中的公钥进行加密,发送给服务器
4.服务器得到这个请求后用私钥进行解密,得到该密钥
5.客户端以后发出后续的请求,都使用这个对称密钥进行加密。
6.服务器收到这个密文也用这个密钥进行解密。
在这里插入图片描述

各种常用状态码含义

状态码含义
200OK-请求成功,一般用于GET与POST请求
301Moved Permanently-资源(网页等)被永久转移到其它URL
302Found-临时移动和301相似
304Not Modified- 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。
307Temporary Redirect-临时重定向。与302类似。使用GET请求重定向
308Permanent Redirect-永久重定向,说明请求的资源已经被永久的移动到了由 Location 首部指定的URL 上
400Bad Request - 客户端请求有语法错误,不能被服务器所理解
401Unauthorized - 请求要求用户的身份认证
403Forbidden-服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found-请求资源不存在,可能是输入了错误的URL
500Internal Server Error-服务器内部发生了不可预期的错误
501Not Implemented -服务器不支持请求的功能,无法完成请求
503Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

DNS解析过程

以访问百度服务器为例:
1.检查本地dns缓存,看缓存中是否有解析数据
2.查看本地hosts文件
3.本机固定的dns服务器(路由器)找13台根域服务器
4.根域找到com域(给你返回结果)com找到baidu域名(返回给你主机)
5.和百度服务器建立tcp可靠连接,三次握手

TCP三次握手,四次挥手

FIN :连接终止位
seq:发送的第一个字节的序号
ACK:确认报文段
ack:确认号。希望收到的下一个数据的第一个字节的序号
在这里插入图片描述

**第一次握手**(客户端发送 SYN 报文给服务器,服务器接收该报文):
客户端什么都不能确认;
服务器确认了对方发送正常,自己接收正常

**第二次握手**(服务器响应 SYN 报文给客户端,客户端接收该报文):
客户端确认了:自己发送、接收正常,对方发送、接收正常;
服务器确认了:对方发送正常,自己接收正常

**第三次握手**(客户端发送 ACK 报文给服务器):
客户端确认了:自己发送、接收正常,对方发送、接收正常;
服务器确认了:自己发送、接收正常,对方发送、接收正常

在这里插入图片描述

刚开始双方都处于ESTABLISHED 状态,假设是客户端先发起关闭请求。四次挥手的过程如下:

1)第一次挥手:客户端发送一个 FIN 报文(请求连接终止:FIN = 1),报文中会指定一个序列号 seq = u。并停止再发送数据,主动关闭 TCP 连接。此时客户端处于 FIN_WAIT1 状态,等待服务端的确认。

FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
2)第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。

CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
此时的 TCP 处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待 2)状态,等待服务端发出的连接释放报文段。

FIN-WAIT2 - 从远程TCP等待连接中断请求;
3)第三次挥手:如果服务端也想断开连接了(没有要向客户端发出的数据),和客户端的第一次挥手一样,发送 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态,等待客户端的确认。

LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
4)第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答(ack = w+1),且把服务端的序列值 +1 作为自己 ACK 报文的序号值(seq=u+1),此时客户端处于 TIME_WAIT (时间等待)状态。

TIME-WAIT - 等待足够的时间以确保远程TCP接收到连接中断请求的确认;
🚨 注意 !!!这个时候由服务端到客户端的 TCP 连接并未释放掉,需要经过时间等待计时器设置的时间 2MSL(一个报文的来回时间) 后才会进入 CLOSED 状态(这样做的目的是确保服务端收到自己的 ACK 报文。如果服务端在规定时间内没有收到客户端发来的 ACK 报文的话,服务端会重新发送 FIN 报文给客户端,客户端再次收到 FIN 报文之后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文给服务端)。服务端收到 ACK 报文之后,就关闭连接了,处于 CLOSED 状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值