舌战面试官-计网篇(三)

终于来到了计网篇的最终章,这篇我们将好好的捋一捋应用层相关的常见面试题,这次的内容相对复杂一些,但是理解起来不难,希望能对大家有所帮助~
如果发现还有新的计网面试题,我都会更新在这篇文章中~

一.HTTP和HTTPS的区别?

(1)http是不安全的没有经过加密的明文传输;而https是经过加密的,可以简单的理解为https = http+ssl;

(2)http使用的80端口,https使用的是443端口

(3)https需要用到ca申请证书,需要一定的开销;http的连接很简单,是无状态的协议。

二.如何理解http是无状态的?

协议的状态是指下次传输具备记住这次传输信息的能力

所以无状态直白的来说,就是两次请求是不相关的,是独立的,既不会受之前请求应答情况的影响,也不会干扰到之后请求的应答。

比如浏览器发送一个请求给浏览器,服务器响应,但同一个浏览器再次发送一个请求,服务器依旧响应,但是服务器不会知道这两个请求时同一个浏览器发送出来的

如果想要是的http具备记住请求信息的功能,就得依赖Cookie和Session。

三.什么是Cookie和Session,他们的工作原理是什么?

会话技术

简单的说:浏览器发送请求,服务器响应,直到浏览器关闭,这就是一次会话。

Cookie是会话技术的一种,它会将每次会话产生的数据保存在客户端,从而使得客户端和服务器每次可以更好的交互

Session也是一种会话技术,他会在服务器开辟自己的数据空间,通过sessionid来标记请求用户,放入cookie并作为这次会话的用户信息区分标准。

Cookie和Session都是让http协议记住和区分用户信息的;他们最大的区别是Cookie是缓存在浏览器本地,而Session是缓存在服务端的。

Cookie的工作原理

1.浏览器第一次访问服务器,服务器会在根据用户信息创建一个Cookie键值对,即在响应头中创建Set-Cookie,里面包含了用户信息

2.浏览器在下次发请求时都会带上当前请求可用的所有cookie,方便服务器快速识别。

Cookie可用通过服务器创建,也可以通过js来手动创建;

那Cookie什么时候失效呢

1.我们可以通过js来手动的增删改查cookie,删除cookie自然就失效了。

2.没设置失效时间:那么浏览器关闭,会话结束,cookie就失效了

3.设置了失效时间:时间到了才失效,因为此时cookie是保存在硬盘上的,浏览器即使关闭了再打开,还是会读取硬盘数据,正因为这样所以不同浏览器也可以共享cookie。

Session的工作原理
1.浏览器第一次发送请求,服务器接收并创建一个Session存储用户信息,同时会创建一个特殊Cookie,里面存放的就是这次会话的唯一标识Sessionid。

2.服务器在响应头中添加这个cookie,浏览器收到响应后再次发送请求都会带上这个cookie,服务器根据这个cookie里面的sessionid来找到用户信息。

3.如果这个cookie不存在了(关闭或者更换浏览器),服务器在请求中没有找到sessionid,就会创建一个新的session和cookie;

如果服务器内部session失效了(超过了存活时间),也会为这次会话重新创建新的session和cookie。

Session的失效时间

Seeion失效其实分为两种情况:
1.一种服务器删除内置session信息,因为服务器察觉session的存活时间到了。所以很多网页我们长时间不操作,又会跳到登录界面,就是因为session被删除了

2 更多情况下我们说Session失效是说我们无法对其再利用了。当我们浏览器关闭时,会话结束了,存放sessionid的cookie就失效了,此时我们服务器里面的session还在,只是没有什么意义了,只能等到过期时间就被删除

四.https的执行流程,对称加密和非对称加密?

什么是对称加密,什么是非对称加密

密匙:一般是数字或者字符串,在加密解密时使用;公钥是对开公开的;私钥是对外不公开的,不参与传输过程。

对称加密:加密和解密使用的密钥是同一个;
常见的对称加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES

优点:算法公开,计算量小,加密效率高
缺点:双方必须商定好密钥并保管好,如果一方泄露就会使得消息不安全。

非对称加密:加密和解密需要两个密钥:公钥和私钥;如果是一方使用公钥加密,那另一方只能使用对应的私钥进行解密;如果一方使用的私钥加密,那另一方只能使用对应的公钥解密。所以叫非对称加密算法。
常见的非对称加密算法有: RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

优点:安全
缺点:速度较慢

非对称算法实现加密信息交互的流程
甲方生成一对秘钥,并将其中一个秘钥作为公开秘钥向其他方公开;
乙方得到秘钥后,用这把秘钥对信息进行加密并发送给甲方;
甲方用对应的另一把秘钥对加密信息进行解密;

