HTTP 协议的基本格式

这篇具有很好参考价值的文章主要介绍了HTTP 协议的基本格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HTTP

什么是HTTP?HTTP是应用层的一个重要协议.它定义了浏览器怎样向服务器请求文件,以及服务器怎样把文件传送给浏览器.

我们打开浏览器,手动输入一个网址:baidu.com.那么此时浏览器就会给百度的服务器发送请求.百度服务器在返回一个html的响应.
HTTP 协议的基本格式

那么我们如何学习HTTP协议呢?通过它的协议报文格式,我们就能看到HTTP具体是什么样子的了。

HTTP的报文协议格式

学习HTTP的报文格式,需要通过一个抓包工具来实现.
那么抓包工具是什么呢?

一. 抓包工具

抓包工具的本质就是一个代理,简称跑腿的.比如A想喝楼下茶百道奶,让给他买.B此时充当的角色就是代理。
HTTP 协议的基本格式

由于B是那个替别人执行任务的,所以非常清楚任务的具体执行过程。
我们引入抓包,就是为了获取想要的原始数据。

我们推荐使用Fiddler来实现http的抓包。

Fidder的使用详解

左右结构

  • 左侧:抓到的包的列表(注意,它是一直在持续的)

  • 右侧:双击找到的包,会出现这个包的详情页。右上:请求 右下:响应
    HTTP 协议的基本格式

二.HTTP请求

双击右上的Raw,就可以看到原来的格式,然后点击view in notepad.就可以通过记事本来打开啦!
下图就是一个完整的HTTP请求:
HTTP 协议的基本格式

HTTP请求的组成部分
  1. 首行
    HTTP 协议的基本格式
    2.Header
    HTTP 协议的基本格式

3.空行
HTTP 协议的基本格式
Header的结束标记
4.正文
body (可有可没有)

下面我们着重介绍四个部分的首行和请求头Header部分

1.首行
HTTP方法

HTTP有很多方法,其中比较重要的有两个:

  • get 请求

  • post请求
    HTTP 协议的基本格式

它们都是客户端向服务器发送请求的方法

get和post的区别
本质上没有室内区别,但是在方法的使用上有些不同.
1.get用来表示“获取一个数据”,post表示“提交一个数据”;
2.get没有body,需要携带数据的话要放入URL中。而Post有body;
3.get是幂等的;=,post无要求;
(幂等就是输入一定,输出也一定。这样只要是同一个输入,就会有同一个输出!!!)
4.get可以缓存,post不可以;
(缓存是建立在幂等的基础之上的,因为输入一定,输出也一定。所以我们可以把输出缓存起来。这样只要是同一个输入。服务器就不用计算了,直接返回缓存中的结果)
5.get可以被浏览器收藏,post不可以。

URL

唯一资源定位标识,描述了网络上的一个唯一的资源。

HTTP 协议的基本格式
如果觉得很抽象的话!我们可以举一个生活中的例子,便于理解。
假设我们要去重庆工商大学的18窗口吃重庆小面:
那用URL来表示就是:
http://重庆工商大学3食堂:18//重庆小面/豌杂面?葱=不要&辣椒=微辣&香菜=不要
服务器地址:重庆工商大学
端口号:18
访问资源:重庆小面的豌杂面
补充说明:不要葱微辣不要香菜.

注:查询字符串是有键值对组成的。&分割键值对,=分割键和值。

版本号

HTTP的版本号有:HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3
最新版本:HTTP/3
最常用版本:HTTP/1.1

2. 请求头Header

键值对结构。每个键值对都是一行;键和值之间采用: (冒号+空格)分割

HTTP 协议的基本格式
空行结束。

Host

描述了浏览器要访问的服务器是谁(地址+端口号)

与URL的区别:
URL中存放的是当前目标,Host中存放的是最终目标。

content-Type和content-Length
  • content-Type

描述body的数据格式

作为请求的写法:

HTTP 协议的基本格式

通过form表单提交数据,body的格式和查询字符串(querry String)一样,也就是url中的查询字符串的格式:username=cy&password=gw520

