HTTP的基本格式

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

HTTP

应用层,一方面是需要自定义协议,一方面也会用到一些现成的协议.
HTTP协议,就是最常用到的应用层协议.
使用浏览器,打开网站,使用手机app,加载数据,这些过程大概率都是HTTP来支持的
HTTP是一个超文本传输协议,
文本=>字符串
超文本=>除了传输字符串,还能传输图片,视频,音频等
HTTP协议是无状态的协议,有长连接和短连接的用法
HTTP的基本格式,http,网络协议,网络
一个网站=前端+后端
前端:网页:
HTML描述了网页的基本结构
CSS描述了网页的样式(包括不限于字体,颜色,背景,位置,大小)
JavaScript描述了网页的行为,和用户进行交互.
上述是三种单独的语言
网页 HTML, CSS ,JS都是在浏览器上执行的,都是在访问服务器的时候,从服务器下载到浏览器上,然后才能显示执行的,其他的应用程序,一般都是先下载安装,才能使用,网页是随时用随时下载
使用网页的优势:服务器随时更新,用户就能随时用上新版本
劣势:性能有限,很难提供一些复杂的,重量的操作
后端:HTTP服务器
学习HTTP,就需要学习协议格式
需要用到抓包工具:
HTTP的基本格式,http,网络协议,网络
此时抓包工具就可以获取到服务器和浏览器之间的交互细节了

http的协议格式

请求
1.首行
HTTP的基本格式,http,网络协议,网络
这三个部分用空格来分割

URL:

请求,就是客户端(浏览器)给服务器发起一个数据,这里要利用URL来明确指出,要访问的服务器是什么,要访问服务器中的哪一个资源
下面给出RFC标准文档中给出的URL的标准格式
HTTP的基本格式,http,网络协议,网络
这里的服务器地址也可以是IP地址,也可以是域名
查询字符串(query string),是键值对格式,键值对之间,使用&符号分割,键和值之间使用=分割,查询字符串以?开始,虽然知道了query string的格式,但是我们不知道他的含义.,因为这里的键和值都是程序员自定义的
实际上,对于URL来说,上述的几个部分,都是可以省略的,不是哪个部分是必须得有的
IP地址/域名省略,相当于是访问当前服务器的地址,比如:
访问b站主页,请求里必须要带有bilibili域名,响应的内容就是bilibili主页 的html,这个html里就会触发一些其他的http的请求,这些后续触发的http的请求,就可以省略IP,省略的IP就相当于使用和刚才获取bilibili的html一样的IP
端口号也可以省略,(相当常见)
省时,浏览器会自动加上端口(这个端口号,表示的是访问目标服务器的哪个端口),如果是http协议,自动添加的端口就是80,如果是https,自动添加的端口号就是443知名端口号(1024)
带层次的路径也可以省略如果省略,相当于访问的是/
/为根目录
(目录结构就是树形结构,根目录就相当于树根一样)
服务器提供的资源,也是类似于目录结构一样的树形结构来组织的,既然是树3,就会有树根,/就是根节点,通常根节点就会对应到服务器的主页
查询字符串也可以没有
正是上述的灵活性,使得http可以根据不同的需求场景,进行一些"自定制"的工作,也就使得http协议成了广泛使用的协议
url encode本质上就是转义字符,与\不同的形式出现而已
query string中可能有一些具有特殊含义的符号,这些符号在URL中本身就具有一定的含义
+ => %2B
url编码替换
HTTP的基本格式,http,网络协议,网络
转换规则:把要转换的内容的二进制的每个字节,都使用十六进制来表示出来,然后每个字节前面加上一个%

方法:

HTTP的基本格式,http,网络协议,网络
GET请求是把一些自定义的数据放到query string中,而body是空着的
POST请求最常见的情况:
登录,上传
POST是把一些自定义的数据放到body中,query string通常是空着的
HTTP的基本格式,http,网络协议,网络

2.请求报头header
这里的header也是键值对,每一行都是一个键值对,键和值之间使用:空格来分割
,query string和body中的键值对,完全是程序员自定义的,而header中的键值对,主要是标准规定的,少数是自定义的
重要的几个键值对:
Host:表示服务器主机的地址和端口
通常情况下Host里的内容和URL中的是一致的,但是也有例外,如果使用了代理,就不一样了
Content-Length表示body中的数据长度
如果请求中有body,就有这个字段,如果没有body,就没有这个字段
这个字段的作用是为了解决粘包问题
Content-Type表示请求的body中的数据格式
针对一个数据,到底该如何解析,如何理解,HTTP协议有很多用途,传输的数据也有很多种类
在HTTP请求中,Content-Type有三种主要的格式
application/x-www-form-urlencoded: form
body的格式就和query string是一样的键值对
multipart/form-data: form
一般上传文件/图片会是这种格式,但是不绝对
application/json
body是json格式
HTTP的基本格式,http,网络协议,网络
User-Agent
主要是包含了当前机器的系统和浏览器的版本,主要用来兼容,现在UA的意义就小了不少,主要用来区分PC端(Windows/Mac)和移动端(Android/iOS)
Referer
描述了,当前这个页面从哪里来的
location:
搭配3xx状态码使用, 告诉客户端接下来要去哪里访问
Cookie
浏览器本地存储数据的一种机制,既能保证安全,又能存续数据
按照键值对的方式来存储一些字符串,这些键值对往往是服务器返回来的,浏览器把这些键值对按照"域名"维度不同的网站,不同的cookie,且都是程序员自定义的,分类存储
HTTP的基本格式,http,网络协议,网络

HTTP的基本格式,http,网络协议,网络