https的执行流程
1.客户端发送请求连接服务器的443端口;
服务器生成一对秘钥,将自己的信息以数字证书的形式发送回客户端,里面包括公钥,网站地址,证书颁发机构,证书失效日期等等。证书中的公钥是用来加密信息的,私钥由服务器自己保管。

2)验证证书
2.客户端收到后验证服务器证书是否过期,是否是权威机构颁发,证书中的ip地址是否和正在访问的服务器ip一致;

3)生成数字签名,验证私钥拥有者
3.如果客户端验证通过,或者客户端信任了不安全的数字证书;那么就会生成一个随机数,让服务器用私钥加密响应回来,然后客户端再用公钥解密,如果和前面自己发送的随机数一致,那么就说明服务器是私钥的拥有者。

4)生成对称加密算法
4.客户端生成一个对称加密算法和密钥;然后用公钥发送给服务器,服务器用私钥解密得到对称密钥;哪怕被黑客截获也不怕,因为只有服务器拥有解密的私钥;然后服务器和客户端就可以用这个对称加密算法通信了。

五.Hash算法,数字签名,数字证书?

Hash算法(摘要算法)

Hash算法是用来生成签名的,签名一般跟在消息后面,可以证明消息没有被修改过。发送方对要发送的消息进行hash运算得到一个hash值,然后把消息加密(一般是对称加密)并附带上这个hash值;接收方收到消息后对其解密,并对解密后的消息进行hash运算,如果得到hash值和消息附带的hash值相同,说明消息没有被修改过。

一种情况是黑客截获信息,修改信息并对应的修改hash值,再发送给接收方,接收方可能就错误的信任了一个被修改过后的信息。所以我们需要把hash值加密后再和消息一起发送,避免hash值被修改。

数字签名(简单的理解为上面说的加密后的hash值

将明文通过Hash算法加密生成摘要,再将消息体摘要用私钥加密后就是签名了。当下一级证书或客户端需要时就返回这个整体。数字签名主要作用就是配合Hash算法保证信息没有被篡改。当https验证通过后,一般会改用对称加密方式通信,因为RSA公钥体制比较耗性能。所以数字签名只存在于验证阶段。

数字证书
如果发送方的密钥被替换(比如说修改发送方的密钥为自己的密钥),然后用自己的私钥发送信息,即使使用hash算法也无法发现信息是冒充者发送的。这时候就需要使用我们的数字证书了

首先我们找到证书中心CA,发送方的公钥做公证,证书中心用自己的私钥,对A的公钥和一些相关信息一起加密,生成一个数字证书,发送方发送消息时,除了带上数字签名外,还有加上数字证书。

接收方使用CA的公钥解密数字证书,再验证数字签名。

这样就能保证发送方是可信任的,而且发送的消息没有被修改过。

六. http常见状态码

1xx :消息
2xx:成功
3xx:重定向
4xx:请求资源错误
5xx:服务器错误

这其中再记一些常见的就是了,面试官要是问到可以往自己会的上面引(你说的这个我不太记得,但是我记得***)
常见的 301 302
403 404 410

七.重定向和转发的区别

1、转发使用的是getRequestDispatcher()方法;重定向使用的是sendRedirect();
2、转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;
3、转发是服务器行为,重定向是客户端行为;
4、转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;
5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)

八.输入URL之后的流程是什么?

1.验证URL
首先浏览器会验证URL的格式是否正确,如果不正确的话,就直接把错误的URL当成搜索内容进行搜索。同时在你输入URL的过程中,会根据你浏览器内部的记录或者书签,自动的智能补全你的URL

2.发起DNS查询请求。
接下来简述下DNS的请求过程:

1)首先会检查浏览器缓存中有没有这个域名解析出来的ip地址,如果有就结束解析

2)如果浏览器缓存中没有,浏览器就会到操作系统host文件中查找有没有对应的解析ip地址;如果有就解析结束

3)如果本地host文件没有,浏览器就会发送一个DNS请求到LDNS(本地DNS服务器),LDNS大多是你网络接入服务商提供的,比如电信,移动等;在LDNS中递归查询对应的ip映射;

4)如果LDNS上没有查询到,LDNS就会向根服务器进行查询;但是根服务器是哪个并没有域名和ip地址的映射关系,它只是告诉LDNS,你可以去域服务器上继续查询,并给出域服务器的地址。

5)LDNS给域服务器发送请求,比如你是.com结尾的URL,就会发送请求给com域服务器;域服务器返回你的域名的解析服务器地址

