前端八股文(一)

1、http与https的基本概念

  • **http:**是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的超文本传输协议。
  • **https:**是以安全为目标的HTTP通道,即HTTP下加入SSL层进行加密。其作用:建立一个信息安全通道,来确保数据的传输,企鹅包网站的真实性。

2、http与https的区别以及优缺点

  1. http是超文本传输协议,信息是明文传输,HTTPS协议比http协议安全,https是具有安全性的ssl加密传输协议,客防止数据在传输过程中被盗窃、改变,确保数据的完整性。
  2. http协议的默认端口为 80,https协议的默认端口为 443.
  3. http 的连接很简单,是无状态的。https握手阶段很费时,回事页面加载时间延长50%,增加耗电(10~20%)。
  4. https缓存不如 http 高效,会增加数据开销。https 协议需要 ca证书,费用较高,功能越强大放入证书费用越高。
  5. SSL 证书需要绑定IP ,不能在同一个IP 上绑定多个域名,IPv4资源支持不了这种消耗。

3、https 协议的工作原理

  1. 客户端使用 https url 访问服务器,则要求 web 服务器建立 ssl 链接。
  2. web 服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),传输给客户端
  3. 客户端和 web 服务器端开始协商一致的安全等级,建立会话秘钥,然后通过网站的公钥来加密会话秘钥,并传送给网站。
  4. web 服务器通过自己的私钥解密出会话秘钥。
  5. web 服务器用会话秘钥加密与解密与客户端的通信。

4、TCP 三次握手

讲述三次握手前,先看看TCP报文段结构

在这里插入图片描述

三次握手开始:

在这里插入图片描述

  • 第一步: 客户端TCP向服务器端的TCP发送一个特殊的TCP报文段, 该报文段不包含应用层数据. 报文段首部中的标志位SYN置1, 简称为SYN报文段. 同时客户端随机选取一个初始序列号client_isn, 放置于SYN报文段的序号字段中, 最后把该报文段经下层封装发送给服务器. SYN的意思是: xxx服务器, 我想向你发起TCP连接, 我的初始序号为client_isn.
  • 第二步: 服务器收到SYN报文段后, 响应一个SYNACK报文段. SYNACK报文段的SYN标志位置1, 确认号字段设置为client_isn + 1, 序号字段由服务器选择自己的初始序号server_isn. SYNACK报文段的意思是: 我收到了你的SYN报文段, 序号为client_isn, 我同意该连接, 我自己的序号为server_isn.
  • 第三步: 客户端接收到SYNACK后要告知服务器自己收到了. 于是发送最后一个报文段, SYN标志位置0, 把确认字段设置为server_isn + 1, 并设置自己的序号. 这个报文意思是: 好的, 我知道你同意了, 我们开始传输数据吧.

看TCP报文段中的序号和确认号.

  • 序号:
    **序号是建立在传送的字节流之上, 而不是建立在传送的报文段的序列之上的.。**意思是说如果把传输的数据看作是一个字节文本, 序号则是对文本的首字节进行编号.
    我知道还是很抽象, 看具体例子. 现在要通过TCP发送一个500000字节的大文件, 最大报文长度为1000(一个报文段最多只能装1000个字节). 那么这次TCP传输就要分为500个报文段. 第一个报文段序号为0, 因为在500000字节中首字节的序号为0; 第二个报文段的序号为1000, 因为第一个报文段装了1000个字节, 第二个报文段从第1000个字节开始装起; 同理, 第三个报文段的序号为2000…
  • 为什么要使用序号?
    **发送序号是为了告诉接收方, 下一次我将从哪个地方开始传数据给你. 接收方同时也会期待下次从下一个字节序列的位置开始接收发送方的数据。 **接收方会把这个位置写到确认号中, 比如上面的例子, 接收方在接收到0序列分组后, 会在确认字段填入1000, 下一次期待接收1000位置的字节.
  • 由上可见: 主机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号.

