初识HTTP和HTTPS

本文详细介绍了HTTP和HTTPS协议,包括其基本概念、传输过程、状态码、URL结构、DNS解析、GET和POST方法的区别以及HTTPS的安全性提升。还涉及了Cookie的工作原理和HTTPS的加密特性。
摘要由CSDN通过智能技术生成

本文介绍的HTTP和HTTPS均为应用层的协议,是客户端和服务器之间进行交互的协议。

二、HTTP

=========================================================================

1.HTTP协议是什么?


HTTP(HyperText Transfer Protocol)是超文本传送协议,是当今互联网中使用最广泛的应用层协议,是用来在浏览器和WWW服务器之间传送超文本的协议。

2.为什么会有HTTP协议?


我们在浏览Web网页时或者其他活动,浏览器相当于请求方,百度网站就是应答方,双方使用HTTP协议来互相通信,请求方来发送请求数据,接收方来返回一些数据,最后通过浏览器渲染在屏幕上,我们就能看到文字、图片、视频等超文本数据。

即HTTP就是在一个计算机世界中专门在两点之间传输超文本数据的约束和规范。

3.HTTP协议传输过程


1.当客户端请求一个网页,会先通过HTTP协议将请求的内容封装在HTTP请求报文中发送给服务器。

2.服务器收到请求报文后根据协议规范来解析报文。

3.服务器解析完报文向客户端返回响应报文。

4.HTTP常见的状态码


| 状态码 | 具体含义 | 常见的状态码 |

| — | — | — |

| 1xx | 相当于提示信息表示协议处理的中间状态,一般使用的比较少 | |

| 2xx | 表示服务成功处理了客户端的请求,也是正确的状态码 | 200 |

| 3xx | 客户端请求的资源位置发生变动,需要客户端用新的URL重新发送请求获取资源,也就是重定向 | 301,302,304 |

| 4xx | 表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义 | 400,403,404 |

| 5xx | 表示客户端请求报文没有错误,但是服务器内部发生了错误,属于服务器的错误码 | 500,502,503 |

常见的状态码

200 访问成功

302 重定向 当前访问网站A ,浏览器自动跳转到网站B

403 要访问的资源没有权限

404要访问的资源没有找到

500服务器内部错误

5.URL?


HTTP协议使用URL定位互联网上的资源,

URL就是资源唯一定位符,描述了互联网上资源的位置

我们平时生活中所说的“网址” 其实就是说的URL

普通的URL由这几部分组成

1.方案/协议 例如 https:

2.存储该资源的主机的ip地址,一般都为域名,通过DNS将域名解析成ip地址,通过ip地址定位到资源所在位置

3.端口号 HTTP的端口号是80 HTTPS的端口号是443 端口号是用来确认服务器上一个具体的应用程序

4.带层次的其他路径,路径对应到服务器上的一个具体的资源,类似于硬盘上的目录结构

5.查询字符串 是提供给web服务器的额外参数,一般是键值对形式来表示 ,如果是GET请求,一般有请求URL参数,如果是POST请求则不会在路径后面直接加参数

6.片段标识符 :是资源本身的某一部分的一个锚点,锚点代表资源内的一种书签,它给与浏览器显示位于该“加书签”点的内容的指示。

如果URL存在特殊符号,此时就需要进行转义 例如 ?是路径和查询字符串的之间的分界,如果查询字符串中也存在问号,此时的问号就会被转义成%3F

浏览器输入一个http协议的url,如何定位服务资源?

1.首先浏览器搜索自己DNS缓存(域名和ip地址对应表)

2.如果没有找到就搜索操作系统中的DNS缓存(域名和ip地址对应表)

3.如果没有找到,就将域名发送给本地域名服务器,进行递归查询,本地域名服务器查询自己的DNS缓存。

6.DNS?


计算机之间的通信是根据ip地址来通信的,但是对于我们用户来说点分十进制的ip地址还是很难记,所有通过域名解析的过程,DNS服务器通过域名来找到相应的ip地址,我们就能进入相应的网站了,这样一来我们只需要记住域名即可。

人们在输入网址来访问界面时,就是使用DNS解析的过程。通过域名来查找到ip地址。

DNS域名解析过程

1.输入域名后,先查找自己主机对应的域名服务器,域名服务器先查找自己服务器里面的数据

2.如果没有找到,就向上级报道进行查找,依次类推进行查找,直到找到为止

3.最多回溯到根目录,一定能找到这个域名的ip地址

4最终服务器将该域名的ip地址返回给主机,进行访问

7.HTTP协议的方法


| 方法 | 说明 | 支持的HTTP协议版本 |

| — | — | — |

| GET | 获取资源 | 1.0、1.1 |

| POST | 传输实体主体 | 1.0、1.1 |

