0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文详细了解HTTP协议

xCb1_yikoulinux 来源:一口Linux 作者:一口Linux 2022-05-11 12:04 次阅读

一、什么是http?

Http协议即超文本传送协议 (HTTP-Hypertext transfer protocol) 。

它定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。并且详细的规定了客户端浏览器与服务器之间互相通信的规则。

a8ea3954-d0de-11ec-bce3-dac502259ad0.png

二、抓包

下面是一口君抓取的访问自己搭建的web服务器交互的所有数据包。以下是浏览器显示信息a92cdf66-d0de-11ec-bce3-dac502259ad0.png以下是实际index.html内容

"-//W3C//DTDXHTML1.0Transitional//EN">
"http://www.w3.org/1999/xhtml">

"Content-Type"content="text/html;charset=utf-8"/>
一口<a href="https://www.elecfans.com/v/tag/538/" target="_blank"><u>Linux</u></a>


"center">
"900"border="0">

"returnisValidate(myform)"action="cgi-bin/login.cgi"method="post">
用户名:type="text"name="username"id="username">


密码:type="password"name="userpass"id="userpass">


type="submit"value="登录"id="button">




"center"> "900"height="467"border="0"background="./image/yikou.png"> "126"height="948"> "351"> "101">

下面是用抓包工具抓取的所有HTTP数据包:

浏览器发送的GET请求数据包:a96895b0-d0de-11ec-bce3-dac502259ad0.png服务器回复的页面对应的数据包:a98d6f70-d0de-11ec-bce3-dac502259ad0.png

完整的浏览访问服务器数据包交互流程如下:

a9ac6f4c-d0de-11ec-bce3-dac502259ad0.png数据包交互流程,简单总如下:

  1. 浏览器会向web服务器发起tcp 3次握手,(http是基于tcp,上图数据包1-3)
  2. 浏览器会根据网址栏输入的url,通过DNS协议查找该domain对应的IP地址(如果url中直接给出IP地址,则省略该步骤)
  3. 浏览器发送HTTP协议的GET请求,web服务器会回复对应的页面(没有指定的话,一般由配置文件指定默认文件比如index.html,见数据包4-6)
  4. 因为页面有图片信息,浏览器再请求获取对应的图片文件(见数据包7-24)
  5. 最后会关闭tcp连接,执行4握手(见数据包25-28)

三、页面交互流程

下面我们来看一下,从网页输入URL到加载,http究竟做了哪些工作?

浏览器负责发起请求和最后的响应请求,服务器接收请求后,处理请求。aa13050e-d0de-11ec-bce3-dac502259ad0.png

1、输入URL。

不管是链接还是地址栏的输入,情况都是一样的。http协议已经规定了URL的格式,通过http协议中的域名或IP找到服务器。

2、找到服务器的同时,会有http的请求发送过来,告诉服务器我求你做什么?http协议规定了发送请求的格式,这个格式有三部分组成请求行、请求头、请求体

请求行包括请求的方式(get、post或其他)、要求响应的文件、http版本。请求头包括本机信息、浏览器信息等等,当然,也包括URL中?后面的参数

aa52fa6a-d0de-11ec-bce3-dac502259ad0.png请求体包括POST传递数据的相关信息,Get方式传值时,请求体为空。

3、请求信息发送至服务器以后,服务器会获取传递过来的相关信息进行后端程序的处理。服务器可以通过数据包中信息获取URL传递过来的值,通过form(表单)获取POST传递过来的值,当然,也是可以获取到所有的其他请求过来的信息,如浏览器信息、cookie信息、操作系统信息等。获取相关的数据以后,服务器就会根据程序进行处理。

4、处理完成以后,服务器会做出响应,向浏览器输出相关信息。http对响应的格式也做出了规定,响应的信息主要包括,响应码、响应头、响应体

aa7903d6-d0de-11ec-bce3-dac502259ad0.png响应码用来标识服务器响应的结果,如我们常看到的200、404等。大致的分类如下:

1开头的表示消息,
2开头表示成功,
3开头表示重定向,
4开头表示失败,
5开头表示服务器异常。

响应头记录服务器相关信息如服务器是否启用压缩、服务器为IIS或Ngnix、程序所用服务端语言等等。当然,缓存也是在这里设置的,通过修改响应头可以修改html在本地缓存的情况,如设置浏览器缓存过期的时间。

响应体主要是我看到的html的相关内容了。

完成以上4步操作以后,浏览器就断开了与服务器的数据连接,不能在进行数据传输,如果需要再次进行数据传输,那么一切就要从输入URL开始。

如此,便是一个完整的网页流程,http从中的作用就是对整个流程进行规定,包括执行步骤,每一步的数据格式。只有了解http协议以及网页是如何产生的以后,才能对网页进行更好的控制,例如控制浏览器缓存、通过非浏览器发送http请求、get和post传值的选择,甚至是建立长连接,这些都是以http协议为基础。

四、补充

1. http主要方法

aa8d5e76-d0de-11ec-bce3-dac502259ad0.png

1.0 版本和 1.1 版本的描述分别基于 RFC1945 和 RFC2616除了上图中的内容之外, HTTP 消息中还有一些用来表示附加信息的头字段。客户端向 Web 服务器发送数据时, 会先发送头字段, 然后再发送数据。

2. 状态码

