浅谈http协议的作用过程

  • 引言
  • 正文
    • 一、HTTP定义
    • 二、HTTP完整的请求过程
      • 域名解析
      • 与服务器建立连接
      • 发送http请求给服务器
      • 服务器返回数据给客户端
      • 客户端与服务器端断开通信
  • 结束语

引言

首先说一下,本文真的是浅谈,因为我只是对http做了一个大概的了解,也没说很深入很深入的去了解全部的内容,所以本文适合完全不明白http协议是什么的小白, 如果大佬也愿意看的话,那小弟在这谢过了。

  • 公众号:前端印象
  • 不定时有送书活动,记得关注~
  • 关注后回复对应文字领取:【面试题】、【前端必看电子书】、【数据结构与算法完整代码】、【前端技术交流群】

正文

一、HTTP定义

HTTP叫做超文本传输协议,是一个客户端与服务器端通信交互的协议,它是一种基于请求和与响应、无状态的、应用层的协议,默认端口是80

好的我知道这么说,特别的抽象,接下来是我们日常举例子环节。

  • 客户端与服务器端通信交互的协议

这句话意思就好比两个国家有仇,然后见面就要打架。突然两个国家准备交谈协商一些事情,他们需要签一份友好合作的协议,这样两个国家才敢进行交谈。

在这个例子中,
两个国家就相当于客户端和服务器端
两个国家见面就要打架,无法交谈就相当于客户端与服务器端本无法通信
两个国家通过签订了友好合作协议,于是才能进行交谈协商就相当于客户端与服务器端依靠HTTP协议才进行了通信

  • 基于请求和与响应

我们都知道,客户端与服务器端通信,就是客户端先发送请求给服务器端,然后服务器端接收到了请求,并响应返回数据给客户端。 这就是HTTP协议为客户端和服务器端之间通信完成的最基本的工作。

  • 无状态的

什么是状态呢? 当客户端向服务器端发送了请求,他们建立了通信,这时他们处于通信状态,但是当服务器响应发送数据给客户端后,通信的任务就完成了,这时就需要断开他们之间的通信,此时他们就不存在任何状态了。 这就是HTTP无状态的概念。

  • 应用层

HTTP
规定了交换的报文类型,如请求报文和响应报文;
规定了各种报文类型的语法,如报文中的各个字段公共详细描述;
规定了字段的语义,即包含在字段中信息的含义;
规定了进程何时、如何发送报文及对报文进行响应;
这就是应用层的概念。

这里有很多专业名词,大家先做个大概的了解,在下面还会提到这些名词。

  • 默认端口是80

我们都知道一个url地址是由协议+域名+端口+请求参数组成的,像一个默认的HTTP请求,是这样的 http://www.baidu.com,这里省略了80端口,实际应该是这样的 http://www.baidu.com:80

二、HTTP完整的请求过程

我们先来简单看一下一个完整的HTTP请求的过程是怎样的

域名解析 =>
与服务器建立连接 =>
发送http请求给服务器 =>
服务器接收http请求并响应返回数据给客户端 =>
客户端接收到服务器返回的数据,通过浏览器解析数据并渲染在浏览器上呈现给用户 =>
客户端与服务器端断开通信

以上就是一个完整的HTTP请求过程,接下来我们逐个讲解

域名解析

域名就是类似 baidu.com 这样的 url 的一部分。其实服务器就是一台电脑,那么每台电脑都对应一个 公网ip 地址, 我们需要访问这台电脑就需要输入这台电脑的公网 ip 地址,类似于这样的 109.22.10.1 ,域名其实就是通过一种方式将这个 ip 地址换了一个名字。例如访问 http://www.baidu.com 就相当于访问了 http://109.22.10.1

这就是域名解析的概念。

与服务器建立连接

在上面讲到HTTP定义的时候,我们说了客户端与服务器端通信建立连接就是依靠HTTP协议,那么是到底怎么建立连接的呢? 其实HTTP协议是配合着TCP协议一起使用的,那么什么是TCP协议呢? 因为本篇文章是浅谈,我们就用最简单的方式去理解:
现实生活中两个人(A和B)隔得很远,在他们俩距离的中点有另一个人(C),C既能听到A讲的话,又能听到B讲的话,但是A和B却想互相交流,这时就需要借助C帮他们传话给对方。

在这个例子中,A和B就相当于客户端和服务器端,C就相当于这个TCP协议,而A和B要对对方说的话,就相当于A和B之间发送的数据。 TCP协议就保证了数据的安全可靠的发送给对方。

这就是简单的理解TCP协议,同时也理解了客户端与服务器建立连接这一概念。

