计算机网络2--HTTP篇

本文详细介绍了HTTP的基本知识,包括状态码、头部字段、GET和POST的区别,以及HTTP的优缺点。探讨了HTTP与HTTPS的安全性差异,HTTPS如何解决HTTP的不安全问题。此外,还阐述了HTTP协议从1.1到2.0再到3.0的性能提升,以及TCP和UDP在HTTP中的作用。最后,提及了Cookie和Session在保存用户状态中的应用,以及ARP和DNS的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.五大类面试题目

  1. HTTP基本知识
  2. GET和POST
  3. HTTP特性
  4. HTTP和HTTPS
  5. HTTP/1.1,HTTP/2,HTTP/3演变

2. HTTP基本知识

2.1 HTTP是什么?

1)HTTP是什么?

1)超文本传输协议:HyperText Transfer Protocol
2) 超文本:超越文本的文本(文字,图片,视频,超链接的结合体)
3)协议:计算机的世界的规范
4)传输:两点之间。不一定是服务器与浏览器之间

2.2 HTTP五大类状态码

  1. 1XX:提示信息,协议处理的中间态,还需要后续操作
  2. 2XX:成功,报文已经收到并被正确处理:200,204和206
  3. 3XX:重定向,资源位置发生变动,需要客户端重新发送请求。301,302,304
  4. 4XX:客户端发送的报文有误,服务器无法处理,也就是错误码的意义(403,服务器禁止访问资源,404请求的资源在服务器上找不到)
  5. 5XX:客户端报文正确,服务器处理时内部发生错误,属于服务器端的状态码。(502:即将开业,敬请期待;502:服务器自身工作正常,访问后端服务器发生错误;503服务器当前很忙)。

2.2 HTTP常见字段有哪些

  1. Host字段:客户端发起请求时,用来指定服务器的域名 -----》
  2. Connection字段:客户端要求服务器使用TCP持久连接,以便其他请求复用。
  3. Content-Length 字段:服务器返回数据时,会有Content-Length,表明本次回应的数据长度。 《 ----
  4. Content-Type字段:服务器回应时,告诉客户端,本次数据的格式是什么?《 ----
  5. Content-Encoding字段:服务器回应时,告诉客户端,本次数据的压缩方式是什么?《 ----

3. GET和POST

3.1 GET和POST有哪些区别?

  1. Get:从服务器获取资源,可以是静态的文本,页面和图片视频。
  2. Post:向服务器指定的URL域名提交数据,数据放在报文的body中。

3.2 GET和POST方法都是安全和幂等的吗?

  1. 安全:请求方法不会破坏服务器上的资源
  2. 幂等:多次执行相同的操作,结果都是相同的。
  3. GET只是从服务器读取信息,不修改信息,故事安全和幂等的。
  4. POST向服务器修改数据,故事不安全和不幂等的。

4. HTTP特性

4.1 HTTP的优点

  1. 简单:基本报文格式是header+body,头部信息也是key-value简单文本格式
  2. 灵活和易于扩展:HTTP协议中:各类请求方法,状态码,头字段,等每个组成部分都可以自由修改。
  3. 应用广泛和跨平台:从台式浏览器到手机上的各种APP,应用遍地开发,并且天然具有跨平台的优越性。

4.2 HTTP的缺点

  1. 无状态双刃剑:优点是服务器不会去记住HTTP的状态,减轻服务器的负担;缺点:服务器没有记忆功能,完成有关联性的操作会非常麻烦。
    1)举例说明:登录购物网站,如果没有记忆功能,登录账户后,每一步操作,都会需要验证用户信息,非常难操作。
    2)解决无状态问题:在请求和响应报文中,写入Cookie信息来控制客户端的状态。

  2. 明文传输双刃剑:优点:方便阅读,未调试工作带来了便利性 ;缺点:不安全。如果信息中包含账户和密码,就暴露了。

  3. 不安全
    1)通信中使用明文:内容被窃听,号没了
    2)不验证通信方身份,容易被伪装:钱没了
    3)无法证明报文的完成性,可能被篡改:眼没了
    解决方式:在HTTPS中,引入SSL/TLS层,安全上达到了极致。

