JavaEE-HTTP协议(一)

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

什么是HTTP协议?

计算机网络,核心概念,网络协议
网络协议种类非常多,其中一些耳熟能详的,IP,TCP,UDP…其中还有一个应用非常广泛的协议,HTTP
HTTP 处于 TCP/IP五层协议栈的应用层~
HTTP在传输层是基于TCP的~( 不够严谨,HTTP/1 HTTP/2 是基于TCP,最新版本HTTP/3是基于UDP的,但是当下互联网绝大部分使用的HTTP都是HTTP/1.1 )
传输层协议,主要关注的是 端对端 之间的数据传输,TCP,重点关注的是可靠传输
应用层协议,则是站在程序应用的角度,要对传输的数据,来进行具体的使用~

HTTP ( 全称为 " 超文本传输协议 ") 是一种应用非常广泛的 **应用层协议**。
所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些
其他的资源, 比如图片, 视频, 音频等二进制的数据。

HTTP虽然是已经设计好的,自身的扩展性非常强,可以根据实际需要,让程序员传输各种自定义的数据信息~

HTTP具体的应用场景:天天都在用~
只要你打开浏览器,随便打开一个网站,这个时候就用到了HTTP,或者打开一个手机APP,随便加载一些数据,这个时候其实大概率就用到了HTTP。

协议格式

协议格式:数据具体是怎么组织的。
之前学习过UDP:报头(源端口,目的端口,长度,校验和)+载荷。

UDP/TCP/IP这些协议都是属于“二进制”的协议,经常要理解到二进制的bit位~

HTTP 则是一个文本格式的协议。(不需要去理解具体的二进制位,而只是理解文本的格式即可)

如何看到HTTP的报文格式?

其实可以借助一些“抓包工具”来获取具体的HTTP交互过程中,请求和响应。

抓包工具,其实就是一个第三方的程序,在网络通信的过程中,类似于一个”代理“一样。

JavaEE-HTTP协议(一)
我们使用Fiddler 抓包 下载地址:Fiddler下载链接
JavaEE-HTTP协议(一)
JavaEE-HTTP协议(一)
安装下载之后的界面就是这样的
JavaEE-HTTP协议(一)
Fiddler左侧,是一个列表,显示了当前抓到的HTTP/HTTPS的数据报。
当选中左侧列表某个条目,并双击的时候,右侧就会显示详细信息。
JavaEE-HTTP协议(一)

这个标签页的选项,就表示了当前使用啥样的格式来显示 HTTP 请求;咱们用的最多的就是 Raw 这个选项;
选择 Raw 看到的就是 HTTP 请求数据的本体;选择其他的选项相当于 Fiddler 对数据进行了一些加工 调整了格式;
JavaEE-HTTP协议(一)
我们可以点击这里的view in notepad查看原始数据;
JavaEE-HTTP协议(一)
如果出现下列情况:
JavaEE-HTTP协议(一)
这是因为Fiddler 刚安装好的时候,默认没有启用 HTTPS;如果你抓到了 HTTPS 的包,就会出现类似的情况;当下网络上的大部分的网站都是 HTTPS;如果不开启 HTTPS,其实就基本没啥可抓的,所以我们可以允许fiddler启动https;

首先我们打开fiddler,按照下图的箭头依次勾选,然后点击OK;
JavaEE-HTTP协议(一)

可能会出现fiddler要求安装xx证书,一定要点是!!
Fiddler作为一个代理,是和其他的代理程序冲突的,如果也安装了其他的代理程序/插件,就可能导致Fiddler失效

HTTP请求

JavaEE-HTTP协议(一)
JavaEE-HTTP协议(一)

请求分成4个部分:

  1. 请求行(首行),包括三个部分
    a)HTTP的方法,方法大概描述了这个请求想干啥~~ GET 意思是想从服务器获取到某个东西
    b)URL 描述了要访问的网络上的资源具体在哪~
    c)版本号,HTTP/1.1表示当前使用的HTTP版本是1.1
  2. 请求头(head) 包含了很多行
    每一行都是一个键值对
    键和值之间使用:空格来分割~
    这里的键值对的数目是不固定的,不同的键值对表示不同的含义;
  3. 空行
    相当于请求头结束的标记!类似于链表的null一样。
  4. 请求正文(body)不一定有,可选;

