计算机网络重要知识点总结(三)2022版

其他计算机网络面试题总结
计算机网络重要知识点总结一
计算机网络重要知识点总结二
计算机网络重要知识点总结四

一、POST和GET有哪些区别?

使用场景

  • GET 的语义是从服务器获取指定的资源,请求的参数位置一般是写在 URL 中(URL 只支持 ASCII,而且浏览器会对 URL 的长度有限制)。
  • POST 的语义是根据请求负荷(报文body)对指定的资源做出处理,请求携带数据的位置一般是写在报文 body 中。

安全性和幂等性

  • 安全性:指请求方法不会「破坏」服务器上的资源。
  • 幂等性:多次执行相同的操作,结果都是「相同」的。
  • GET 方法就是安全且幂等的,因为它是「只读」操作。
  • POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全非幂等的。

是否可缓存

  • GET可以缓存到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx)
  • POST不可缓存

二、GET请求中URL编码的意义?

在GET请求中会对URL中非西文字符进行编码,这样做的目的就是为了 避免歧义

假设有“name1=value1&name2=value2”的字符串,该字符串在计算机中用ASCII码表示为:

   6E616D6531 3D 76616C756531 26 6E616D6532 3D 76616C756532
   6E616D6531:name1 
   3D:= 
   76616C756531:value1 
   26&
   6E616D6532:name2 
   3D:= 
   76616C756532:value2 

服务端在接收到该数据后就可以遍历该字节流,一个字节一个字节的吃,当吃到3D这字节后,服务端就知道前面吃得字节表示一个key。

但是参数值中就包含 = 或 & 这种特殊字符的时候该怎么办?例如“va&lu=e1”

为了避免服务器解析产生歧义,解决的办法就是对参数进行URL编码。

三、HTTP中常用的状态码?

状态码分类

1xx:表示目前是协议的中间状态,还需要后续操作;

2xx:表示请求成功

3xx:表示重定向,需要重新请求

4xx:表示请求报文错误,客户端出错

5xx:表示服务器端错误

常用状态码

「200 OK」:如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。

「204 No Content」:响应头没有 body 数据。

「206 Partial Content」:表示响应返回的 body 数据并不是资源的全部,而是其中的一部分。

「301 Moved Permanently」:表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。

「302 Found」:表示临时重定向。

「304 Not Modified」:表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源。

「400 Bad Request」:请求错误。

「403 Forbidden」:表示服务器禁止访问。

「404 Not Found」:表示请求的资源未找到。

「500 Internal Server Error」:服务器错误。

「502 Bad Gateway」:服务器作为网关或代理时返回的错误码。

「503 Service Unavailable」服务器繁忙。

四、HTTP长连接和短链接,流水线是什么?

长连接和短链接

  • 短连接:浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
  • 长连接:指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,节省了TCP连接建立和断开的消耗。

流水线

默认情况下,HTTP 请求是按顺序发的,下一个请求只有在当前请求收到响应之后才会被发出。而收到下一个请求可能需要很长时间。流水线就是在一个 HTTP 长连接下连续发出请求,不用等待响应返回,减少延迟

五、HTTP1.0,1.1,2.0 ,3.0的版本区别?

HTTP/1.0

  • 仅支持短连接,每次发送数据都会经过TCP三次握手和四次挥手,效率低。

  • 不支持端点续传,每次发送数据都会发送全部数据

  • 不支持虚拟网络

HTTP/1.1

  • 默认使用长连接:只需要建立一次连接,可以传输多次数据,传输完成之后,只需要一次切断即可。通过请求头的 Connection: keep-alive设置。

  • 引入了管道机制:即在同一个TCP连接里面,客户端可以同时发送多个请求。

  • 支持断点续传:也就是允许请求资源的一部分,返回206状态码,请求头中设置range字段,来规定分割的byte数范围

  • Host头处理
    http1.0中默认每台服务器都绑定唯一的一个IP地址,所以请求消息中url并没有传递主机名,也就是hostname。

    http1.1中请求消息和响应消息都支持Host头域,而且,如果我们不传这个字段还会报一个400(bad request)的状态码(虚拟主机共享ip地址)

  • 增加了缓存策略
    http1.0的缓存策略主要是依赖header中的If-Modiified-Since,Expire(到期)

    http1.1的缓存策略要比http1.0略多,例如 Entity tag(实体标签), If-Unmodified-Since, If-Match, If-None-Match等

有了持久连接和管道,大大的提升了HTTP的效率。但是服务端还是顺序执行的,效率还有提升的空间。

HTTP/2.0

  • 基于 HTTPS 。安全性有保障。
  • 利用HPACK算法进行头部压缩。由于HTTP1.1头部经常出现Cookie、Accept、Sever、Range等字段可能会占用几百到几千字节,而body有时只有几十字节(“头重身轻”)。
  • 报文采用二进制格式。头信息帧和数据帧统称为帧。
  • 数据流。每个请求的所有数据包,称为一个数据流。每个数据流都标记着一个独一无二的编号(Stream ID),因此不同 Stream 的帧是可以乱序发送的
  • 多路复用。在一个连接中,客户端和浏览器都可以同时发送多个请求或回应,而不用按照顺序一一对应。

HTTP/1.1 中的管道虽然解决了请求的队头阻塞,但是没有解决响应的队头阻塞

HTTP/2.0通过多路复用解决了响应的队头阻塞,但是在一个TCP连接中,一旦发生丢包,就会阻塞住所有的 HTTP 请求,这属于 TCP 层队头阻塞。

HTTP/3.0

HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP。UDP 发生是不管顺序,也不管丢包的,所以不会出现像 HTTP/2 队头阻塞的问题,基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输。

  • 无队头阻塞

  • 更快的连接建立

在这里插入图片描述

六、HTTP和HTTPS的区别?

Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。

  • http 协议是免费使用的, https 协议需要到CA机构购买证书;
  • http明文传输,https报文加密;
  • http端口80,https端口443;
  • https会消耗更多cpu和内存资源;

七、HTTP中的请求方法有哪些?

  • GET:获取资源。
  • HEAD:获取报文首部。
  • POST:对指定资源进行处理。
  • PUT:上传文件。由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题
  • Delete:删除文件,与 PUT 功能相反,并且同样不带验证机制。

八、对称加密和非对称加密的区别?

对称加密

指双方对信息的加密和解密使用的是同一个密钥的方式。

非对称加密

非对称加密的密钥分为公钥和私钥,任何人都可以获得公钥,但是只有自己拥有私钥。使用公钥加密的数据,只有对应的私钥能进行解密;使用私钥加密的数据,只有对应的公钥能进行解密。加密和解密使用的是两个不同的密钥,故称非对称加密。

九、请求转发和重定向的区别?

请求转发

  • 浏览器只发出一次请求,收到一次响应。
  • 浏览器地址显示的是用户提交的请求路径,不会改变。
  • 只能跳转道当前应用的资源中。

重定向

  • 浏览器发出两次请求,接收两次响应。
  • 浏览器地址显示为重定向的请求路径,而非提交的请求路径。可以防止表单的 重复提交。
  • 不仅可以跳转到当前应用的其他资源,也可以跳转到其他应用的资源。

十、谈谈你对停止等待协议的理解?

停止等待协议

位于数据链路层,为了实现可靠传输,原理是每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。

超时重传

在停止等待协议中会设置超时计时器,如果超过时间没有收到接收方的ACK,则会对数据进行重传。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值