【HTTP】HTTP协议 && HTTPS 协议

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

目录

一、HTTP

🌷1、HTTP是什么?

🌷2、HTTP的工作过程

🌷3、 抓包工具Fiddler的使用

🌷4、HTTP的协议格式(重点)

🌷5、HTTP请求

5.1 请求地址URL

5.2 方法method

5.3 认识   请求报头

🌷6、HTTP响应

6.1 状态码

6.2 响应报头

二、HTTPS

🌷1、HTTPS是什么?

🌷2、HTTPS的执行过程(重点)


一、HTTP

🌷1、HTTP是什么?

        HTTP(超文本传输协议)是一种应用非常广泛的应用层协议。HTTPs 是在 HTTP基础之上做了一个加密解密的工作。

        平时我们打开一个网站,就是通过HTTP协议来传输数据的。(所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些其他的资源, 比如图片, 视频, 音频等二进制的数据)

        一个完整应用是由前端+后端构成的,而前后端之间的通讯是要依靠HTTP来完成的。类似于消费者在网上买东西,商家和买家之间,需要一个快递公司,HTTP就相当于这个快递公司,其中的请求方法GET/POST相当于不同类型的快递类型(比如:标准快递,加急快递)。

        HTTP往往是基于传输层的TCP协议实现的,目前我们主要使用的是HTTP1.1和HTTP2.0。

🌷2、HTTP的工作过程

【HTTP】HTTP协议 && HTTPS 协议

🌷3、 抓包工具Fiddler的使用

        HTTP 是一个文本格式的协议,可以通过 Chrome 开发者工具或者 Fiddler 抓包,分析 HTTP 请求/响应的细节。

        Fiddler相当于一个“代理”:当浏览器访问sogou.com时,就会将HTTP的请求先发送给Fiddler,Fiddler再将请求转发给sogou的服务器,当sogou服务器返回数据的时候,Fiddler拿到返回数据,再将数据交给浏览器。因此,Fiddler对于浏览器和sogou服务器之间交互的数据细节,是非常清楚的。

【HTTP】HTTP协议 && HTTPS 协议

 Fiddler的页面:需要知道

【HTTP】HTTP协议 && HTTPS 协议

🌷4、HTTP的协议格式(重点)

【HTTP】HTTP协议 && HTTPS 协议

🍅1、HTTP协议格式总结

(1)Request对象

  • 请求行【方法  地址  HTTP版本号】
  • 请求报文【很多项,是Key:value的形式】
  • 空行
  • 请求正文【程序员传递的参数】

(2)Respond对象

  • 响应行【HTTP版本号  状态码  状态码描述】
  • 响应报头【很多项,是Key:value的形式】
  • 空行
  • 响应正文【程序员返回给前端的数据】

问题:为什么要有空行存在?

        因为HTTP协议并没有规定报头部分的键值对有多少个,可能正文里也是Key:value的形式存在的,因此通过空行来区分两者,相当于空行是“报头的结束标记”。HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”。


2、使用Fiddler抓包观察上述HTTP协议的格式

        注意观察,与上述图中的格式是一一对应的。

(1)Request

【HTTP】HTTP协议 && HTTPS 协议

(2)Respond 【HTTP】HTTP协议 && HTTPS 协议

🌷5、HTTP请求

5.1 请求地址URL

【HTTP】HTTP协议 && HTTPS 协议

 1、举例:一个具体的 URL
【HTTP】HTTP协议 && HTTPS 协议可以看到, 在这个 URL 中有些信息被省略了。
(1)https : 协议方案名。常见的有 http 和 https, 也有其他的类型。(例如访问 mysql 时用的
jdbc:mysql )
(2)user:pass : 登陆信息。现在的网站进行身份认证一般不再通过 URL 进行了, 一般都会省略。
(3)v.bitedu.vip : 服务器地址。此处是一个 "域名", 域名会通过 DNS 系统解析成一个具体的 IP 地址。(通过 ping 命令可以看到, v.bitedu.vip 的真实 IP 地址为 118.24.113.28 )
(4)端口号: 上面的 URL 中端口号被省略了。当端口号省略的时候, 浏览器会根据协议类型自动决定使用哪个端口。例如 http 协议默认使用 80 端口, https 协议默认使用 443 端口.
(5)/personInf/student : 带层次的文件路径。
(6)userId=10000&classId=100 : 查询字符串(query string)。本质是一个键值对结构,键值对之间使用 & 分隔, 键和值之间使用 = 分隔。
(7)片段标识: 此 URL 中省略了片段标识。片段标识主要用于页面内不同元素之间的跳转。 

