计算机网络面试知识点(二)
总结一下计算机网络面试知识点,仅供个人学习。
前言
上一篇总结了一下计算机网络的基础知识点,这篇再对计算机网络一些面试知识点进行记录归纳。
一、HTTP无状态如何保存用户信息?
1、HTTP协议无状态协议
上一篇中提到HTTP需要注意的三个地方其中一个就包括HTTP是无状态协议的。
HTTP协议是无状态协议:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
2、解决方案
(1)基于Session实现的会话保持:
请求之后,服务器分配一个会话标识(SessionId)给客户端,这个会话标识一般保存在客户端Cookie中,以后每次浏览器发送http请求都会带上Cookie中的SessionId到服务器,服务器拿到会话标识就可以把之前存储在服务器端的状态信息与会话联系起来,实现会话保持(如果遇到浏览器禁用Cookie的情况,则可以通过url重写的方式将会话标识放在url的参数里,也可实现会话保持。
(2)基于Cookie实现的会话保持
基于Cookie实现会话保持与上述基于Session实现会话保持的最主要区别是前者完全将会话状态信息存储在浏览器Cookie中,这样一来每次浏览器发送HTTP请求的时候都会带上状态信息,因此也就可以实现状态保持。
3、cookie和session
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。 Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
二、GET和POST的区别
GET | POST |
---|
请求数据附加在URL之后,以?分割URL和传输数据,多个参数用&连接 | 请求的数据放置在HTTP请求包的包体中 | 请求数据会暴露在地址栏中(账号,密码) | 请求数据不会暴露(在请求包中) | 特定的浏览器和服务器对URL的长度有限制 | POST请求理论上是不会受限制的 | 安全性较低(浏览器缓存,历史记录等) | 安全性比较高(参数不会被保留) | get在浏览器回退时是无害的 | post会再次请求 | get产生一个TCP数据包 | post产生两个tcp包 | get多用于获取 | post多用于发送 |
三、浏览器输入URL的过程
第一步:浏览器查找自己的DNS 缓存,如果有直接返回 。
第二步:操作系统查找自己的DNS缓存,如果有直接返回给浏览器。
第三步:操作系统查找自己的本地host文件,如果有返回给浏览器。
第四步:操作系统向本地域名服务器发起请求,查找本地DNS缓存,如果有,返回给操作系统,然后操作系统返回给浏览器。
第五步:操作系统由根域名服务器向顶级域名服务器发起请求得到权限域名服务器的IP,(顶级域名服务器再向权限域名服务器发起请求得到IP,本地域名服务器返回给操作系统IP),同时将IP缓存起来,操作系统将IP返回给浏览器,同时将IP缓存起来。
第六步:根据IP建立TCP连接(三次握手),连接建立成功发起http请求,服务器给出响应,将指定文件发送给浏览器,浏览器解析HTML代码并请求html中的静态资源(js,css),关闭TCP连接(四次挥手)。
第七步:浏览器渲染页面。
四、HTTP与HTTPS
HTTPS
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。
SSL
SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
1、为什么要用HTTPS?
一般http中存在如下问题:
(1)请求信息明文传输,容易被窃听截取。 (2)数据的完整性未校验,容易被篡改 (3)没有验证对方身份,存在冒充危险
为了解决上述HTTP存在的问题,就用到了HTTPS。
2、HTTPS的工作原理
(1)首先客户端通过URL访问服务器建立SSL连接。 (2)服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。 (3)客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。 (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。 (5)服务器利用自己的私钥解密出会话密钥。 (6)服务器利用会话密钥加密与客户端之间的通信。
3、HTTPS缺点
(1)HTTPS协议多次握手,导致页面的加载时间延长近50%;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
(3)申请SSL证书需要钱,功能越强大的证书费用越高。
(4)SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。
4、HTTPS和HTTP的区别
HTTPS和HTTP的区别主要如下:
1、https协议需要申请SSL证书。
2、http的协议传输信息是明文,不安全。https则是具有安全性的ssl加密传输协议。
3、http和https连接方式不同,端口也不一样,http是80,https是443。
4、http的连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
总结
本文主要记录了HTTP相关的知识点,还有面试时遇到过的几个高频问题,当然还有很多其他重点东西没有总结到,比如三次握手、四次挥手这些原理过程等,先留到下一篇吧。
|