当你用浏览器打开一个链接的时候,计算机做了哪些工作步骤。
(1)、解析域名。
(2)、发起TCP的3次握手。
(3)、建立TCP请求后发起HTTP请求。
(4)、服务器相应HTTP请求。
(5)、浏览器得到HTML代码,进行解析和处理JSON数据,并请求HTML代码中的静态资源(JS、CSS、图片等)。
(6)、浏览器对页面进行渲染。
HTTP有哪些method。
★ GET:获取资源。
★ POST:表单提交。
★ HEAD:获取报头信息,HEAD 方法与 GET 方法类似,但并不会返回响应主体。
★ PUT 与PATCH:更新资源,PUT 对后台来说 PUT 方法的参数是一个完整的资源对象,它包含了对象的所有字段,PATCH 对后台来说 PATCH 方法的参数只包含我们需要修改的资源对象的字段。
★ DELETE:删除资源。
★ OPTIONS:获取目标资源所支持的通信选项,使用 OPTIONS 方法对服务器发起请求,以检测服务器支持哪些 HTTP 方法。
HTTPS的加密方式是什么,讲讲整个加密解密流程。
加密方式: 1)、对称密码算法:指加密和解密使用相同的密钥,速度高,可加密内容较大,用来加密会话过程中的消息。典型算法DES、AES、RC5、IDEA(分组加密)RC4。
2)、非对称密码算法:又称为公钥加密算法,是指加密和解密使用不同的密钥,加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥(公开的密钥用于加密,私有的密钥用于解密)典型的算法RSA、DSA、DH。
3)、散列算法:将文件内容通过此算法加密变成固定长度的值(散列值),这个过程可以使用密钥也可以不使用。这种散列变化是不可逆的,也就是说不能从散列值编程原文,因此散列变化通道常用语验证原文是否被篡改。典型的算法MD5、SHA、BASE64、CRC等。
Session和cookie的区别。
(1)、Cookie保存在客户端,未设置存储时间的Cookie,关闭浏览器会话Cookie就会被删除;设置了存储时间的Cookie保存在用户设备的磁盘中知道过期,同时Cookie在客户端所以可以伪造,不是十分安全,敏感数据不易保存。Session保存在服务器端,存储在IIS的进程开辟的内存中,而Session过多会消耗服务器资源,所以尽量少使用Session。
(2)、Session是服务器用来跟踪用户的一种手段,每个Session都有一个唯一标识:session ID。当服务端生成一个Session时就会向客户端发送一个Cookie保存到客户端,这个Cookie保存的是Session的SessionId这样才能保证客户端发起请求后,用户能够与服务器端成千上万的Session进行匹配,同时也保证了不同页面之间传值的正确性.
(3)、存储数据类型不同:Session能够存储任意的JAVA对象,Cookie只能存储String类型的对象。
(4)、长于10K的数据,不要用到Cookies。
Http与Https的区别:
HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
HTTP 无法加密,而HTTPS 对传输的数据进行加密
HTTP无需证书,而HTTPS 需要CA机构颁发的SSL证书
什么是Http协议无状态协议?怎么解决Http协议无状态协议?
无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息
也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。
可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“
URI和URL的区别
URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的
URI一般由三部组成:
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。
URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等
常见的HTTP相应状态码
200:请求被正常处理
204:请求被受理但没有资源可以返回
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301:永久性重定向
302:临时重定向
303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用POST方法
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙
HTTP优化方案
我下面就简要概括一下:
TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能
内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。
压缩:将文本数据进行压缩,减少带宽
SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密并加速
TCP缓冲:通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。
GET方法与POST方法的区别
区别一:
get重点在从服务器上获取资源,post重点在向服务器发送数据;
区别二:
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别三:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
区别四:
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
区别五:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
HTTP请求报文与响应报文格式
请求报文包含三部分:
a、请求行:包含请求方法、URI、HTTP版本信息
b、请求首部字段
c、请求内容实体
响应报文包含三部分:
a、状态行:包含HTTP版本、状态码、状态码的原因短语
b、响应首部字段
c、响应内容实体
nio和 bio 、aio的区别
消息时的系统通信,通常基于网络协议实现。常见的协议包括TCP/IP,UDP/IP。
TCP/IP等协议用于数据传输,但要完成通信,还需要对数据进行处理。例如读取和写入数据。
I/O可以分为两种:同步IO和异步IO,同步I/O最常见的是 BIO(Blocking IO)、NIO(Non-Blocking IO)
BIO:是当发起I/O的读或写操作时,均为阻塞方式,直到应用程序读到了流或者将流写入数据。
NIO:基于事件驱动思想,常采用reactor(反应器)模式。当发起 IO请求时,应用程序是非阻塞的。当SOCKET有流可读或写的时候,
由操作系统通知应用程序,应用程序再将流读取到缓冲区或者写入系统。
AIO:同样基于事件驱动的思想,通常采用Proactor(前摄器模式)实现。对于读操作,操作系统将数据读到缓冲区,并通知应用程序,对于写操作,操作系统将write方法传递的流写入并主动通知
应用程序。它节省了NIO中遍历事件通知队列的代价。
阻塞 某个请求发出后,由于该请求操作需要的条件不满足,请求操作一直阻塞,不会返回,直到条件满足。
非阻塞 请求发出后,若该请求需要的条件不满足,则立即返回一个标志信息告知条件不满足,而不会一直等待。一般需要通过循环判断请求条件是否满足来获取请求结果。
这里注意比较NIO和AIO的不同,AIO是操作系统完成IO并通知应用程序,NIO是操作系统通知应用程序,由应用程序完成。
reactor 模型
当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理
网络的七层结构及其作用
自上而下是:
应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用
表示层(数据):主要解决用户信息的语法表示问题,如加密解密
会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的
传输层(段):实现网络不同主机上用户进程之间的数据通信,可靠
与不可靠的传输,传输层的错误检测,流量控制等
网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的
传输
数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正
物理层(比特流):设备之间比特流的传输,物理接口,电气特性等
TCP三次握手:
发送方:我要和你建立链接?
接收方:你真的要和我建立链接么?
发送方:我真的要和你建立链接,成功。
为什么 TCP 连接需要三次握手,两次不可以么,为什么?
为了防止已失效的连接请求报文突然又传送到了服务端,因而产生错误。客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达 Server 。
HTTPS 是什么?
HTTPS ,实际就是在 TCP 层与 HTTP 层之间加入了 SSL/TLS 来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。
什么是 TCP 四次挥手?
四次挥手,简单来说,就是:
发送方:我要和你断开连接!
接收方:好的,断吧。
接收方:我也要和你断开连接!
发送方:好的,断吧。
TCP协议
TCP/IP协议按照层次分为以下四层。应用层、传输层、网络层、数据链路层。
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,
UDP 是什么?
UDP(User Data Protocol,用户数据报协议),是与 TCP 相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
主要特点如下:
UDP 是无连接的。
UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参数)。
UDP 是面向报文的。
UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。
tcp与UDP的区别
TCP 是面向连接的;UDP 是无连接的。
TCP 是可靠的;UDP 是不可靠的。
TCP 只支持点对点通信;UDP 支持一对一、一对多、多对一、多对多的通信模式。
TCP 是面向字节流的;UDP 是面向报文的。
TCP 有拥塞控制机制;UDP 没有拥塞控制,适合媒体通信。
TCP 首部开销(20 个字节),比 UDP 的首部开销(8 个字节)要大。