【HTTP】HTTP协议 && HTTPS 协议


2、URL encode

        像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现。比如,某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。一个中文字符由 UTF-8 或者 GBK 这样的编码方式构成,虽然在 URL 中没有特殊含义, 但是仍然需要进行转义, 否则浏览器可能把 UTF-8/GBK 编码中的某个字节当做 URL 中的特殊符号。

        转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。

【HTTP】HTTP协议 && HTTPS 协议

 【HTTP】HTTP协议 && HTTPS 协议 

解码的时候:urldecode。urldecode就是urlencode的逆过程。

比如:

【HTTP】HTTP协议 && HTTPS 协议

5.2 方法method

【HTTP】HTTP协议 && HTTPS 协议


🍅面试题:Get与Post方法的区别?

(1)数据传输方式

        Get请求是通过URL传递的,即将数据拼接到URL的后面,以?分隔,参数之间以&分隔。因此,get请求对于传输的数据大小是有限制的,通常在几千个字符以内;Post请求是将数据放在HTTP请求的请求体(正文)中传输,因此没有大小限制,可以传输较大的数据量。

(2)数据传输安全性

        GET传参放在URL里面,请求传输的数据是明文的,因此数据容易被拦截和篡改;而Post请求传输的数据放在请求体中,只有在抓包的时候才能获取信息,因此相对安全一些。

(3)缓存

Get请求是可以被缓存的,当浏览器再次请求同一个URL时,可以从缓存中直接获取数据,加快访问速度;而Post请求是不可以被缓存的,因为每次提交数据都有可能导致服务器状态的改变。

(4)历史记录的安全性问题

        Get请求的数据会被浏览器保存在历史记录和服务器日志中,容易被恶意程序利用;Post请求不会被保存在历史记录和服务器日志中,相对更加安全。

5.3 认识   请求报头

报头的种类有很多,我们主要认识下面几种常见的。

(1)Host:表示服务器主机的地址和端口。

(2)Content-Length:表示请求体body中的数据长度。

(3)Content-Type:表示请求的 body 中的数据格式。(重要)