4.3 HTTP1.1的性能如何?

HTTP协议是基于TCP/IP,并且使用了【请求和问答】的通信模式,性能的关键就在这两点上。

  1. 长连接:持久连接,通过字段Connection定义:只要任意一端没有明确提出断开连接,就保持连接状态。(避免频繁进行三次握手协议)
  2. 管道网络传输:允许浏览器同时发送请求A和B。客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发送第二个请求,减少整体的响应时间。(服务器还是按顺序进行回应)
  3. 队头阻塞:同一时刻,请求过多,会发生堵塞。
    综上:HTTP1.1性能一般般,主要在HTTP/2和HTTP/3中优化。

5. HTTP和HTTPS

5.1 HTTP和HTTPS的区别?

  1. 安全性更高:HTTPS在TCP运输层和HTTP网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输。
  2. 操作更多:HTTPS因为多了一层,需要进行加密,所以比HTTP更复杂一点。
  3. 端口不同:HTTP的端口号是80,HTTPS的端口号是443.
  4. 是否需要服务器认证:HTTPS需要向CA申请数字证书,保证服务器的身份是可信的。
  5. URL前缀名:HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。

5.1 HTTPS解决HTTP哪些问题?

安全性上的三个风险:

  1. 窃听风险:获取通信信息—混合加密
  2. 冒充风险:冒充淘宝网站 —安全验证,数字证书
  3. 篡改风险:植入广告 —摘要算法保证一致性

5.1 HTTPS如何解决HTTP不安全问题?

在TCP传输层和HTTPS应用层之间添加一层SSL/TLS,解决风险问题。

  1. 信息加密:交互信息无法被窃取,通过混合加密方法
  2. 校验机制:无法篡改通信内容,篡改了不能正常显示。通过摘要算法来保证一致性
  3. 身份证书:证明淘宝网是真的,将服务器公钥放入数字证书

1)混合加密:对称加密和非对称加密结合使用。
2)摘要算法:能够为数据生成独一无二的指纹,用于校验数据的完整性。
3)数字证书:将服务器公钥放入数字证书中。

5.1 HTTPS如何建立连接,期间交互了什么?

  1. SSL/TLS协议基本流程:
  • 客户端向服务器索要验证服务器的公钥 :数字证书
  • 双方协议生产会话秘钥
  • 双方采用会话秘钥进行加密通信
  1. 四次握手
    前面两步是SSL/TLS的建立过程,即握手阶段:涉及四次通信
  • ClientHello:客户端到服务端:加密通信请求,
  • SeverHello:服务器到服务端:(确认开始加密)
  • 客户端回应:取出公钥,加密报文
  • 服务器最终响应:收到三个随机数,协商算出通信的会话秘钥
  1. 最后一步就是普通的HTTP协议通信阶段。

6. HTTP/1.1,HTTP/2,HTTP/3演变

6.1 说说HTTP/1.1相比HTTP/1.0提高了什么性能?

  • 长连接:改善1.0短连接带来的开销
  • 管道网络传输:减少整体的响应时间。

6.2 说说HTTP/2相比HTTP/1.1提高了什么性能?

  • 头部压缩:如果同时发送多个请求,头部是一样的,消除重复部分。HPACK算法,共同维护一章头信息表
  • 二进制格式:1.1为纯文本报文,2采用二进制格式,统称为帧:头信息帧和数据帧。增加数据传输效率
  • 数据流:对数据包做标记,指出属于哪个回应。每个请求和回应所有的数据包,称为一个数据流。
  • 多路复用:并发多个请求或者回应,不按顺序一一对应。降低了延迟,大幅度提高连接的利用率。不会出现队头阻塞。
  • 服务器推送:服务端可以主动向客户端发送信息。(在浏览器请求HTML时,可以提前把可能用到的JS,CSS文件等静态资源发送给客户端)

6.2 说说HTTP/3相比HTTP/2提高了什么性能?

HTTP/2的缺陷:

  • 多个HTTP请求复用同一个TCP,下层的TCP协议不知道有多少个HTTP请求。当发生丢包的时候,所有的HTTP请求都必须等待这个丢包重传过来。

