美文网首页
HTTP深入浅出---面试题

HTTP深入浅出---面试题

作者: 学的会的前端 | 来源:发表于2019-12-10 19:19 被阅读0次

初级

1. URI和URL的区别

  1. URI:统一资源标识符,用于标识互联网上的资源的字符串。
    维基百科解释为:该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。URI的两种常见形式:1.统一资源定位符URL:经常指定为非正式的网址;2.统一资源名称URN:通过提供的一种途径,用于在特定名字空间资源的标识,以补充网址。
  2. URL:统一资源定位符,表示资源的地点。
  3. URI包含URL。
  4. URI的格式:
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
http:// :方案名
user:pass:登录信息(认证)
@www.example.jp:服务器地址
80:服务器端口号
dir/index.htm:带层次的文件路径
?uid=1:查询字符串
#ch1:片段标识符
  1. URL与URN的区别:
    URN代表着一个资源的名称,这个资源可以不是基于互联网的;URL代表着一个资源的地址。

2. 常见HTTP方法有哪些?使用场景分别是什么?

  • GET:获取资源。GET方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。HTTP1.0~1.1
  • POST:传输实体主体。HTTP1.0~1.1
  • PUT:传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件的内容,然后保存到请求URI指定的位置。HTTP1.0~1.1
  • HEAD:获取报文首部。与GET方法类似,用于确认URI的有效性及资源更新的日期时间等等。HTTP1.0~1.1
  • DELETE:删除文件。是与PUT方法相反的。HTTP1.0~1.1
  • OPTIONS:询问支持的方法。用来查询针对请求URI指定的资源支持的方法。HTTP1.1
  • TRACE:追踪路径。是让Web服务器端将之前的请求通信返回给客户端。HTTP1.1
  • CINNECT:要求用隧道协议连接代理。实现用隧道协议进行TCP通信。HTTP1.1
  • LINK:建立和资源之间的连接。
  • UNLINK:断开连接关系。

3. GET与POST的区别

  1. 作用不同:GET获取资源,像后台要数据;POST传输实体主体,像后台传输数据。
  2. 请求参数的展现发送不同:GET请求会用?将请求参数拼接成url;POST请求的请求参数在请求主体内。
  3. 传输数据长度不同:因为浏览器地址栏对自动对url进行截取,所以当数据量过大时,GET请求会造成数据丢失。
  4. 安全性:因为GET请求会拼接成url展示,但是浏览器的历史记录和服务器的请求日志,都会保存其信息,造成信息的不安全。

4. 在HTML的form标签里,method支持哪些类型?

method 属性规定如何发送表单数据(表单数据发送到 action 属性所规定的页面)。
表单数据可以作为 URL 变量(method="get")或者 HTTP post (method="post")的方式来发送。即有GETPOST两种类型。

