Java面试那点事——网络200303

1. OSI 七层模型?HTTP 协议对应第几层?IP 协议呢?

物理层:通过媒介传输比特,确定机械及电气规范(比特 Bit)

数据链路层:将比特组装成帧和点到点的传递(帧 Frame)

网络层:负责数据包从源到宿的传递和网际互连(包 Packet)

传输层:提供端到端的可靠报文传递和错误恢复(段 Segment)

会话层:建立、管理和终止会话(会话协议数据单元 SPDU)

表示层:对数据进行翻译、加密和压缩(表示协议数据单元 PPDU)

应用层:允许访问 OSI 环境的手段(应用协议数据单元 APDU)

比较重要的协议:IP(网络层)、TCP(传输层)、UDP(传输层)、HTTP(应用层)


2. 从一个 URL 到获取页面的过程?

  1. 浏览器查询 DNS,获取域名对应的 IP 地址:具体过程包括浏览器搜索自身的 DNS 缓存、搜索操作系统的 DNS 缓存、读取本地的 Host 文件和向本地 DNS 服务器进行查询等。

  2. 浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起 TCP 三次握手

  3. TCP/IP 链接建立起来后,浏览器向服务器发送 HTTP 请求

  4. 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

  5. 浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

总结:

ip——tcp——http—— 定位资源 —— 渲染页面展示页面


3. session 的实现原理?session 和 cookie 的关系?禁用 cookie 后对 session 的影响?

session 的实现原理:
session 是一个存在服务器上的类似于一个散列表格的文件。里面存有我们需要的信息,在我们需要用的时候可以从里面取出来。类似于一个大号的 map 吧,里面的键存储的是用户的 sessionid,用户向服务器发送请求的时候会带上这个 sessionid。这时就可以从中取出对应的值了

Session 的实现常常依赖于 Cookie 机制,通过 Cookie 机制回传 SessionID;Cookie 存在安全隐患,通过拦截或本地文件找得到 cookie 后可以进行攻击,而 Session 由于保存在服务器端,相对更加安全;

客户端禁止 cookie,一般默认情况下,在会话中,服务器存储 session 的 sessionid 是通过 cookie 存到浏览器里。如果浏览器禁用了 cookie,浏览器请求服务器无法携带 sessionid,服务器无法识别请求中的用户身份,session 失效。

  • 通过 url 重写把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数。

  • 服务器的返回数据中包含 sessionid,浏览器发送请求时,携带 sessionid 参数。

  • 通过 Http 协议其他 header 字段,服务器每次返回时设置该 header 字段信息,浏览器中 js 读取该 header 字段,请求服务器时,js 设置携带该 header 字段。


4. forward 和 redirect 的区别?

forward 是服务器请求资源,服务器直接访问目标地址的 URL, 把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect 是服务端根据逻辑,发送一个状态码 , 告诉浏览器重新去请求那个地址。所以地址栏显示的是新的 URL.

  • forward: 一般用于用户登陆的时候,根据角色转发到相应的模块.
  • redirect: 一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

转发是服务器行为,重定向是客户端行为


【Java 面试那点事】

这里致力于分享 Java 面试路上的各种知识,无论是技术还是经验,你需要的这里都有!

这里可以让你【快速了解 Java 相关知识】,并且【短时间在面试方面有跨越式提升】

面试路上,你不孤单!
在这里插入图片描述

发布了196 篇原创文章 · 获赞 878 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/qq_33945246/article/details/104618789