收到请求消息之后, Web 服务器会对其中的内容进行解析, 通过 URI和方法来判断“对什么”“进行怎样的操作”, 并根据这些要求来完成自己的工作, 然后将结果存放在响应消息中。在响应消息的开头有一个状态码,它用来表示操作的执行结果是成功还是发生了错误。

当我们访问 Web 服务器时, 遇到找不到的文件就会显示出 404 Not Found 的错误信息, 其实这就是状态码。状态码后面就是头字段和网页数据。响应消息会被发送回客户端, 客户端收到之后, 浏览器会从消息中读出所需的数据并显示在屏幕上。到这里, HTTP 的整个工作就完成了。

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。

响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)aa9f92d0-d0de-11ec-bce3-dac502259ad0.png

HTTP状态码列表:

aaba47d8-d0de-11ec-bce3-dac502259ad0.png

end

原文标题:轻松易懂,一文带你http协议入门?

文章出处:【微信公众号:一口Linux】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:轻松易懂,一文带你http协议入门?

文章出处:【微信号:yikoulinux,微信公众号:一口Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文详细了解HTTP/3协议

    经过了多年的努力,在 6 月 6 号,IETF (互联网工程任务小组) 正式发布了 HTTP/3 的 RFC, 这是超文本传输协议HTTP)的第三个主要版本,完整的 RFC 超过了 20000 字,非常
    发表于 07-13 09:45 1159次阅读

    什么是HTTP协议HTTP协议的基本特点和发展历程

    上期文章小编给大家介绍了一些关于MQTT协议的基础知识,今天我们来了解另一个应用层协议——HTTP协议
    发表于 08-04 09:52 572次阅读
    什么是<b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>?<b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>的基本特点和发展历程

    超干的干货来了!一文了解HTTP协议

    今天我们来了解另一个应用层协议——HTTP协议。推荐阅读《MQTT协议详解「概念、特性、版本及作用」》《TCP/IP
    的头像 发表于 08-04 08:24 2138次阅读
    超干的干货来了!一文<b class='flag-5'>了解</b><b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>

    用VDK+BF537开发产品中,想详细了解下VDK中事件、事件bit、信号量的使用方法,以及如何写自己的device drivers

    用VDK+BF537开发产品中,想详细了解下VDK中事件、事件bit、信号量的使用方法,以及如何写自己的device drivers。请问哪有针对上述问题的资料下载?
    发表于 12-06 09:19

    HTTP协议是什么

    前言HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的种网络传输协议,所有的WWW文件都必须遵守这个标准。
    发表于 08-03 06:12

    读懂什么是NEC协议

    读懂什么是NEC协议
    发表于 10-15 09:22

    详细了解下ups的相关计算

    关于ups方面的计算有很多,ups无论是接空开,还是连接电缆,以及选择电池,都可能需要计算它的电流或功率等,那么今天我们来详细了解下ups的相关计算。、UPS电源及电流、高频ups与工频ups
    发表于 11-16 09:08

    什么是Http协议

    文章目录**1、说下什么是Http协议?****2、什么是Http无状态协议?怎么解决Http
    发表于 12-22 06:27

    详细了解下STM32F1的具体电路参数

    最近笔者在使用STM32时,需要详细了解下F1的具体电路参数。于是查看其官方数据手册,结果记录如下。绝对最大额度值般工作条件表中的FT指5V 耐压。可以在引脚定义表格中看到。I/O端口特性(逻辑电平)在最后
    发表于 01-18 07:07

    HTTP,HTTP协议的作用是什么?

    HTTP,HTTP协议的作用是什么? HTTP:Hypertext Transfer Protocol 超文本传输协议
    发表于 03-22 10:45 2.5w次阅读

    HTTP协议培训教程资料

    HTTP协议培训教程资料 协议基础  HTTP(HyperText Transfer Protocol)是超文本传输协议的缩写,它用于传送
    发表于 03-22 10:47 541次阅读

    通过 iftop、 nethogs 和 vnstat 详细了解你的网络连接状态

    通过 iftop、 nethogs 和 vnstat 详细了解你的网络连接状态。
    的头像 发表于 01-27 21:10 2.1w次阅读
    通过 iftop、 nethogs 和 vnstat <b class='flag-5'>详细了解</b>你的网络连接状态

    一文详细了解OpenHarmony新图形框架

    3月30日,OpenHarmony v3.1 Release版本正式发布了。此版本为大家带来了全新的图形框架,实现了UI框架显示、多窗口、流畅动画等基础能力,夯实了OpenHarmony系统能力基座。下面就带大家详细了解新图形框架。
    的头像 发表于 04-27 13:21 1674次阅读
    一文<b class='flag-5'>详细了解</b>OpenHarmony新图形框架

    什么是HTTP协议?什么是RPC协议?二者如何选择使用?

    为什么有了HTTP,还需要RPC协议呢?在进行说明之前,首先我们需要了解什么是HTTP协议,什么是RPC
    的头像 发表于 08-11 09:25 1528次阅读
    什么是<b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>?什么是RPC<b class='flag-5'>协议</b>?二者如何选择使用?

    带您一起详细了解IEEE802.3bt(PoE++)的有关特点

    Hqst华强盛(盈盛电子)导读:带您一起详细了解IEEE802.3bt(PoE++)的有关特点,让我们对IEEE802.3bt(PoE++)协议有更具体的了解
    的头像 发表于 01-04 11:26 617次阅读
    带您一起<b class='flag-5'>详细了解</b>IEEE802.3bt(PoE++)的有关特点