:HTTP协议初识)
网络原理2HTTP协议初识文章目录网络原理2HTTP协议初识观前提醒1. http协议的引出1.1 http协议是什么1.2 http协议的重要性1.3 https是什么意思1.4 http协议的工作模式一问一答其他的工作模式2. HTTP 协议的报文格式2.1 抓包工具及其作用抓包工具的选择Fiddler2.2 Fiddler 的安装和使用2.3 抓包结果2.4 HTTP请求首行请求头header空行登录请求包含正文正文body2.5 HTTP响应首行响应头header空行正文body2.6 格式总结3. 总结观前提醒如果你是第一次点击进来这篇博客推荐你可以先看看这篇博客网络原理1TCP/IP五层模型 – 应用层自定义协议的两个阶段约定信息组织的四种格式当然不看上面这篇博客也行的。1. http协议的引出上面这篇博客中讲到程序员在 应用层 中可以自定义协议。那么除了自定义的协议之外也有一些大佬们已经搞好的协议比如FTP协议属于是 文件传输 SSH协议属于是 远程操作主机 telnet协议属于是 网络调试工具 SSL协议属于是 网络安全 ......还有很多其他功能的协议。但这么多协议里面我们学习网络一定要学会的要重点掌握的是HTTP 协议1.1 http协议是什么HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的应用层协议。HTTP 诞生与1991年。目前已经发展为最主流使用的一种应用层协议。目前我们主要使用的还是 HTTP/1.1 和 HTTP/2.0。HTTP/1.1虽然是 20 年前的东西但目前仍是最流行的HTTP 的版本。最新的版本是 HTTP/3.0但是普及程度不高。如果对 HTTP协议 的发展感兴趣的可以观看别人写的这篇博客HTTP 的成长史HTTP1.0HTTP2.0 HTTP3.0HTTPS1.2 http协议的重要性为什么说一定要学因为HTTP协议是当前Web 开发中最核心的协议。换句话说使用任何网址都会用到 httpSpring围绕着 http 转。此时我们随便访问一个网址比如百度。然后复制它的网址https://www.baidu.com/1.3 https是什么意思我们可以看到https://www.baidu.com/ 这个网址的最前面是 https那就会有同学问了为什么不是 http 呢什么又叫做 https其实https是在 http 协议的基础上套上了一层安全层。https http基础上 安全层s 表示的是安全层安全层也就是上面提到的SSL协议负责网络安全的。如果想要了解 https就需要先了解 http因为这两者之间就相差了一个安全层。1.4 http协议的工作模式一问一答http协议的工作模式属于是一问一答的工作模式。例如客户端发一个请求服务器就返回一个响应也就是请求和响应是一一对应的。一问一答就比如你和你的暗恋对象聊天你你今天吃饭了吗你的暗恋对象吃了你你在干嘛你的暗恋对象闲着玩手机你明天去看电影吗你的暗恋对象不去你你今天开心吗你的暗恋对象我去洗澡了这样的聊天就是典型的一问一答。浏览器打开网页的场景手机APP加载数据的场景就是典型的一问一答的场景。此时使用HTTP协议就非常合适了。其他的工作模式网络通信中也有其他的工作模式例如多问一答典型的例子上传大文件文件太大就会拆分成多份请求上传服务器整体上传完毕服务器就会返回一个响应。一问多答例如下载大文件你下载一个大文件点击下载文件太大就会拆成多份数据进行下载。多问多答例如远程电脑你这边的鼠标键盘发送多个请求远程的电脑显示的画面或其他的就会根据你的请求返回不同的画面或者其他的响应。2. HTTP 协议的报文格式想要进一步的了解 HTTP协议我们还需要先了解 HTTP 协议的报文格式。其实学习其他协议也是先学习它的报文格式接着了解这个协议本身的特性。2.1 抓包工具及其作用那么在学习http协议的报文格式之前我们还需要安装一个工具抓包工具抓包工具的作用是什么呢抓包工具能够获取到网络的数据包并且能把详细的格式都解析出来。这样我们看网络通信的数据就能够看懂了从而方便我们进行学习。抓包工具相当于一个 “代理”。什么意思我们举个例子到中午饭点了我想要吃汉堡但是我不想下床自己去买此时我的舍友刚好要出门去买饭我就拜托我舍友去帮我买个汉堡。舍友就相当于一个 “代理”。那么我舍友是非常清楚我和老板之间用多少钱买了一个什么样的汉堡。我们讲的抓包工具是一个软件。安装这个软件之后我们电脑上所有的网络通信都会先发给这个抓包程序抓包程序再把数据转发给服务器 / 客户端。抓包工具运行起来一般是不会影响其他软件使用网络的。但是不排除特殊软件会产生冲突例如梯子类的软件。抓包工具的选择Fiddler抓包工具我们介绍过了但是市场上这么多抓包工具我们应该选择哪个呢例如wireshark是一款非常知名的抓包工具这个工具能抓很多协议如HTTPTCPUDPIP以太网数据帧… …但是我们不使用它因为它的使用门槛比较高不适合新手使用太麻烦了。我们此处采用的抓包工具使用 Fiddler。Fiddler这个抓包工具是专门抓 HTTP的。它的功能更简单但是足够用了对于新手来说比较友好。2.2 Fiddler 的安装和使用由于它的安装和使用教程和这篇博客没有什么直接的关系所以我将它的安装独立分成一篇博客抓包工具Fiddler 的安装并且如何使用 Fiddler 进行抓包如何查看访问一个网页时发送的请求和响应我也独立了一篇博客出来Fiddler 的简单使用使用Fiddler 查看请求和响应建议看完这两篇博客之后再回来看这篇博客。2.3 抓包结果我们使用 Fiddler 抓包之后有两种不同的结果分别是 HTTP的请求 和 HTTP的响应。我们就以访问 搜狗 为例子进行讲解。2.4 HTTP请求首先我们打开 Fiddler然后输入 sogou.com 这个网址访问搜狗。我们点击关于搜狗的那一条蓝色记录使用记事本查看请求信息是这样一条信息接下来我们需要初步了解请求中的结构是怎么样的。我们这里直接说了HTTP请求中包含四种结构首行请求头header空行正文body首行首行顾名思义就这 HTTP请求 中的第一行首行中又包括了三个信息这三个信息之间使用 空格 进行分隔的请求方法例如上面图片中红色框框的第一个单词GET请求方法其实就是表示我们这个请求到底要做什么事情。向我们这里的GET顾名思义就是 “获取” 的意思。以 搜狗 为例子就是要获取 搜狗 服务器上的资源。类似的请求方法还有很多我们在这篇博客中详细介绍网络原理4HTTP协议 – HTTP请求 – 首行请求方法URL例如上面图片中GET 后面的那一串信息https://www.sogou.com/URL的全称叫做统一资源定位符也可以说唯一资源定位符。这是用来描述网络资源的一种方式。它的介绍我们将在这篇博客中详细介绍网络原理3HTTP协议 – HTTP请求 – 首行URLHTTP协议 的版本号例如上面图片中URL 之后的HTTP/1.1文章最开始也说过了HTTP协议的版本已经达到了 3.0但是普及程度很低。原因就是说新的东西不稳定有坑没有太多公司敢去用怕造成损失。以上就是首行的部分。请求头header请求头的内容是以键值对的方式进行组织的。每一行是一个键值对。键值对 和 键值对 之间是以 \n也就是换行来进行分隔的。每一个键值对的键Key和 值Value之间是以“ :空格 ” 的方式进行分隔的。仔细看看就可以看出键 和 值 之间是使用 “:空格” 的方式进行分割。也就是键: 值你可以很明显的看出‘:’ 后面很明显有一个空格。HTTP请求头 中的 键Key有哪些取值值Value又有哪些取值都是由标准约定好的。HTTP请求 和 HTTP响应报头中的常见属性的讲解博客我编写了一个博客里面存放着常见属性的博客链接网络原理✨✨✨HTTP协议 – HTTP请求和HTTP响应常见的属性目录博客空行由于我们访问 搜狗 的这个网页是没有正文的。所以这个空行就不明显了。那么大多数的请求都是没有正文的在其他的情况下是有正文的比如在某一个网站上进行账号登录的时候。登录请求包含正文比如我登录我的 Gitee 账号这个登录请求就包含了正文同时你注意到正文 和 请求头之间有一行空白那个就是空行空行的作用用来标记header部分已经结束了。请求头header中有很多个键值对但是键值对有可能存在无数个那么服务器读取请求并解析请求的时候需要有一个标识符来表示header部分结束了。空行的作用是很关键的。正文body正文也叫做 body。正如上面说的大多数的请求都是没有正文的在其他的情况下是有正文的比如登录更换账号信息我们重新登录一次 Gitee 账号我们以我本人的 Gitee 账号为例子更换一下我账号的头像大家可以多抓包感受一下哪些请求是带有正文的。2.5 HTTP响应仍然以 搜狗 为例子。先打开 Fiddler然后进入 搜狗 页面搜索 NBA。通过 Fiddler抓取这个这个响应页面的信息。我们查看响应的信息HTTP响应中同样包含四种结构首行响应头header空行正文body首行可以看到HTTP响应 的首行和 HTTP请求 的首行有点不一样。HTTP响应的首行包含了这三部分都是用 空格 分隔开的HTTP 的版本号如图片所示的 HTTP/1.1。状态码这个状态码表示的是我们 HTTP请求 的处理结果。常见的状态码和它表示的意思我先列出来2XX表示成功3XX重定向4XX客户端错误请求有问题比如参数错误路径错误格式错误通过浏览器访问服务器5XX服务器错误服务器端代码存在 bug状态描述状态描述对状态码的简短描述例如OK或Not Found关于状态码和状态描述目前先不展开说了我们将在这篇博客中再详细介绍网络原理6HTTP请求 – HTTP报头Referer状态码响应头headerHTTP请求中叫做 请求头HTTP响应中叫做 响应头。都可以称为 header。和 请求头 一样都是由 键值对 的方式组织的只不过响应这里涉及到的 键值对 和请求的键值对是有区别的有些重要的键值对可能同时存在于 请求和响应 当中空行和 HTTP请求 一样HTTP响应同样有 空行。它的作用和 HTTP请求 那里是一样的。都是 标识 header部分 的结束。正文body最下面的那一段信息就是正文也叫 body。对于这个响应来说正文body 是一个 html对于正文来说还可以是 CSSjs图片转码后的信息音频 等等可以有很多种情况。2.6 格式总结对于 HTTP 的报文格式我们可以总结一下HTTP是一个文本格式的协议。分别有 HTTP请求 和 HTTP响应。HTTP请求包含下面四个部分首行请求头header空行正文bodyHTTP响应同样包含四个部分首行响应头header空行正文body这些格式面试的时候不会单独考但是我们进行网络编程的时候进行开发和调试的时候会用到。这些基本的格式需要重点掌握后续我们将分成博客单独讲解 HTTP请求和HTTP响应 中常见的属性和具体的含义。3. 总结这篇博客我们主要介绍了 http协议它是什么有多重要是什么意思工作模式是怎么样的以及它的 报文格式。后续我们将针对它的基本格式对每个基本格式进行讲解。这是 HTTP请求 和 HTTP响应常见的属性及其含义 的目录博客的链接网络原理✨✨✨HTTP协议 – HTTP请求和HTTP响应常见的属性目录博客你们可以在这篇博客中根据我放置的博客链接点击跳转学习HTTP请求 和 HTTP响应常见的属性的讲解博客。最后如果看完这篇博客你有所收获请给我点点赞如果这篇博客有错误的地方或者你有什么意见也欢迎指出