前言
- 工欲善其事,必先要知其重要性。
- 这上面的问题肯定都是很重要的,但是参考回答就可能很水了emm,建议今后不断完善。
参考博客
建议《图解HTTP》作为参考书籍
- 另外,
小林coding
的《图解网络》中的HTTP篇可以作为学习HTTP的重点。 - HTTP五大类面试题:
- 小林搜集的5大类HTTP面试常问的题目,同时这5大类题根
HTTP的发展和演变
关联性是比较大的,通过问答+图解
的形式由浅入深
的方式帮助大家进一步的学习和理解HTTP。
- 小林搜集的5大类HTTP面试常问的题目,同时这5大类题根
知识点(小林coding)
HTTP基本知识
HTTP是什么?
HTTP是什么?描述一下
- HTTP是超文本传输协议,也就是HyperText Transfer Protocol。
能否详细解释“超文本传输协议”?
HTTP的名字“超文本传输协议”,它可以拆成三个部分:超文本、传输、协议
- 协议:
- 协:代表必须有
两个以上的参与者
。 - 议:代表是对参与者的一种
行为约定和规范
。 - 对于HTTP协议,我们可以这样理解:HTTP是一个用在计算机世界里的
协议
,它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者
),以及相关的各种控制和错误处理方式(行为约定和规范
)。
- 协:代表必须有
- 传输:
- 理解:
- HTTP协议是一个
双向协议
。 - 数据虽然在A和B之间传输,但允许中间有
中转或接力
。而在HTTP里,需要中间人遵从HTTP协议,只要不打扰基本的数据传输,就可以添加任意额外的东西了。
- HTTP协议是一个
- HTTP是一个在计算机世界里专门用来在
两点之间传播数据
的约定和规范。
- 理解:
- 超文本:
- 理解:
- HTTP传输的内容是
超文本
。 - 首先
文本
在互联网早期只是表示简单的字符文字,先在已经扩展为图片、视频、压缩包等,在HTTP眼里这些都算作文本。 - HTML就是最常见的超文本了,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等的链接,再经过浏览器的解释,呈现给我们的就是一个文字、有画面的网页了。
- HTTP传输的内容是
- 超文本:它就是
超越了普通文本的文本
,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另一个超文本。
- 理解:
- HTTP是一个在计算机世界里专门在
两点
之间传输
文字、图片、音频、视频等超文本
数据的约定和规范
。
那“HTTP是用于从互联网服务器传输超文本到本地浏览器的协议”,这种说法正确吗?
- 不正确,因为也可以是
服务器<=>服务器
,所以采用两点之间
的描述会更准确。
HTTP常见的状态码,有哪些?
1xx
:1xx
类状态码属于提示信息
,是协议处理中的一种中间状态,实际用到的比较少。2xx
:2xx
类状态码表示服务器成功
处理了客户端的请求,也是我们最愿意看到的状态。200 OK
:是最常见的成功状态码,表示一切正常。如果是非HEAD
请求,服务器返回的响应头部都会有body数据。204 No Content
:也是最常见的成功状态码,与200 OK
基本相同,但响应头没有body数据。204 Partial Content
:是应用于HTTP分块下载或断点续传,表示响应返回的body数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。
3xx
:3xx
类状态码表示客户端请求的资源发生了变动,需要客户端用新的URL重新发送请求获取资源,也就是重定向
。301 Moved Permanently
表示永久重定向,说明请求的资源已经不存在了,需改动新的URL再次访问。302 Found
表示临时重定向,说明请求的资源还在,但暂时需要用另一个URL来访问。
301和302都会在响应头里使用字段Location
,指明后续要跳转的URL,浏览器会自动重定向新的URL。304 Not Modified
:不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。
4xx
:4xx
类状态码表示客户端发送的报文有误
,服务器无法处理,也就是错误码的含义。400 Bad Request
:表示客户端请求的报文有错误,但只是个笼统的错误。403 Forbidden
:表示服务器禁止访问资源,并不是客户端的请求出错。404 Not Found
:表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。
5xx
:5xx
类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误
,属于服务器端的错误码。500 Internal Server Error
:与400类似,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。501 Not Implemented
:表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。502 Bad Gateway
:通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。503 Service Unavailable
:表示服务器当前很忙,暂时无法响应服务器,类似“网络服务正忙,请稍后重试”的意思。
HTTP常见字段有哪些?
- Host字段:客户端发送请求时,用来指定服务器的域名。
有了Host
字段,就可以将请求发往同一台
服务器上的不同网站。 - Content-Length字段:服务器在返回数据时,会有
Content-Length
字段,表明本次回应的数据长度。
如上面则是告诉浏览器,本次服务器回应的数据长度是1000个字节,后面的字节就属于下一个回应了。 - Connection字段:
Connection
字段最常用于客户端要求服务器使用TCP持久连接,以便其他请求复用。
一个可以复用的TCP连接就建立了,直到客户端或服务器主动关闭连接。但是,这不是标准字段。 - Content-Type字段:
Content-Type
字段用于服务器回应时,告诉客户端,本次数据是什么格式。
- Accept字段:客户端请求的时候,可以使用
Accept
字段声明自己可以接受哪些数据格式。
Accept:*/*
上面代码中,客户端声明自己可以接受任何格式的数据。 - Content-Encoding字段:
Content-Encoding
字段说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式。