6)LDNS发送请求给自己域名的解析服务器,得到域名对应的ip地址;返回给用户电脑并保存在自己缓存中,下次查询就不用这么复杂,直接从LDNS就能获取。

大概简述流程:
浏览器缓存 -——>操作系统缓存host文件——>LDNS本地服务器——>root根服务器(返回域服务器地址给LDNS)——>域服务器(返回对应域名的解析服务器地址给LDNS)——>LDNS访问对应域名的解析服务器得到ip地址——>用户电脑

3.浏览器发送http请求建立TCP连接(三次握手)

这里其中原理不理解的可以看我之前的计网篇(二),有很详细的解答。

4.服务器进行永久重定向 302

服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“http://www.google.com/” 而非“http://google.com/”。

为什么服务器一定要重定向而不是直接发送用户想看的网页内容呢?其中一个原因跟搜索引擎排名有关。如果一个页面有两个地址,就像http://www.yy.com/和http://yy.com/,搜索引擎会认为它们是两个网站,结果造成每个搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。还有就是用不同的地址会造成缓存友好性变差,当一个页面有好几个名字时,它可能会在缓存里出现好几次

拓展
301和302的区别:

3xx的状态码都是代表重定向;A重定向到B,我们可以从状态栏里看到访问的地址从A变成了B,所以说重定向是客户端行为;

301代表A的资源被永久移除了,A资源变得不可访问,搜索引擎在抓住新的网址时同时也把旧的网址替换掉了;当需要更换域名时,我们使用301;

302代表旧的网址A还在,还可以访问A资源,这个重定向只是临时的从A跳转到了B,搜索引擎会抓住新的网址并保留旧的网址,所以我们见得多的是302;网站临时迁移到一个新的网址时,使用的是302

5.浏览器跟踪重定向地址
浏览器重定向到新地址后,终于把请求发送给了服务器,服务器解析请求的URL信息,把对应的资源响应给浏览器

6.浏览器解析response资源
简述解析顺序:
html解析DOM树 ——> 浏览器发送请求获取嵌入在html的对象及资源——>css解析——>js解析

都看到这了?赏个三连呗~
如有侵权,请联系笔者删除

文章参考:https://www.cnblogs.com/xianyulaodi/p/6547807.html


4.28更新:

九.HTTP/1和HTTP/2的区别

首先我们要知道HTTP/1是支持多种请求方式的,比如说Get,POST,PUT,DELETE,HEAD等等。并且每次发送数据时,除了本身要发送的数据本身之外,还要包括头信息。HTTP/1.1之前是短连接的,在HTTP/1.1时改成了长连接。HTTP/1.1还使用了管道通信,允许多个请求同时发送,但是必须逐一响应。而HTTP/2就是在这些方面上做出了改进

首先是在通信方式上:

HTTP/1是使用管道通信,而HTTP/2是使用多路复用的方式。多路复用就是说一次连接中,客户端和浏览器可以同时发送多个请求和回应,且不用按序逐一发送确认。比如服务器同时受到A请求和B请求,服务器在处理A时,发现请求A很耗时,于是把请求A已处理的部分先响应回去,然后处理B请求,B结束后再来处理请求A,这样大大提升了数据传输效率。

然后是在传输格式上:

HTTP/1头文件一定是文本数据(ASCII码)的,但是数据体有可能是文本数据,也有可能是二进制的;
HTTP/2是纯二进制协议,头消息和数据体都是二进制。

最后是头消息是否压缩
HTTP/2对头文件进行了压缩,因为http是无状态协议,所以头消息里面有很多保存连接状态的数据(cookie等),所以用压缩的方式更便于传输。同时HTTP/2在客户端和服务器都维护了一张头信息表,信息字段都在表中,我们只需要传输索引值就能找到对应信息。

十.如何理解长连接和短连接?

首先我们要明白长连接和短连接并不是指http连接,而是tcp连接。

我们在请求一个页面时,是先建立tcp连接,然后在通过多个http连接来得到我们的资源。如果是短连接,我们每次请求资源都要建立一次tcp连接,tcp连接是很耗时的。如果是长连接,我们可以在一个tcp连接上多次建立http连接,大大加快了我们请求资源的的效率。

十一.简单说说多路复用?

多路复用原理上就是把通信资源或者说信道资源按照某种标准划分,分成一系列的资源片,把这些资源片分配给每一路通信。

划分信道方式:

1.频分多路复用:按照频率划分一条信道成多个子信道。

2.波分多路复用:其实就是按照光的频率划分

3.码分多路复用:按照不用的码片划分。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值