[TOC]

八、网络

79.http 响应码 301 和 302 代表的是什么?有什么区别?

301:永久重定向。
302:暂时重定向。
它们的区别是,301 对搜索引擎优化(SEO)更加有利;302 有被提示为网络拦截的风险。

80.forward 和 redirect 的区别?

forward是转发,redirect是重定向:

  • 地址栏url显示:forward url不会发生改变,redirect url会发生改变;
  • 数据共享:forward可以共享request里的数据,redirect不能共享;
  • 效率:forward比redirect效率高。

    81.简述 tcp 和 udp的区别?

    tcp和udp是OSI模型中的传输层中的协议。tcp提供可靠的通信传输,而udp则常被用于让广播和细节控制交给应用的通信传输。
    两者的区别大致如下:

  • tcp面向连接,udp面向非连接即发送数据前不需要建立链接;

  • tcp提供可靠的服务(数据传输),udp无法保证;
  • tcp面向字节流,udp面向报文;
  • tcp数据传输慢,udp数据传输快。

    82.tcp 为什么要三次握手,两次不行吗?为什么?

    如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那么此时服务器端就会一直等待客户端,这样服务器就拜拜浪费了一定的资源。若采用三次握手,服务器端没有收到来自客户端的再次确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。

    83.说一下 tcp 粘包是怎么产生的?

    tcp粘包可能发生在发送端或者接收端,分别来看两端各种产生粘包的原因:

  • 发送端粘包:发送端需要等缓冲区满才发送出去造成粘包;

  • 接收方粘包:接收方不及时接收缓冲区的包,造成多个包接收。

    84.OSI 的七层模型都有哪些?

  • 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。

  • 数据链路层:负责建立和管理节点间的链路。
  • 网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
  • 传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。
  • 会话层:向两个实体的表示层提供建立和使用连接的方法。
  • 表示层:处理用户信息的表示问题提,如编码、数据格式转换和加密解密等。
  • 应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。

    85.get 和 post 请求有哪些区别?

  • get请求会被浏览器主动缓存,而post不会。

  • get传递参数有大小限制,而post没有。
  • post参数传输更安全,get的参数会明文限制在url上,post不会。

    86.如何实现跨域?

    实现跨域有一下几种方案:

  • 服务器端运行跨域,设置CORS等于*;

  • 在单个接口使用注解@CrossOrigin运行跨域;
  • 使用jsonp跨域。

    87.说一下 JSONP 实现原理?

    jsonp:JSON with Padding,它是利用