1. 说说HTTP常用的状态码及其含义?
思路: 这道面试题主要考察候选人,是否掌握HTTP状态码这个基础知识点。
不管是不是面试需要,我们都要知道,日常开发中的这几个状态码的含义哈:
2. HTTP 常用的请求方式,区别和用途?
思路: 这道题主要考察候选人,是否掌握HTTP请求方式这个基础知识点,我们用得比较多就是GET和POST啦。
3. 请简单说一下你了解的端口及对应的服务?
4. 说下计算机网络体系结构
思路: 这道题主要考察候选人,计算机网络体系结构这个基础知识点。计算机网路体系结构呢,有三层:ISO七层模型、TCP/IP四层模型、五层体系结构。大家可以记住这个图,如下
计算机网络体系结构
4.1 ISO七层模型
ISO七层模型是国际标准化组织(International Organization for Standardization)制定的一个用于计算机或通信系统间互联的标准体系。
★”
应用层:网络服务与最终用户的一个接口,常见的协议有:HTTP FTP SMTP SNMP DNS.
表示层:数据的表示、安全、压缩。,确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
会话层:建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话.
传输层:定义传输数据的协议端口号,以及流控和差错校验,协议有TCP UDP.
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择,协议有ICMP IGMP IP等.
数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路。
物理层:建立、维护、断开物理连接。
4.2 TCP/IP 四层模型
★”
应用层:对应于OSI参考模型的(应用层、表示层、会话层)。
传输层: 对应OSI的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。
网际层:对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。
网络接口层:与OSI参考模型的数据链路层、物理层对应。
4.3 五层体系结构
★”
应用层:对应于OSI参考模型的(应用层、表示层、会话层)。
传输层:对应OSI参考模型的的传输层
网络层:对应OSI参考模型的的网络层
数据链路层:对应OSI参考模型的的数据链路层
物理层:对应OSI参考模型的的物理层。
5 如何理解HTTP协议是无状态的
思路: 这道题主要考察候选人,是否理解Http协议,它为什么是无状态的呢?如何使它有状态呢?
如何理解无状态这个词呢?
★当浏览器第一次发送请求给服务器时,服务器响应了;如果同个浏览器发起第二次请求给服务器时,它还是会响应,但是呢,服务器不知道你就是刚才的那个浏览器。简言之,服务器不会去记住你是谁,所以是无状态协议。
”
可以通过一个生活中的例子,来更好理解并记住它:
有状态场景:
-
小红:今天吃啥子?
-
小明:罗非鱼~
-
小红:味道怎么样呀?
-
小明:还不错,好香。
无状态的场景:
-
小红:今天吃啥子?
-
小明:罗非鱼~
-
小红:味道怎么样呀?
-
小明:?啊?你说啥?什么鬼?什么味道怎么样?
Http加了Cookie的话:
-
小红:今天吃啥子?
-
小明:罗非鱼~
-
小红:你今天吃的罗非鱼,味道怎么样呀?
-
小明:还不错,好香。
6.从浏览器地址栏输入url到显示主页的过程
思路: 这道题主要考察的知识点是HTTP的请求过程,DNS解析,TCP三次握手,四次挥手这几个要点,我们都可以讲下。
-
DNS解析,查找域名对应的IP地址。
-
与服务器通过三次握手,建立TCP连接
-
向服务器发送HTTP请求
-
服务器处理请求,返回网页内容
-
浏览器解析并渲染页面
-
TCP四次挥手,连接结束
7. 说下HTTP/1.0,1.1,2.0的区别
思路: 这道题主要考察的知识点是HTTP几个版本的区别,我们记住HTTP/1.0默认是短连接,可以强制开启,HTTP/1.1默认长连接,HTTP/2.0采用多路复用就差不多啦。
HTTP/1.0
-
默认使用短连接,每次请求都需要建立一个TCP连接。它可以设置
Connection: keep-alive
这个字段,强制开启长连接。
HTTP/1.1
-
引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用。
-
分块传输编码,即服务端没产生一块数据,就发送一块,用”流模式”取代”缓存模式”。
-
管道机制,即在同一个TCP连接里面,客户端可以同时发送多个请求。
HTTP/2.0
-
二进制协议,1.1版本的头信息是文本(ASCII编码),数据体可以是文本或者二进制;2.0中,头信息和数据体都是二进制。
-
完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。
-
报头压缩,HTTP协议不带有状态,每次请求都必须附上所有信息。Http/2.0引入了头信息压缩机制,使用gzip或compress压缩后再发送。
-
服务端推送,允许服务器未经请求,主动向客户端发送资源。
8. POST和GET有哪些区别?
思路: 这道题主要考察的知识点是POST和GET的区别,可以从数据包、编码方式、请求参数、收藏为书签、历史记录、安全性等几方面去回答哈。
9. 在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?
这个问题记住keep-alive
就好,也就是说,在HTTP中响应体的Connection字段指定为keep-alive
即可
10. HTTP 如何实现长连接?在什么时候会超时?
思路: 这道题实际上是考察TCP长连接的知识点,HTTP的长连接实质是指TCP的长连接。至于什么时候超时,我们记住这几个参数如tcp_keepalive_time、tcp_keepalive_probes就好啦
什么是HTTP的长连接?
-
-
HTTP分为长连接和短连接,本质上说的是TCP的长短连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才具有真正的长连接和短连接这一说法哈。
-
TCP长连接可以复用一个TCP连接,来发起多次的HTTP请求,这样就可以减少资源消耗,比如一次请求HTML,如果是短连接的话,可能还需要请求后续的JS/CSS。
-
如何设置长连接?
通过在头部(请求和响应头)设置Connection字段指定为keep-alive
,HTTP/1.0协议支持,但是是默认关闭的,从HTTP/1.1以后,连接默认都是长连接。
在什么时候会超时呢?
★”
HTTP一般会有httpd守护进程,里面可以设置keep-alive timeout,当tcp连接闲置超过这个时间就会关闭,也可以在HTTP的header里面设置超时时间
TCP 的keep-alive包含三个参数,支持在系统内核的net.ipv4里面设置;当 TCP 连接之后,闲置了tcp_keepalive_time,则会发生侦测包,如果没有收到对方的ACK,那么会每隔 tcp_keepalive_intvl再发一次,直到发送了tcp_keepalive_probes,就会丢弃该连接。
1. tcp_keepalive_intvl = 15
2. tcp_keepalive_probes = 5
3. tcp_keepalive_time = 1800
11. HTTP 与 HTTPS 的区别。
思路: 这道题实际上考察的知识点是HTTP与HTTPS的区别,这个知识点非常重要,可以从安全性、数据是否加密、默认端口等这几个方面去回答哈。其实,当你理解HTTPS的整个流程,就可以很好回答这个问题啦。
我的答案如下:
HTTP,即超文本传输协议,是一个基于TCP/IP通信协议来传递明文数据的协议。HTTP会存在这几个问题:
-
请求信息是明文传输,容易被窃听截取。
-
没有验证对方身份,存在被冒充的风险
-
数据的完整性未校验,容易被中间人篡改
为了解决Http存在的问题,Https出现啦。
Https是什么?
HTTPS= HTTP+SSL/TLS,可以理解Https是身披SSL(Secure Socket Layer,安全套接层)的HTTP。
它们主要区别如下:
12 . Https流程是怎样的?
思路: 这道题实际上考察的知识点是HTTPS的工作流程,大家需要回答这几个要点,公私钥、数字证书、加密、对称加密、非对称加密。
-
HTTPS = HTTP + SSL/TLS,也就是用SSL/TLS对数据进行加密和解密,Http进行传输。
-
SSL,即Secure Sockets Layer(安全套接层协议),是网络通信提供安全及数据完整性的一种安全协议。
-
TLS,即Transport Layer Security(安全传输层协议),它是SSL3.0的后续版本。
Https工作流程
-
客户端发起Https请求,连接到服务器的443端口。
-
服务器必须要有一套数字证书(证书内容有公钥、证书颁发机构、失效日期等)。
-
服务器将自己的数字证书发送给客户端(公钥在证书里面,私钥由服务器持有)。
-
客户端收到数字证书之后,会验证证书的合法性。如果证书验证通过,就会生成一个随机的对称密钥,用证书的公钥加密。
-
客户端将公钥加密后的密钥发送到服务器。
-
服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密,解密之后就得到客户端的密钥,然后用客户端密钥对返回数据进行对称加密,酱紫传输的数据都是密文啦。
-
服务器将加密后的密文返回到客户端。
-
客户端收到后,用自己的密钥对其进行对称解密,得到服务器返回的数据。
13. 说说HTTP的状态码,301和302的区别?
思路: 这道题考查的知识点,也是HTTP状态码,302和301都有重定向的含义,但是它们也是有区别的。
-
301:(永久性转移)请求的网页已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。
-
302:(暂时性转移)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应GET和HEAD请求的301代码类似,会自动将请求者转到不同的位置。
网上有个很形象的例子比喻:
★当一个网站或者网页24—48小时内临时移动到一个新的位置,这时候就要进行302跳转,打个比方说,我有一套房子,但是最近走亲戚去亲戚家住了,过两天我还回来的。而使用301跳转的场景就是之前的网站因为某种原因需要移除掉,然后要到新的地址访问,是永久性的,就比如你的那套房子其实是租的,现在租期到了,你又在另一个地方找到了房子,之前租的房子不住了。
”
14. 说说什么是数字签名?什么是数字证书?
思路: 这道题考查的知识点,不仅仅是数字签名,数字证书,很可能面试官也会问你https的原理的,因为https原理跟数字证书有关的哈,大家需要掌握https原理哦。
数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。它的出现,是为了避免身份被篡改冒充的。比如Https的数字证书,就是为了避免公钥被中间人冒充篡改:
数字证书构成
-
公钥和个人等信息,经过Hash摘要算法加密,形成消息摘要;将消息摘要拿到拥有公信力的认证中心(CA),用它的私钥对消息摘要加密,形成数字签名。
-
公钥和个人信息、数字签名共同构成数字证书。
15. 对称加密与非对称加密有什么区别
思路: 这道题考察的知识点是对称加密与非对称加密算法,什么是对称加密,什么是非对称加密呢?
对称加密:指加密和解密使用同一密钥,优点是运算速度较快,缺点是如何安全将密钥传输给另一方。常见的对称加密算法有:DES、AES等。
对称加密
非对称加密:指的是加密和解密使用不同的密钥(即公钥和私钥)。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有对应的私钥才能解密。常见的非对称加密算法有RSA。
非对称加密
16. 说说DNS的解析过程?
思路: 这道题考察的知识点是DNS域名解析,http请求的过程,是涉及到DNS域名解析的,这道面试题也挺经典的,大家可以看下《图解HTTP》那本书哈。
★DNS,英文全称是domain name system,域名解析系统,是Internet上作为域名和IP相互映射的一个分布式数据库。它的作用很明确,就是可以根据域名查出对应的IP地址。在浏览器缓存、本地DNS服务器、根域名服务器都是怎么查找的,大家回答的时候都可以说下哈。
”
DNS的解析过程如下图:
DNS解析查找过程
假设你要查询www.baidu.com的IP地址:
★”
首先会查找浏览器的缓存,看看是否能找到www.baidu.com对应的IP地址,找到就直接返回;否则进行下一步。
将请求发往给本地DNS服务器,如果查找到也直接返回,否则继续进行下一步;
本地DNS服务器向根域名服务器发送请求,根域名服务器返回负责
.com
的顶级域名服务器的IP地址的列表。本地DNS服务器再向其中一个负责
.com
的顶级域名服务器发送一个请求,返回负责.baidu
的权威域名服务器的IP地址列表。本地DNS服务器再向其中一个权威域名服务器发送一个请求,返回www.baidu.com所对应的IP地址。
17. 什么是CSRF攻击,如何避免
思路: 这道题考察的知识点是CSRF攻击,它是属于网络安全这块的知识点,还有Xss攻击、SQL注入、DDoS等这些常见的网络攻击,我们都需要知道攻击的流程哈。
什么是CSRF 攻击?
★CSRF,跨站请求伪造(英文全称是Cross-site request forgery),是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
”
CSRF是如何攻击的呢?
来看一个来自百度百科的例子哈:
-
-
Tom 登陆银行,没有退出,浏览器包含了Tom在银行的身份认证信息。
-
黑客Jerry将伪造的转账请求,包含在在帖子
-
Tom在银行网站保持登陆的情况下,浏览帖子
-
将伪造的转账请求连同身份认证信息,发送到银行网站
-
银行网站看到身份认证信息,以为就是Tom的合法操作,最后造成Tom资金损失。
-
怎么解决CSRF攻击呢?
-
检查Referer字段。
-
添加校验token。
18. 聊聊五层计算机网络体系结构中,每一层对应的网络协议有哪些?
为了大家方便记忆,我还是画个思维导图吧,如下:
19. 说说 WebSocket与socket的区别
思路: 这是一个比较基础的知识点,经常有小伙伴会搞混。
-
Socket其实就是等于IP地址 + 端口 + 协议。
★具体来说,Socket是一套标准,它完成了对TCP/IP的高度封装,屏蔽网络细节,以方便开发者更好地进行网络编程。
”
-
WebSocket是一个持久化的协议,它是伴随H5而出的协议,用来解决http不支持持久化连接的问题。
-
Socket一个是网编编程的标准接口,而WebSocket则是应用层通信协议。
20. 什么是DoS、DDoS、DRDoS攻击?
思路: 这是涉及网络安全的一个知识点,DDos还会挺常见的,如SYN Flood。
★”
DOS: (Denial of Service),翻译过来就是拒绝服务,一切能引起DOS行为的攻击都被称为DOS攻击。最常见的DoS攻击就有计算机网络宽带攻击、连通性攻击。
DDoS: (Distributed Denial of Service),翻译过来是分布式拒绝服务。是指处于不同位置的多个攻击者同时向一个或几个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。常见的DDos有SYN Flood、Ping of Death、ACK Flood、UDP Flood等。
DRDoS: (Distributed Reflection Denial of Service),中文是分布式反射拒绝服务,该方式靠的是发送大量带有被害者IP地址的数据包给攻击主机,然后攻击主机对IP地址源做出大量回应,从而形成拒绝服务攻击。