解决办法:
1)这个是基于TCP传输层的问题,HTTP/3把下层的TCP协议改为了UDP。UDP不管丢包问题,不会出现等待现象。
2) UDP是不可靠传输的,但是基于UDP的QUIC协议可以实现类似TCP的可靠性传输。

UDP的QUIC协议
1)QUIC是UDP上的伪TCP+TLS+HTTP/2的多路复用协议。
2)当某个流发生丢包时,只会阻塞这个流,不会影响其他流
3)HTTPS建立连接需要6次握手(建立三次,TLS三次),QUIC合并为三次,减少交互次数。

7. 其他问题

7.1 应用层有哪些常见的协议?

  1. HTTP:超文本传输协议,主要是为Web浏览器和Web服务器之间通信而设计的。(HTTP是无状态的协议,一般通过Session来记录客户端用户的状态)

  2. SMTP:简单邮件传输(发送)协议。接受使用的POP3协议

  3. POP3/IMAP:邮件接收的协议。
    举例:邮件的发送过程
    1)发送:通过STMP协议,从服务端把邮件发给163邮箱服务器
    2)发送:163邮箱服务器发现要送达的对象是QQ邮箱,故通过STMP协议,把邮件发给QQ邮箱服务器。
    3)接收:QQ邮箱服务器通知对应邮箱用户接受邮件。用户通过通过POP3协议读取邮件。

  4. FTP:文件传输协议

7.2 TCP如何保证数据的可靠传输

  1. 数据进行分割为数据块,打包发送
  2. 校验和:检验数据是否传输错误
    
  3. 流量控制
  4. 拥塞控制:慢开始算法,拥塞避免算法,快重传和快恢复算法。
  5. 超时重传,快重传

参考内容:小林图解计算机网络

7.3 在浏览器中输入 url 地址 ->> 显示主页的过程(面试常客)

1)DNS 解析
2)TCP 连接
3)发送 HTTP 请求
4)服务器处理请求并返回 HTTP 报文
5)浏览器解析渲染页面
6)连接结束

7.4 HTTP是无状态协议,如何保存用户状态(cookie和session)

7.4.1 Cookie(添加内容)

Cookie:记录发送方的信息,保存用户信息,存放在浏览器端

7.4.2 Session(添加内容)

Session:通过服务器记录用户的状态(比如之前发了什么),存放在服务器端。

7.5 URI 和 URL 的区别是什么?

URI:统一资源标志符,能够标志一个资源 :户口本,直到身份证号和家庭住址信息
URL: 统一资源定位符 ,能够定位一个资源的路径 :家庭住址

8. ARP和DNS

8.1 ARP

地址解析协议:通过目标地址的IP地址,查询目标设别的MAC地址

  1. 工作流程
    发送端和接收端在同一个网段内:
    1)发送端在自己的ARP表中,寻找是否有对应IP地址的MAC地址;找到了,就直接把IP数据包进行发过去
    2)没有找到,产生广播报文:广播报文发送端为发送端的IP和MAC,接收端为接收端的IP地址的MAC地址;
    3)在同一个网络下。发送端收到了广播,使用单播形式给发送端发送自己的物理地址;
    4)发送端根据获得的物理地址,存入自己的ARP表中,然后进行把IP数据包进行发送

8.2 DNS

DNS协议则是用来将域名转换为IP地址。

  1. 没有DNS协议是如何转化的?
    1)通过host文件:域名和IP地址的对应关系存储在host文件中,但是不方便维护。

  2. DNS协议是如何转化的?
    1)用户在输入域名的时候,会自动查询DNS服务器,由服务器检索其数据库;服务器的级别是一层一层往上推进的,直到找到域名对应的IP地址为止。【域名有分级,所以域名服务器也是分级的】
    2)查找方式有:递归查找(找到了不用通知上一级,给结果)。迭代查找(需要通知上一级,给过程)

  3. DNS的特点:
    1)IP地址是面向主机的,给主机识别;域名是面向用户的
    2)用户输入域名,主机根据DNS协议,把域名对应的IP地址找到,然后使用ARP,找到对应的物理地址,进行数据的发送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值