面试突击64:了解 HTTP 协议吗?
HTTP(Hyper Text Transfer Protocol)超文本传输协议,下文简称 HTTP,它的作用是用于实现服务器端和客户端的数据传输的。它可以传输任意的数据类型,如文本、HTML、图片、文件、声音等类型。
简单来说,HTTP 的作用就像一个“快递”一样,用来承载客户端(浏览器)和服务器端的数据传输,如下图所示:

1.HTTP 特点
HTTP 的主要特点有以下 5 个:
简单快速:客户端向服务器端发送请求时,只需传递请求方法、路径和请求参数,因为协议简单,所以使得 HTTP 服务器的程序规模小,因而通信速度很快。
无连接:所谓的无连接指的是,每次连接只处理一个请求。服务器处理完客户的请求后,会立即断开连接。
无状态:HTTP 不会记录每次请求的身份信息,因此前一次请求和后一次请求相互“不认识”。
可传递任意数据类型:HTTP 允许传输任意数据类型,只需要在请求头中标识数据类型 Content-Type 即可。
一对一通讯:每次 HTTP 请求,都是一个客户端对应一个服务器端。
2.HTTP 组成
HTTP 是由以下 2 部分组成的:
请求对象 Request(客户端请求)。
响应对象 Response(服务器响应)。
每次 HTTP 请求都是由一次请求和一次响应构成的,如下图所示:

2.1 请求对象
请求对象包含 4 部分内容:
- 请求行
- 请求报头
- 空行
- 请求正文
如下图所示:

2.1.1 请求行
请求行包含了以下 3 部分内容:
- 请求类型 Method,如 GET。
- 请求的 URL 地址,如 https://www.baidu.com。
- HTTP 版本号,如 HTTP/1.1。
其中,所有的请求类型如下:

2.1.2 请求报头
请求报头是在发送请求时,描述更多的请求信息的,它以 "name: value" 的形式存在的,每个请求报头占一行。
常见的请求报头有以下几个:
- Host:表示服务器端的地址和端口号。
- Content-Type:用于描述请求正文中的数据类型,常见的类型有:json 格式的 application/json、表单格式的 application/x-www-form-urlencoded、文件格式的 multipart/form-data 等。
- Content-Length:用于描述请求正文中的数据长度,需要注意的是,这里的数据长度统计单位为字节而非字符。
- User-Agent:用户代理信息,比如访问用户的系统信息,浏览器类型和版本信息等。
2.1.3 空行
一个没有任何内容的空行,用于分隔请求报头和请求正文的特殊组成部分。
2.1.4 请求正文
业务系统中要传递参数。
2.2 响应对象
响应对象也是由 4 部分内容组成的:
- 状态行
- 响应报头
- 空行
- 响应正文
如下图所示:

2.2.1 状态行
状态行用于描述服务器的返回状态,它由 3 部分组成:
- HTTP 版本号,如 HTTP/1.1。
- 状态码,如 200。
- 状态描述信息,如 OK。
常见的状态码有以下几个:
- 200:返回成功。
- 301:永久重定向。
- 302:临时重定向。
- 404:未找到页面。
- 500:服务器程序出错。
2.2.2 响应报头
响应报头和请求报头类似,也是以 "name: value" 的形式存在的,每个报头占一行。
常见的报头有 Content-Type,它是用于描述响应正文的数据类型的,常见的数据类型有:json 格式的 application/json 和 HTML 格式的 text/html。
2.2.3 空行
一个没有任何内容的空行,用于分隔状态行和响应正文的特殊组成部分。
2.2.4 响应正文
返回给客户端的所有数据。
总结
HTTP 超文本传输协议,用于实现服务器端和客户端的数据传输。它的特点是简单快速、无连接、无状态、可传递任意数据类型和一对一通讯。HTTP 协议由两部分组成:请求对象 Request 和响应对象 Response。
是非审之于己,毁誉听之于人,得失安之于数。
公众号:Java面试真题解析
面试突击64:了解 HTTP 协议吗?的更多相关文章
- 《【面试突击】— Redis篇》--Redis Cluster及缓存使用和架构设计的常见问题
能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>--Redis Cluster及缓存使用和架构设计的 ...
- php面试专题---10、网络协议考点
php面试专题---10.网络协议考点 一.总结 一句话总结: 网络的考点其实就是这些:常见状态码,常见协议,osi七层模型,http和https 1.HTTP/1.1中,状态码200.301.304 ...
- 《【面试突击】— Redis篇》--Redis都有哪些数据类型?分别在哪些场景下使用比较合适?
能坚持别人不能坚持的,才能拥有别人不能拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>--Redis都有哪些数据类型?分别在哪些场景下使用 ...
- 《【面试突击】— Redis篇》-- Redis的线程模型了解吗?为啥单线程效率还这么高?
能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>-- Redis的线程模型了解吗?为啥单线程效率还这 ...
- 《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制?
能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注左上角编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>-- Redis的主从复制?哨兵机制? 在这个 ...
- 《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制
能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>-- Redis哨兵原理及持久化机制 在这个系列里, ...
- Java 面试知识点解析(五)——网络协议篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Oracle DBA面试突击题
一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答: Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以 ...
- 【面试突击】-Redis常见面试题(一)
介绍:Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API的非关系型数据库. 传统数据 ...
随机推荐
- C#使用进程调用bash,不断往bash内插入命令并执行
呃呃呃,遇到了一个非常恶心得问题,现在就是,有几十万条数据需要当作参数调用python脚本 一次一次输入命令过去缓慢,经过了多层考虑决定使用进程来解决(不知道线程怎么开启bash得) 原理非常简单,类 ...
- SpringBoot详解
1.Hello,World! 1.1.SpringBoot简介 回顾什么是Spring Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson . ...
- 用户与安全 -(1)Linux用户及组管理
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登 ...
- Linux内核浅入浅出
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 01 前言 拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是Linux内核是什么,它用于什么?且听 ...
- vue - Vue组件化编程
今天是对vue组件化的一个理解,最主要的单文件组件,然后就可以脚手架的学习了,本来昨晚就该上传的,但是用的那个上传博客园的Python脚本不行了,换了一个新的. 组件化让我越来越感觉到框架的力量了 一 ...
- 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...
- 组织:SAE
美国汽车工程师学会(SocietyofAutomotiveEngineers),美国及世界汽车工业(包括航空和海洋)有重要影响的学术团体.简称SAE.已有90余年的历史.该学会实行会员制,约有会员69 ...
- 流,用声明性的方式处理数据集 - 读《Java 8实战》
引入流 Stream API的代码 声明性 更简洁,更易读 可复合 更灵活 可并行 性能更好 流是什么? 它允许以声明方式处理数据集合 遍历数据集的高级迭代器 透明地并行处理 简短定义:从支持数据处理 ...
- [第18届 科大讯飞杯 J] 能到达吗
能到达吗 题目链接:牛客5278 J 能到达吗 Description 给定一个 \(n\times m\) 的地图,地图的左上角为 \((1, 1)\) ,右下角为 \((n,m)\). 地图上有 ...
- seafile私有网盘搭建
各种公有网盘确实很方便,但总有些特殊情况不是? 闲来无聊准备自己搭建一个私有网盘,也让自己的闲置的服务器好好利用一下 搜索一番,找到了专业户seafile 一顿操作,踩了无数大坑,特此总结一下 1.c ...