| PUT | 传输文件 | 1.0、1.1 |

| HEAD | 获得报文首部 | 1.0、1.1 |

| DELETE | 删除文件 | 1.0、1.1 |

| OPTIONS | 访问支持的方法 | 1.1 |

| TRACE | 追踪路径 | 1.1 |

HTTP协议中方法有很多 最常用的就是GET和POST方法

GET一般用于从服务器中获取数据

POST一般往服务器上提交数据 大部分情况下是这样分工的少部分是相反的

GET请求一般无body POST请求一般有body

8.GET和POST方法区别


整体的结论时GET和POST方法整体上没有区别,大部分情况下,GET能实现的方法,POST也能实现

只是个别情况有差别 细节上区别

1.GET把用户自定义的数据放到query string 中,而POST放在Body中即 (GET一般没有Body,而POST一般有Body)

2.GET一般设计成幂等的形式,而POST不考虑幂等的情况 (幂等就是某一个操作操作一次和操作多次效果都是一样的,例如刷新页面)

3.GET请求是可以被缓存的,而POST请求一般不可以被缓存

4.GET请求一般可以被浏览器收藏夹保存起来的而 POST请求不能被收藏夹保存 ,保存的时候Body部分缺失

9.HTTP协议格式


首先协议就是一种约定,约定了请求和响应里面都是按照什么样的结构来组织数据的,要了解HTTP ,就需要研究协议格式

要研究协议格式就要使用抓包工具来了解协议格式

HTTP请求是一问一答的形式

一、HTTP请求的格式

1.首行: 【方法】+【URL】+【版本】

2.Header(请求报头):请求的属性 , 冒号分割键值对

3.空行:Header结束的标志

4.Body : 空行后面的内容都是Body,Body 允许为空字符串,如果Body存在,则在Header中会有一个属性来标识Body的长度。

二、HTTP响应的格式

1.首行: 【版本号】+【状态码】+【状态码解释】

2.Header:响应的属性 , 冒号分割键值对

3.空行:Header结束的标志

4.Body : 空行后面的内容都是Body,Body 允许为空字符串,如果Body存在,则在Header中会有一个属性来标识Body的长度。

使用fiddler 工具抓取浏览百度界面的HTTP请求

在这里插入图片描述

HTTP响应界面

在这里插入图片描述

因为HTTP协议是明文传输的,如果我们在登录某网址时,输入了用户名和密码时使用了抓包工具的话,会抓取到我们的密码,那其他人也能抓到了,下图为部分账号和密码都能被获取到很不安全。

在这里插入图片描述

10.常见的Header属性


来抓取一个网页里进行解释

在这里插入图片描述

1.HOST 描述了服务器主机地址 图中就是必应的域名

2.Connection: keep-alive 表示浏览器和服务器之间使用长连接

3.User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 用户设备的操作系统和浏览器版本 现在UA就是为了区别“手机”和“电脑”。

4.Content-Type: application/x-www-form-urlencoded 数据类型 (text/HTML等)

5.Referer: https://login.microsoftonline.com/ 当前页面是从哪个页面跳转过来的(计算广告业务费用可以通过此属性来实现)

6.Content-Length: 708 Body的长度 单位是字节

11.Cookie


存在于HTTP请求中,Cookie是键值对形式的字符串,在浏览器中保存着(每个域名地址下都存在Cookie),Cookie字符串中等号分割键和值,分号分割键值对,

Cookie存在于服务器中,在HTTP响应中,存在Set-Cookie字段,Set-Cookie字段会在浏览器中保存下来

Cookie会在下次请求时自动启动,下次再访问这个服务器时,此时请求中就会自动加上Cookie字段,此时Cookie字段中的值就是之前从服务器中返回的值。

Cookie最解决最有效的就是识别用户身份, 服务器在同一时间内会收到大量的HTTP请求,而服务器就必须识别出这些请求是来自哪些用户的,服务器必须明确的识别出来,Cookie就是起到这样的作用就是存储身份标识

Cookie传输流程 客户端访问浏览器后,浏览器返回一个 Set-Cookie sessionld 就是服务器给你了一个身份标识 之后客户端把sessionld的值保存在浏览器本地 当然服务器给客户端返回了一个sessionld ,服务器本身也要存储用户身份即(Session会话 ) 服务器内部使用Hash存储了大量的Session 。

Cookie工作流程 客户端首先向服务器发送请求 ,服务器向客户端返回响应以及sessionld ,之后再次建立连接时,客户端就把sessionld携带,服务器就能快速找到关于该sessionld用户所有详细的情况。

首次访问时没有Cookie的信息,第二次访问时就会包含Cookie信息

在这里插入图片描述


三、HTTPS

==========================================================================

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

[外链图片转存中…(img-GYpHGYdQ-1713540142015)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值