面试准备-打卡第一天-计网篇

288 阅读7分钟

OSI七层模型、TCP/IP模型、网络五层结构及每一层的协议?

OSI七层模型:物联网输会示用 应用层、表示层、会话层、传输层、网络层、链路层、物理层

TCP/IP四层模型:应用层、传输层、网络层、网际接口层

网络五层结构:应用层、传输层、网络层、数据链路层、物理层

image-20220326165635548.png

image-20220329130703078.png

什么是HTTP?

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。协议就是双方约定好的格式,确保双方都能理解这种格式。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)

HTTP是一个属于应用层的面向对象的协议,由于其简洁、快速的方式,适用于分布式超媒体信息系统

HTTP协议工作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务根据接收到的请求后,向客户端发送响应信息。

HTTP协议的发展历程?

image-20220329132011803.png

常用的HTTP方法有哪些?

  • GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
  • POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐POST方式
  • PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置
  • HEAD:获得报文首部,与GET类似,只是不返回报文主体,一般用于验证URI是否有效
  • DELETE:删除文件,与PUT方法相反
  • OPTIONS:查询相应URI支持的HTTP方法

HTTP1.1版本新特性

a、默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求

b、管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应

c、断点续传原理

如何根据HTTP的状态码区别类型?

状态码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受

3xx:重定向--要完成请求必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或请求无法实现

5xx:服务器端错误--服务器未能实现合法的请求

HTTP常见的状态码有哪些?

200 OK //客户端请求成功

204:请求被受理但没有资源可以返回

206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。

301 永久性重定向,请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

302 临时重定向,服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上

304:发送附带条件的请求时,条件不满足时返回,与重定向无关

307:临时重定向,与302类似,只是强制要求使用POST方法

400 Bad Request //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用

403 Forbidden //服务器收到请求,但是拒绝提供服务

404 Not Found //请求资源不存在,eg:输入了错误的 URL

500 Internal Server Error //服务器发生不可预期的错误

503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

状态码301和302的区别是什么?

共同点:301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)。 不同点:301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。 SEO中302好于301。

补充,重定向原因

  1. 网站调整(如改变网页目录结构);
  2. 网页被移到一个新地址;
  3. 网页扩展名改变(如应用需要把.php改成.Html或.shtml)。

HTTP GET方法和POST方法的区别

  • GET请求参数通过URL传递,POST请求放在请求体里
  • GET产生一个TCP数据包,POST产生两个TCP数据包,对于GET方式的请求,浏览器会把请求头和请求体一并发送出去,而对于POST,浏览器先发送请求头,服务器响应100 continue,浏览器再发送请求体
  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置
  • GET请求只能进行url编码,POST请求支持多种编码方式
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

HTTP协议有哪些特点?

  1. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
  2. 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。
  3. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  4. 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
  5. 支持 B/S 及 C/S 模式

对称加密和非对称加密是什么?

对称加密是指加密和解密使用同一种秘钥的方式,这种方式存在的最大问题就是如何安全的把秘钥发送给对方

而非对称加密是指使用一种非对称秘钥,即公钥和私钥,公钥可以随意发布,而私钥只有自己知道,发送密文的一方用对方的公钥对数据进行加密,只有用对方的私钥才能解密