当前位置: 首页 > article >正文

前端计算机网络面试基础知识

http和https区别

http

  1. 超文本传输协议,运行在tcp协议上,指定了客户端和服务器的通信规则
  2. 特点
  • 支持C/S模式
  • 无连接、无状态,只需要发送路径和请求方法,快速
  • 灵活,允许传输任意类型对象
  1. URL构成
    http://[主机/ip][端口]/文件位置

  2. 请求:包含请求行、消息报头、请求正文

  • 请求行:以方法符号开头,空格分割,跟着URL和协议版本
    METHOD REQUEST URL Version
  • 消息报头:包含附加信息和客户信息
  1. 响应:包含状态行、消息报头、响应正文
  • 状态行:http版本、状态码、状态描述
    1** 请求已接收,处理中
    2** 成功
    3** 重定向
    4** 客户端错误
    5** 服务器错误
    常见状态码:
    • 200 OK
    • 400 错误请求
    • 401 未授权
    • 404 未找到
    • 500 服务器内部错误

https

加密版本的http

  1. ssl加密:在tcp/ip协议上加层加密,使用公钥加密,私钥解密,加密传输
  2. tsl加密:防止邮件、网页、消息 被篡改和窃听
  3. 特点:数据保密,数据完整性,身份校验安全性

区别

  1. 加密特征:https采用ssl和tls
  2. 证书认证:服务器向浏览器发送证书,包含公钥和授权信息
  3. 端口号:http默认80,https默认443

三次握手

http建立链接时的运行过程

  1. 客户端发送带syn的报文到服务器,随机产生seq序列号,要求建立连接
    syn:识别号

  2. 服务器端接收客户请求,返回客户报文,带syn和校验码ack=seq+1,再生成个seq序列号

  3. 客户端发送ack报文,确认服务器的报文,客户端校验成功之后
    发送请求到服务器,服务器确认消息,连接成功

四次挥手

理解服务器端和客户端是如何断开连接的

  1. 客户到服务器端发送fin报文,要求关闭连接
  2. 服务器端收到fin报文,返回fin
  3. 服务器端返回+ack报文,确认客户端的报文,并关闭连接
  4. 客户端向服务器端发送ack校验码,断开连接

为什么连接用三次,关闭用四次

服务器接收浏览器syn报文,发送syn+ack报文到客户端,再加上确认,需要三次

四次挥手能够确保数据完整性,服务器收到浏览器fin报文时,表示没有数据传输,但是可能还有数据正在传输中,所以服务器不会马上关闭,直到全部数据发送完毕

http工作原理

  1. 请求
    浏览器输入网址后,向浏览器发送http请求,包含请求行、消息报头、请求正文

  2. 响应
    包含状态行、消息报头、响应正文

  3. 状态码
    详见上面的描述

  4. 原理
    客户端向服务器端发送请求,服务器端接收请求,根据url和程序处理,生成服务器内容给客户端,客户端接收消息后自行处理数据

强缓存和协商缓存

缓存:浏览器在本地磁盘中对访问过的资源进行存储
特点:减少重复请求、降低服务器压力、加快打开速度

强制缓存

  1. 直接缓存资源到浏览器内置的缓存位置,包括静态资源 img css js,重复请求就无需访问服务器
  2. 服务器响应头部存在expires(过期时间) 或 catch-control(缓存机制)就强制缓存

协商缓存

  1. 服务器决定哪些资源需要缓存
  2. 响应头部存在Etag(16禁止标志位) 和 Last-Modified(最后修改时间)标志位就协商缓存

区别

  1. 强制缓存-静态资源,协商缓存-程序数据
  2. 强制缓存,不需要服务器许可,如果过期就重新存储
  3. 协商缓存,需要服务器许可

http://www.kler.cn/a/304256.html

相关文章:

  • 库打包工具 rollup
  • 「QT」几何数据类 之 QPointF 浮点型点类
  • Flink安装和Flink CDC实现数据同步
  • 人工智能--JupyterNoteBook 转换成 PDF
  • IoTDB 与 HBase 对比详解:架构、功能与性能
  • golang 实现bitcoin core: bitcoin 椭圆曲线的“生成元”设置
  • rancker 图形化界面
  • 充电管理芯片
  • Redis简介、常用命令及优化
  • 串口通信协议
  • python如何把数据导出生成excel ?
  • Python 数学建模——假设检验
  • 学习之性能的理论知识一
  • 【中国国际航空-注册/登录安全分析报告】
  • Spring Cloud集成Eurake
  • 《PneumoLLM:利用大型语言模型的力量进行尘肺病诊断》|文献速递--基于深度学习的医学影像病灶分割
  • mysql笔记4(数据类型)
  • Nginx 实现会话保持的方式配置
  • echarts饼图让部分数据显示在图外,部分显示在图内
  • 数据结构应用实例(五)——关键路径
  • 学python要下什么包吗,有推荐的教程或者视频吗?
  • SprinBoot+Vue山西文旅网的设计与实现
  • 软件测试学习笔记丨Postman实战练习
  • 黑链、黑帽、明链分别是什么意思
  • JavaScript --函数作用域变量的使用规则(局部和访问)
  • 研究生深度学习入门的十天学习计划------第十天