发送http请求给服务器

刚才我们讲了一个A与B讲话的例子, 这时假设A要跟B问个问题, 因为A跟B离得远,需要C来传话,那么为了方便,A需要把他要说的所有话都准备好(例如你明天干什么去?和谁一起?),一次性的告诉C,再让C把话带给B。

在这个例子中,客户端已经与服务器端建立好了通信了, 那么A将自己要跟B说的所有话都打包起来 就相当于列了一份清单,上面写满了交代给B的事情,这份清单就叫做请求报文

形象的了解了请求报文的概念,我们接下来就具体的看一下请求报文是什么样的。

请求报文就是有一个个的名/值对的形式(例如Connection:keep-alive)展示出来的。大家有没有感觉这请求报文特别眼熟? 没错,他就是我们平时在浏览器的开发者工具里看到的请求文件的一些信息。


请求报文由请求行 、请求头部 、空行 、请求数据四个部分组成,这里我从网上扒了个请求报文的模板图来给大家看一下

这里先放上一张请求报文的图,接下来我们就来逐一解释请求报文的四个部分:

  • 请求行

请求行主要包含的内容就是三个,即请求方法 、请求地址 、协议版本

在我们这张图中,第一行就是请求行,表示我们的请求方法为get ,请求的地址为 http://39.108…… ,协议为 HTTP的1.1版本

  • 请求头部

在图中第2行到第10行都是请求头部,请求头部里主要的内容有这几个:host 主机地址 、User-Agent 客户端详细信息 、Referer 、cookie 等等,下面放上一张图,里面是常见的请求头部参数及其含义

  • 空行

这个就没啥好讲的了,就是图中的第11行,纯粹的空一行

  • 请求数据

在图中的第12行本应该有个请求数据的,但是因为我们这是GET请求,我们知道,GET请求的数据会被放到请求地址的最后面,所以在这里就显示一个空行; 当请求方式为POST的时候,第12行就会显示POST请求时,提交的参数数据了。

服务器返回数据给客户端

再回到我们举的A把要与B说的话打包好,一次性告诉C,让C转达给B的例子中。 当C把A要转达的话全部告诉B后,B要根据A要对他说的话,进行一些回应,B也将他要对A说的话打包好,一次性告诉C,再让C转达给A,这时A也会收到一份清单,这份清单就是B针对A做出的回应。在这里,这份清单就叫做 响应报文

我们来看一下响应报文长什么样

这我们也可以在浏览器的开发者工具里找到

响应报文跟请求报文差不多,也都是一个个的名/值对形式,这里同样扒了一张响应报文的模板图

同样的这里先放上一张响应报文的图,接下来我们就来逐一解释响应报文的四个部分:

  • 状态行

状态行,也就是图中的第一行,它包含了三个内容。即HTTP的协议版本 、状态码(200 、404 、500等等) 、状态码的描述(OK或者ERR)

可能有人不知道状态码是什么, 其实状态码就是一个三位的数组,表示服务器接收请求后处于的状态。

像我们常见的有200(正常) 、404(无法找到该网页资源) 、304(跳转页面) 、500(服务器错误)。其实还有很多很多的状态码,他们都有不同的含义,例如还有301、302、201…… 想详细了解的小伙伴可以百度 HTTP状态码 自行了解。

  • 响应头部

在图中第14行到第20行都是响应头部,响应头部里主要的内容有这几个:Set-cookie 用于创建cookie 、Location 网页跳转的地址 、Connection 等等,下面放上一张图,里面是常见的响应头部参数及其含义

  • 空行

这个就没啥好讲的了,就是图中的第21行,纯粹的空一行

  • 响应数据

我们都知道客户端向服务器发送请求,就是为了拿到一些数据或者文件, 那么服务器响应返回给客户端的自然是数据或文件。在图中第22行开始往下都是响应数据,大家有没有觉得这个响应数据有点眼熟? 没错这就是html文件,说明客户端向服务器发送请求,就是为了获取 html 文件。

客户端与服务器端断开通信

到这一步了,客户端与服务器端之间的数据或文件交互就完成了,这时候也不需要任何的通信了,所以他们之间就需要断开通信。用咱们本文中的例子来讲就是A和B要说的话都说完了,他们分别告诉C他们已经完成了对话,这时C就可以走人了,因为A和B都不需要他了。

结束语

HTTP的浅谈结束,这知识面真的还很浅,但对于小白了解HTTP协议已经足够了,如果大家想要深入了解HTTP协议的话,可以去查阅相关书籍视频资料。我在下一篇文章讲述了HTTPS协议与HTTP协议的区别,感兴趣的可以去阅读一下——浅谈HTTPS与HTTP的区别

