1.浏览器的历史
起初的浏览器是单进程的,所有的服务全都在一个进程中运行,这会导致一个模块出现问题会导致整个浏览器出现问题,而且它们会占用大量内存资源,所以后面浏览器进化成多线程,以浏览器进程为主进程,不同的页面处于不同的渲染进程中,这样的好处是一张页面卡顿不会导致整个浏览器休克,此外不同的进程都被放在安全沙箱内,这样就避免了占用敏感内存区域的问题。只是多进程的浏览器架构存在更复杂的体系架构和更高的资源占用问题,未来的浏览器可能会走向“面向服务”架构模式。
------------------------------------------------------------
面试题:进程和线程之间的区别?
答:进程是执行中的一段程序,线程是进程执行过程中的任务;一个线程只属于一个进程,一个进程内可以有很多线程,且一个进程里可以有很多不同的线程。
------------------------------------------------------------
2.TCP协议
浏览器和服务端之间使用的网络协议是TCP/IP协议,TCP协议相对于UDP协议有保证数据不丢失的优点,这可以保证页面文件能够完整的从服务器送达到浏览器。
------------------------------------------------------------
面试题:TCP的三次握手?(为什么是三次握手而不是两次握手?)
答:就是解释以下TCP三次握手的具体过程,第一次握手是客服端发送给服务端,客服端发送的TCP数据首部中包含字段SYN=1,ACK=0以请求服务器连接;第二次握手是服务端发送给客服端,服务端发送的TCP数据中包含字段SYN=1,ACK=1两个数据,表示同意连接请求;第三次握手是客服端发送给服务端,发送的TCP数据中包含ACK=1,SYN=0表示确认收到了服务端的SYN段。
ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效。 SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。
------------------------------------------------------------