2021-07-26 HTTP面试相关

1、http 常⻅字段有哪些?

  • Host 字段,客户端发送请求时,⽤来指定服务器的域名。
  • Content-Length 字段,服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据⻓度。
  • Connection 字段,keep-alive常⽤于客户端要求服务器使⽤ TCP 持久连接,以便其他请求复⽤。
  • Content-Type 字段,⽤于服务器回应时,告诉客户端,本次数据是什么格式。
  • Accept 字段,客户端请求的时候声明⾃⼰可以接受哪些数据格式。
  • Content-Encoding 字段,说明数据的压缩⽅法。表示服务器返回的数据使⽤了什么压缩格式

1、说⼀下 GET 和 POST 的区别?(百度,注意细节)

  • Get ⽅法的含义是请求从服务器获取资源,这个资源可以是静态的⽂本、⻚⾯、图⽚视频等。
    GET ⽅法就是安全且幂等的,它是「只读」操作,⽆论操作多少次,服务器上的数据都是安全
    的,且每次的结果都是相同的。
  • POST ⽅法则是相反操作,它向 URI 指定的资源提交数据,数据就放在报⽂的 body ⾥。
  • POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。

2、 HTTP(1.1) 的优缺点有哪些,怎么体现的?

HTTP 最凸出的优点是「简单、灵活和易于扩展、应⽤⼴泛和跨平台」。

  • 简单:
    HTTP 基本的报⽂格式就是 header + body ,头部信息也是 key-value 简单⽂本的形式, 易于理解。
  • 灵活和易于扩展:
    HTTP协议⾥的各类请求⽅法、 URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发⼈员⾃定义和扩充
    HTTP 由于是⼯作在应⽤层( OSI 第七层),则它下层可以随意变化
    HTTPS 也就是在 HTTP 与 TCP 层之间增加了 SSL/TLS 安全传输层, HTTP/3 甚⾄把 TCP 层换成了基于 UDP 的QUIC。
  • 应⽤⼴泛和跨平台:

缺点:

  • HTTP 协议⾥有优缺点⼀体的双刃剑,分别是「⽆状态、明⽂传输」,同时还有⼀⼤缺点「不安全
    ⽆状态的好处:不需要额外的资源来记录状态信息,这能减轻服务器的负担
    ⽆状态的坏处:既然服务器没有记忆能⼒,它在完成有关联性的操作时会⾮常麻烦,解法⽅案有很多种,其中⽐较简单的⽅式⽤ Cookie 技术
    使⽤明⽂(不加密)被窃听、(HTTPS中TLS协议 信息加密:交互信息⽆法被窃取 - 混合加密)
    不验证通信⽅的身份,伪装、(HTTPS中TLS协议 身份证书:是真的淘宝⽹ - 服务器公钥放⼊到数字证书)
    ⽆法证明报⽂的完整性,篡改(HTTPS中TLS协议 校验机制:⽆法篡改通信内容 - 摘要算法)
    HTTP 的安全问题,可以⽤ HTTPS 的⽅式解决,也就是通过引⼊ SSL/TLS 层,使得在安全上达到了极致

3、 HTTP/1.1 的性能如何?

  • ⻓连接,( HTTP/1.0短连接)这种⽅式的好处在于减少了TCP 连接的重复建⽴和断开所造成的额外开销,减轻了服务器端的负载。
  • 管道⽹络传输:⻓连接的⽅式,这使得管道(pipeline)⽹络传输成为了可能,在同⼀个 TCP 连接⾥⾯,客户端可以发起多个请求,只要第⼀个请求发出去了,不必等其回来,就可以发第⼆个请求出去,可以减少整体的响应时间
  • 队头阻塞:服务器还是按照顺序,先回应 A 请求,完成后再回应 B 请求。要是前⾯的回应特别慢,后⾯就会有许多请求排队等着。这称为「队头堵塞」。

