引言
讲一段自己的真实的面试经历。
面试官:HTTP你懂么?
我:懂一点
面试官:HTTP响应头首部的一个Content-Type字段表示什么含义?
我:。。。emmm。。是不是编码格式我记得。
面试官:哦~那Content-Encoding表示什么呢?
我:哦哦,是这个表示编码格式。(尴尬)
面试官:哦~那Content-Type表示什么?
我:。。emmm。。。。是不是表示支持的语言。。
面试官:哦~~那Content-Language表示什么?
我:哦哦,是这个表示使用的语言。。。(出汗了)
面试官:哦~那Content-Type表示什么?
我:(一脸黑线)我不知道。。。
我记得他好像笑出了声,所以这就是猫眼娱乐的一个面试官啊,印象极其深刻,我会记他一辈子。😃
什么是HTTP?
HTTP是超文本传输协议,是一个基于请求与相应,无状态的,应用层的协议。常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议。设计HTTP的初衷是为了提供一种发送和接收HTML页面的方法。HTTP/1.0出生于1996年,我也是这一年出生的。HTTP/1.1出生于1997年。HTTP/2产生于2015年,增加了多路复用,头信息压缩,二进制协议等内容。
HTTP报文格式
请求报文

常问的可能是HTTP的几种请求方法的含义,GET和POST的区别,头/首部字段名的含义
列出几个首部字段名及含义。
| 请求头字段名 | 说明 |
|---|---|
| Accept | 能够接受的回应内容类型 |
| Accept-Charset | 能够接受的字符集 |
| Accept-Encoding | 能够接受的编码方式列表 |
| Accept-Language | 能够接受的回应内容的自然语言列表 |
| Cookie | 之前由服务器Set-Cookie发送的一个超文本传输协议Cookie |
| Content-Length | 以八位字节数组表示的请求体的长度 |
| Content-Type | 请求体的多媒体类型 |
| Data | 发送该消息的日期和时间 |
响应报文

一个可能会问的问题,HTTP状态码和其含义。上次面试,面试官问了我状态码500表示什么。
一般状态码是一个三位数,最高位定义了响应的类别。
| 最高位 | 含义 |
|---|---|
| 1xx | 指示信息,表示请求已接收,继续处理 |
| 2xx | 成功,表示请求已被成功接收,理解,接受 |
| 3xx | 重定向,要完成请求必须进行更进一步的操作 |
| 4xx | 客户端错误,请求有语法错误或请求无法实现 |
| 5xx | 服务端错误,服务器未能实现合法的请求 |
常见的状态码以及描述如下:
| 状态码 | 描述 |
|---|---|
| 200 | OK,客户端请求成功 |
| 400 | Bad Request,客户端请求有语法错误,不能被服务器所理解 |
| 401 | Unauthorized,请求未经授权 |
| 403 | Forbidden,服务器收到请求,但是拒绝提供服务 |
| 404 | Not Found,请求资源不存在,比如输入了错误的URL |
| 500 | Internal Server Error,服务器发生不可预期的错误 |
| 503 | Server Unavailable,服务器当前不能处理客户端的请求,一段时间后可能恢复 |
列出几个首部字段名及含义。
| 响应头字段名 | 说明 |
|---|---|
| Content-Encoding | 在数据上使用的编码格式 |
| Content-Length | 响应主体的长度 |
| Content-Type | 当前内容的类型 |
| Data | 此条消息被发送时的日期和时间 |
HTTP的特点
- 无状态。协议对客户端没有状态存储,对事物处理没有记忆能力,比如访问一个网站需要反复进行登陆操作。
- 无连接。HTTP/1.1以前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要消耗不必要的时间和流量。
- 基于请求和响应:基本的特性,由客户端发起请求,服务端响应。
- 简单快速、灵活。
- 通信使用明文,请求和响应不会对通信方进行确认,无法保护数据的完整性。
HTTPS的特点
基于HTTP协议,通过SSL或TLS提供加密处理数据,验证对方身份以及数据完整性保护。
HTTPS有如下特点:
- 内容加密:采用混合加密技术,中间这无法直接查看明文内容。
- 验证身份:通过证书认证客户端访问的是自己的服务器。
- 保护数据完整性:防止传输的内容被中间人冒充或篡改。
具体的加密过程这里不再细说,之前面试58,面试官问我:怎么确保CA的正确性?当时晕了,没答出来,其实操作系统都预装了最顶级的可以信任的CA,信用一级一级背书,可以知道服务端发送的CA公钥是不是对的。
本文通过一次面试经历引入,介绍了HTTP的基本概念、报文格式、特点,包括请求和响应报文的首部字段及其含义。接着,讨论了HTTPS的特点,如内容加密、身份验证和数据完整性保护,以及其在确保通信安全方面的作用。对于面试者来说,理解HTTP和HTTPS的核心概念以及它们之间的区别至关重要。
392

被折叠的 条评论
为什么被折叠?



