Marvel-Site Marvel-Site
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)

Marvel

吾必当乘此羽葆盖车
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)
  • Java

  • 计算机基础

    • 数据结构与算法

    • 计算机网络

      • HTTP基本概念
      • 五层网络模型
      • TCP协议
      • IP
      • 计算机网络常见面试问题
        • 1 DNS解析过程
        • 2 浏览器输入URL返回页面的过程
        • 3 HTTP如何保存用户状态
        • 4 Cookie和Session的作用
        • 5 Cookie和Session的区别
        • 6 Cookie的存活时间
        • 7 对称加密和非对称加密
        • 8 SMTP:简单邮件传输协议
        • 9 电子邮件的发送过程
        • 10 如何判断邮箱是真正存在的
        • 11 FTP文件传输协议
        • 12 URI 和 URL 的区别
        • 13 转发与重定向
        • 14 request、session、application的区别
    • 操作系统

    • Linux

  • 框架|中间件

  • 架构

  • 后端
  • 计算机基础
  • 计算机网络
Marvel
2022-07-13
目录

计算机网络常见面试问题

# 计算机网络常见面试问题

计算机网络常见面试问题

# 1 DNS解析过程

  1. 浏览器先检查自身缓存中有没有解析过这个域名对应的 IP 地址,如果有,解析结束。
  2. 浏览器检查操作系统缓存中有没有对应的解析结果,在 C 盘的 hosts 文件夹里有 networks。如果有,解析结束。
  3. 请求本地域名服务器(LDNS)来解析域名,这台服务器一般位于你的城市,距离不会很远,服务器的性能也很好,一般会缓存域名解析结果,大约 80% 的域名解析都在这里完成。
  4. 如果 LDNS 未命中,直接跳到根域名服务器请求解析,根域名服务器是最高层次的,它不直接用于域名解析,它会返回一个所查询域的顶级域名服务器(如 com cn org)地址。
  5. 请求顶级域名服务器,它会返回对应的服务名地址,就是权限域名服务器。
  6. 在权限域名服务器中找到目标的 IP 地址,返回给本地域名服务器 LDNS。
  7. LDNS 缓存这个域名和对应的 IP。
  8. LDNS 把解析的结果返回给用户,并缓存在本地系统中。

# 2 浏览器输入URL返回页面的过程

image-20220221165724748

  1. 浏览器解析URL:生成发送给Web服务器的请求信息。包括:协议(HTTP、HTTPS)、web服务器、访问的资源路径
  2. DNS解析域名:在发送报文之前需要查询服务器域名对应的IP地址,这个过程需要DNS解析。
  3. TCP连接:三次握手
  4. 浏览器发送HTTP请求:如get请求包含主机(Host)、用户代理(User-Agent),用户代理就是自己的浏览器,它是你的"代理人",Connection(连接属性)中的keep-alive。又是还可能包含cookies
  5. 服务器处理请求并响应:服务器接收到请求会解析请求头,生成一个响应头和具体的响应内容,响应头会告诉浏览器一些重要的信息(比如,状态码)。响应内容就是要请求的页面内容。
  6. 浏览器解析渲染页面
  7. 关闭TCP连接:四次挥手

# 3 HTTP如何保存用户状态

HTTP 是无状态协议,也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。

典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,服务端给特定的用户创建特定的 Session 之后,将 Session ID 保存到浏览器的 Cookie 中,在发送请求的时候携带 Session ID,服务器就知道是哪个用户了。一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个 Session。

在服务端保存 Session 的方法很多,最常用的就是内存和数据库,比如 redis。大部分情况通过在 Cookie 中附加一个 Session ID 来实现跟踪。当 Cookie 被禁用时,可以利用 URL 重写把 Session ID直 接附加在 URL 路径的后面。

# 4 Cookie和Session的作用

Cookie 和 Session 都是浏览器用来跟踪用户身份的,但是应用场景不同。

Cookie 一般用来保存用户信息:

  1. 在 Cookie 中保存已经登陆过的用户信息,下次访问网站的时候,页面可以自动把登录的基本信息填好。
  2. 一般网络会保持登录状态,下次访问无需再次登录,因为用户登录的时候可以存放一个 Token 在 Cookie 中,下次登录的时候只需根据 Token 值来查找用户即可。(为了安全考虑,重新登陆一般要重写 Token)

登录一次网站后访问网站其他页面不需要重新登录。Session的主要作用就是通过服务端记录用户的状态。典型的场景就是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,服务器给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

