1.为什么要进行三次握手: 目的:为了防止已经失效的连接请求报文段突然又传送到服务端,因而产生错误。主要是防止资源的浪费。 具体过程:当客户端发出第一个连接请求报文段时并没有丢失,而是在某个网络节点出现了长时间的滞留,以至于延误了连接请求在某个时间之后才到达服务器,这应该是一个早已失效的报文段,但是服务器在收到此失效的连接请求报文段后,以为是客户端的一个新请求,于是就向客户端发出了确认报文段,同意建立连接。假设不采用三次握手,那么只要服务器发出确认之后,新的连接就会建立。但是由于客户端没有发出建立连接的请求,因此不会管服务器的确认,也不会向服务器发送数据,但服务器却以为新的连接已经建立,一直在等待。所以,服务器的资源就白白浪费掉了。 2.为什么要进行四次挥手: TCP的连接是全双工的,所以连接的拆除需要两个通道分别拆除,而四次挥手做的事情就是拆除两条通道和释放资源。 如果是三次挥手的话,被动关闭端在接收到FIN消息之后,需要同时回复ACK和server端的FIN消息。如果server端在该连接上并没有pending的消息要处理,那么是可以的。如果server端还需要等待一段时间才可以关闭另外一个方向的连接,那么这样的三次挥手就不能满足条件。 3.session和cookie的区别: 1)数据存放位置不同:cookie是以文本形式存储在客户端,session存放在服务器端 2)安全程度不同:cookie不是很安全,别人可以分析存放在本地的cookie,并进行cookie欺骗,考虑到安全应该使用session 3)性能使用程度不同:session会在一定时间内保存在的服务器上,当访问增多,会特别占用服务器的性能,考虑到减轻服务器的性能方面,应当使用cookie 4)数据存储不同:单个cookie保存的数据不能超过4k,很多站点都限制一个站点最多保存20个cookie,而session则存储在服务端,浏览器对其没有限制。 5)会话机制不同:session会话机制是一种服务器端机制,它使用类似于哈希表的结构来保存信息。 cookie会话机制是服务器存储在本地计算机上的小块文本。web服务器使用http头将cookie发送到客户端。在客户端终端,浏览器解析cookie并将其保存为本地文件,该文件自动将来自同一服务器的任何请求绑定到这些cookie。 4.网络为什么要分层:将一个复杂的计算机网络分开管理,各个层实行相应的功能,便于管理和标准。 5.分层的好处: 1)各层之间相互独立,不需要知道低层的结构,只需要知道该层通过层间的接口所提供的服务。 2)灵活性好,当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。 3)结构上可分割,各层都采用最合适的技术来实现。 4)易于实现和维护 5)能促进标准化工作