写点什么

不惧面试:HTTP 协议(一)基础扫盲

发布于: 2021 年 06 月 05 日

先交代下背景,写这个系列的原因是总结自己遇到的面试题以及可能遇到的题目,更重要的是,今年定的目标是掌握网络这一块的知识点,先是搞懂 HTTP 协议,然后是 TCP/IP 协议。


本文已同步至:https://github.com/Jackson0714/PassJava-Learning

面试常见题

1.什么是 HTTP 协议?★☆


2.Web 客户端是什么?☆


3.Web 服务端是什么?☆


4.什么是资源?★


5.MIME 类型是什么?★☆


6.什么是 URI?★


7.什么是 URL?★


8.什么是 URN?★


9.常见的 HTTP 方法有哪些?★☆


10.常见的状态码 200,206,302,304,404,501 的含义?★★☆


11.什么是报文?★★☆


12.HTTP 协议栈是怎么样的?★★★


13.什么是 DNS?★


14.什么是端口号?★


15.在浏览器地址栏输入一个 HTTP 的 URL 地址,按下回车键之后,浏览器怎么通过 HTTP 显示位于远端服务器中的某个简单 HTML 资源?★★★☆


16.什么是代理?★☆


17.什么是缓存?★☆


18.什么是网关?★☆


19.什么是隧道?★☆


20.什么是 Agent 代理?★☆


看完这些题目,心中是否有疑惑呢?那就接着看呗,我来帮您解答心中的疑惑 o(^▽^)o

参考答案

1.什么是 HTTP 协议?★☆

HTTP:超文本传输协议。使用的是可靠的数据传输协议,在传输的过程中不会被损坏或产生混乱。HTTP 可以从遍布全世界的 Web 服务器商将各种信息块迅速、便捷、可靠地搬移到人们桌面上的 Web 浏览器上去。

2.Web 客户端是什么?☆

Web 客户端常见的又各大厂商的浏览器,比如微软的 IE 浏览器,google 的 chrome 浏览器。

3.Web 服务端是什么?☆

Web 服务器存储 Web 类容。Web 服务器使用 HTTP 协议,被称为 HTTP 服务器。


客户端向服务器发送 HTTP 请求,服务器会在 HTTP 响应中回送所请求的数据。

4.什么是资源?★

Web 资源寄宿在 Web 服务器上。所有能够提供 Web 内容的东西都是 Web 资源。比如静态文件,能够动态生成内容的软件程序。

5.MIME 类型是什么?★☆

MIME:多用途因特网邮件扩展。最初设计 MIME 是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。HTTP 采纳了它,用来描述并标记多媒体内容。


MIME 类型时一种文本标记,标识一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。如 text/html,text/plain,image/ipeg。常见的 MIME 类型有数百个。

6.什么是 URI?★

URI:统一资源标识符,在世界范围内唯一标识并定位信息资源。


URI 有两种形式:URL 和 URN。

7.什么是 URL?★

URL:统一资源定位符。URL 描述了一台特定服务器上某资源的特定位置。