5、TCP 的四次挥手

  1. 客户端进程发出连接释放波报文,并且停止发送数据。释放数据报文首部,FIN = 1,其序列号 seq = u(等于前面已经传送过来的数据额租后一个字节的序列号 + 1),此时客户端进入 FIN-WAIT-1(终止等待1)。TCP规定,FIN报文段即使不懈怠数据,也要消耗一个序号。
  2. 服务器收到连接释放报文,发出确认报文,ACK = 1,ack = u + 1,并且带上自己的序列seq = v,此时服务器进入CLOSE-WAIT(关闭连接)状态。TCP服务器通知高岑的应用进程,客户端向服务器的方向就释放了,这时候处于办关闭状态,即客户端已经没有数据要发送了,但是服务器若要发送数据,客户端毅然接受。此状态持续一点时间,整个CLOSE-WAIE 状态持续时间。
  3. 客户端收到服务器的确认请求后,此时客户端进入FIN-WAIE-2(终止等待2)状态,等待服务器发送释放报文(在这之前还需接受服务器发送的最后的数据)。
  4. 服务器将最后的数据发送完后,就向客户端发送链接释放报文,FIN =1,ack= u+1,,由于处于半关闭状态,服务器可能又发送了一些数据,嘉定此时的序列号为 seq = w,此时服务器进入LAST-ACK(最后确认)状态,等到客户端的确认。
  5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK = 1,ack = w+1,而自己的序列号 seq = u+1,此时客户端进入 TIME-WAIT(时间等待)状态。**注意此时TCP 连接还没有释放,必须经过 2 * MSL(最长 报文寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态
  6. 服务器只要接受到客户端发出的确认,立即进入CLOSED 状态。同样撤销TCB后,就结束了这次TCP连接。可以看到服务器结束TCP 连接的时间比客户端要早。

6、TCP/IP 如何保证数据包传输的有序可靠?

对字节流分段并进行编号然后通过ACK回复和超时重发这两个机制来保证。

  1. 为了保证数据包的可靠传递,发送发必须将已发的数据包保留到缓冲区;
  2. 并为每个已发送的数据包启动一个超时定时器;
  3. 如果定时器超时之前收到了对方发来的应答信(可能是对包的应答,也与可能是对本包后续包的应答),则释放包数据包占用的缓冲区;
  4. 否则,重传该数据包,直到手打应答或重传次数超过的最大次数为止。
  5. 接收方收到数据包后,先进行CRC校验,如果正确则把数据上交到上层协议,然后给发送发发送一个累计应答包,则表明该数据已收到,如果接收方正好也有数据要发送给发送方,应答包也应该在数据包中捎带过去。

7、TCP和UDP 的区别

  • TCP是面向连接的,而UDP是无面向连接的。
  • TCP仅支持单播传输,而UDP 提供了单播、多播,广播的功能。
  • TCP 的三次握手保证了连接的可靠性,而UDP是无连接的、不可靠的一种数据传输协议(可靠体现在无连接上,通信都不需要建立连接,对接受的数据也不发送确认信号,发送端不知道数据是否会正确接受)。
  • UDP 的头部开销比TCP更小,数据传输速率更高、实时性更好。

8、Cookie、sessionStrrage、localStrrage的区别

相同点:存储在客户端。

不同点:

  • cookie数据大小不超过4k;sessionStrrage、localStrrage的存储比cookie大得多,一般为5M以上;
  • cookie在过期时间之前一直有效;localStrrage永久储存,除非收到删除;sessionStorage数据在当前窗口关闭时会自动删除。
  • cookie的数据会自动的传递到服务器;而sessionStrrage、localStrrage数据保存在浏览器本地;

9、粘包问题分析与对策

  1. 定义:TCP 的粘包是指发送发发送的若干包数据到接收方时粘成一包,从接收缓存区来看,后一包数据的头紧挨着前一包数据尾部。
  2. 粘包出现的原因:
    • 在流传输时,UDP不会出现粘包,因为它有消息边界。
    • 粘包出现的两种情况:
      1. 粘在一起的包都是完整的
      2. 粘在一起的包有不完整的
  3. 采取的措施
    1. 对于发送发引起的粘包现象,用户客通过编程设置来避免。TCP 提供了强制数据立即传送的操作指push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不比等到发送缓存区满。
    2. 对于接收方引起的粘包,则可通过优化程序设计、精简接受进程工作量、提高接受进程优先级等措施,使其及时接受数据,从而尽量减少粘包现象。
    3. 由接收方控制,将一包数据按照结构字段,人为控制分多次发送,然后合并,通过这种手段来减少粘包。分包多发。

10、浏览器的缓存机制 强制缓存&& 协商缓存

浏览器与服务器通信的方式为应答模式,即是:浏览器发起HTTP请求 – 服务器响应该请求,那么浏览器怎么确定一个资源该不该缓存,如何去缓存呢?浏览器第一次向服务器发起该请求后拿到请求结果后,将请求结果和缓存标识存入浏览器缓存,浏览器对于缓存的处理是根据第一次请求资源时返回的响应头来确定的。具体过程如下图:

640?wx_fmt=png

由上图我们可以知道:

  • 浏览器每次发起请求,都会先在浏览器缓存中查找该请求的结果以及缓存标识
  • 浏览器每次拿到返回的请求结果都会将该结果和缓存标识存入浏览器缓存中

以上两点结论就是浏览器缓存机制的关键,它确保了每个请求的缓存存入与读取

(1)强制缓存

​ 强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程。当浏览器向服务器发起请求时,服务器会将缓存规则放入HTTP响应报文的HTTP头中和请求结果一起返回给浏览器,控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Control优先级比Expires高。
强制缓存的情况主要有三种(暂不分析协商缓存过程):

  1. 不存在该缓存结果和缓存标识,强制缓存失效,则直接向服务器发起请求(跟第一次发起请求一致)。
  2. 存在该缓存结果和缓存标识,但该结果已失效,强制缓存失效,则使用协商缓存。
  3. 存在该缓存结果和缓存标识,且该结果尚未失效,强制缓存生效,直接返回该结果。
(2)协商缓存

​ 协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程,同样,协商缓存的标识也是在响应报文的HTTP头中和请求结果一起返回给浏览器的,控制协商缓存的字段分别有:Last-Modified/If-Modified-SinceEtag/If-None-Match,其中Etag/If-None-Match的优先级比Last-Modified/If-Modified-Since高。协商缓存主要有以下两种情况:

  1. 协商缓存生效,返回304
  2. 协商缓存失效,返画200和请求结果结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第 10 章 网络安全 产生的原因: (1)电磁辐射与搭线窃听 (2)盗用 (3)偷窃 (4)硬件故障 (5)超负荷 (6)火灾及自然灾害 2. 系统安全 系统安全是指主机操作系统本身的安全,如系统中用户账号和口令设置、文件和目录存取权限设置、系统安全管理设置、服务程序使用管理等。 网络安全("网络"文档)共70张全文共70页,当前为第1页。 第 10 章 网络安全 (1)系统本身安全性不足 (2)未授权的存取 (3)越权使用 (4)保证文件系统的完整性 3. 信息安全 信息安全是指保障信息不会被非法阅读、修改和泄露。主要包括软件安全和数据安全。对信息安全的威胁:信息泄漏和信息破坏。 信息泄漏指由于偶然或人为因素将一些重要信息为别人所获,造成信息泄密。信息破坏则可能由于偶然事故和人为因素故意破坏信息的正确性、完整性和可用性 网络安全("网络"文档)共70张全文共70页,当前为第2页。 第 10 章 网络安全 10.1.2 网络安全的概念 计算机网络安全是指网络系统中用户共享的软、硬件等各种资源的安全,防止各种资源不受到有意和无意的各种破坏,不被非法侵用等。 10.1.3 网络安全面临的主要威胁 计算机网络系统的安全威胁来自多方面,可以分为被动攻击和主动攻击两类。 被动攻击:不修改信息内容,如偷听、监视、非法查询、非法调用信息等; 主动攻击:破坏数据的完整性,删除、冒充合法数据或制造假的数据进行欺骗,甚至干扰整个系统的正常运行。 一般认为,黑客攻击、计算机病毒和拒绝服务攻击三个方面是计算机网络系统受到的主要威胁。 网络安全("网络"文档)共70张全文共70页,当前为第3页。 第 10 章 网络安全 1. 黑客攻击 是指黑客非法进入网络并非法使用网络资源。例如:通过网络监听获取网络用户的账号和密码;非法获取网络传输的数据;通过隐蔽通道进行非法活动;采用匿名用户访问进行攻击;突破防火墙等。 (1)非授权访问 攻击者或非法用户通过避开系统访问控制系统,对网络设备及资源进行非正常使用,获取保密信息。 1)假冒用户 2)假冒主机 IP盗用 IP诈骗 (2)对信息完整性的攻击 网络安全("网络"文档)共70张全文共70页,当前为第4页。 第 10 章 网络安全 攻击者通过改变网络中信息的流向或次序,修改或重发甚至删除某些重要信息,使被攻击者受骗,做出对攻击者有意的响应,或恶意增添大量无用的信息,干扰合法用户的正常使用。 2. 计算机病毒 计算机病毒是一种能将自己复制到别的程序中的程序,它会影响计算机的能力,使计算机不能正常工作。计算机病毒侵入网络,对网络资源进行破坏,使网络不能正常工作,甚至造成整个网络的瘫痪。 3. 拒绝服务攻击 通过对网上的服务实体进行连续干扰,或使其忙于执行非服务性操作,短时间内大量消耗内存、CPU或硬盘资源,使系统繁忙以致瘫痪,无法为正常用户提供服务,称为拒绝服务攻击。有时,入侵者会从不同的地点联合发动攻击,造成服务器拒绝正常服务,这样的攻击称为分布式拒绝服务攻击。 网络安全("网络"文档)共70张全文共70页,当前为第5页。 第 10 章 网络安全 10.1.4 网络系统的安全漏洞 互联网实现资源共享的背后,有很多技术上的漏洞。许多提供使用灵活性的应用软件变成了入侵者的工具。一些网络登录服务,如Telnet,在向用户提供了很大的使用自由和权限的同时,也带来很大的安全问题,为此,需要有复杂的认证方式和防火墙以限制其权限和范围。网络文件系统NFS、文件传输协议FTP等简单灵活的应用也因信息安全问题而在使用时受到限制。网络上明文传输的方便性,同时也为窃听提供了方便。 网络系统的安全漏洞大致可以分为3个方面: 1. 网络漏洞 包括网络传输时对协议的信任以及网络传输的漏洞,比如IP欺骗和信息腐蚀(篡改网络上传播的信息)就是利用网络传输时对IP和DNS的信任。 网络安全("网络"文档)共70张全文共70页,当前为第6页。 第 10 章 网络安全 嗅包器(sniff)是长期驻留在网络上的一种程序,利用网络信息明文传送的弱点,可以监视记录各种信息包。由于TCP/IP对所传送的信息不进行数据加密,黑客只要在用户的IP包经过的一条路径上安装嗅包器程序就可以窃取用户的口令。 2. 服务器漏洞 服务进程bug(错误)和配置错误,这些漏洞常被用来获取对系统的访问权,任何对外提供服务的主机都有可能被攻击。 在校园网中存在着许多虚弱的口令,长期使用而不更改,甚至有些系统没有口令,这对网络系统安全产生了严重的威胁。 其他漏洞:访问权限不严格;网络主机之间、甚至超级管理员之间存在着过度的信任;防火墙本身技术的漏洞等。 网络安全("网络"文档)共70张全文共70页,当前为第7页。 第 10 章 网络安全 3. 操作系统漏洞 操作系统可能存在安全漏洞,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wadee.w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值