网络常见面试题(二)
1、HTTP有哪八种请求类型?
- GET
- POST
- PUT
- DELETE
- Options
- HEAD
- TRACE
- CONNECT
2、session什么时候被创建?
一个常见的错误是以为session在有客户端访问时就被创建,然而事实是直到某server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建。
3、session何时被删除?
- 程序调用HttpSession.invalidate()
- 距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间
- 服务器进程被停止
再次注意,关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。
4、运输层协议与网络层协议的区别?
网络层协议负责的是提供主机间的逻辑通信
运输层协议负责的是提供进程间的逻辑通信
5、http 响应码 301 和 302 代表的是什么?有什么区别?
301:永久重定向。
302:暂时重定向。
它们的区别是,301 对搜索引擎优化(SEO)更加有利;302 有被提示为网络拦截的风险。
6、tcp 为什么要三次握手,两次不行吗?为什么?
为了节省服务器资源。
详解:如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。
若采用三次握手,服务器端没有收到来自客户端的再此确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。
7、forward(转发) 和 redirect(重定向) 的区别?
地址栏URL显示:foward URL不会发生改变,redirect URL会发生改变;
数据共享:forward 可以共享 request 里的数据,redirect 不能共享;
效率:forward 比 redirect 效率高。
8、说一下 tcp 粘包是怎么产生的?
tcp 粘包可能发生在发送端或者接收端,分别来看两端产生粘包的原因:
发送端粘包:发送端需要等"发送缓冲区"满才发送出去,造成粘包;
接收方粘包:接收方不及时取"接收缓冲区"的包,造成多个包接收。
9、HTTP 502和503的区别?
从网络角度,502已经与后端建立了连接,但超时;503与后端连接未建立,超时。