Fiddler使用技巧;
我们在使用fiddler的时候,经常看到左侧会抓取很多的包,我们不知道如何选择哪一个是我们需要的,这里教大家一个技巧,我们可以选中左侧的某一行,然后Ctrl+A全选,点电脑上的Del键,把抓包信息全部删除,再去进行我们需要的操作,然后再点击到fiddler这里,即可观察到我们一个操作对应的fiddler抓包信息;

HTTP响应

JavaEE-HTTP协议(一)
JavaEE-HTTP协议(一)
注意响应分成四个部分;

  1. 首行,包含了3个部分
    a)版本号——http1.1
    b)200 状态码,描述了这个响应表示一个成功的还是失败的;这里200表示成功;
    c)OK状态码的描述,通过一个/组简单的单词,来描述当前状态码的含义;
  2. 响应头(header)
    也是键值对结构,依然是每个键值对占一行,每个键和值之间使用空格来分割;
  3. 空行
    表示响应头结束的标记;
  4. 响应正文(body)
    服务器返回给客户端的数据,这里的数据可能是不同的格式,最常见的是html形式。

URL

含义就是“网络上唯一资源地址符”,既要明确哪个主机,又要明确主机上哪个资源;

https://www.baidu.com/s?ie=utf-8&tn=85070231_18_hao_pg&wd=fiddler

这串也就是URL,通过浏览器打开网页的时候,地址栏填写的网址就是URL。
JavaEE-HTTP协议(一)
这是一个总结,URL都要遵守这样一个基本模板。

协议方案名:描述了当前这个URL是给哪个协议来使用的~~
http://给HTTP用的
https:// 给HTTPS用的
jdbc:mysql:// 给jdbc:mysql用的
登录信息:这个部分现在很少会用到,上古时期上网,会在这里体现用户名密码~
服务器地址: 当前要访问的主机是啥~ 这里可以是一个IP地址,也可以是域名~
服务器端口号 :端口号,表示当前要访问的主机上的哪个应用程序.(这里的端口号大部分情况下是省略的,省略的时候,不是说没有,而是浏览器会给一个默认端口号,对于HTTP开头的URL,就会使用80端口号作为默认值,对于HTTPS开头的URL,就会使用443端口号作为默认值)
带层次的文件路径:描述了当前要访问的服务器资源是啥~虽然请求的URL中,写的是一个文件路径,但是不一定服务器上就真存在一个对应的文件,这个文件可能是一个真实的,在磁盘上存在的文件,也可能是虚拟的,由服务器代码,构造出的一个动态数据
查询字符串:本质上是浏览器/客户端,给服务器传递的自定义信息~相当于对获取到的资源提出了进一步的要求
片段标识符:描述了要访问当前html页面中哪个具体的子部分,能够控制浏览器滚动到相应位置

上述的IP地址+端口+带层次的文件路径其实就描述了一个网络上具体的资源
但是在这个基础上,还可以携带一些其他的要求,也就是后面的参数

URL 总结:
对于 URL 来说,里面的结构看起来比较复杂,其实最重要的,和开发最关系紧密的,主要就是四个部分:

1、ip 地址/域名;
2、端口号(常省略);
3、带层次结构的路径;
4、query string 查询字符串;

URL encode/decode

当query string 中如果包含了特殊字符,就需要对特殊字符进行转义~
这个转义的过程,就叫做 url encode 反之,把转义的内容还原回来,就叫做url decode
url里面有很多特殊含义的符号的
/ : ? $ = …这些符号都在URL中具有特殊含义的~万一,query string里也包含这类特殊符号,就可以导致URL被解析失败!!
JavaEE-HTTP协议(一)
这个%2B%2B的在干嘛?骂人嘛?那肯定不是!
这个键值对 %2B%2B 其实就是通过URL encode转义之后得到的结果;字符 + 的ASCII的十六进制的表示就是2B,按照URL encode转义的规则在这个字符前加上%,就是现在这样的 %2B%2B;文章来源地址https://www.toymoban.com/news/detail-406826.html

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

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

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

