重温HTTP,你到底做了什么?(上)

简介: 之前在回忆面试题的时候,面试官曾经问过我关于网络协议的一些东西,回答的当时感觉自己很垃圾,然后面试结束之后,自行百度,翻阅书籍,然后做了细致的整理,现在我就来分享给大家。

HTTP 你到底是个什么鬼

HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP 是基于 TCP/IP 协议通信协议来传递数据(HTML 文件、图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

这其实就是百度百科里面的精简化的内容,虽然说不上太细致,但是已经算是对 HTTP 做了一个大概的描述,我们接下来就从以下的几个方面来看一下这个HTTP 吧。

HTTP 报文

一般的,用于 HTTP 协议交互的信息被称为 HTTP 报文,那么说到 HTTP 报文,我们做开发的,很多时候都理解成报文是由一行一行的简单字符串,确实也是,因为 HTTP 报文都是纯文本,所以,你就可以非常方便的进行读写。我们来看下图:

30.jpg上图显示的就是一个简单的 HTTP 事务的报文,图中分为了2部分,请求报文和响应报文。

请求报文、响应报文

从客户端发往服务器的报文叫请求报文,也叫做request message ,服务器在接收到请求报文之后,不得象征性的给人家返回点东西?礼尚往来嘛,这时候,服务器端相应一下,发给客户端一点东西,这就称之为相应报文。

报文分为了三个层级,也算是三个东西,起始行,首部,主体,这三个东西我们必须得知道他们到底是干啥的,这样被面试官问到之后,至少能说点东西出来。

起始行

图片中的起始行中,请求报文和响应报文的起始行是不一样的,【GET /test/hi-there.txt HTTP/1.0】,

  • GET 服务器通过 GET 方法获取资源
  • /test/hi-there.txt 这是资源 get 请求就是获取这个资源
  • HTTP1.0 就是指定的是 HTTP 协议版本为1.0

响应报文的起始行主要是说明服务器的响应情况 【HTTP/1.0  200  OK】

同样的 HTTP1.0还是版本,而这个200表示的是状态码,OK 相应状态没问题。

以上的就是起始行的所有内容介绍了,是不是很清晰很透彻了?那我们来看这个首部。

首部

大家有没有注意到首部都是键值对的形式存在的,就是都是 key:value 这种形式的,如下,

请求报文首部:

Accept:text/*
Accept-Language:en,fr

响应报文首部:

Content-Type:text/plain
Content-length:19

光这么看其实很没意思是吧,看了半天还得靠自己的英文才知道是啥意思,我给大家找来个关于各种首部字段的说明。

通用首部字段 HTTP1.1

31.jpg

请求首部字段:

32.jpg

响应首部字段:

33.jpg


实体首部字段:

34.jpg

其实这么多首部字段,说白了就是一句话 使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。

看就是这么简单,方便,关于怎么去使用,本文先不做讲解,不然这首部字段说起来,那就没尽头了,有兴趣的小伙伴不妨可以手动去搜索一下把!

主体

大家可以回去看一下图一,图一中响应报文的主体,hi,I am message,实体的主体和报文的主体是一个可选的数据块。与起始行和首部不同的是,主体中可包含文本或二进制数据,也可以为空如图1中的请求报文主体,Content-type行说明了主体是一个纯文本文档,Content-length 说明了主体有19字节

其实有些人也会这么理解,Http报文包括请求报文和响应报文两大部分,其中请求报文由请求行(request line)、请求头(header)、空行和请求体四个部分组成。而响应报文由状态行、响应头部、空行和响应体四个部分组成。

给大家一幅图,这个是我之前从别的地方看来的,感觉和这句话很搭配。

35.jpg

关于HTTP报文我们先告一段落,我们继续往下看!

相关文章
|
5月前
|
缓存 算法 网络协议
(建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系
(建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系
172 0
|
4月前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
47 5
|
5月前
|
Web App开发 存储 物联网
一文了解 HTTP 基础知识
HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输数据的一种协议,对于网络开发人员来说,理解这一协议是至关重要的。由于其广泛的应用,除了在网页应用传输数据之外,它还被应用于物联网(IoT)中的数据和命令传输。
|
网络协议 程序员 测试技术
一篇吃透 HTTP 请求
一篇吃透 HTTP 请求
111 0
|
网络协议 安全 数据安全/隐私保护
http相关知识点
http相关知识点
114 0
http相关知识点
|
存储 域名解析 网络协议
探究HTTP
HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),什么是超文本传输协议?
108 0
|
缓存 JSON 网络协议
【青训营】-💗HTTP实用指南
【青训营】-💗HTTP实用指南
301 2
【青训营】-💗HTTP实用指南
|
前端开发 安全 网络协议
前端面试题目总结(Http)
前端面试题目总结(Http)
112 0
前端面试题目总结(Http)
|
网络协议 区块链
重温HTTP,你到底做了什么?(下)
之前在回忆面试题的时候,面试官曾经问过我关于网络协议的一些东西,回答的当时感觉自己很垃圾,然后面试结束之后,自行百度,翻阅书籍,然后做了细致的整理,现在我就来分享给大家。
重温HTTP,你到底做了什么?(下)
|
数据采集 缓存 算法
一篇文章让你重学HTTP!
一篇文章让你重学HTTP!
146 0
一篇文章让你重学HTTP!