前端面试-计算机网络

文章目录

  • 一、HTTP协议
    • [1. GET和POST的请求的区别](#1. GET和POST的请求的区别)
    • [2. POST和PUT请求的区别](#2. POST和PUT请求的区别)
    • [3. 常见的HTTP请求头和响应头](#3. 常见的HTTP请求头和响应头)
    • [4. HTTP状态码304](#4. HTTP状态码304)
    • [5. HTTP和HTTPS协议的区别](#5. HTTP和HTTPS协议的区别)
    • [6. 当在浏览器中输入 Google.com 并且按下回车之后发生了什么?](#6. 当在浏览器中输入 Google.com 并且按下回车之后发生了什么?)
    • [7. HTTP协议的优点和缺点](#7. HTTP协议的优点和缺点)
    • [8. 与缓存相关的HTTP请求头有哪些](#8. 与缓存相关的HTTP请求头有哪些)
  • 二、HTTPS协议
    • [1. TLS/SSL的工作原理](#1. TLS/SSL的工作原理)
    • [2. HTTPS通信(握手)过程](#2. HTTPS通信(握手)过程)
  • 三、HTTP状态码
  • 四、网络模型

一、HTTP协议

1. GET和POST的请求的区别

  • 发送的报文格式:Get 请求的报文中实体部分为空,Post 请求的报文中实体部分一般为向服务器发送的数据。
  • 安全性:Get 请求可以将请求的参数放入 url 中向服务器发送,这样的做法相对于 Post 请求来说是不太安全的,因为请求的 url 会被保留在历史记录中。
  • 请求长度:浏览器由于对 url 长度的限制,所以会影响 get 请求发送数据时的长度。这个限制是浏览器规定的
  • 是否缓存:因为两者应用场景不同,浏览器一般会对 Get 请求缓存,但很少对 Post 请求缓存。

2. POST和PUT请求的区别

  • PUT请求是向服务器端发送数据,从而修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。(可以理解为是更新数据)
  • POST请求是向服务器端发送数据,该请求会改变数据的种类等资源,它会创建新的内容。(可以理解为是创建数据)

3. 常见的HTTP请求头和响应头

常见的请求头:

  • Accept:浏览器能够处理的内容类型
  • Accept-Charset:浏览器能够显示的字符集
  • Cookie:当前页面设置的任何Cookie
  • Host:发出请求的页面所在的域
  • Referer:发出请求的页面的URL

常见的响应头:

  • Cache-Control:控制HTTP缓存
  • content-type:表示后面的文档属于什么MIME类型
    常见的 Content-Type 属性值有以下四种:
    (1)application/x-www-form-urlencoded:浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。种方式提交的数据放在 body 里面,数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL转码。
    (2)multipart/form-data:该种方式也是一个常见的 POST 提交方式,通常表单上传文件时使用该种方式。
    (3)application/json:服务器消息主体是序列化后的 JSON 字符串。
    (4)text/xml:该种方式主要用来提交 XML 格式的数据。

4. HTTP状态码304

服务器为了提高网站访问速度,对之前访问的部分页面指定缓存机制,当客户端在此对这些页面进行请求,服务器会根据缓存内容判断页面与之前是否相同,若相同便直接返回304,此时客户端调用缓存内容,不必进行二次下载。

304状态码出现过多会造成以下问题:

  • 网站快照停止;
  • 收录减少;
  • 权重下降

5. HTTP和HTTPS协议的区别

  • HTTPS协议需要CA证书,费用较高;而HTTP协议不需要;
  • HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议;
  • 使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS协议端口是443;
  • HTTP协议连接很简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全。

6. 当在浏览器中输入 Google.com 并且按下回车之后发生了什么?

1、解析URL:

2、缓存判断

3、DNS解析:要获取的是输入的 URL 中的域名的 IP 地址,首先会判断本地是否有该域名的 IP 地址的缓存,如果有则使用,如果没有则向本地 DNS 服务器发起请求。本地 DNS 服务器也会先检查是否存在缓存,如果没有就会先向根域名服务器发起请求。

4、获取MAC地址:数据传输还需要知道目的主机 MAC 地址

5、TCP三次握手:首先客户端向服务器发送一个 SYN 连接请求报文段和一个随机序号,服务端接收到请求后向客户端发送一个 SYN ACK报文段,确认连接请求,并且也向客户端发送一个随机序号。客户端接收服务器的确认应答后,进入连接建立的状态,同时向服务器也发送一个ACK 确认报文段,服务器端接收到确认后,也进入连接建立状态,此时双方的连接就建立起来了。

6、HTTPS握手

7、返回数据

8、页面渲染

9、TCP四次挥手

7. HTTP协议的优点和缺点

HTTP协议具有以下优点:

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
  • 无连接:无连接就是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议,这里的状态是指通信过程的上下文信息。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能会导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就比较快。
  • 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。

HTTP协议具有以下缺点:

明文传输:协议中的报文使用的是文本形式,这就直接暴露给外界,不安全。

8. 与缓存相关的HTTP请求头有哪些

强缓存:

  • Expires
  • Cache-Control

协商缓存:

  • Etag、If-None-Match
  • Last-Modified、If-Modified-Since

二、HTTPS协议

1. TLS/SSL的工作原理

TLS/SSL全称安全传输层协议(Transport Layer Security), 功能实现主要依赖三类基本算法:散列函数hash、对称加密、非对称加密。这三类算法的作用如下:

  • 基于散列函数验证信息的完整性
  • 对称加密算法采用协商的秘钥对数据加密
  • 非对称加密实现身份认证和秘钥协商

2. HTTPS通信(握手)过程

  • 客户端向服务器发起请求,请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的加密方法。
  • 服务器端接收到请求后,确认双方使用的加密方法、并给出服务器的证书、以及一个服务器生成的随机数。
  • 客户端确认服务器证书有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,然后发给服 务器。并且还会提供一个前面所有内容的hash 的值,用来供服务器检验。
  • 服务器使用自己的私钥,来解密客户端发送过来的随机数。并提供前面所有内容的 hash 值来供客户端检验。
  • 客户端和服务器端根据约定的加密方法使用前面的三个随机数,生成对话秘钥,以后的对话过程都使用这个秘钥来加密信息。

三、HTTP状态码

  • 301: 永久重定向,当我们想换个域名,旧的域名不再使用时,用户访问旧域名时用301就重定向到新的域名。其实也是告诉搜索引擎收录的域名需要对新的域名进行收录。
  • 302:未登陆的用户访问用户中心重定向到登录页面。
  • 403: 该状态码表明请求资源的访问被服务器拒绝了,服务器端没有必要给出详细理由,但是可以在响应报文实体的主体中进行说明。

四、网络模型

OSI七层模型:

  • 应用层:常见应用层的网络服务协议有:HTTP,HTTPS,FTP,SMTP等
  • 表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
  • 会话层:会话层就是负责建立、管理和终止表示层实体之间的通信会话。
  • 传输层:传输层建立了主机端到端的链接,TCP UDP就是在这一层
  • 网络层
  • 数据链路层
  • 物理层
相关推荐
_.Switch2 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
qq_254674412 小时前
工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置
网络
JokerSZ.2 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
cs_dn_Jie3 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic4 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿4 小时前
webWorker基本用法
前端·javascript·vue.js
小松学前端5 小时前
第六章 7.0 LinkList
java·开发语言·网络
清灵xmf5 小时前
TypeScript 类型进阶指南
javascript·typescript·泛型·t·infer
城南vision5 小时前
计算机网络——TCP篇
网络·tcp/ip·计算机网络