5. 状态码200,301,302,304,403,404,500,503分别代表什么?

  1. 状态码:
    • 1XX:Informational(信息性状态码),接收的请求正在处理。
    • 2XX:Success(成功状态码),请求正常处理完毕。
    • 3XX:Redirection(重定向状态码),需要进行附加操作以完成请求。
    • 4XX:Client Erroe(客户端错误状态码),服务器无法处理请求。
    • 5XX:Server Error(服务器错误状态码),服务器处理请求出错。
  2. 200状态码:(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
  3. 301状态码:(永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
  4. 302状态码:(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  5. 304状态码:(未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
  6. 403:状态码:(禁止) 服务器拒绝请求。
  7. 404状态码:(未找到) 服务器找不到请求的网页。
  8. 500状态码:(服务器内部错误) 服务器遇到错误,无法完成请求。
  9. 503状态码:(服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
    HTTP常见状态码

中级

1. OSI的七层模型是什么?TCP/IP是哪四层模型?

  • OSI七层模型
    七层模型,也叫OSI(OPen System Interconnection)参考模型,是国际标准化组织(ISO)指定的一个用于计算机或通信系统间互联的标准体系。其中包括:
    1. 应用层
    2. 表示层
    3. 会话层
    4. 传输层
    5. 网络层
    6. 数据链路层
    7. 物理层
  • TCP/IP四层模型
    其中主要包括:
  1. 应用层:
    应用层决定了向用户提供应用服务时通信的活动。下述的三层负责处理网络通讯的相关细节,这部分需要稳定高效,因此它们是在操作系统的内核空间中,而应用层是在用户空间实现的,负责处理众多业务逻辑,如文件传输、网络管理。
    应用层的协议众多:
    • 运行在TCP协议上的协议
      1.1 HTTP(80端口):主要用于普通浏览。
      1.2 HTTPS(443端口):HTTP协议的安全版本。
      1.3 FTP(20和21端口):用于传输文件。
      1.4 POP3(110端口):收邮件用。
      1.5 SMTP(25端口):用来发送电子邮件。
      1.6 SSH(22端口):用于加密安全登录用。
    • 运行在UDP协议上的协议
      2.1 DCHP(67端口,动态主机配置协议),动态配置IP地址。
    • 其他
      3.1 DNS(域名服务):用于完成地址查找,邮件转发等工作(运行在TCP/IP协议上)。
      3.2 SNMP(简单网络管理协议):用于网络信息的收集和网络管理。
      3.3 ARP(地址解析协议):用于动态解析以太网硬件的地址。
  2. 传输层:
    传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输,即为应用程序隐藏了数据包跳转的细节,负责数据包的收发、链路超时重连等。
    传输层的协议:
    • TCP协议:传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通信协议。
    • UDP协议:用户数据报协议,不可靠的传输层协议。
  3. 网络层:
    网络层用来处理在网络上流动的数据包。
    网络层协议:
    • IP协议: 是网络层最核心的协议,它根据数据包的目的IP地址来决定如何投递该数据包。若数据包不可直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器去转发,如此循环直至到达目标主机或者发送失败而丢弃该数据包。
    • ICMP协议: 因特网控制报文协议ICMP,是IP协议的补充,用于检测网络的连接状态,如ping应用程序就是ICMP协议的使用。
  4. 链路层:
    用来处理连接网络的硬件部分。包括控制操作系统、硬件设备驱动、NIC(网络设备器即网卡),及光纤等物理课件部分(还包括连接器等一切传输媒介)。

2. 讲一讲TCP的三次握手和TCP四次挥手的流程

  1. TCP建立连接的三次握手

    图解TCP建立连接三次握手.PNG
    所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。为了准确无误的将数据发送达目标处,TCP协议采用三次握手策略。
    1.1 第一次握手(SYN=1, seq=x)
    客户端发送一个SYN=1的请求报文,指明客户端要连接的服务器的端口,及初始序列号x,发送完毕后,客户端进入SYN_SEND状态。
    1.2 第二次握手(SYN=1, ACK=1, seq=y,ack=x+1)
    服务器返回一个ACK=1的应答报文,并且也发送了SYN=1的请求报文,服务器端选择自己的序列号seq=y,并且响应客户端的请求,应答序号ack设置为x+1,即为客户端的请求序号+1。服务器端进入 SYN_RCVD状态。
    1.3 第三次握手(ACK=1,ack=y+1)
    客户端再一次发送应答报文,对服务器的应答序号ack=y+1。客户端进入 ESTABLISHED状态,当服务器端接收到这个包时,也进入ESTABLISHED 状态。
    TCP 握手结束。
  2. TCP释放连接的四次挥手

    TCP释放连接的四次挥手.PNG
    2.1 第一次挥手(FIN=1,seq=x)
    客户端向服务器端发送FIN=1,告诉服务器想要关闭连接。发送完毕后,客户端进入FIN_WAIT_1状态。
    2.2 第二次挥手(ACK=1,ack=x+1)
    服务器端接收到客户端的请求信息,返回一个确认信息,表示已经收到关闭连接的请求,但是还没有完毕连接,在准备。服务器端进入CLOSE_WAIT状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2状态,等待服务器端关闭连接。
    2.3 第三次挥手(FIN=1,seq=y)
    服务器端已经关闭连接,并告知客户端。发送完毕后,服务器端进入LAST_ACK状态,等待来自客户端的最后一个ACK。
    2.4 第四次挥手(ACK=1,ack=y+1)
    客户端已经收到关闭好连接的回应,并发送一个确认包告诉服务器。并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。服务器端接收到这个确认包之后,关闭连接,进入CLOSED 状态。

3. 为什么TCP建立连接是三次握手,释放连接是四次挥手?

这是因为服务端的LISTEN状态下的SOCKET当收到客户端建立连接请求的SYN报文后,它可以把ACKSYNACK 起应答作用,而 SYN起同步作用)放在一个报文里来发送。但关闭连接时,当服务器收到客户端的 FIN 报文通知时,服务器只能发一个回应报文ACK:“哦,我知道了”,然后通知应用程序。应用程序完成全部数据发送并确定可以终止了,服务器才能发送FIN告诉客户端可以真正断开连接了。所以这一步ACK报文和FIN报文需要分开发送,因此多了一个步骤。

4. RESTful API

RESTful API

5. HTTP请求报文与响应报文的格式

  • HTTP请求报文格式:
    HTTP请求报文主要由请求行、请求头部、请求正文3部分组成


    HTTP请求报文.PNG
  • HTTP响应报文格式:
    HTTP响应报文主要由状态行、响应头部、响应正文3部分组成


    HTTP响应报文.PNG

6. HTTP首部包含哪些字段,举例说明?

  • 通用首部字段(General Header Fields)
    请求报文和响应报文两方都会使用的首部。
  • 请求首部字段(Request Header Fields)
    从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
  • 响应首部字段(Response Header Fields)
    从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
  • 实体首部字段(Entity Header Fields)
    针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
    HTTP首部字段详细介绍

高级

1. 什么是非持久连接,什么是持久连接。

相关文章

  • 深入浅出HTTP

    深入浅出HTTP 深入浅出 HTTP一、什么是 Http 和 TCP二、Http 和 Tcp 关系三、Keep-A...

  • HTTP深入浅出---面试题

    初级 1. URI和URL的区别 URI:统一资源标识符,用于标识互联网上的资源的字符串。维基百科解释为:该种标识...

  • java面试题全集

    面试题上 http://www.importnew.com/22083.html 面试题下 http://www....

  • HTTP深入浅出 http请求

    ------------------转载 HTTP(HyperText Transfer Protocol)是一套...

  • 【HTTP】深入浅出:HTTP/2

    HTTP/2 协议详解 https://github.com/jiajunhuang/http2-illustra...

  • java-类加载器

    http://ifeve.com/classloader/深入浅出classloader https://www....

  • HTTP面试题都在这里

    HTTP常见面试题 Http与Https的区别: Http与Https的区别: HTTP 的URL 以http:/...

  • 优化

    http://www.cnblogs.com/murongxiaopifu/p/4284988.html 深入浅出...

  • http 深入浅出

    前言 相信大家对http都不陌生,我们平时用的网络是在tcp/ip协议族的基础上运作的,http是属于内部的一个子...

  • HTTP 深入浅出

    一、HTTP简介 1.1 HTTP是什么? HTTP协议是Hyper Text Transfer Protocol...

网友评论

      本文标题:HTTP深入浅出---面试题

      本文链接:https://www.haomeiwen.com/subject/ataggctx.html