面试题之网络篇

本贴最后更新于 980 天前,其中的信息可能已经时移俗易

在浏览器中输入网址,回车后会发生什么

  • 首先是解析网址到 IP 地址,包括浏览器可能会有网址到 IP 地址的缓存,以及本地的 hosts 文件如果有相关记录会直接使用,如果都没有记录,则会向域名服务器发查询请求,域名服务器有层级结构,我们会先向最底层域名服务器请求,如果服务器中也没有记录,会一层层向上请求,得到结果后返回浏览器。
  • 然后是向 IP 地址发送请求,具体说是向 IP 的特定端口发送请求,一般 http 协议是 80 端口,https 协议是 443 端口。这一步会涉及网络 7 层模型,及各层的各种协议,比如 TCP 协议,IP 协议,ICMP 协议等等。
  • IP 地址对应的服务器收到请求后,会执行相应的动作,这里具体的动作与服务端的架构有关,比如如果是请求静态资源,可能直接返回,如果是某个后端服务接口,还可能向后转发请求等等,最终,会返回一个响应。
  • 浏览器收到响应后,也会执行相应的逻辑,如果是静态资源,如 HTML 或 CSS 文件,会解析文件并渲染页面,如果是 json 格式响应体,通常由 js 代码接收并处理。

网络 7 层模型都是哪 7 层

从上层向下分别是:

  • 应用层
  • 会话层
  • 表示层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

现在使用比较广泛的是 TCP/IP4 层模型:

  • 应用层
  • 传输层
  • 网络层
  • 物理层

常用状态码的含义:401,403,404,500

  • 401:未登录
  • 403:已登陆,但没有权限
  • 404:请求的资源不存在
  • 500:服务端产生内部错误

按照 REST 风格设计一个学生管理系统的路由

定义一个学生实体,对该实体分别定义增删改查的路由:

  • 增加学生:POST 方法,路由:/student,学生信息放到请求体中
  • 删除学生:DELETE 方法,路由:/student/{studentId},没有请求体
  • 修改学生信息:PUT 方法,路由:/student/{studentId},要修改的内容放到请求体中
  • 查询学生信息:GET 方法,路由:/student/{studentId},没有请求体,也不加参数
  • 批量查询学生列表:GET 方法,路由:/student,通过 query 参数增加筛选条件

GET 方法和 POST 方法的区别

  • 从使用场景上看,GET 通常用来获取资源,POST 通常用来提交资源
  • GET 方法不能有请求体,POST 方法可以有,或者说,GET 方法既是带了请求体,服务端也大概率不处理
  • GET 方法把参数放到 query 里,POST 方法把参数放到请求体里,这也导致了 GET 方法携带的参数长度会受请求长度限制,而 POST 方法通常没有限制,请求体可以很大
  • GET 方法通常来说比 POST 方法更不安全,因为参数是直接拼接在 URL 后的
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖
  • 网络
    131 引用 • 177 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...