HTTP 协议的基本格式数据格式是json,字符集是utf-8

{
username:cy;
password:gw520;

}

  • content-Length

描述body的数据长度

HTTP 协议的基本格式

这两个属性是跟着body走的,所以只有请求是Post时,才会出现.

User-Agent(UA)

主要描述系统和浏览器是什么版本。

HTTP 协议的基本格式
作用:
UA在早年互联网行业还未发展起来的时候,是用来区分各种上网设备的(不同的型号等),不同的上网设备能支持的功能不同。
而如今,随着互联网的快速发展,浏览器之间的区别以及非常小了,UA存在的价值就是区分用户是手机端、PC端还是平板。

referer

表示这个页面是从哪个页面跳转过来的。

比如我在百度搜索肖战。
此时的referer表示当前页面是从百度页面跳转过来的:

HTTP 协议的基本格式*

Cookie

俗称小饼干,也是由键值对组成的。它是浏览器在本地存储用户自定义数据的一种重要机制。

HTTP 协议的基本格式
数据都是存储在服务器的,浏览器也需要存储数据吗?是的。
浏览器要存储数据,比如用户信息。那么它如何存储呢?直接访问硬盘文件吗?不可以,如果允许网页访问文件系统的话,如果有不良网页篡改我们硬盘中的某些数据,后果将不堪设想!!!
所以为了保证网络安全,浏览器会限制网页访问我们的文件系统。
既然浏览器阻止网页访问文件系统,又想要存数据。该如何实现呢?Cookie机制!
浏览器通过Cookie机制,允许网页往浏览器这边写入一些自定义的键值对。这些数据通过浏览器的api,写入特定的文件(往指定位置存储指定文件)。

  1. Cookie从哪儿来

从服务器来。当浏览器访问服务器时,服务器会返回一个HTTP响应,响应中的set-Cookie字段就包含了Cookie键值对。

在浏览器搜索baidu.com,通过抓包工具进行抓包,找到这个包,点击响应,打开:
HTTP 协议的基本格式
再次打开浏览器,就可以看到浏览器存储的数据了。
HTTP 协议的基本格式

  1. Cookie到哪里去

浏览器保存之后,后续再访问服务器,就会带上Cookie。

  1. Cookie有什么用

浏览器本地存储数据的机制。最主要的作用就是存储用户登录信息。当再次访问服务器,带上Cookie,服务器就能知道是哪个用户。

例1:我们登录 QQ邮箱,此时浏览器会记住用户登录信息,服务器根据这个用户登陆信息,返回这个用户信息的数据(比如收件箱,草稿箱等等)。我们再去点击收件箱,就不用重新登录了,会直接出来这个这个用户对应的页面。
例2:cookie有点像我们平时的校园卡,校园卡里存储了每个学生的信息,姓名,学号,余额等等。当我们刷校园卡出入校门,系统就能通过校园卡识别信息。确认是本校学生,就可以进门了。

三.HTTP响应

HTTP响应的组成部分

像HTTP请求一样,先点击Raw,再点击使用记事本打开。可以发现,是一个二进制文件!这是由于此时打开的是一个HTTP响应的压缩文件。我们可以点击这个:
HTTP 协议的基本格式

打开,就可以看到解压过后的文本文件了。
如下图是一个完整的HTTP响应:

HTTP 协议的基本格式
HTTP响应也可以分成四个部分:
1.首行

HTTP 协议的基本格式
2.响应报头(Header)
HTTP 协议的基本格式

3.空行
HTTP 协议的基本格式