一个网站的cookie中会存储很多键值对,往往会有一个很重要的键值对,是用来表示用户的"身份信息"的,尤其是有的时候,登录一个网站之后,后续再次访问这个网站的其他页面,或者关了电脑,第二天再次访问,仍然不必重新登录
为了实现身份识别的效果,不仅仅需要cookie来支持,服务器这边还需要一个sessio机制来支持
首次访问网站,注册不考虑,登录成功之后,服务器/网站就会生成一个你的身份标识–sessionid,身份标识就通过服务器返回给浏览器的响应,保存在浏览器的cookie中了
与此同时,服务器这边也会创建出一个对应的session,相当于是一个电子档案,session中就会记录一些我的关键信息
网站中肯定是不只一个用户,每个用户都有自己单独的session和sessionid,因此,服务器就会使用类似于hash表这样的方式,以sessionid为key,以session为value,把所有的数据组织起来
作为用户的身份标识,不同网站身份标识的key和value可能都是不同的
如果是通过浏览器地址来直接输入URL/点击收藏夹打开这个网页的,这个请求中是不带有这个Referer的
但是如果是点击了某个网页的内容,产生了跳转,就会带有Referer
3.空行
相当于一个分隔符,分割了header和body,描述了body是从哪里开始的
4.body正文
body里面的格式,其实是可以有很多种的,其中可以和query string一样是键值对的格式,只不过是经过了url encode,在登陆场景中,这里就会包含这次登录的用户名和密码等登录认证信息,密码一般是加密的,一般密码都是不会明文传输的
明文+加密算法+密钥=>密文,有的时候,加密的过程是可逆的,有的时候,加密是不可逆的 (加密过程可能会出现信息量损失)
响应
1.首行(版本号 状态码 状态码描述)
状态码就是对这次相应的定性(成功,失败,其他…)
计算机中,通常会使用数字表示结果,使用不同的数字表示不同的情况
比如:200表示成功
HTTP的基本格式,http,网络协议,网络
HTTP的基本格式,http,网络协议,网络

2.应头header(键值对)
ETag 说明:对于某个资源的某个特定版本的一个标识符,通常是一个 消息散列

Location 说明:用来 进行重定向,或者在创建了某个新资源时使用
3.空行
4.body正文文章来源地址https://www.toymoban.com/news/detail-720011.html

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

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

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

相关文章

  • 2.5 - 网络协议 - HTTP协议工作原理,报文格式,抓包实战

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 HTTP(Hypertext Transfer Protocol)是 「超文本传输协议」 ,基于B/S架构(Browser

    2024年02月05日
    浏览(46)
  • HTTP的基本格式

    应用层,一方面是需要自定义协议,一方面也会用到一些现成的协议. HTTP协议,就是最常用到的应用层协议. 使用浏览器,打开网站,使用手机app,加载数据,这些过程大概率都是HTTP来支持的 HTTP是一个 超文本 传输协议, 文本=字符串 超文本=除了传输字符串,还能传输图片,视频,音频等

    2024年02月08日
    浏览(32)
  • Web基本与HTTP协议

    目录 一:域名 1.域名概述 2.域名空间结构 3. 域名注册 二: 网页访问(HTTP/HTTPS) 1.网页的基本概念 2.网站 3.主页 4.域名 5.HTTP 6.URL 7.网页基本标签 (1)网页摘要信息的作用 (2)标题标签类型 三:HTML 1.HTML 概述 2.HTML 基本标签 (1)HTML 语法规则 (2)HTML 文件结构 (3)网页

    2024年02月06日
    浏览(35)
  • 【剧前爆米花--web】HTTP协议格式详解以及构造

    作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是一篇关于HTTP协议的文章,在这篇文章中我会说明HTTP协议格式以及相关的构造,希望对你有所帮助!   目录 HTTP协议 HTTP协议格式  HTTP请求 HTTP响应详情 HTTP请求的构造 通过form表单构造HTTP请求 通过ajax构造HTTP请求 HTTP (全

    2024年02月16日
    浏览(41)
  • HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几个部分组成: 请求行:包括请求方法(GET、POST等)、请求的URI和HTTP协

    2024年02月12日
    浏览(44)
  • HTTP协议详解:基本概念与工作流程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于在计算机网络上进行数据交换的通信协议。它是互联网上最常用的协议之一,被广泛应用于Web浏览器和服务器之间的通信。本文将深入探讨HTTP协议的基本概念和工作流程,帮助读者更好地理解这个重要的通信协议。

    2024年02月10日
    浏览(43)
  • PLC通过HTTP协议JSON文件格式对接MES等系统平台

            智能网关IGT-DSER集成了多种PLC、智能仪表的原厂协议,方便实现各种PLC与MES等系统平台之间的HTTP协议通讯,通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址,配置URL,即可通过POST/GET命令,将JSON文件提交给HTTP的服务端; 如果服务端有返回的JSON,网关进行

    2024年02月09日
    浏览(43)
  • Http 超文本传输协议基本概念学习摘录

    目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字段 HTTP响应状态码 即超文本传输协议(HyperText Transfer

    2024年03月20日
    浏览(51)
  • 网络协议HTTP/1、HTTP/2 及 HTTP/3详解

    目录 概述  一、发展史 HTTP/1.1  Keep-alive  动静分离  HTTP/2 二进制传输   多路复用 Header 压缩 服务端 Push  HTTP/3 QUIC  多路复用 0-RTT 纠错机制 三、小结 HTTP(Hyper Text Transformer Protocol,超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到

    2024年02月02日
    浏览(56)
  • 网络协议 - HTTP 协议详解

    HTTP 协议详解,web开发必备。 URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。 URI(Uniform Resource Identifier,统一资源标识符) URL(Uniform Resource Locator,统一资源定位符) URN(Uniform Resource Name,统一资源名称) 1. 请求报文 2. 响应报文 客户端发送的 请求报文 第

    2024年02月04日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包