常见的:

  • application/x-www-form-urlencoded: form 表单提交的数据格式;
  • multipart/form-data: form 表单提交的数据格式(在 form 标签中加上enctyped="multipart/form-data" . 通常用于提交图片/文件;
  • application/json: 数据为 json 格式。            

(4)User-Agent (简称 UA):表示浏览器/操作系统的属性。
(5)Referer:表示这个页面是从哪个页面跳转过来的。
🍅(6)Cookie(重要)

解决的问题:

        HTTP是基于TCP交互的,在交互的时候存在一个问题,就是HTTP本身是一个无状态的。比如说,现在登录学生系统,然后访问里面的A页面,当要再去访问B页面的时候,由于没有记录当前的登录状态,因此又要再登录一次,所以只要你去访问新的页面,就要不断的进行登录,非常麻烦。因此在登录一次之后,就要将这个登录状态记录下来,但是HTTP不支持。因此通过Cookie加Session解决HTTP无状态的情况。

        Cookie:Cookie中存储了一个字符串,这个数据可能是客户端(网页)通过js写入的,也可能来源于服务器(服务器在HTTP响应的header中通过set-Cookie字段给浏览器返回数据),可以通过这个字段实现“身份标识”的功能。

例子:

        输入csdn网站,此时默认是登录状态。是因为cookie中存储了这个登录的用户标识信息。【HTTP】HTTP协议 && HTTPS 协议

 现在F12,我们将cookie中的信息手动清除掉。在“应用”下的cookie。

【HTTP】HTTP协议 && HTTPS 协议

 此时再打开csdn网页,发现登录状态已经失效。

【HTTP】HTTP协议 && HTTPS 协议 🍅cookie的过程

        当服务器给客户端写了一个cookie标识之后,服务器告诉浏览器将cookie标识存起来,并且每一次再去访问这个域名的时候,浏览器会将该域名(csdn)下的所有的cookie全部放在请求头里传给服务器,此时服务器就从请求头里面获取cookie信息,获取到cookie信息之后就知道是否登录了。

【HTTP】HTTP协议 && HTTPS 协议

        session默认在服务器的内存中,根据sessionid,在服务器中的session映射表中查找是否存在。

🌷6、HTTP响应

6.1 状态码

【HTTP】HTTP协议 && HTTPS 协议 🍅1、理解重定向:

        比如去十字街吃饭,但是发现店面搬迁,告诉你搬迁到哪里了,你就按照新地址走就行。也就是你去原来的地方,但是发现原来的地方没有人了,但是它告诉你往哪里走,这就是重定向。

        或者相当于手机号码中的 "呼叫转移" 功能。
比如我本来的手机号是 186-1234-5678, 后来换了个新号码 135-1234-5678, 那么不需要让我的朋友知道新号码,只要我去办理一个呼叫转移业务, 其他人拨打 186-1234-5678 , 就会自动转移到 135-1234-5678上。

🍅2、知道常见的状态码

(1)200:表示访问成功;

(2)404:未知的错误:客户端将网址输错了;

(3)403:没有权限访问;

(4)500:服务器内部出错;

(5)504:网关出问题了。当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况。这种情况在双十一等 "秒杀" 场景中容易出现, 平时不太容易见到。

(6)302与301的区别

302是临时重定向:在登陆页面中经常会见到 302,用于实现登陆成功后自动跳转到主页。
301是永久重定向:当浏览器收到这种响应之后,后续的请求都会被改成新的地址;

301对于搜索引擎来说,权重比较高。

比如:去吃饭,301就相当于是临时搬迁,只是说着一段时间搬迁到新地址了,那么用户在去的时候要考虑是去新地址还是已经搬回来了,在原来的地址;而302是永久搬迁,以后去的都是新地址。

6.2 响应报头

响应报头的基本格式和请求报头的格式基本一致。
类似于 Content-Type , Content-Length 等属性的含义也和请求中的含义一致。

【HTTP】HTTP协议 && HTTPS 协议


二、HTTPS

🌷1、HTTPS是什么?

        HTTPS(Hyper Text Transfer Protocol Secure) 也是一个应用层协议, 是在 HTTP 协议的基础上引入了一个加密层HTTP的默认端口号为80;HTTPS的默认端口号为443。

        HTTPS = HTTP+加密+认证+完整性保护

原因:

        HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。这就是“运营商劫持”问题。

举例:

(1)下载一个天天动听,正常情况应该是:点击下载按钮,弹出其下载链接。

【HTTP】HTTP协议 && HTTPS 协议

(2)被劫持的情况:点击下载按钮,弹出其他app(比如:qq浏览器的下载链接)。

【HTTP】HTTP协议 && HTTPS 协议 上述现象分析:

 

        由于我们通过网络传输的任何数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析出你传输的数据内容并进行篡改。在点击“下载按钮”之后,其实是给服务器发送了一个HTTP请求,获取到的HTTP响应就包含了该app的下载链接,当运营商劫持之后,发现这个链接是要下载“天天动听”,就自动的把交给用户的响应篡改为“qq浏览器”的下载地址。

【HTTP】HTTP协议 && HTTPS 协议

🌷2、HTTPS的执行过程(重点)

需要知道几个基本概念:常见的加密形式

【HTTP】HTTP协议 && HTTPS 协议


🍅HTTPS 执行流程如下:

(1)客户端使用HTTPS来访问服务器端;

(2)服务器端返回数字证书,以及使用非对称加密的公钥给客户端,私钥服务器端自己保留;

(3)客户端验证传过来的数字证书是否有效:如果是无效证书,则说明不是服务器端,直接终止访问;如果是有效的,则进行以下几个步骤:

  • 客户端使用对称加密来生成一个共享秘钥;
  • 使用对称加密的共享秘钥来加密一些初始数据;
  • 使用非对称加密的公钥来加密(对称加密生成的)共享秘钥;
  • 发送加密后的秘钥和数据给服务器端。

(4)服务器端可以使用私钥来解密出客户端(使用对称秘钥生成的)共享秘钥,再使用共享秘钥解密出数据的具体内容;

(5)之后客户端与服务器端就可以使用共享秘钥加密的内容进行交互了。


【HTTP】HTTP协议 && HTTPS 协议文章来源地址https://www.toymoban.com/news/detail-493202.html

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

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

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

相关文章

  • HTTP、HTTPS协议详解

    HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议。它是互联网上数据传输的基础,用于客户端和服务器之间的通信。HTTP使用TCP/IP协议来传输数据,通常在Web浏览器和Web服务器之间进行通信。 HTTP的主要目标是实现客户端和服务器之间的通信和数据传输。客户端发送

    2024年02月16日
    浏览(25)
  • http\https协议

    小亭子正在努力的学习编程,接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 目录 前言 一、 认识http协议 1.概念 1.1.http 1.1.2http协议的特点 2.抓包工具的介绍

    2024年02月09日
    浏览(27)
  • 深入理解HTTP/HTTPS协议

    HTTP协议像日常生活中简单的口头或书面交流,而HTTPS则类似于涉及敏感信息交换时采取的加密、身份验证等安全措施,确保通信的安全性和隐私性。该篇文章从以下几个方面展开: 目录 HTTP协议 请求与响应 请求: 响应: 无状态性 缓存机制 连接管理 HTTPS协议 数据加密 对称

    2024年04月12日
    浏览(32)
  • HTTP协议 和 HTTPS协议的区别(4点) && HTTPS的缺点 && HTTP如何使用SSL/TLS协议加密过程 && CA证书干啥的

      1. HTTP协议的端口号是80, HTTPS协议的端口号是443 2. HTTP协议使用的URL是以 http:// 开头,HTTPS协议使用的URL是以https://开头 3. HTTP协议和HTTPS协议最主要的区别是: HTTP协议所生成的HTTP请求报文被TCP协议 以明文形式透明传输,同时 客户端与服务器之间无法核验对方的身份(不晓

    2024年02月14日
    浏览(36)
  • Nginx接收Http协议请求转发使用Https协议

    公司使用阿里的apigateway,规定不太友好,同是SIT环境,A系统的SIT1环境居然不能调用B系统的SIT2环境的接口。因为各个系统之间部署的SIT环境数量不同A系统可能只有1套,B系统可能有8套,这样的话,可能会随时切换调用B系统的环境,管理员不允许,于是想着用Nginx做下转发。

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

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

    2024年02月13日
    浏览(41)
  • 详解HTTP协议和HTTPS协议

    目录 一.HTTP协议 1.什么是HTTP  2.HTTP发展历史 3.HTTP请求和响应 4. 抓包的方式和工具Fiddler 1.开发者工具  2.Fiddler  二.请求和响应 1.请求和响应报文  2.URL结构  3.常见的方法 1.GET方法 2.POST方法  3.其他方法  三.请求报头(header) 1.Host 2.Content-Length 3.Content-Type 4.User-Agent(UA)  5.Refer

    2024年02月09日
    浏览(31)
  • HTTP与HTTPS协议的嵌套访问

            HTTP和HTTPS是两种不同的协议。HTTP使用80端口,而HTTPS使用443端口。HTTP是明文传输,而HTTPS为了保障数据传输的安全性,通过SSL证书实现加密传输。   问题1:HTTP和HTTPS可以互相访问吗?         可以互相访问,但存在安全问题。虽然HTTPS是一种加密协议,可以保护

    2023年04月22日
    浏览(56)
  • HTTP 和 HTTPS 协议原理【网络基础】

    友情链接: HTTP协议【网络基础/应用层】 简单:HTTP 是一种文本协议,易于理解和实现。HTTP 的请求和响应都由起始行、首部字段和可选的消息主体组成,每个部分都有明确的语法规则。HTTP 的方法、状态码和首部字段都有标准化的定义,方便开发者遵循。 灵活:HTTP 是一种无

    2024年02月09日
    浏览(43)
  • http 协议和 https 协议的区别么?

    HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本的协议,它是计算机之间传输数据的标准通信协议。 而HTTPS(Hypertext Transfer Protocol Secure)是基于HTTP协议的加密扩展协议。 以下是HTTP协议和HTTPS协议的区别: 1.安全性 HTTP协议传输的数据是明文的,容易被攻击者截获

    2024年02月12日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包