URL 的第一部分被称为方案(scheme)。说明了访问资源所使用的协议类型。这里使用的时 HTTP 协议(http://)。


第二部分表示服务器的因特网地址:www.cnblogs.com。


其余部分指定了 Web 服务器上的某个资源:/jackson0714/p/algorithm_1.html。


几乎所有的 URLI 都是 URL。

8.什么是 URN?★

URN:统一资源名,URN 是作为特定内容的唯一名称使用的,与目前的资源所在地无关。

9.常见的 HTTP 方法有哪些?★☆

GET:从服务器向客户端发送命名资源


PUT:将来自客户端的数据存储到一个命名的服务器资源中去


DELETE:从服务器中删除命名资源


POST:将客户端数据发送到一个服务器网关应用程序


HEAD:仅发送命名资源响应中的 HTTP 首部

10.常见的状态码 200,206,302,304,404,503 的含义?★★☆

每条 HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。


格式如下:状态码-原因短语-含义


200 OK 成功。请求的所有数据都在响应主体中。


206 Partial Content。 成功执行了一个部分或 Range(范围)请求。206 响应中必须包含 Content-Range、Date 以及 ETag 或 Content-Location 首部。断点续传必考题。


302 Found 重定向。到其他地方去获取资源。客户端应该是用使用 Location 首部给出的 URL 来临时定位资源。将来的请求仍应使用老的 URL。


304 NOT Modified 如果客户端发起了一个 GET 请求,而资源最近未被修改,则用 304 说明资源未被修改。带有这个状态吗的响应不应该包含实体的主体部分。缓存必考题。


305 Use Proxy 用来说明必须通过一个代理来访问资源;代理的位置由 Locatin 首部给出。


403 Forbidden 请求被服务器拒绝了。


404 Not Found 无法找到所请求的 URL


500 Internal Server Error 服务器遇到一个妨碍它为请求提供服务的错误。


503 Bad Gateway 服务器现在无法为请求提供服务,但将来可以。

11.什么是报文?★★☆

HTTP 报文是由一行一行的简单的字符串组成的。HTTP 报文都是纯文本,不是二进制代码。


请求报文:从 Web 客户端发往 Web 服务器的 HTTP 报文称为请求报文。


响应报文:从 Web 服务器发往客户端的报文称为响应报文。


HTTP 报文包含以下三个部分:


起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。如:GET /jackson0714/p/algorithm_1.html HTTP/1.1


首部字段:起始行后面由零个或多个首部字段。以键值对的形式表示首部字段。键和值之间用冒号分隔。首部以一个空行结束。如 Content-Type:text/html:charset=utf-8


主体:首部字段空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送 Web 服务器的数据,响应主体中装载了要返回给客户端的数据。

12.HTTP 协议栈是怎么样的?★★★

HTTP 是应用层协议。它把联网的细节都交给了通用、可靠的因特网传输协议 TCP\IP 协议。


HTTP 网络协议栈:



TCP 协议:


a.传输控制协议


b.无差错的数据传输


c.按序传输(数据总是会按照发送的顺序到达)


d.未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)

13.什么是 DNS?★

域名解析服务。将主机名转换为 IP 地址。如将http://www.cnblogs.com/主机名转换为 IP 地址:211.137.51.78。

14.什么是端口号?★

http://www.cnblogs.com:80


80 就是端口号。HTTP 的 URL 中没有端口号时,可以假设默认端口号时 80。有了 IP 地址和端口号,客户端就可以很方便地通过 TCP/IP 进行通信了。

15.在浏览器地址栏输入一个 HTTP 的 URL 地址,按下回车键之后,浏览器怎么通过 HTTP 显示位于远端服务器中的某个简单 HTML 资源?★★★☆

(1)浏览器从 URL 中解析出服务器的主机名;


(2)浏览器将服务器的主机名转换成服务器的 IP 地址;


(3)浏览器将端口号(如果有的话),从 URL 中解析出来;


(4)浏览器建立一条与 Web 服务器的 TCP 连接;


(5)浏览器向服务器发送一条 HTTP 请求报文;


(6)服务器向浏览器回送一条 HTTP 响应报文;


(7)关闭连接,浏览器显示文档。

16.什么是代理?★☆

代理是位于客户端和服务器之间的 HTTP 中间实体。接收所有客户端的 HTTP 请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。

17.什么是缓存?★☆

缓存 HTTP 的仓库,使常用页面的副本可以保存在离客户端更近的地方。

18.什么是网关?★☆

网关是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将 HTTP 流量转换成其他的协议。

19.什么是隧道?★☆

隧道是建立起来之后,就会在两条连接之间对原始数据进行盲转发的 HTTP 应用程序。常见用途是通过 HTTP 连接承载加密的安全套接字层(SSL)流量,这样 SSL 流量就可以穿过只允许 Web 流量通过的防火墙了。

20.什么是 Agent 代理?★☆

用户 Agent 代理是代表用户发起 HTTP 的客户端程序。比如 Web 浏览器。另外有些自动发送 HTTP 请求并获取内容的代理,比如“网络蜘蛛”或者“Web 机器人”。


欢迎关注我的公众号:「悟空聊架构


作者简介:8 年互联网职场老兵|全栈工程师|90 后超级奶爸|开源践行者|公众号万粉原创号主。蓝桥签约作者,著有《JVM 性能调优实战》专栏,手写了一套 7 万字 SpringCloud 实战总结和 3 万字分布式算法总结。欢迎关注我的公众号「悟空聊架构」,免费获取资料学习。

发布于: 2021 年 06 月 05 日阅读数: 25
用户头像

用故事、大白话讲解Java、分布式、架构设计 2018.05.06 加入

公众号:「悟空聊架构」

评论

发布
暂无评论
不惧面试:HTTP协议(一)基础扫盲