作者:
逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言!
计算机网络面试常考知识点
前言: 计算机网络相关的面试题目,有新增会维护~
七层网络模型
七层网络模型(OSI模型)是一种将网络体系结构划分为七个不同层次的标准。这七个层次从下到上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
。每一层都有自己特定的功能,这些功能可以通过不同的协议或技术实现。该模型的目的是为不同厂商和技术提供一个标准的参考框架,以确保各种设备和系统能够互相通信。
session和coocik?
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
http和https?
1、https协议需要到CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(原来网易官网是http,而网易邮箱是https。)
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
post和get
1、url可见性:
get,参数url可见;
post,url参数不可见
2、数据传输上:
get,通过拼接url进行传递参数;
post,通过body体传输参数
3、缓存性:
get请求是可以缓存的
post请求不可以缓存
4、后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求
5、传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大。
post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。
6、安全性
这个也是最不好分析的,原则上post肯定要比get安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样。
三次握手?
1.客户端发送SYN
2.服务器接收SYN,并发送SYN+ACK
3.客户端接收SYN+ACK,发送ACK
浏览器发出⼀个请求到收到响应经历了哪些步骤?
- 浏览器解析⽤户输⼊的URL,⽣成⼀个HTTP格式的请求
- 先根据URL域名从本地hosts⽂件查找是否有映射IP,如果没有就将域名发送给电脑所配置的DNS进
⾏域名解析,得到IP地址 - 浏览器通过操作系统将请求通过四层⽹络协议发送出去
- 途中可能会经过各种路由器、交换机,最终到达服务器
- 服务器收到请求后,根据请求所指定的端⼝,将请求传递给绑定了该端⼝的应⽤程序,⽐如8080被
tomcat占⽤了 - tomcat接收到请求数据后,按照http协议的格式进⾏解析,解析得到所要访问的servlet
- 然后servlet来处理这个请求,如果是SpringMVC中的DispatcherServlet,那么则会找到对应的
Controller中的⽅法,并执⾏该⽅法得到结果 - Tomcat得到响应结果后封装成HTTP响应的格式,并再次通过⽹络发送给浏览器所在的服务器
- 浏览器所在的服务器拿到结果后再传递给浏览器,浏览器则负责解析并渲染
跨域请求是什么?有什么问题?怎么解决?
跨域是指浏览器在发起⽹络请求时,会检查该请求所对应的协议、域名、端⼝和当前⽹⻚是否⼀致,如果不⼀致则浏览器会进⾏限制,⽐如在www.baidu.com的某个⽹⻚中,如果使⽤ajax去访问
www.jd.com是不⾏的,但是如果是img、iframe、script等标签的src属性去访问则是可以的,之所以浏
览器要做这层限制,是为了⽤户信息安全。但是如果开发者想要绕过这层限制也是可以的:
- response添加header,⽐如resp.setHeader(“Access-Control-Allow-Origin”, “*”);表示可以访问
所有⽹站,不受是否同源的限制 - jsonp的⽅式,该技术底层就是基于script标签来实现的,因为script标签是可以跨域的
- 后台⾃⼰控制,先访问同域名下的接⼝,然后在接⼝中再去使⽤HTTPClient等⼯具去调⽤⽬标接⼝
- ⽹关,和第三种⽅式类似,都是交给后台服务来进⾏跨域访问
零拷⻉是什么
零拷⻉指的是,应⽤程序在需要把内核中的⼀块区域数据转移到另外⼀块内核区域去时,不需要经过先复制到⽤户空间,再转移到⽬标内核区域去了,⽽直接实现转移。