接着上篇文章做补充,整理了很多的网络知识,但是更多的还需要大家去系统的学习网络的知识
23、简述HTTP短连接与长连接区别
HTTP中的长连接短连接指HTTP底层TCP的连接。 短连接: 客户端与服务器进行一次HTTP连接操作,就进行一次TCP连接,连接结束TCP关闭连接。 长连接:如果HTTP头部带有参数keep-alive,即开启长连接网页完成打开后,底层用于传输数据的TCP连接不会直接关闭,会根据服务器设置的保持时间保持连接,保持时间过后连接关闭。
24、简述TLS/SSL, HTTP, HTTPS的关系
SSL全称为Secure Sockets Layer即安全套接层,其继任为TLSTransport Layer Security传输层安全协议,均用于在传输层为数据通讯提供安全支持。可以将HTTPS协议简单理解为HTTP协议+TLS/SSL
25、HTTP请求包含了什么
包含:请求方法字段、URL字段、HTTP协议版本
产生请求的浏览器类型,请求数据,主机地址。
26、http的request具体格式
http request部分报文分三部分。第一部分是请求行,第二部分是请求头,第三部分是请求实体。
请求行包括:请求方法(GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE),请求的url,协议版本格式(http1.0/http1.1)
请求头包括一些附加信息,比如说:
Host:域名或ip加端口号 User-Agent:发送请求的应用程序名称,比如XX浏览器 Connection:连接是不是长连接 Accept-Charset:编码样式 Accept-Encoding:数据压缩格式 请求实体: 比如post就会把需要的数据放入请求实体中。
27、http的response具体格式
HTTP响应报文分为三部分。第一部分是状态行,第二部分是响应头部,第三部分是响应正文。
状态行由协议版本,状态码,状态码描述三部分组成。
响应头部包含了一些附加信息,如:
server:服务器(apache等) content-type:如application/json content-charset:编码格式 content-encoding:数据压缩格式 响应正文:响应的详细回传数据。
28、https的连接过程
浏览器将支持的加密算法信息发给服务器 服务器选择一套浏览器支持的加密算法,以证书的形式回发给浏览器 客户端(SSL/TLS)解析证书验证证书合法性,生成对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,用服务器的公钥对客户端密钥进行非对称加密。 客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端对称密钥发送给服务器 服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。 服务器将加密后的密文发送给客户端 客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成 29、简述http1.0
规定了请求头和请求尾,响应头和响应尾(get post)
每一个请求都是一个单独的连接,做不到连接的复用
30、简述http1.1的改进
HTTP1.1默认开启长连接,在一个TCP连接上可以传送多个HTTP请求和响应。使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
服务端无法主动push
31、简述http2.0的改进
提出多路复用。多路复用前,文件时串行传输的,请求a文件,b文件只能等待,并且连接数过多。引入多路复用,a文件b文件可以同时传输。
引入了二进制数据帧。其中帧对数据进行顺序标识,有了序列id,服务器就可以进行并行传输数据。
32、HTTP2.0的特性
1)完全采用二进制格式
2)多路复用
3)头部压缩
4)服务端推送
5)请求优先级
33、简述session
session用于标记特定客户端信息,存在在服务器的一个文件里。 一般客户端带Cookie对服务器进行访问,可通过cookie中的session id从整个session中查询到服务器记录的关于客户端的信息。
session.setAttribute("key",value);
是session设置值的方法,原理同HashMap的键值对,意思是key现在为“user“,存放的值为 userName。
可以使用session.getAttribute(“key”)来取值 setAttribute和getAttribute就是基于HashMap的put方法和get方法的实现,一般叫键值对或者keyvalue,即通过键找到值。
session.setAttribute("xyyyy",xyyy); //保存 session.getAttribute("xyyyy"); //取得把自己要的数据放在session里面传来传去
34、简述cookie
HTTP 协议本身是无状态的,为了使其能处理更加复杂的逻辑,HTTP/1.1 引入 Cookie 来保存状态信息。
Cookie是由服务端产生的,再发送给客户端保存,当客户端再次访问的时候,服务器可根据cookie辨识客户端是哪个,以此可以做个性化推送,免账号密码登录等等。
35、session和cookie的区别
cookie数据存放在客户的浏览器上,session数据放在服务器上 cookie不是很安全 session会在一定时间内保存在服务器上 单个cookie的客户端限制是3k 将登录信息等重要信息存放为session;其他信息如果需要保存可以放在cookie
36、简述半连接队列
TCP握手中,当服务器处于SYN_RCVD 状态,服务器会把此种状态下请求连接放在一个队列里,该队列称为半连接队列。
37、浏览器中输入一个网址后,具体发生了什么
进行DNS解析操作,根据DNS解析的结果查到服务器IP地址 通过ip寻址和arp,找到服务器,并利用三次握手建立TCP连接 浏览器生成HTTP报文,发送HTTP请求,等待服务器响应 服务器处理请求,并返回给浏览器 根据HTTP是否开启长连接,进行TCP的挥手过程 浏览器根据收到的静态资源进行页面渲染 38、简述SYN攻击
SYN攻击即利用TCP协议缺陷,通过发送大量的半连接请求,占用半连接队列,耗费CPU和内存资源。
优化方式:
缩短SYN Timeout时间 记录IP,若连续受到某个IP的重复SYN报文,从这个IP地址来的包会被一概丢弃。 39、简述DNS劫持
DNS是指将网页域名翻译为对应的IP的一种方法。DNS劫持指攻击者篡改结果,使用户对域名的解析IP变成了另一个IP。
40、简述dos攻击
DoS是Denial of Service的简称,也称为拒绝服务攻击,通过发送大量的无用请求数据包给服务器,耗尽服务器资源,从而无法通过正常的访问服务器资源,导致服务器崩溃。
41、get和post的区别
Get:指定资源请求数据,刷新无害,Get请求的数据会附加到URL中,传输数据的大小受到url的限制。
Post:向指定资源提交要被处理的数据。刷新会使数据会被重复提交。post在发送数据前会先将请求头发送给服务器进行确认,然后才真正发送数据。
42、为什么有了 MAC 地址还需要 IP 地址 如果我们只使用 MAC 地址进行寻址的话,我们需要路由器记住每个 MAC 地址属于哪一个子网,不然每一次路由器收到数据包时都要满世界寻找目的 MAC 地址。而我们知道 MAC 地址的长度为 48 位,也就是说最多总共有 2 的 48 次方个 MAC 地址,这就意味着每个路由器需要 256 T 的内存,这显然是不现实的。 和 MAC 地址不同,IP 地址是和地域相关的,在一个子网中的设备,我们给其分配的 IP 地址前缀都是一样的,这样路由器就能根据 IP 地址的前缀知道这个设备属于哪个子网,剩下的寻址就交给子网内部实现,从而大大减少了路由器所需要的内存。
43、简述DNS解析过程
1、客户机发出查询请求,在本地计算机缓存查找,若没有找到,就会将请求发送给dns服务器
2、本地dns服务器会在自己的区域里面查找,找到即根据此记录进行解析,若没有找到,就会在本地的缓存里面查找
3、本地服务器没有找到客户机查询的信息,就会将此请求发送到根域名dns服务器
4、根域名服务器解析客户机请求的根域部分,它把包含的下一级的dns服务器的地址返回到客户机的dns服务器地址
5、客户机的dns服务器根据返回的信息接着访问下一级的dns服务器
6、这样递归的方法一级一级接近查询的目标,最后在有目标域名的服务器上面得到相应的IP信息
7、客户机的本地的dns服务器会将查询结果返回给我们的客户机
8、客户机根据得到的ip信息访问目标主机,完成解析过程
44、对称加密和非对称的区别,非对称加密有哪些? 加密和解密的过程不同:对称加密和解密过程使用同一个密钥;非对称加密中加密和解密采用公钥和私钥两个密钥,一般使用公钥进行加密,使用私钥进行解密。 加密和解密的速度不同:对称加密和解密速度较快,当数据量比较大时适合使用;非对称加密和解密时间较长,速度相对较慢,适合少量数据传输的场景。 传输的安全性不同:采用对称加密方式进行通信时,收发双方在数据传送前需要协定好密钥,而这个密钥还有可能被第三方窃听到的,一旦密钥泄漏,之后的通信就完全暴漏给攻击者了;非对称加密采用公钥加密和私钥解密的方式,其中私钥是基于不同的算法生成的随机数,公钥可以通过私钥通过一定的算法推导得出,并且私钥到公钥的推导过程是不可逆的,也就是说公钥无法反推导出私钥,即使攻击者窃听到传输的公钥,也无法正确解出数据,所以安全性较高。 常见的非对称加密算法主要有:RSA、Elgamal、背包算法、Rabin、D-H 算法等等。
45、两个主机之间如何进行数据传输?
应用层通过协议把数据封装好传到运输层,
运输层通过TCP/UDP协议把数据传输到网络层,
网络层通过IP协议把数据封装好传到链路层,
链路层把数据封装成帧,传到物理层。
路由器再把物理层传的数据一层一层进行解析,
再根据解析出来的数据进行重写封装,
最后传到真正需要通信的那个主机上。