相关文章

  • 计算机网络【HTTP协议】

    HTTP/HTTPS协议 是应用层的网路协议 目前大多数情况HTTP在传输层是基于TCP(HTTP1/2 是基于TCP,最新的HTTP协议是基于UDP协议,但是我们目前常用的HTTP应用层协议是HTTP1.0) 应用层协议很多时候都是程序员自己定制的,需要根据具体的场景来制定应用层协议,但是由于程序员水平参差不

    2024年02月02日
    浏览(35)
  • 计算机网络(5) --- http协议

    计算机网络(4) --- 协议定制_哈里沃克的博客-CSDN博客 协议定制 https://blog.csdn.net/m0_63488627/article/details/132070683?spm=1001.2014.3001.5501 目录 1.http协议介绍 1.协议的延申 2.http协议介绍 3.URL 4.urlencode和urldecode 2.HTTP协议结构 1.引入 2.细节 3.HTTP协议的使用 1.协议 2.网页配置 3.HTTP请求方法

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

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

    2024年02月15日
    浏览(34)
  • 计算机网络 - http协议 与 https协议(2)

    本篇介绍了构造http请求的的五种方式,简单的使用postman构造http请求,进一步了解https, 学习https的加密过程,了解对称密钥与非对称密钥对于加密是如何进行的,如有错误,请在评论区指正,让我们一起交流,共同进步! 本文开始 1) 直接在浏览器中的地址栏中输入一个 u

    2024年02月13日
    浏览(44)
  • Linux 计算机网络 深入理解HTTP协议

    HTTP是超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议。下面就来介绍HTTP的组成与特性。 HTTP是 ⽆连接 , ⽆状态 , ⼯作在应⽤层 的协议。 ⽆连接: http协议本身是没有维护连接信息的, http的数据会交给⽹络协议栈传输层的TCP协议, ⽽TCP是⾯向

    2024年02月14日
    浏览(30)
  • 计算机网络学习day02|HTTP协议

    目录 一、HTTP报文格式长什么样?是如何分割的? 请求行 状态行 头部字段 常用头字段 小结 二、HTTP提供了哪些方法?GET和POST的区别是什么? 1.HTTP有哪些方法 2.GET/HEAD 3.PSOT/PUT 小结 三、URI和URL URI 的格式 URI 的基本组成 URI 的查询参数 小结 四、HTTP有哪些状态码?分别代表什

    2024年04月23日
    浏览(37)
  • 计算机网络的故事——简单的HTTP协议

    ` HTTP是不保存状态的协议,为了实现保存状态功能于是引入了Cookie技术。 method: get:获取资源 post:传输实体主体 put:传输文件 head:获取报文首部,用于确认URI的有效性以及资源的更新日期时间等 delete:删除文件 put和delete不带验证机制,所以一般也不会使用delete方法,options:询问

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

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

    2024年01月23日
    浏览(37)
  • 计算机网络实验4:HTTP、DNS协议分析

    实验内容 :使用Wireshark捕获数据包,根据捕获的相关数据包分别对HTTP、DNS协议展开分析。 额外内容 :利用fiddler软件对HTTPS协议进行分析。 所需学时 :1。 重难点 :HTTP和DNS协议的报文结构。 周次 :第3周。 教材相关章节 :2.4、2.7。 HTTP(超文本传输协议)是一个基于 请求与

    2024年02月13日
    浏览(42)
  • 【计算机网络】HTTP协议以及简单的HTTP服务器实现

    虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输议)就是其中之一。 平时我们俗称的 “网址” 其实就是说的 URL 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了.

    2024年01月20日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包