# 5 Cookie和Session的区别

  • 作用范围不同:Cookie 保存在客户端,Session 保存在服务器
  • 有效期不同:Cookie 可以设置长时间保存,比如默认登陆;session 一般时间较短,客户端关闭或 Session 超时都会失效。
  • 隐私策略不同:Cookie 存储在客户端,容易被窃取;Session 存储在服务器,安全性相比 Cookie 会好一点。
  • 存储大小不同;单个 Cookie 保存的数据不能超过 4K;对 Sesssion 来说没有上线,但要处于服务器的性能考虑,Session 内不要存放过多的数据,需要设置 Session 删除机制。

# 6 Cookie的存活时间

  • 默认情况,浏览器关闭,Cookie 数据被销毁
  • 持久化存储,把 Cookie 数据写到硬盘的文件。设置最大存活时间 setMaxAge()

# 7 对称加密和非对称加密

  • 对称加密:通信双方使用相同的密钥进行加密。特点是加密速度快,但是缺点是密钥泄露会导致密文数据被破解。

  • 非对称加密:需要生成两个密钥,公钥和私钥。公钥是公开的,任何人都可以获得,而私钥是私人保管的,不能泄露。公钥负责加密,私钥负责解密;非对称加密算法是RSA算法。这种加密算法安全性高,但是计算量相比对称加密大很多,加密和解密过程都很慢。

  • 通过非对称加密发送对称加密的密钥,案例如下:

    • A需要与银行做交易,浏览器生成一个随机数作为对称密钥。
    • A的浏览器向银行网站请求公钥。
    • 银行将公钥发送给A。
    • A的浏览器使用银行的公钥对对称密钥进行加密。
    • A的浏览器将加密后的密钥发送给银行。
    • 银行使用私钥解密得到A浏览器的对称密钥
    • A与银行直接使用对称加密来进行沟通了。

# 8 SMTP:简单邮件传输协议

简单邮件传输(发送)协议,SMTP,Simple Mail Transfer Protocal基于TCP协议,用来发送电子邮件。

SMTP是发送电子邮件的协议,接收电子邮件的协议是POP3协议、IMAP协议。

# 9 电子邮件的发送过程

比如我的邮箱是“123456@163.com”,我要向“xiaoming@qq.com"发送邮件,整个过程分为下面几个步骤:

  1. 通过SMtp协议,将写好的邮件交给 163 邮箱服务器(邮局)。
  2. 163邮箱服务器检测到我发送的邮箱是 QQ 邮箱,然后它使用SMTP协议将我的邮件转发给 QQ 邮箱服务器。
  3. QQ邮箱服务器接收到邮件后就通知“xiaoming@qq.com"的用户来收邮件,然后用户就通过 POP3/IMAP 协议将邮件取出。

# 10 如何判断邮箱是真正存在的

利用SMTP协议来检测:

  1. 查找邮箱域名对应的SMTP服务器地址。
  2. 尝试与服务器建立连接。
  3. 连接成功后向需要验证的邮箱发送邮件。
  4. 根据返回结果判定邮箱地址的真实性。

# 11 FTP文件传输协议

提供文件传输服务,基于TCP实现可靠的传输。使用FTP传输文件的好处是可以屏蔽操作系统和文件存储方式。

FTP是基于客户-服务器(C/S)模型而设计的,在客户端与FTP服务器之间建立两个连接。

# 12 URI 和 URL 的区别

  • URI, Uniform Resource Identifier,统一资源标志符,可以唯一标识一个资源
  • URL,Uniform Resource Locator,统一资源定位符,可以提供该资源的路径。它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

URI的作用像身份证一样,URL的作用更像家庭住址一样。URL是一个具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

# 13 转发与重定向

转发:由服务器进行页面跳转。浏览器发送请求,服务器经过第一次处理,添加一些参数后转发,经过第二次处理,再响应给浏览器。(服务器内部的重定向)。

image-20221114150230976

重定向:由客户端进行页面跳转。请求获得响应后,再次发送一个新的请求。

image-20221114150302824
区别 转发forward() 重定向sendRedirect()
根目录 包含项目访问地址 没有项目访问地址
地址栏 不会发生变化 会发生变化
哪里跳转 服务器端进行的跳转 浏览器端进行的跳转
请求域中数据 不会丢失 会丢失

# 14 request、session、application的区别

作用域request < session < application

  • request:在一次请求上生效,当把信息返回给客户端,该对象就被销毁。
  • session:用于跟踪用户的状态。应用:登录、购物车
  • application:一个服务器就一个 application,用户共享一个 application,当服务器停止时 application 销毁。应用:网站访问次数。
编辑 (opens new window)
#计算机网络
上次更新: 2023/08/20, 21:21:52
IP
操作系统基本概念

← IP 操作系统基本概念→

最近更新
01
位运算
05-21
02
二叉树
05-12
03
Spring三级缓存解决循环依赖
03-25
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Marvel
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式