4、HTTP 与 HTTPS 有哪些区别?

  • HTTP 是超⽂本传输协议,信息是明⽂传输,存在安全⻛险的问题。 HTTPS 则解决 HTTP 不安全的缺陷,在TCP 和 HTTP ⽹络层之间加⼊了 SSL/TLS 安全协议,使得报⽂能够加密传输
  • HTTP 连接建⽴相对简单, TCP 三次握⼿之后便可进⾏ HTTP 的报⽂传输。⽽ HTTPS 在 TCP 三次握⼿之后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输
  • HTTP 的端⼝号是 80, HTTPS 的端⼝号是 443
  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

5、浏览器中输入URL,发生了什么?

  • 1、浏览器要将URL解析为IP地址。
  • 解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务器是基于UDP的,因此会用到UDP协议。
  • 2、得到IP地址后,浏览器就要与服务器建立一个http连接。
  • http生成一个get请求报文,将该报文传给TCP层处理,所以还会用到TCP协议。如果采用https还会使用https协议先对http数据进行加密。TCP层如果有需要先将HTTP数据包分片,分片依据路径MTU和MSS。TCP的数据包然后会发送给IP层,用到IP协议。IP层通过路由选路,一跳一跳发送到目的地址。当然在一个网段内的寻址是通过以太网协议实现(也可以是其他物理层协议,比如PPP,SLIP),以太网协议需要直到目的IP地址的物理地址,有需要ARP协议。

6、TCP怎么保证可靠性

  • 1、序列号、确认应答、超时重传
  • 数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段往返时间)+一个偏差值。
  • 2、窗口控制与高速重发控制/快速重传(重复确认应答)
  • TCP会利用窗口控制来提高传输速度,意思是在一个窗口大小内,不用一定要等到应答才能发送下一段数据,窗口大小就是无需等待确认而可以继续发送数据的最大值。如果不使用窗口控制,每一个没收到确认应答的数据都要重发。
  • 使用窗口控制,如果数据段1001-2000丢失,后面数据每次传输,确认应答都会不停地发送序号为1001的应答,表示我要接收1001开始的数据,发送端如果收到3次相同应答,就会立刻进行重发;但还有种情况有可能是数据都收到了,但是有的应答丢失了,这种情况不会进行重发,因为发送端知道,如果是数据段丢失,接收端不会放过它的,会疯狂向它提醒
  • 3、拥塞控制
  • 如果把窗口定的很大,发送端连续发送大量的数据,可能会造成网络的拥堵(大家都在用网,你在这狂发,吞吐量就那么大,当然会堵),甚至造成网络的瘫痪。所以TCP在为了防止这种情况而进行了拥塞控制。
    在这里插入图片描述
  • 慢启动:定义拥塞窗口,一开始将该窗口大小设为1,之后每次收到确认应答(经过一个rtt),将拥塞窗口大小*2。
  • 拥塞避免:设置慢启动阈值,一般开始都设为65536。拥塞避免是指当拥塞窗口大小达到这个阈值,拥塞窗口的值不再指数上升,而是加法增加(每次确认应答/每个rtt,拥塞窗口大小+1),以此来避免拥塞。
  • 将报文段的超时重传看做拥塞,则一旦发生超时重传,我们需要先将阈值设为当前窗口大小的一半,并且将窗口大小设为初值1,然后重新进入慢启动过程。
  • 快速重传:在遇到3次重复确认应答(高速重发控制)时,代表收到了3个报文段,但是这之前的1个段丢失了,便对它进行立即重传。然后,先将阈值设为当前窗口大小的一半,然后将拥塞窗口大小设为慢启动阈值+3的大小。这样可以达到:在TCP通信时,网络吞吐量呈现逐渐的上升,并且随着拥堵来降低吞吐量,再进入慢慢上升的过程,网络不会轻易的发生瘫痪。

5、HTTPS 是如何建⽴连接的?其间交互了什么?

6、HTTP/1.1、 HTTP/2

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

7、HTTP/2 有哪些缺陷? HTTP/3 做了哪些优化?

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值