原创不易,大家给个赞,点个收藏吧~

浅谈HTTP协议的作用过程相关推荐

  1. 浅谈HTTPS协议的加密过程

    https包括对称加密和非对称加密两个阶段,在客户端和服务端建立连接的时候使用非对称加密,连接建立以后使用的是对称加密. 注:SSL是传输层协议 加密过程: 1,客户端使用https的URL访问Web ...

  2. 浅谈密码学的历史发展过程

    浅谈密码学的历史发展过程 前言 这是大三下学期选学的网络信息安全课程的期末作业,这个学期就是疫情爆发期间上网课的那段时期... 摘要 密码对我们都不陌生,在日常生活中也接触过密码,日常生活中所说的密码 ...

  3. 【转】 浅谈Radius协议

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  4. 转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  5. 浅谈Attention机制的作用

    浅谈注意力机制的作用 前言 什么是注意力机制 空间注意力 对于时间步的注意力机制 1.数据集的制作 2.建立注意力模型 3.建立整体神经网络 4.完整代码 5.实验效果 通道注意力机制 前言 Atte ...

  6. 浅谈IPv4协议与IPv6协议的区别

    浅谈IPv4协议与IPv6协议的区别?咱们先了解下什么叫IPv4协议和IPv6协议.IPv4,是互联网协议(Internet Protocol,IP)的第四版,应属第一个被广泛应用,构成现阶段互联网技 ...

  7. 浅谈Linux协议和组成

    根据自己学习Linux方面的知识,浅谈下linux的协议和组成,那首先了解下计算机的组成和功能: 计算机系统由硬件(hardware)系统和软件(software)系统两大部分组成:1.硬件系统由主机 ...

  8. 浅谈tcp协议与tcp_tw

    浅谈tcp_tw_reuse 流量控制.拥塞控制 什么是TIME_WAIT状态? 为什么要设计TIME_WAIT状态? 原因一:防止历史连接中的数据,被后面相同四元组的连接错误的接收 原因二:保证「被 ...

  9. 浅谈TCP协议与DDOS

    本节内容 1.TCP协议浅谈 1.HTTP连接 2.SOCKET原理 3.TCP介绍 4.TCP连接的三次握手与四次挥手 2.DDOS 1.什么是DDOS 2.攻击原理 3.防护方法 4.其他攻击方式 ...

最新文章

  1. 客户端函数弹窗_前端常用的几种弹窗函数
  2. 直接运行可执行文件linux终端一闪而过
  3. STM32F103外部晶振由8M变为12M
  4. python3猜数字小游戏代码示例
  5. 「C++: draft」一张图弄懂C++指针(*)和引用()以及深拷贝、浅拷贝
  6. ASIHTTPRequest详解 [经典3]
  7. 中list如何清空_如何根据索引删除 list 中的元素
  8. 简单点赞效果html,js实现点赞效果
  9. Qt工作笔记-多线程时间服务应用
  10. 高阶篇:8.2)注塑模具讨论要点(讨模评审)
  11. 什么是c语言内存编码,c语言内存泄露示例解析
  12. 区块链网络安全平台Hapi Protocol将在Poolz上进行 IDO
  13. 后台job批量停用和开启
  14. python简单聊天工具开发
  15. 微信小程序开发学习笔记一
  16. 详解Linux内核IO技术栈
  17. LeetCode第874题解析
  18. c语言计算二次函数顶点坐标,C语言编写一个求一元二次方程的实根的程序。 编辑一个小程序去做一元二次方程的求解(b^24ac)...
  19. c语言a b等于c的编程,简单的a+b (C语言代码)
  20. 世界上最难的视觉图_看看世界上驾照最难考的国家,你还会觉得考驾照难吗?...

热门文章

  1. 用opencv查看视频信息(视频的宽度、高度、帧率和总得帧数)
  2. 关于win10安装.net3.5报错“0x800f0950”
  3. android 播放gif动画效果,Android开发:教您如何让Gif动画动起来
  4. linux系统的服务器怎么设置上电自启,Linux系统开机自启流程
  5. 国科大计算机所考研成绩,2020国科大计算所计算机软件与理论复试经验复试公告复试真题复试分数成绩查询...
  6. 微分中值定理之罗尔定理
  7. Zabbix监控网络流量
  8. 「THE NEXT」第三届全球小程序生态大会圆满成功,规模空前,爆点不断
  9. layui table表头表行对不齐的问题
  10. 利用Matlab与Arduino制作车牌识别的完整控制系统(1)