4.正文
(此处是一个HTML代码HTTP 协议的基本格式
HTTP响应与HTTP请求的组成部分差不多,重点了解HTTP响应首行中的状态码代表什么意思就可以了.

HTTP状态码

表示此次请求是成功还是失败,用数字表示.

HTTP 协议的基本格式
比较经典的错误::
200:表示请求成功
301:永久重定向
302:临时重定向
404:表示访问的资源不存在
403:表示访问被拒绝(没有权限)
500:服务器内部错误
504:服务器访问超时

总结

HTTP协议报文格式:
HTTP 协议的基本格式文章来源地址https://www.toymoban.com/news/detail-458319.html

到了这里,关于HTTP 协议的基本格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaEE】HTTP应用层协议

    HTTP应用层协议 超文本传输协议(Hyper Text [Transfer Protocol](https://baike.baidu.com/item/Transfer Protocol/612755?fromModule=lemma_inlink),HTTP) 是一个简单的请求-响应协议 ,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以

    2024年02月07日
    浏览(52)
  • 网络协议(七)应用层-HTTP

    上篇文章介绍了传输层的TCP、UDP协议,在TCP/IP协议中,下三层(网络接口层,网络层,传输层)都是计算机系统联合其他硬件设备自己在干的事,身为程序员的我们平时对其感知不大。而应用层却是与程序开发息息相关的一层,如HTTP,HTTPS,DNS,FTP,SMTP等等,针对不同应用场

    2024年02月03日
    浏览(37)
  • 【计算机网络】应用层协议 -- HTTP协议

    协议。网络协议的简称,网络协议是通信计算机双方必须共同遵守的一组约定,比如怎么建立连接,怎么互相识别等。 为了使数据在网络上能够从源头到达目的,网络通信的参与方必须遵守相同的规则,我们称这套相同的规则为协议(protocol),而协议最终都需要通过计算机

    2024年02月15日
    浏览(49)
  • 【应用层】网络基础 -- HTTP协议

    协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的,这里便与表述使用\\\"字符串\\\") 如果我们要传输一些\\\"结构化的数据\\\" 怎么办呢? 那么我们(TCP)在收到一个报文的时候,如何保证你收到了一个完整的报文?

    2024年02月11日
    浏览(44)
  • 【Linux】应用层之HTTP协议

    在应用层,需要我们传递应用层所需特殊的数据格式,这种数据可能是连续数据,例如int类型的整形变量,也可能是string类型的字符串,也可能是多个变量构成的结构体,那么就意味着我们发送的数据可能是连续的,也可能是不连续的,这时为了统一数据的解析方法,我们对

    2024年02月12日
    浏览(43)
  • 应用层—HTTP详解(抓包工具、报文格式、构造http等……)

    HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议 。 我们平时打开一个网站,就是通过 Http 协议来传输数据的。 学习 Http 需要先了解 http 协议格式,这里就需要用到 抓包工具 。抓包工具本质上是一个代理。 代理:代理是一种网络服务,它充当客户端和目

    2024年01月22日
    浏览(36)
  • Linux网络:应用层之HTTP协议

    我们程序员写的一个个解决实际问题,满足日常需求的网络程序,都是在应用层。 协议是一种约定。网络协议是计算机网络中通信双方都必须遵守的一组约定。 在网络通信中,都是以 “字符串” 的方式来发送和接收数据的。 如果要发送和接收一些结构化的数据,就需要序

    2023年04月26日
    浏览(50)
  • 【Linux】应用层协议:HTTP和HTTPS

    每个人都可以很喜欢每个人,但喜欢治不了病,喜欢买不了东西,喜欢不能当饭吃,喜欢很廉价… 1.1 URL的组成 1. 在之前的文章中我们实现了一个网络版本的计算器,在那个计算器中揉合了协议定制以及序列化反序列化的内容,我们当时也自己定制了一套协议标准,比如请求

    2024年02月10日
    浏览(46)
  • 【计算机网络】应用层——HTTP 协议(一)

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 HTTP协议全称超文本传输协议,通过浏览器和服务器进行数据交互,进行

    2024年01月23日
    浏览(49)
  • 【应用层协议】初始Http,fiddler的使用

    Http全称是超文本传输协议,是一种常用的应用层协议。它是Web的基础,用于在客户端和服务器之间传递数据和请求网页资源。 例如 :当我们搜索一个网站时,就相当于向网站的服务器发送一个http请求,当网站的服务器收到请求后就会进行响应。 HTTP 往往是基于传输层的 T

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包